2015年5月27日 星期三

課程35-直流馬達驅動實驗

目的:

使用Arduino 使用L298 IC來控制直流馬達正轉和反轉。

電子元件:

麵包板 x 1
Arduino 主板 x 1
L298 IC x 1
直流馬達 x1

電路圖:



程式碼:


  1. int motor[] = {2, 3};
  2. void setup() {
  3.  Serial.begin(9600);
  4.  for(int i = 0; i < 2; i++){
  5.    pinMode(motor[i], OUTPUT);
  6.  }
  7. }
  8. void loop() {
  9.  left();
  10.  delay(5000);
  11.  motor_stop();
  12.  right();
  13.  delay(5000);
  14.  motor_stop();
  15. }
  16. void motor_stop(){
  17.  digitalWrite(motor[0], LOW);
  18.  digitalWrite(motor[1], LOW);
  19.  delay(25);
  20. }
  21. void left(){
  22.  digitalWrite(motor[0], LOW);
  23.  digitalWrite(motor[1], HIGH);
  24. }
  25. void right(){
  26.  digitalWrite(motor[0], HIGH);
  27.  digitalWrite(motor[1], LOW);
  28. }

程式說明:
第一行 宣告整數變數陣列motor 的腳位為Pin2、Pin3。
第二行~第七行 初始設定。
第三行 打開Serial 通訊,並設定頻率為9600。
第四行~第六行 使用For 迴圈0~1。
第五行 設定motor的腳位為輸出腳位。
第八行~第十五行 為主程式。
第九行 呼叫left左轉。
第十行 延遲五秒。
第十一行 呼叫motor_stop停止。
第十二行 呼叫right右轉。
第十三行 延遲五秒。
第十四行 呼叫motor_stop停止。
第十六行~第二十行 為motor_stop()
第十七行 把motor[0]腳位設成低電位(LOW)。
第十八行 把motor[1]腳位設成低電位(LOW)。
第十九行 延遲25豪秒。
第二十一~第二十四行 為left()
第二十二行 把motor[0]腳位設成低電位(LOW)。
第二十三行 把motor[1]腳位設成高電位(HIGH)。
第二十五行~第二十八行 為right()
第二十六行 把motor[0]腳位設成低電位(HIGH)。
第二十七行 把motor[1]腳位設成低電位(LOW)。

圖表:

L293D接腳說明
• 1 Enable 1-2:作為左半邊IC控制用。當這個Pin為高電壓時,左半邊IC可作用,反之,低電壓時,左半邊IC無作用。
• 2 INPUT 1:當這個Pin為高電壓時,電流會流出至Output 1。
• 3 OUTPUT 1:這個Pin要接到終端馬達的一個接腳。
• 4,5 GND:接地。
• 6 OUTPUT 2:這個Pin要接到終端馬達的一個接腳。
• 7 INPUT 2, 當這個Pin為高電壓時,電流會流出至Output 2。
• 8 VC:供給給馬達使用的電壓,如果要驅動的馬達是12V,那就要供給這個Pin 12V直流電。
• 9 Enable 3-4:作為右半邊IC控制用。當這個Pin為高電壓時,右半邊IC可作用,反之,低電壓時,右半邊IC無作用。
• 10 INPUT 3,:這個Pin為高電壓時,電流會流出至Output 3。
• 11 OUTPUT 3:這個Pin要接到終端馬達的一個接腳。
• 12,13 GND:接地。
• 14 OUTPUT 4:這個Pin要接到終端馬達的一個接腳。
• 15 INPUT 4:當這個Pin為高電壓時,電流會流出至Output 4。
• 16 VSS:提供給IC的電源,這個Pin要供給5V電壓。

實驗影片:


參考資料:



1 則留言:

  1. 板大,您這篇文章有掉图耶~

    Ted Lee
    URL:https://sites.google.com/site/lct4246/
    FB:https://www.facebook.com/ted.lee.10420321
    Blog:http://lct4246.blogspot.tw/

    回覆刪除

Arduino、Raspberry Pi、System Integration,如有問題或建議,可以互相討論喔~