使用一個(gè)或兩個(gè)帶有Arduino的伺服很容易,但是如果我們想使用多個(gè)伺服電機(jī)怎么辦?
在這里,我們將向您展示如何使用Arduino控制多個(gè)伺服電機(jī)。將多個(gè)伺服電機(jī)與Arduino連接似乎很容易,但是如果我們將所有伺服連接到Arduino電源引腳,那么由于沒(méi)有足夠的電流來(lái)驅(qū)動(dòng)所有電機(jī),它們將無(wú)法正常工作。因此,您必須為電機(jī)使用單獨(dú)的電源,無(wú)論是來(lái)自某些適配器(5v 2A)還是來(lái)自優(yōu)質(zhì) 9v 電池。
所需材料
Arduino UNO
伺服電機(jī)
電源
面包板
連接線
電路圖
什么是伺服電機(jī)?
在詳細(xì)介紹之前,首先我們應(yīng)該了解伺服電機(jī)。
伺服電機(jī)有不同的形狀和尺寸。伺服電機(jī)將主要有電線,一個(gè)用于正電壓,另一個(gè)用于接地,最后一個(gè)用于位置設(shè)置。紅線連接到電源,黑線接地,黃線連接到信號(hào)。
伺服電機(jī)是直流電機(jī)、位置控制系統(tǒng)、齒輪的組合。直流電機(jī)軸的位置由伺服中的控制電子設(shè)備根據(jù)PWM信號(hào)的占空比SIGNAL引腳進(jìn)行調(diào)整。
簡(jiǎn)單地說(shuō),控制電子設(shè)備通過(guò)控制直流電機(jī)來(lái)調(diào)整軸位置。有關(guān)軸位置的數(shù)據(jù)通過(guò)SIGNAL引腳發(fā)送。控制器的位置數(shù)據(jù)應(yīng)通過(guò)伺服電機(jī)的信號(hào)引腳以PWM信號(hào)的形式發(fā)送。
PWM(脈寬調(diào)制)信號(hào)的頻率可能因伺服電機(jī)的類型而異。這里重要的是PWM信號(hào)的占空比。根據(jù)此負(fù)載配給,控制電子設(shè)備調(diào)整軸。
如下圖所示,要使軸移動(dòng)到 9 點(diǎn)鐘,打開口糧必須為 1/18.ie。在 18ms 信號(hào)中,1ms 的導(dǎo)通時(shí)間和 17ms 的關(guān)閉時(shí)間。
對(duì)于要移動(dòng)到 12 點(diǎn)時(shí)鐘的軸,信號(hào)的導(dǎo)通時(shí)間必須為 1.5ms,關(guān)閉時(shí)間應(yīng)為 16.5ms。該比率由控制系統(tǒng)在伺服中解碼,并據(jù)此調(diào)整位置。這里的PWM是使用ARDUINO UNO生成的。
Arduino代碼解釋
最后給出了用于多伺服控制的完整Arduino代碼。
Arduino具有伺服電機(jī)庫(kù),它處理所有與PWM相關(guān)的東西來(lái)旋轉(zhuǎn)伺服器,您只需要輸入要旋轉(zhuǎn)的角度,并且有功能servo1.write(angle); 它將伺服器旋轉(zhuǎn)到所需的角度。
因此,這里我們從定義伺服電機(jī)的庫(kù)開始。
#include
在下面的代碼中,我們將所有四個(gè)伺服器初始化為 Servo1、Servo2、Servo3 和 Servo4。
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
然后,我們使用Arduino設(shè)置所有伺服器的輸入引腳。如下面的代碼所示,Servo1連接到Arduino的第3個(gè)引腳。您可以根據(jù)自己更改引腳,但請(qǐng)記住,它應(yīng)該是PWM引腳。使用帶有Arduino數(shù)字引腳的伺服是不可靠的。
void setup() {
servo1.attach(3);
servo2.attach(5);
servo3.attach(6);
servo4.attach(9);
}
現(xiàn)在,在 void loop() 函數(shù)中,我們只是將所有伺服從 0 度旋轉(zhuǎn)到 180 度,然后旋轉(zhuǎn)180 度到 0 度。以下代碼中使用的延遲用于增加或降低伺服的速度,因?yàn)樗鼤?huì)影響變量“i”的速度增加或減少。
void loop() {
for (int i = 0; i < 180; i++) {
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(10);
}
for (i = 180; i > 0; i--) {
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(10);
}
}
使用 Arduino 控制多個(gè)伺服系統(tǒng)工作:
在將兩個(gè)以上的伺服系統(tǒng)與一個(gè)Arduino一起使用時(shí),我們都面臨著當(dāng)前的問(wèn)題。唯一的解決方案是連接具有適當(dāng)額定電流的外部電源(在此項(xiàng)目中,我使用2A和9v電源)。對(duì)于外部電源,您可以使用適配器,RPS(穩(wěn)壓電源儀表)或優(yōu)質(zhì)的9v伏電池,您可以使用筆記本電腦USB端口為小型伺服供電。要使用外部電源,您只需將 Arduino 接地短接至外部電源接地。
使用下面給出的Arduino代碼對(duì)Arduino進(jìn)行編程,并將電路圖中所示的所有伺服電機(jī)連接到電機(jī),并為電機(jī)提供適當(dāng)?shù)碾娫?。因此,所有伺服器將不間斷地協(xié)同工作。
#include
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int i = 0;
void setup() {
servo1.attach(3);
servo2.attach(5);
servo3.attach(6);
servo4.attach(9);
}
void loop() {
for (i = 0; i < 180; i++) {?
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(10);
}
for (i = 180; i > 0; i--) {
servo1.write(i);
servo2.write(i);
servo3.write(i);
servo4.write(i);
delay(10);
}
}
-
電機(jī)
+關(guān)注
關(guān)注
142文章
9021瀏覽量
145506 -
伺服電機(jī)
+關(guān)注
關(guān)注
85文章
2048瀏覽量
57875 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187108
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論