สร้างเว็บEngine by iGetWeb.com
Cart รายการสินค้า (0)

arduino ขับ Dual H-Bridge Motor Driver

arduino ขับ Dual H-Bridge Motor Driver

บทความนี้ เราจะมาใช้ arduino ขับ Dual H-Bridge Motor Driver  

Port name Direction Description Usage
VMS GND / connect to external power supply(6V~35V) ENA(ENB) connected to H state will enable MOTORA(MOTORB) IN1(IN3) connected to 5V and IN2(IN4) to GND MOTORA(MOTORB) will move clockwise IN1(IN3) connected to GND and IN2(IN4) to 5V MOTORA(MOTORB) will move Anti-clockwise if you want to control speed you can connect the ENA(ENB) to PWM.
ENA Input TTL Compatible Enable Input:the L state disables the bridge A
IN1 Input TTL Compatible Inputs of the Bridge A
IN2 Input TTL Compatible Inputs of the Bridge A
ENB Input TTL Compatible Enable Input:the L state disables the bridge B
IN3 Input TTL Compatible Inputs of the Bridge B
IN4 Input TTL Compatible Inputs of the Bridge B
M)TORA Output Output of the Bridge A
MOTORB Output Output of the Bridge B
CSA(CSB) / use for testing electric current of Bridge A(Bridge B)
UR1 UR2 UR3 UR4 / pull-up resistor
5V +5V / 5V output
5V Chip Enable Jumper / if connected,5V chip will work.

int ENA=5;//connected to Arduino's port 5(output pwm)
int IN1=2;//connected to Arduino's port 2
int IN2=3;//connected to Arduino's port 3
int ENB=6;//connected to Arduino's port 6(output pwm)
int IN3=4;//connected to Arduino's port 4
int IN4=7;//connected to Arduino's port 7
void setup()
{
 pinMode(ENA,OUTPUT);//output
 pinMode(ENB,OUTPUT);
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 digitalWrite(ENA,LOW);
 digitalWrite(ENB,LOW);//stop driving
 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,HIGH);//setting motorA's directon
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);//setting motorB's directon
}
void loop()
{
  analogWrite(ENA,255);//start driving motorA
  analogWrite(ENB,255);//start driving motorB
 
}

ตรงค่า analogWrite(ENA,255);  คุณสามารถแก้ได้ตั้งแต่ 0-255 เพื่อปรับ speed motor นะครับ

ต้องการ กลับทางหมุนเมอร์เตอร์ ก็ให้เพิ่ม   

 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon

สลับจาก HIGH เป็น LOW 

ถ้าต้องการให้ มอเตอร์หยุดหมุน ก็เป็น LOW LOW เช่น

 digitalWrite(IN1,LOW); 
 digitalWrite(IN2,LOW);//setting motorA's directon


//==================

ตัวอย่างนี้ให้ไปใส่แทน void loop เดินนะครับ  ผลที่ได้คือ มอเตอร์จะหมุนซ้าย ห้าวินาที หมุนขวา ห้าวินาที  แล้วหยุดห้าวินาที  แล้วหมุนซ้ายห้าวินาที แล้วทำซำๆ


void loop()
{
 digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon

analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB  

delay(5000) ;

digitalWrite(IN1,HIGH); 
 digitalWrite(IN2,LOW);//setting motorA's directon


analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB  
delay(5000) ;

digitalWrite(IN1,LOW); 
 digitalWrite(IN2,LOW);//setting motorA's directon


analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB  
delay(5000) ;


}





เพียงเท่านี้ก็สามารถขับ dc motor ได้แล้วครับ

view