步驟1:了解L298模塊連接
首先,我們將遍歷所有連接,然后說明如何控制直流電動機,然后是步進電動機。此時,請檢查L298N H橋模塊上的連接。
考慮圖像–將數字與圖像下方的列表匹配:
DC電動機1“ +”或步進電動機A +
DC電動機1“-”或步進電動機A-
12V跳線–如果使用的電源電壓大于12V DC,則將其移除。這樣可以為板載5V穩壓器供電。
在此處連接電動機電源電壓,最大35V DC。如果》 12V DC
GND
如果有12V跳線,則移除5V輸出,非常適合為Arduino(
直流電動機1啟用跳線。使用步進電機時,將其保留在原位。連接到用于直流電動機速度控制的PWM輸出。
IN1
IN2
IN3
IN4
直流電動機2啟用跳線。使用步進電機時,將其保留在原位。連接到用于直流電動機速度控制的PWM輸出
直流電動機2“ +”或步進電動機B +
直流電動機2 “-”或步進電動機B-
步驟2:控制直流電動機
到使用L298N H橋模塊控制一兩個直流電動機非常容易。首先將每個電動機連接到L298N模塊上的A和B連接。
如果您為機器人(例如)使用兩個電機,請確保兩個輸入的電機極性相同。否則,當您同時將兩個電動機都設置為正轉而將其設置為倒退時,可能需要交換它們!
下一步,連接電源-將正極連接至模塊上的引腳4,將負極/GND連接至引腳5。如果您提供的電壓最高為12V,則可以保留12V跳線(上圖中的點3),并且模塊上的引腳6可以提供5V電壓。
可以將其饋送到Arduino的5V引腳,以從電動機的電源為其供電。別忘了將Arduino GND連接到模塊上的引腳5,以完成電路。現在,您將在Arduino上需要六個數字輸出引腳,其中兩個需要是PWM(脈沖寬度調制)引腳。
PWM引腳在引腳編號旁邊由波浪號(?)表示,例如在Arduino Uno的數字引腳圖像中。
最后,將Arduino數字輸出引腳連接到驅動程序模塊。在我們的示例中,我們有兩個直流電動機,因此數字引腳D9,D8,D7和D6將分別連接到引腳IN1,IN2,IN3和IN4。然后將D10連接到模塊插針7(先卸下跳線),然后將D5連接到模塊插針12(同樣要卸下跳線)。
通過向驅動器發送HIGH或LOW信號來控制電動機的方向每個馬達(或通道)。例如,對于電動機一,從IN1到HIGH的高電平和向IN2發出LOW的低電平將使它在一個方向上旋轉,而到HIGH和LOW的低電平將使它在另一個方向上旋轉。
但是,直到將HIGH設置為啟用引腳(電機1為7,電機2為12)后,電機才會轉動。并且它們可以通過低電平連接到同一引腳來關閉。但是,如果需要控制電動機的速度,則可以通過來自連接到使能引腳的數字引腳的PWM信號來解決這一問題。
這就是我們對直流電動機演示草圖所做的工作。如上所述,連接了兩個直流電動機和一個Arduino Uno,以及一個外部電源。然后輸入并上傳以下草圖:
// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoOne()
{
// this function will run the motors in both directions at a fixed speed
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 200);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 200);
delay(2000);
// now change motor directions
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo()
{
// this function will run the motors across the range of possible speeds
// note that maximum speed is determined by the motor itself and the operating voltage
// the PWM values sent by analogWrite() are fractions of the maximum speed possible
// by your hardware
// turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// accelerate from zero to maximum speed
for (int i = 0; i 《 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// decelerate from maximum speed to zero
for (int i = 255; i 》= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}
那么該草圖中發生了什么?在函數demoOne()中,我們打開電動機并以200的PWM值運行它們。這不是速度值,而是一次施加200/255的時間量的功率。
然后片刻之后,電動機反向運行(請參閱如何更改digitalWrite()函數中的HIGH和LOW?)。為了了解您的硬件可能的速度范圍,我們在函數demoTwo()中遍歷了整個PWM范圍,這將打開電動機,并且它們通過零至255的PWM值運行,并通過兩個for循環返回零。 。
最后,這是在此頁面的視頻中進行的演示–使用我們的破舊的坦克底盤和兩個直流電動機。
第3步:使用Arduino控制步進電動機和L298N
步進電機可能看起來很復雜,但事實并非如此。在此示例中,我們控制一個典型的NEMA-17步進電機,該電機具有四根電線,如該步驟中的圖像所示。
每轉200步,并且可以60 RPM的速度運行。如果您還沒有電動機的步進和速度值,請立即查找,并在草圖中使用它。
成功進行步進電動機控制的關鍵是識別電線-即一個是哪個。您將需要確定A +,A-,B +和B-線。在我們的示例電動機中,它們是紅色,綠色,黃色和藍色。現在,讓我們完成接線。
將來自步進電機的A +,A-,B +和B-線分別連接到模塊連接1、2、13和14。將L298N模塊隨附的跳線放置在模塊點7和12上的線對上。然后根據需要將電源連接到點4(正)和點5(負/GND)。
再次,如果您的步進電機的電源低于12V,則將跳線安裝到模塊的第3點,為您的Arduino提供整潔的5V電源。接下來,將L298N模塊引腳IN1,IN2,IN3和IN4分別連接到Arduino數字引腳D8,D9,D10和D11。
最后,如果從模塊中獲取5V電壓,則將Arduino GND連接至模塊上的點5,將Arduino 5V連接至點6。借助Arduino IDE隨附的Stepper Arduino庫作為標準,從草圖控制步進電機非常簡單。
要演示您的電動機,只需加載Stepper庫中隨附的stepper_oneRevolution草圖。要找到它,請在Arduino IDE中單擊“文件”》“示例”》“步進器”菜單。
最后,檢查草圖中
const int stepsPerRevolution = 200;的值并將200更改為步進電機的每轉步數,以及在以下行中預設為60 RPM的速度:myStepper.setSpeed(60);
現在,您可以保存和上傳草圖,這會將步進電機發送大約一轉,然后再回來。這可以通過功能
myStepper.step(stepsPerRevolution); // for clockwise
myStepper.step(-stepsPerRevolution); // for anti-clockwise
實現。最后,在此步驟的視頻中快速展示了我們的測試硬件。
責任編輯:wv
-
步進電機
+關注
關注
150文章
3095瀏覽量
147347 -
L298N
+關注
關注
21文章
224瀏覽量
78630 -
Arduino
+關注
關注
187文章
6464瀏覽量
186651
發布評論請先 登錄
相關推薦
評論