外接模組

L298N 馬達控制模組

價格大概在 150 至 250 元之間,它可以驅動兩個直流馬達或是一個步進馬達。控制訊號可以用 Arduino 或是其它開關、搖桿輸入。

Arduino直接接馬達的問題
1. 電流不足
2. 馬達正逆向會有逆向大偏壓

 

各種不同的馬達

直流馬達:轉速快

     

減速馬達:加上齒輪減低轉速



伺服馬達:          步進馬達:

    
伺服馬達與步進馬達:
伺服馬達有回饋反授的機制,會將訊號傳回給驅動器;而步進馬達不會回傳訊號,這就是最大的不同。也因為這個回饋反授機制,讓伺服馬達轉動時的精確度較高。

接線圖
Arduino接線4、5、6、7是控制兩顆馬達的正反轉。接線9、10是控制轉速。
外接電源接L298N與Arduino電路板。

訊號控制

網拍的自走車套件 + L298N 三百元買的到。
加上超音波或是紅外線模組,就可以自己組裝自動避障車了!!

 

 

風力獸改馬達加藍芽遙控

 

手機上面用APP Inventer撰寫的程式

Arduino上面的程式
#include <SoftwareSerial.h> // 引用「軟體序列埠」程式庫
SoftwareSerial BT(3, 2); // 設定軟體序列埠(接收腳, 傳送腳)

char command; // 接收序列埠值的變數
const byte EA = 6; // 馬達 A 的致能接腳
const byte IA = 7; // 馬達 A 的正反轉接腳
const byte EB = 5; // 馬達 B 的致能接腳
const byte IB = 4; // 馬達 B 的正反轉接腳

// 設定 PWM 輸出值
const byte speed = 130;

void stop() { // 馬達停止
analogWrite(EA, 0); // 馬達 A 的 PWM 輸出
analogWrite(EB, 0); // 馬達 B 的 PWM 輸出
}
void forward() { // 馬達轉向:前進
analogWrite(EA, speed); // 馬達 A 的 PWM 輸出
digitalWrite(IA, HIGH);
analogWrite(EB, speed); // 馬達 B 的 PWM 輸出
digitalWrite(IB, HIGH);
}
void backward() { // 馬達轉向:後退
analogWrite(EA, speed); // 馬達 A 的 PWM 輸出
digitalWrite(IA, LOW);
analogWrite(EB, speed); // 馬達 B 的 PWM 輸出
digitalWrite(IB, LOW);
}
void turnLeft() { // 馬達轉向:左轉
analogWrite(EA, speed); // 馬達 A 的 PWM 輸出
digitalWrite(IA, LOW); // 馬達 A 反轉
analogWrite(EB, speed); // 馬達 B 的 PWM 輸出
digitalWrite(IB, HIGH);
}
void turnRight() { // 馬達轉向:右轉
analogWrite(EA, speed); // 馬達 A 的 PWM 輸出
digitalWrite(IA, HIGH);
analogWrite(EB, speed); // 馬達 B 的 PWM 輸出
digitalWrite(IB, LOW); // 馬達 B 反轉
}

void setup() {
BT.begin(9600); // 啟動軟體序列埠

pinMode(IA, OUTPUT); // 馬達 A 的致能腳位
pinMode(IB, OUTPUT); // 馬達 B 的致能腳位
stop(); // 先停止馬達
}

void loop() {
if (BT.available() > 0) {
command = BT.read();

switch (command) {
case 'w' : // 接收到 'w',前進
forward();
break;
case 'x' : // 接收到 'x',後退
backward();
break;
case 'a' : // 接收到 'a',左轉
turnLeft();
break;
case 'd' : // 接收到 'd',右轉
turnRight();
break;
case 's' : // 接收到 's',停止馬達
stop();
break;
}
}
}