找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 21712|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

Arduino舵機(jī)控制實(shí)驗(yàn)詳解 含源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
舵機(jī)控制實(shí)驗(yàn)
舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼、電路板、無(wú)核心馬達(dá)、齒輪與位置檢測(cè)器所構(gòu)成。其工作原理是由接收機(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 度。


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


舵機(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)在1ms到2ms 之間,但是,事實(shí)上脈寬可由0.5ms 到2.5ms 之間,脈寬和舵機(jī)的轉(zhuǎn)角0°~180°相對(duì)應(yīng)。有一點(diǎn)值得注意的地方,由于舵機(jī)牌子不同,對(duì)于同一信號(hào),不同牌子的舵機(jī)旋轉(zhuǎn)的角度也會(huì)有所不同。


了解了基礎(chǔ)知識(shí)以后我們就可以來(lái)學(xué)習(xí)控制一個(gè)舵機(jī)了,本實(shí)驗(yàn)所需要的元器件很少只需要舵機(jī)一個(gè)、跳線一扎就可以了。
SG90 舵機(jī)*1
面包板跳線*1 扎
用Arduino 控制舵機(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ī),因?yàn)?/font>Arduino 自帶函數(shù)只能利用數(shù)字9、10 接口。Arduino 的驅(qū)動(dòng)能力有限,所以當(dāng)需要控制1 個(gè)以上的舵機(jī)時(shí)需要外接電源。


將舵機(jī)接數(shù)字 9 接口上。
編寫(xiě)一個(gè)程序讓舵機(jī)轉(zhuǎn)動(dòng)到用戶輸入數(shù)字所對(duì)應(yīng)的角度數(shù)的位置,并將角度打印顯示到屏幕上。
參考源程序

  1. #include <Servo.h>
  2.    Servo myservo;  // 定義舵機(jī)對(duì)象,最多八個(gè)
  3.    int pos = 0;    // 定義舵機(jī)轉(zhuǎn)動(dòng)位置
  4.    void setup()
  5.    {
  6.       myservo.attach(9);  // 設(shè)置舵機(jī)控制針腳
  7.    }
  8.    void loop()
  9.   {
  10.       // 0到180旋轉(zhuǎn)舵機(jī),每次延時(shí)15毫秒
  11.       for(pos = 0; pos < 180; pos += 1)  
  12.      {  
  13.         myservo.write(pos);  
  14.         delay(15);
  15.       }
  16.       // 180到0旋轉(zhuǎn)舵機(jī),每次延時(shí)15毫秒
  17.       for(pos = 180; pos>=1; pos-=1)
  18.       {                              
  19.         myservo.write(pos);
  20.         delay(15);
  21.       }
  22.   }
復(fù)制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:396581 發(fā)表于 2018-9-14 16:32 | 只看該作者
謝謝樓主了額啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:403193 發(fā)表于 2018-9-27 23:19 | 只看該作者
樓主霸道
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表