Arduino 控制 - 使用 L293D 來驅動馬達
L293D 式一顆用雙路直流馬達的控制器,用這顆 IC 可以用來驅動一般的小型馬達/玩具馬達之類的,相當方便。
其內部結構大概就是一個 4路半H橋式驅動電路。
Pin 2 與 Pin 7 屬於一對,Pin 10 與 Pin 15 也屬於一對。
Pin 1 與 Pin 9 雖然做為 Enable 接腳,但是也可以輸入 PWM 訊號來控制馬達出力的力度。
Pin 8 是提供給馬達的電力,可以獨立供給,也可以和 Pin 16 的 Vcc 共用。
底下是利用 Arduino 做的簡易的控制電路:
藍色 LED 是用來觀察 PWM 的強度用的,可以不接。
我這邊另外用 9V 提供給 L293D 來驅動馬達,速度會比較快。
程式碼方塊如下:
程式源碼如下:
int counter;
int counter2;
void setup()
{
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
analogWrite(3, 255);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
for (counter = 0; counter < 5; ++counter) {
digitalWrite(13, HIGH);
delay(500); // Wait for 500 millisecond(s)
digitalWrite(13, LOW);
delay(500); // Wait for 500 millisecond(s)
}
analogWrite(3, 64);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
for (counter2 = 0; counter2 < 5; ++counter2) {
digitalWrite(13, HIGH);
delay(500); // Wait for 500 millisecond(s)
digitalWrite(13, LOW);
delay(500); // Wait for 500 millisecond(s)
}
}
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int counter; | |
int counter2; | |
void setup() | |
{ | |
pinMode(3, OUTPUT); | |
pinMode(5, OUTPUT); | |
pinMode(6, OUTPUT); | |
pinMode(13, OUTPUT); | |
} | |
void loop() | |
{ | |
analogWrite(3, 255); | |
digitalWrite(5, HIGH); | |
digitalWrite(6, LOW); | |
for (counter = 0; counter < 5; ++counter) { | |
digitalWrite(13, HIGH); | |
delay(500); // Wait for 500 millisecond(s) | |
digitalWrite(13, LOW); | |
delay(500); // Wait for 500 millisecond(s) | |
} | |
analogWrite(3, 64); | |
digitalWrite(5, LOW); | |
digitalWrite(6, HIGH); | |
for (counter2 = 0; counter2 < 5; ++counter2) { | |
digitalWrite(13, HIGH); | |
delay(500); // Wait for 500 millisecond(s) | |
digitalWrite(13, LOW); | |
delay(500); // Wait for 500 millisecond(s) | |
} | |
} |
這樣可以好好觀察,輸出是否有在運作。
留言