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

伺服電機(jī)和控制Arduino平臺
基于Arduino UNO和HC-05藍(lán)牙模塊控制伺服電機(jī)

使用Arduino上的串行監(jiān)視器控制伺服電機(jī)

帶按鈕的Arduino控制伺服電機(jī)位置

使用Arduino Uno和POT控制伺服電機(jī)

Arduino/Android藍(lán)牙伺服電機(jī)控制安卓APP

基于Arduino UNO的手勢控制伺服電機(jī)
用Arduino和電位器控制伺服電機(jī)的位置

Arduino/Android藍(lán)牙多伺服電機(jī)控制

使用Arduino開發(fā)板控制伺服電機(jī)

用Arduino控制伺服電機(jī)的超級簡單方法

用Arduino和MPU6050控制伺服電機(jī)

如何使用操縱桿和Arduino控制伺服電機(jī)

評論