關(guān)于Arduino舵機(jī)的控制

舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼代嗤、電路板、無(wú)核心馬達(dá)缠借、齒輪與位置檢測(cè)器所構(gòu)成干毅。一種位置(角度)伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)泼返。目前在高檔遙控玩具硝逢,如航模,包括飛機(jī)模型,潛艇模型渠鸽;遙控機(jī)器人中已經(jīng)使用得比較普遍叫乌。舵機(jī)是一種俗稱,其實(shí)是一種伺服馬達(dá)徽缚。

1. 舵機(jī)的工作原理:

原理是由接收機(jī)或者單片機(jī)發(fā)出信號(hào)給舵機(jī)综芥,其內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms猎拨,寬度為1.5ms 的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較屠阻,獲得電壓差輸出红省。經(jīng)由電路板上的IC 判斷轉(zhuǎn)動(dòng)方向,再驅(qū)動(dòng)無(wú)核心馬達(dá)開(kāi)始轉(zhuǎn)動(dòng)国觉,透過(guò)減速齒輪將動(dòng)力傳至擺臂吧恃,同時(shí)由位置檢測(cè)器送回信號(hào),判斷是否已經(jīng)到達(dá)定位麻诀。適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)痕寓。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn)蝇闭,使得電壓差為0呻率,電機(jī)停止轉(zhuǎn)動(dòng)。一般舵機(jī)旋轉(zhuǎn)的角度范圍是0 度到180 度呻引。


2. 舵機(jī)的電線介紹:

舵機(jī)的電線.jpg

舵機(jī)有很多規(guī)格礼仗,但所有的舵機(jī)都有外接三根線,分別用棕逻悠、紅元践、橙三種顏色進(jìn)行區(qū)分,由于舵機(jī)品牌不同童谒,顏色也會(huì)有所差異单旁,棕色為接地線,紅色為電源正極線饥伊,橙色為信號(hào)線象浑。

舵機(jī)線 棕色 紅色 橙色
功能 接地 正極 信號(hào)線

3. 舵機(jī)的控制:

舵機(jī)的轉(zhuǎn)動(dòng)的角度是通過(guò)調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號(hào)的占空比來(lái)實(shí)現(xiàn)的,標(biāo)準(zhǔn)PWM(脈沖寬度調(diào)制)信號(hào)的周期固定為20ms(50Hz)撵渡,理論上脈寬分布應(yīng)在1ms2ms 之間融柬,但是,事實(shí)上脈寬可由0.5ms2.5ms 之間趋距,脈寬和舵機(jī)的轉(zhuǎn)角0°~180°相對(duì)應(yīng)粒氧。

控制示意圖.png

旋轉(zhuǎn)的角度數(shù)對(duì)應(yīng)著相應(yīng)的脈沖的寬度。

舵機(jī)的控制方式有兩種:
  • 通過(guò)Arduino 的普通數(shù)字傳感器接口產(chǎn)生占空比不同的方波节腐,模擬產(chǎn)生PWM 信號(hào)進(jìn)行舵機(jī)定位外盯;
  • 直接利用Arduino 自帶的Servo 函數(shù)進(jìn)行舵機(jī)的控制摘盆,這種控制方法的優(yōu)點(diǎn)在于程序編寫(xiě),缺點(diǎn)是只能控制2 路舵機(jī)饱苟,

注意:

由于舵機(jī)牌子不同孩擂,對(duì)于同一信號(hào),不同牌子的舵機(jī)旋轉(zhuǎn)的角度也會(huì)有所不同箱熬。


4. 例程:

  • 舵機(jī)轉(zhuǎn)動(dòng)
#include <Servo.h> //此程序的功能是將舵機(jī)從0到180度然后從180到0度不停的旋轉(zhuǎn)
Servo myservo;  //創(chuàng)建一個(gè)舵機(jī)控制對(duì)象
                          // 使用Servo類最多可以控制8個(gè)舵機(jī)
int pos = 0;    // 該變量用與存儲(chǔ)舵機(jī)角度位置
void setup() 
{ 
  myservo.attach(9);  // 該舵機(jī)由arduino第九腳控制
} 
void loop() 
{ 
  for(pos = 0; pos < 180; pos += 1)  // 從0度到180度運(yùn)動(dòng) 
  {                                                     // 每次步進(jìn)一度
    myservo.write(pos);        // 指定舵機(jī)轉(zhuǎn)向的角度
    delay(15);                       // 等待15ms讓舵機(jī)到達(dá)指定位置
  } 
  for(pos = 180; pos>=1; pos-=1)   //從180度到0度運(yùn)動(dòng)  
  {                                
    myservo.write(pos);         // 指定舵機(jī)轉(zhuǎn)向的角度 
    delay(15);                        // 等待15ms讓舵機(jī)到達(dá)指定位置 
  } 
}

  • 電位計(jì)控制舵機(jī)
#include <Servo.h> //此程序是用電位計(jì)來(lái)控制舵機(jī)的旋轉(zhuǎn)的类垦。
Servo myservo;     //創(chuàng)建一個(gè)舵機(jī)控制對(duì)象  
int potpin = 0;  //該變量用于存儲(chǔ)用電位器讀出的模擬值
int val;    // 該變量用與存儲(chǔ)舵機(jī)角度位置  
void setup() 
{ 
  myservo.attach(9);  // 該舵機(jī)由arduino第九腳控制  
} 
void loop() 
{ 
  val = analogRead(potpin);   //讀取電位器控制的模擬值 (范圍在0-1023) 
  val = map(val, 0, 1023, 0, 179);     // map函數(shù)是arduino自帶的
函數(shù),不是需要引用庫(kù)城须。意思是把0-1023與0-179縮小范圍對(duì)應(yīng)起來(lái) 蚤认;
  myservo.write(val);          // 指定舵機(jī)轉(zhuǎn)向的角度  
  delay(15);                  // 等待15ms讓舵機(jī)到達(dá)指定位置   
}

  • 串口通信控制舵機(jī)
int sp1=10;//定義舵機(jī)接口數(shù)字接口10
int pulsewidth;//定義脈寬變量
int val;
int val1;
int myangle1;
//下面是servopulse函數(shù)部分
void servopulse(int sp1,int val1)//定義一個(gè)脈沖函數(shù)
{
  myangle1=map(val1,0,180,500,2480);
  digitalWrite(sp1,HIGH);//將舵機(jī)接口電平至高
  delayMicroseconds(myangle1);//延時(shí)脈寬值的微秒數(shù)
  digitalWrite(sp1,LOW);//將舵機(jī)接口電平至低
  delay(20-myangle1/1000);  //原文是val1,不知道為什么也執(zhí)行正確
}
//servopulse函數(shù)部分到此結(jié)束
void setup()
{
  pinMode(sp1,OUTPUT);//設(shè)定舵機(jī)接口為輸出接口
  //設(shè)置兩組串口波特率
  Serial.begin(9600);
  delay(500);
  Serial.println("servu=o_seral_simple ready" ) ;
}
void loop()//將0到9的數(shù)轉(zhuǎn)化為0到180角度糕伐,并讓LED閃爍相應(yīng)數(shù)的次數(shù)
{
  val=Serial.read();//讀取串行端口的值
  if(val>'0'&&val<='9')
  {
    val1=val-'0';//將特征量轉(zhuǎn)化為數(shù)值變量
    val1=map(val1,0,9,0,180);//將角度轉(zhuǎn)化為500-2480的脈寬值
    Serial.print("moving servo to ");
    Serial.print(val1,DEC);  //DEC是十進(jìn)制的意思砰琢。
    Serial.println();
    for(int i=0;i<=50;i++)//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
    {
      servopulse(sp1,val1);//引用脈沖函數(shù)
    }
  }
}

舵機(jī)的控制有些bug(奇怪),用非pwm的端口也能控制良瞧。


5. 舵機(jī)的實(shí)際應(yīng)用陪汽。

  • 高檔遙控仿真車,至少得包括左轉(zhuǎn)和右轉(zhuǎn)功能,高精度的角度控制,必然給你最真實(shí)的駕車體驗(yàn).
  • 多自由度機(jī)器人設(shè)計(jì),為什么日本人設(shè)計(jì)的機(jī)器人可以上萬(wàn)RMB的出售,而國(guó)內(nèi)設(shè)計(jì)的一些兩三千塊也賣不出去呢,還是一個(gè)品質(zhì)的問(wèn)題褥蚯。
  • 多路伺服航闹吭控制,電動(dòng)遙控飛機(jī),油動(dòng)遙控飛機(jī),航海模型等。

參考文章:

DIYer修煉:舵機(jī)知識(shí)掃盲

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赞庶,一起剝皮案震驚了整個(gè)濱河市你辣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尘执,老刑警劉巖舍哄,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異誊锭,居然都是意外死亡表悬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丧靡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蟆沫,“玉大人,你說(shuō)我怎么就攤上這事温治》古樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵熬荆,是天一觀的道長(zhǎng)舟山。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么累盗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任寒矿,我火速辦了婚禮,結(jié)果婚禮上若债,老公的妹妹穿的比我還像新娘符相。我一直安慰自己,他們只是感情好蠢琳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布啊终。 她就那樣靜靜地躺著,像睡著了一般傲须。 火紅的嫁衣襯著肌膚如雪孕索。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天躏碳,我揣著相機(jī)與錄音,去河邊找鬼散怖。 笑死菇绵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的镇眷。 我是一名探鬼主播咬最,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼欠动!你這毒婦竟也來(lái)了永乌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤具伍,失蹤者是張志新(化名)和其女友劉穎翅雏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體人芽,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡望几,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萤厅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橄抹。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惕味,靈堂內(nèi)的尸體忽然破棺而出楼誓,到底是詐尸還是另有隱情,我是刑警寧澤名挥,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布疟羹,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阁猜。R本人自食惡果不足惜丸逸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剃袍。 院中可真熱鬧黄刚,春花似錦、人聲如沸民效。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)畏邢。三九已至业扒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舒萎,已是汗流浹背程储。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臂寝,地道東北人章鲤。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像咆贬,于是被迫代替她去往敵國(guó)和親败徊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 伺服電機(jī)(servo motor ) 伺服電機(jī)是指在伺服系統(tǒng)中控制機(jī)械元件運(yùn)轉(zhuǎn)的發(fā)動(dòng)機(jī)掏缎,是一種補(bǔ)助馬達(dá)間接變速裝置...
    禾灮閱讀 3,215評(píng)論 0 5
  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚(yú)閱讀 9,000評(píng)論 0 13
  • 選擇題部分 1.(),只有在發(fā)生短路事故時(shí)或者在負(fù)荷電流較大時(shí),變流器中才會(huì)有足夠的二次電流作為繼電保護(hù)跳閘之用皱蹦。...
    skystarwuwei閱讀 12,927評(píng)論 0 7
  • 1.公用事業(yè)公司 2.綜合行政執(zhí)法局
    張瑋66閱讀 122評(píng)論 0 0
  • 山是一部百科全書(shū),年輕時(shí)讀它薄眷蜈,年長(zhǎng)時(shí)讀它厚沪哺。“橫看成嶺側(cè)成峰酌儒,遠(yuǎn)近高低各不同”凤粗,山讓人類讀了千萬(wàn)年而永遠(yuǎn)讀之不完...
    dizhiyuan閱讀 286評(píng)論 1 1