久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Arduino 控制舵機(jī)

 綠顏陌上蕉下客 2017-10-03

 舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,主要是由外殼、電路板,、無核心馬達(dá),、齒輪與位置檢測器所構(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)無核心馬達(dá)開始轉(zhuǎn)動(dòng),透過減速齒輪將動(dòng)力傳至擺臂,,同時(shí)由位置檢測器送回信號(hào),,判斷是否已經(jīng)到達(dá)定位。適用于那些需要角度不斷變化并可以保持的控制系統(tǒng),。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),,通過級(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)的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號(hào)的占空比來實(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°相對應(yīng)。有一點(diǎn)值得注意的地方,,由于舵機(jī)牌子不同,,對于同一信號(hào),不同牌子的舵機(jī)旋轉(zhuǎn)的角度也會(huì)有所不同,。

 

    大概了解了舵機(jī)以后,我們就試著來控制一個(gè)舵機(jī)吧,,將GND和+5V連接好之后,,我選擇信號(hào)輸入口為數(shù)字接口7,至于供電部分要注意,,舵機(jī)轉(zhuǎn)動(dòng)時(shí)電流會(huì)比較大,,Arduino上的電源芯片可能會(huì)因過流保護(hù)到發(fā)熱而損壞,電源需要接到外部供電,,切不可使用USB供電(本人嘗試過,,深受其害)。

    我本人更喜歡使用Arduino的傳感器擴(kuò)展板,,如下圖,,連接舵機(jī)或傳感器是超方便的。

 

    連接好電路就來編寫程序吧,,我就讓舵機(jī)轉(zhuǎn)動(dòng)到我輸入數(shù)字所對應(yīng)的角度數(shù),,并將角度顯示到屏幕上。

程序如下:

int servopin=7;//定義舵機(jī)接口數(shù)字接口7
int myangle;//定義角度變量
int pulsewidth;//定義脈寬變量
int val;
void servopulse(int servopin,int myangle)//定義一個(gè)脈沖函數(shù)
{
  pulsewidth=(myangle*11)+500;//將角度轉(zhuǎn)化為500-2480的脈寬值
  digitalWrite(servopin,HIGH);//將舵機(jī)接口電平至高
  delayMicroseconds(pulsewidth);//延時(shí)脈寬值的微秒數(shù)
  digitalWrite(servopin,LOW);//將舵機(jī)接口電平至低
  delay(20-pulsewidth/1000);
}
void setup()
{
  pinMode(servopin,OUTPUT);//設(shè)定舵機(jī)接口為輸出接口
  Serial.begin(9600);//連接到串行端口,,波特率為9600
  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')
  {
    val=val-'0';//將特征量轉(zhuǎn)化為數(shù)值變量
    val=val*(180/9);//將數(shù)字轉(zhuǎn)化為角度
    Serial.print('moving servo to ');
    Serial.print(val,DEC);
    Serial.println();
    for(int i=0;i<=50;i++)//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
     {
        servopulse(servopin,val);//引用脈沖函數(shù)
      }
   }

}

下載完程序就可以輸入1到9的數(shù)字,讓你的舵機(jī)轉(zhuǎn)相應(yīng)的20°到180°了,。

這里還有一個(gè)引用庫函數(shù)的控制舵機(jī)的程序(取自Burn's Interactive ),供大家參考,。

arduino0012版本新增伺服電機(jī)控制lib,可以讓arduino更容易的控制伺服電機(jī),。

// 使用可變電阻控制伺服電機(jī)位置
#include //引入lib

Servo myservo;  // 創(chuàng)建一個(gè)伺服電機(jī)對象
int potpin = 0;  // 設(shè)定連接可變電阻的模擬引腳
int val;    // 創(chuàng)建變量,,儲(chǔ)存從模擬端口讀取的值(0到1023)
void setup()
{
  myservo.attach(9);  // 9號(hào)引腳輸出電機(jī)控制信號(hào)
                    
 //僅能使用9、10號(hào)引腳
}
void loop()
{
  val = analogRead(potpin);

 // 讀取來自可變電阻的模擬值(0到1023之間) 
  val = map(val, 0, 1023, 0, 179);    
 // 利用“map”函數(shù)縮放該值,,得到伺服電機(jī)需要的角度(0到180之間) 
  myservo.write(val);     // 設(shè)定伺服電機(jī)的位置

  delay(15);             // 等待電機(jī)旋轉(zhuǎn)到目標(biāo)角度
}
    特別需要注意的是控制信號(hào)只能通過9,、10號(hào)引腳輸出,,也就是說,該lib最多可以控制兩個(gè)伺服電機(jī),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多