用Arduino類(lèi)庫(kù)驅(qū)動(dòng)舵機(jī)并不是一件難事,如果需要驅(qū)動(dòng)很多電機(jī),就需要要占用更多的引腳,也會(huì)影響到Arduino的處理能力。專門(mén)的舵機(jī)驅(qū)動(dòng)板很好的解決了這個(gè)問(wèn)題。
此舵機(jī)驅(qū)動(dòng)板使用PCA9685芯片,是16通道12bi tPWM舵機(jī)驅(qū)動(dòng),用12個(gè)弓|腳通過(guò)I2C就可以驅(qū)動(dòng)16個(gè)舵機(jī)。不僅如此,你還可以通過(guò)級(jí)聯(lián)的方式最多級(jí)聯(lián)62個(gè)驅(qū)動(dòng)板,總共可以驅(qū)動(dòng)992個(gè)舵機(jī)!
供電部分
大多數(shù)的舵機(jī)設(shè)計(jì)電壓都是在5~6V,尤其在多個(gè)舵機(jī)同時(shí)運(yùn)行時(shí),跟需要有大功率的電源供電。如果直接使用Arduino 5V弓|腳直接為舵機(jī)供電,會(huì)出現(xiàn)一些難以預(yù)測(cè)的問(wèn)題,所以我們建議你能有個(gè)合適的外部電源為驅(qū)動(dòng)板供電。
連接舵機(jī)
大多數(shù)舵機(jī)都是使用標(biāo)準(zhǔn)3線母插頭連接,只要按照對(duì)應(yīng)的引腳插入驅(qū)動(dòng)板就可以了。(地線一般為黑色或棕色、信號(hào)線一般為黃色或白色)
一個(gè)驅(qū)動(dòng)板上最多可以添加16個(gè)舵機(jī)。
驅(qū)動(dòng)板級(jí)聯(lián)
多驅(qū)動(dòng)板級(jí)聯(lián)(最多可級(jí)聯(lián)62個(gè))為你提供更多的擴(kuò)展性,連接方式如下圖所示
為驅(qū)動(dòng)板分配地址
級(jí)聯(lián)的每個(gè)驅(qū)動(dòng)板都需要有一個(gè)唯一的訪問(wèn)地址。每個(gè)驅(qū)動(dòng)板的初始I2C地址是0 X 40,可以通過(guò)右上角的跳線修改I2C地址。用焊錫將一個(gè)跳線連上就表示一個(gè)二進(jìn)制數(shù)字“1”。
Address = C X 40
Board 0:
Offset = binary 00000 (默認(rèn))
Board 1: Address= 0x41Offset= binary 00001(如上圖,接上A0)
Board 2: Address= 0x42 Offset= binary 00010 (接上A1)
Board 3: Address= C x43 Offset= binary 00011(接上AO和A1)
Board 4: Address= 0x44 Offset= binary 00100 (接上A2)
以此類(lèi)推
代碼示例:
#include 《Wire.h》
#include
《Adafrui t_PWMServoDriver.h》
Adafrui t_PWMServoDriver pwm1二
Adafrui t_PWMServoDriver (0 X 40);
Adafruit_PWMServoDriver pwm2 =
Adafrui t_PMServoDriver (0 X 41);
void setup() {
Serial.begin(9600);
Serial.println(“16 chanel
PWM test!”);
pwm1.begin();
//
pwm1.setPWMFreq(1600);
Thi s is the maximum PWM[ frequency
pwm2.begi n();
pwm2.setPWMFreq(1600); //
Thi s is the maximum PWM[ frequency
串口指令說(shuō)明:
舵機(jī)移動(dòng)指令
指令格式:#(舵機(jī)號(hào))P(脈沖寬度)………#(舵機(jī)號(hào))P(脈沖寬度)T(移動(dòng)時(shí)間)
舵機(jī)號(hào):1~16
脈沖寬度:500~2500,對(duì)應(yīng)角度0~180度
移動(dòng)時(shí)間:從現(xiàn)在位置移動(dòng)到指定位置所需的時(shí)間,單位ms,時(shí)間越短舵機(jī)反應(yīng)越快,但過(guò)快舵機(jī)則反應(yīng)不過(guò)來(lái),一般在定在100ms以上
:回車(chē)符,指令結(jié)束符,也可寫(xiě)成0x0d,0x0a
例如:#1P1000T300
表示讓第1路舵機(jī)移動(dòng)到1000us脈寬的位置,即45度,使用的時(shí)間為300ms
#1P500#2P1000#3P1500T200
表示讓第1路,第2路和第3路分別移動(dòng)到500us脈寬,1000us脈寬,1500us脈寬的位置上,
即0度,45度,90度,各自使用的時(shí)間為200ms
動(dòng)作組指令
指令格式:#(組號(hào))G(循環(huán)次數(shù))C
例如:#1G3C
表示按順序依次執(zhí)行動(dòng)作組1,動(dòng)作組2,和動(dòng)作組3,這個(gè)過(guò)程循環(huán)3次完畢
以上指令注意大小寫(xiě)
舵機(jī)接線注意事項(xiàng)
舵機(jī)的接頭從左到右依次為信號(hào)線,VCC,GND。
舵機(jī)接上舵機(jī)控制板時(shí)就按圖上所示,兩邊信號(hào)線都朝里面。
16路舵機(jī)調(diào)試軟件使用說(shuō)明
使用USB轉(zhuǎn)串口模塊連接調(diào)試方法:
1,首先需要用usb轉(zhuǎn)串口模塊連接舵機(jī)控制板,用長(zhǎng)的3P連接線分別GND對(duì)應(yīng)GND,TXD對(duì)應(yīng)RXD,RXD對(duì)應(yīng)TXD連接。如圖,(套件里配的線顏色是隨機(jī)的)
2,接著在“STC擴(kuò)展板使用資料”壓縮包里找到“CP210x_VCP_Win2K_XP_S2K3”安裝usb轉(zhuǎn)串口的驅(qū)動(dòng),安裝完成后,插上usb轉(zhuǎn)串口模塊,在設(shè)備管理器——端口(COM和LPT)里確認(rèn)串口號(hào)(如圖)。
3,給舵機(jī)控制板供電,D2電源指示燈會(huì)亮起來(lái)。不要試圖用USB供電來(lái)測(cè)試舵機(jī),usb的電流只有500ma,一個(gè)舵機(jī)的電流需求就在500~1000ma了,用usb供電結(jié)果只會(huì)燒板子。
4,打開(kāi)16路舵機(jī)調(diào)試軟件,串口選擇成剛才確認(rèn)的串口號(hào),波特率默認(rèn)固定為115200,這時(shí)軟件會(huì)自動(dòng)打開(kāi)對(duì)應(yīng)串口,調(diào)試軟件跟舵機(jī)控制板的通訊就開(kāi)始了(如圖)。
單路舵機(jī)調(diào)試窗口:
下面的拉桿是可以拉動(dòng)的,上方左邊是角度值,右邊是脈寬值,隨著拉桿的移動(dòng)而變動(dòng),角度范圍0~180度,脈寬范圍是500~2500。脈寬值是可以直接輸入指定值的,比如輸入2500,當(dāng)前小窗口里角度會(huì)變成180度,下方拉桿上的滑塊會(huì)移到最右邊,同時(shí)對(duì)應(yīng)的舵機(jī)也會(huì)轉(zhuǎn)到180度位置。
動(dòng)作調(diào)試區(qū)
單個(gè)動(dòng)作的移動(dòng)時(shí)間,時(shí)間框里的數(shù)值可以改寫(xiě),默認(rèn)為300ms
動(dòng)作指令顯示區(qū)
添加:將當(dāng)前調(diào)試的舵機(jī)指令添加到顯示區(qū)
插入:將當(dāng)前調(diào)試的舵機(jī)指令插入到顯示區(qū)中高亮指令的下方
刪除:將顯示區(qū)中高亮指令刪除
保存:將顯示區(qū)的所有動(dòng)作指令保存為txt格式的文本文檔,格式為**.txt例如001.txt,注意后綴txt一定要寫(xiě)
導(dǎo)入:將保存的動(dòng)作指令文本導(dǎo)入到顯示區(qū)中
移除:將顯示區(qū)中的所有動(dòng)作指令刪除,清空
運(yùn)行:從上到下依次按單個(gè)動(dòng)作的移動(dòng)時(shí)間發(fā)送給舵機(jī)板單個(gè)動(dòng)作指令,顯示區(qū)就會(huì)高亮顯示正在運(yùn)行的指令
暫停:在運(yùn)行時(shí)點(diǎn)擊將會(huì)暫停運(yùn)行動(dòng)作指令循環(huán)運(yùn)行:前面方框內(nèi)打勾表示運(yùn)行會(huì)一直循環(huán)下去,默認(rèn)不打勾
4、表示顯示區(qū)中高亮的指令所在的行數(shù)
評(píng)論