網頁最後修改時間:2019/05/08
經由影片中程式的設定,可以自由設定適當的水平 (Pan) 和垂直(Tilt)伺服馬達旋轉的三個角度值,用來做雙軸同動的展示。
2019/05/08 新增兩個學習套件的展示影片:
- 手機控制雲台的水平(左右)與垂直(上下)轉動;
- 雲台跟隨和自穩的運動控制;
*********************************************************************************
【雲台組裝注意事項】
此組雲台 DIY 套件的組裝說明,可參考下面 YouTube 影片中的介紹。
影片中未提及,個人提出幾個較重要的組裝注意事項:
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 伺服馬達一定要歸中再組裝:
此組套件中的伺服馬達出貨之前,都會特地再進行測試,並且將轉軸旋轉至中間的位置 (當然不是用手轉),所以在拿到套件後,就可直接進行組裝。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 雲台底座的方向可自由選擇:
網頁中所使用的雲台底座方向與影片中的差了 180 度 (但其實沒什麼關係,方向變換只需要鬆開一顆螺絲即可) 視組裝與之後要安裝的位置去選擇就可以。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 雲台的組裝初始位置:
由於伺服馬達出貨的時候,轉軸是在中間的位置,因此組裝也必須要讓平台就是處在中間的位置再進行組裝 (位置可參考網頁最上面的照片),可避免受限于硬體限制,軟體指令無法達到適當的角度值。
【PWM 的 duty (佔空比) 限制】
套件中的伺服馬達是一般 RC 遙控常用的類型,RC 遙控中 PWM 的 pulse width 範圍一般設定為 1000 - 2000 µs / 20ms,依伺服馬達內部設定對應到不同的角度轉動。
打開 Arduino IDE,點擊選單中的 "File/Examples/Server/Sweep" 這個範例程式,編譯後上傳到 Arduino 開發板 (接腳使用 <D9> )
/* Sweep by BARRAGAN <http://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep */ #include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
動作之後你(妳)會發現,伺服馬達沒有所謂 0 - 180 度到 180 - 0 度的轉動變化,而是0 - 90 度到 90 - 0 度,WHY... WHY... tell me WHY !
這就要回歸到 Servo 這個函式庫內部。預設的 Servo 的 pulse width 範圍等於 1000 - 2000 µs,所對應的角度等於 0 - 180 度,對應到賣場這組伺服馬達就是 0 - 180 = 0 - 90,所以輸出的角度值並不是我們要的 !
「那麼,要怎麼改呢?」
很簡單,修改掉預設的 pulse width 最小與最大的輸出範圍就可以;但這個範圍不是隨便設的,不對的設定有可能會損壞伺服馬達,所以使用前必須要自己確定清楚這個範圍是可用的。
若是使用賣場的套件,直接套用下面的設定值即可。
/* Sweep by BARRAGAN <http://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep */ #include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9, 700, 2400); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
【測試注意事項】
以 Arduino 開發板為例。程式上傳之後,不要直接使用 USB 的電源供電驅動伺服馬達,請使用外接電源;要不,伺服馬達不是不會轉動,就是會產生異常動作。
【兩軸雲台動作展示】
下面影片使用賣場的雲台 DIY 套件作展示。任選一組水平方向最小與最大的旋轉角度值,以及垂直上下最小與最大的旋轉角度值,進行雙軸同動。因為使用的指令就是上面範例提及的那些個,所以就不再額外贅述!
【學習套件展示影片】
【結論】
這組雲台除了組裝需要花一些功夫之外,操作與動作都很容易實現,只需要注意上面所提及的部分,相信就能發揮最大的功用 !
Happy DIY ^_^
<< 部落格相關文章 >>
- ESP8285 兩軸伺服馬達雲台運動控制學習套件{4 of 4}雲台自穩與跟隨運動控制
- ESP8285 兩軸伺服馬達雲台運動控制學習套件{3 of 4}MPU6050 的 DMP 輸出測試
- ESP8285 兩軸伺服馬達雲台運動控制學習套件{2 of 4}MPU6050 的偏移值校正(offset calibration)
- ESP8285 兩軸伺服馬達雲台運動控制學習套件{1 of 4}手機控制的兩軸伺服馬達雲台
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !