欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 基礎(chǔ)入門 >> 伺服電機(jī)與控制 >> 正文

使用servo.h控制SG90舵機(jī),伺服電機(jī)控制編程

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2019-05-30

本文將繼續(xù)圍繞舵機(jī)的控制進(jìn)行,我們將以Tower Pro (輝盛)SG90舵機(jī)的控制為例,因?yàn)镾G90是市面上價(jià)格較便宜,也是實(shí)驗(yàn)中用得最多的產(chǎn)品之一。

舵機(jī)

使用servo.h控制SG90舵機(jī) 

舵機(jī)(servo motor),常用于遙控模型飛機(jī),所以又常稱為RC伺服電機(jī)(RC Servo,Radio Control Servo,Remote Control Servo)。詳見:什么是舵機(jī)?

舵機(jī)里含有直流馬達(dá)、齒輪箱、軸柄、以及控制電路,我們可透過信號(hào)控制軸柄的轉(zhuǎn)動(dòng)角度,大概都是0到180度,但不同廠牌型號(hào)會(huì)有不同的范圍;經(jīng)由齒輪箱降速后,變成適當(dāng)可用的轉(zhuǎn)速,并且提供更高的轉(zhuǎn)矩(扭力)。詳見:舵機(jī)的工作原理

不過每個(gè)廠牌型號(hào)的舵機(jī)可允許旋轉(zhuǎn)的角度各不相同,也就是說可接受的信號(hào)脈沖范圍也不相同,必須查閱產(chǎn)品資料規(guī)格書,若超出范圍可能會(huì)損害舵機(jī)。下面是Tower Pro SG90的規(guī)格:

111

重量:9g

尺寸:23*12.2*29mm

工作電壓:4.8V轉(zhuǎn)矩:1.8kg-cm,當(dāng)工作電壓為4.8V時(shí)

運(yùn)轉(zhuǎn)速度:0.1秒 ∕ 60度 ,當(dāng)工作電壓為4.8V時(shí)

脈沖寬度范圍:500~2400µs

死頻帶寬度(dead band width):10µs

從中我們可知,可允許的脈沖范圍是500~2400µs,也就是0.5~2.4ms,比剛剛說的一般范圍還要寬,也就代表這個(gè)舵機(jī)能旋轉(zhuǎn)的角度更大。另外有項(xiàng)值得一提的數(shù)據(jù)是死頻帶寬度,意思是說,因?yàn)樾盘?hào)可能不穩(wěn)定而上下起伏,當(dāng)這一次脈沖寬度與上一次相差不超過死頻帶寬度時(shí),舵機(jī)便不會(huì)動(dòng)作。

servo.h控制舵機(jī)

本次試驗(yàn),我們直接用Arduino的5V腳為舵機(jī)供電。若使用超過兩個(gè)舵機(jī),則應(yīng)該使用獨(dú)立的電源為舵機(jī)供電,記得共地。信號(hào)腳使用Arduino的D9。 Arduino內(nèi)建操控舵機(jī)的標(biāo)準(zhǔn)庫,使用方法非常簡單。在如何使用Arduino舵機(jī)庫servo.h一文中,我們也進(jìn)行了相關(guān)函數(shù)的介紹。下面以操控舵機(jī)的旋轉(zhuǎn)角度為例,來看看servo.h如何控制舵機(jī)。本實(shí)驗(yàn)使用此servo.h代碼庫時(shí),D9與D10無法輸出PWM信號(hào),于是我們將舵機(jī)的信號(hào)線接在數(shù)位腳位9或10。 代碼如下:

#include <Servo.h>
Servo myservo; // 建立Servo實(shí)例,控制舵機(jī)
void setup()
{
myservo.attach(9); // 連接D9,舵機(jī)的信號(hào)線
}
void loop()
{
for(int i = 0; i <= 180; i+=1){
myservo.write(i); // 使用write,傳入角度值,從0度轉(zhuǎn)到180度
delay(20);
}
for(int i = 180; i >= 0; i-=1){
myservo.write(i);// 使用write,傳入角度值,從180度轉(zhuǎn)到0度
delay(20);
}
}

不過Servo.h預(yù)設(shè)的脈沖寬度范圍是544到2400µs,跟SG90舵機(jī)的500到2400差了一些些,我們可修正此點(diǎn)。

#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9, 500, 2400); // 修正脈沖寬度范圍
myservo.write(90); // 開始先置中90度
delay(3000);
}
void loop()
{
for(int i = 500; i <= 2400; i+=100){
myservo.writeMicroseconds(i); // 直接以脈沖寬度控制
delay(300);
}
for(int i = 2400; i >= 500; i-=100){
myservo.writeMicroseconds(i);
delay(300);
}
}

這里需要注意的,使用舵機(jī)前必須查詢舵機(jī)的規(guī)格參數(shù)表,查到正確的脈沖寬度范圍,如果與servo.h的預(yù)設(shè)范圍有偏差,需要采用“myservo.attach(9, 500, 2400)”的方式進(jìn)行修正。使用writeMicroseconds函數(shù)時(shí)也要注意,不能傳入超出范圍的值,否則可能會(huì)損壞舵機(jī)。

Tags:舵機(jī),伺服電機(jī)  
責(zé)任編輯:admin
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 商南县| 界首市| 五台县| 柳江县| 寻甸| 云阳县| 甘洛县| 鄂州市| 宁强县| 永德县| 敖汉旗| 陆丰市| 嘉义县| 宜宾县| 蕉岭县| 安宁市| 德安县| 田林县| 隆尧县| 南丹县| 宜城市| 临漳县| 巨野县| 宜宾县| 繁峙县| 乐业县| 红安县| 嘉鱼县| 兴义市| 蓝山县| 宝鸡市| 青铜峡市| 西林县| 三河市| 巴彦县| 鸡东县| 红桥区| 和平县| 砀山县| 杭锦旗| 临安市|