舵機(jī)的控制一般需要一個(gè)20ms的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度舵機(jī)為例,那么對(duì)應(yīng)的控制關(guān)系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
請(qǐng)看下形象描述吧:

舵機(jī)的工作電壓和電流
每一款舵機(jī)都有自己的參數(shù),如TR213舵機(jī)的工作電壓是4.8-7.2V,TR205舵機(jī)的工作電壓是4.8-6V,電壓不能超過(guò)這個(gè)范圍,否則會(huì)很容易燒壞舵機(jī),在不清楚舵機(jī)工作電壓范圍的情況下,建議使用5V給舵機(jī)供電。
舵機(jī)的工作電流是根據(jù)舵機(jī)的實(shí)際情況而定的,如TR213舵機(jī),在空載的時(shí)候電流幾乎為0,而在正常負(fù)載的情況下,電流在0.5A左右,視實(shí)際情況而定。六足機(jī)器人需要18個(gè)TR213金屬舵機(jī),需要提高的電流大概在8A左右,如果電源功率不夠會(huì)影響舵機(jī)的性能,最常見(jiàn)的現(xiàn)象是,當(dāng)一個(gè)舵機(jī)負(fù)載的時(shí)候,其他舵機(jī)會(huì)出現(xiàn)混亂,無(wú)規(guī)律的亂擺。
舵機(jī)的接線如下圖


市場(chǎng)上90%的舵機(jī)中間那根線都是正級(jí)。
基礎(chǔ)知識(shí)介紹的差不多了,具體可以去百度看看舵機(jī)手冊(cè)。
下面我們來(lái)說(shuō)說(shuō)在樹(shù)莓派中,如何用wiringPi庫(kù)去驅(qū)動(dòng)舵機(jī)隨心所欲的轉(zhuǎn)。為什么要用wiringPi庫(kù)呢,因?yàn)椴┲鞑辉趺聪矚g寫(xiě)Python,博主喜歡寫(xiě)c/c++代碼。廢話不多說(shuō),開(kāi)始。
第一:首先,我已經(jīng)知道了舵機(jī)的pwm周期為20ms,然后是這樣的
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
也就是說(shuō)給它1.5ms的高電平,19.5ms的低電平轉(zhuǎn)向0度位置。這里需要注意,是0度位置,不是舵機(jī)轉(zhuǎn)0度,當(dāng)然如果舵機(jī)怎么正好處于0度位置,當(dāng)然也不轉(zhuǎn)。這里可能就有人要問(wèn)了,那啥位置算是0度位置呢?根據(jù)我對(duì)舵機(jī)的理解(180度的舵機(jī)),就是你向一個(gè)方向用手轉(zhuǎn)動(dòng)舵機(jī),到一個(gè)你無(wú)法轉(zhuǎn)動(dòng)的地方,這個(gè)位置不是0度位置,就是180度位置。然后你用下面的代碼運(yùn)行一下就知道了。

我這里就這樣來(lái)模仿pwm的。這個(gè)代碼一運(yùn)行,舵機(jī)就自動(dòng)到了0度位置。
同理,想轉(zhuǎn)到45度位置,90度位置,135度位置,180度位置的代碼如下:


這里可能有人要說(shuō)為啥不用delay()函數(shù)呢,因?yàn)閐elay函數(shù)精確到毫秒,當(dāng)我傳1.5給它的時(shí)候,和傳1給它的時(shí)候,你會(huì)發(fā)現(xiàn)舵機(jī)都是轉(zhuǎn)向45度位置,因?yàn)閐elay(int x),當(dāng)1.5傳過(guò)去的時(shí)候精度丟失了。(我一開(kāi)始就犯了這個(gè)錯(cuò)誤,尷尬啊)
到這里我想你應(yīng)該已經(jīng)知道怎么旋轉(zhuǎn)45度,90度,等等了吧。然后你可能發(fā)現(xiàn)舵機(jī)旋轉(zhuǎn)的太快,可能不受自己的控制了。這里我就要給你提供一種思路,怎么去解決這個(gè)問(wèn)題。
當(dāng)然,本人能力有限,寫(xiě)的難免有錯(cuò)誤,希望指正。
下面我給一個(gè)很不錯(cuò)的鏈接,想深入研究的可以去看看(他用的是單片機(jī))
http://www.njliaohua.com/lhd_5xtsq7jr1e0088t3wpu3_1.html
我是這樣認(rèn)為的。0.5ms轉(zhuǎn)向0度,1ms轉(zhuǎn)向45度,那個(gè)這其中是不是經(jīng)歷了0.5ms,而且轉(zhuǎn)了45度,所以我就用0.5=500us,500us/45度。然后得出約為11.11us/度。
接下來(lái)我的代碼是這樣寫(xiě)的。

這樣一來(lái)速度確實(shí)是降了下來(lái),但是每次舵機(jī)都要先轉(zhuǎn)向0度位置,然后才能轉(zhuǎn)向我們輸入的個(gè)角度位置。
樹(shù)莓派3b+控制舵機(jī)、伺服電機(jī)的驅(qū)動(dòng)代碼
#include《stdio.h》
#include《wiringPi.h》
void init();
int main()
{
init();
int angle=0;
scanf(“%d”,&angle);
int i=0;
float x=0;
int k=180;//180次循環(huán)的時(shí)間夠了
while(k--)
{
x=11.11*i;
digitalWrite(15,HIGH);
delayMicroseconds(500+x);
digitalWrite(15,LOW);
delayMicroseconds(19500-x);
if(i==angle)
break;
i++;
}
return0;
}
void init()
{
wiringPiSetup();
pinMode(15,OUTPUT);
}
-
舵機(jī)
+關(guān)注
關(guān)注
17文章
375瀏覽量
43189 -
樹(shù)莓派
+關(guān)注
關(guān)注
122文章
2078瀏覽量
110454
發(fā)布評(píng)論請(qǐng)先 登錄
樹(shù)莓派教程 詳解樹(shù)莓派驅(qū)動(dòng)OLED模塊
#硬聲創(chuàng)作季 #樹(shù)莓派 樹(shù)莓派PICO-05 PWM驅(qū)動(dòng)舵機(jī)
請(qǐng)教利用樹(shù)莓派制作六足機(jī)器人的問(wèn)題
我買(mǎi)了兩個(gè)SG90舵機(jī) 樹(shù)莓派怎么寫(xiě)代碼!?
樹(shù)莓派之MPU6050控制舵機(jī)轉(zhuǎn)向
樹(shù)莓派遙控視頻小車的方法
樹(shù)莓派有什么用_樹(shù)莓派能用來(lái)做啥_樹(shù)莓派新手入門(mén)教程
樹(shù)莓派是什么樹(shù)莓派的簡(jiǎn)單介紹
微雪電子樹(shù)莓派舵機(jī)驅(qū)動(dòng)板 Servo Driver HAT (B)介紹
微雪電子樹(shù)莓派舵機(jī)驅(qū)動(dòng)板|Servo Driver HAT介紹
樹(shù)莓派+單片機(jī)+驅(qū)動(dòng)電機(jī)
樹(shù)莓派遙控視頻小車(附代碼)
樹(shù)莓派驅(qū)動(dòng)步進(jìn)電機(jī)
樹(shù)莓派驅(qū)動(dòng)步進(jìn)電機(jī)
樹(shù)莓派控制步進(jìn)電機(jī)
樹(shù)莓派驅(qū)動(dòng)舵機(jī)介紹_樹(shù)莓派驅(qū)動(dòng)舵機(jī)代碼
評(píng)論