PWM - 伺服馬達控制
材料準備
AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1
Servo x 1 (Ex. Tower Pro SG90)
範例説明
伺服馬達會依照指示命令動作, 它上面有軸柄, 通常可以轉0~180度。一般的Servo會有三條線,紅色是電源線,黑色或棕色是GND,以及訊號線。
我們傳送PWM訊號到訊號線上來控制軸柄的角度。訊號的頻率是50Hz,即每個訊號長度為20ms。每個Servo會定義pulse bandwidth, 通常是1ms~2ms。舉例來說, 如果pulse長度是1ms, 軸柄轉到0度, 那麼1.5ms的pulse長度會讓軸柄轉到90度, 2ms的pulse長度會讓軸柄轉到180度。另外Servo也會定義dead bandwidth, 代表這一次的pulse長度與上一次的差異至少要大於dead bandwidth, Servo才會動作。
AMB21 / AMB22 接線圖如下:
AMB23 接線圖如下:
BW16 接線圖如下:
BW16-TypeC Wiring Diagram:
Open the example, “File” → “Examples” → “AmebaAnalog” →
“ServoSweep”
這個範例會讓Servo從0度轉到180度, 再從180度轉回0度。
程式碼説明
Ameba的Servo API仿照Arduino的API, 但是Arduino已經有原生的Servo API, 所以header檔我們改成“AmebaServo.h”, Class的名稱也改成AmebaServo , 除此之外使用方式跟Arduino一樣。
Arduino Servo預設的pulse bandwidth為0.5ms~2.4ms, 剛好與Power Pro SG90一樣,所以attach的部份直接設定要接的pin:
myservo.attach(9);
接著讓軸柄轉至設定的角度, 其中write裡面填的是角度
myservo.write(pos);