物聯網開發硬體應用
Would you like to react to this message? Create an account in a few clicks or log in to continue.
物聯網開發硬體應用

提升國內高職學生物聯網開發硬體應用入門技術 待進入科技大學再升級為物聯網開發硬體設計人員


您沒有登錄。 請登錄註冊

基礎元件教學伺服馬達控制

向下  內容 [第1頁(共1頁)]

1基礎元件教學伺服馬達控制 Empty 基礎元件教學伺服馬達控制 周四 10月 19, 2017 8:30 pm

Admin


Admin

專案說明

控制伺服馬達的轉動, 從 0 度轉到 90度, 再轉到180 度, 再回到 0 度
伺服馬達 (Servo) 為遙控車, 遙控飛機等常用的控制馬達, 內部包含一個直流馬達, 齒輪箱, 控制電路。 透過外部輸入訊號來轉動軸柄, 轉動的角度通常介於 0 度 ~ 180 度, 不同的品牌型號會有角度上的差異。 伺服馬達通常都會有一定誤差, 就算同廠牌同型號都會有一定程度的誤差, 若要做到較精準的使用, 需要找出每顆的整輸入訊號和工作角度的關係, 再給出正確的訊號。
馬達通常會有三條線, 紅色接電源, 黑色 (或棕色) 接地,黃色 (或其他彩色) 接訊號源。 馬達通常需要較大的電流來驅動, 若單一顆小馬達可使用板載的電源(如此範例), 但若接多顆馬達, 需要使用外部供電。
電路圖

LinkIt 7697
麵包板
伺服馬達 (EMAX ES08A)
杜邦線

基礎元件教學伺服馬達控制 67810

積木畫布
基礎元件教學伺服馬達控制 678110


執行此範例可以看到馬達左右旋轉, 在兩端位置有可能會抖動 (並微微發熱), 這現象是旋轉角度已經超過此馬達的極限了, 長時間操作操作馬達會壞掉。

產生的 Arduino 程式如下
#include <Servo.h>

Servo __myservo10;

void setup()
{
__myservo10.attach(10);
}

void loop()
{
__myservo10.write(0);
delay(2000);

__myservo10.write(180);
delay(2000);
}

衍伸學習 : 超出馬達範圍

控制馬達的訊號, 是透過板子的腳位送出一個 50hz (每秒重複 50 次, 每次 20ms) 的訊號, 訊號內會有一拉高的訊號, 告知馬達的電路板這次要轉多少度。 每個型號的伺服馬達的可旋轉角度和控制旋轉角度的脈衝寬度都不一樣。 若無額外設定, 則軟體預設的脈衝寬度會是 544µs ~2400µs (0.544ms ~ 2.4 ms)
若此馬達的轉動範圍和接收訊號範圍是和預設值完全相同, 則馬達收到 544µs 脈衝寬度的訊號時, 會轉到 0 度。 收到 2400µs 的訊號時, 會轉到 180 度

基礎元件教學伺服馬達控制 678210

現實使用上馬達的工作範圍不一定符合軟體的訊號預設值, 所以會造成轉不夠或轉過頭。
此範例使用的是 Grove Starter Kit for LinkIt 7697 內的 Mini Servo, 型號為 (EMAX ES08A), 經測試兩端極值的脈衝寬度約為 620µs ~ 2700µs (角度約 200 度)。
可嘗試修改積木如下圖, 將脈衝範圍設定符合這顆馬達的工作範圍, 就不會發生抖動現象.

基礎元件教學伺服馬達控制 678310

https://iotboard.666forum.com

回頂端  內容 [第1頁(共1頁)]

這個論壇的權限:
無法 在這個版面回復文章