遙控模性中常見的伺服馬達(servo)的,連接線包含三條線,黑色接地,紅色接正電源(大多介於4.8V~7.2V之間,依伺服器規格而定),另一條控制線則接收控制板送來的訊號,轉動伺服器的擺臂至固定角度 。
大部分伺服器接收的訊號為20ms的週期脈波,藉由操控高電位的長度(工作週期duty cycle),可讓伺服器知道該讓擺臂轉到哪個角度,例如下圖表說明了當duty cycle=1.0ms(1000us)時,擺臂位置位於-45度,當duty cycle=1.5ms(1500us)時,擺臂位置位於0度。
伺服器能接受的duty cycle值,多介於750us~2250之前,依伺服器規格而定。
以下程式片段控制接在pin9的伺服馬達,設定duty cycle=1500,可讓伺服器擺臂轉動至中間位置
static PWM servo = new PWM(Pins.GPIO_PIN_D9);
servo.SetPulse((uint)20000, pos); // (全週期, 工作週期)
實驗線路如下圖
完整程式如下表,程式執行後會看到擺臂不斷的在左-中-右-中-左來回擺動。
namespace PWM_伺服馬達測試
{
public class Program
{
static PWM servo = new PWM(Pins.GPIO_PIN_D9);
public static void ServoMove(uint pos)
{
servo.SetPulse((uint)20000, pos); // (全週期, 工作週期)
Thread.Sleep(1000);
}
public static void Main()
{
while (true)
{
ServoMove(1500); //工作週期
ServoMove(2250);
ServoMove(1500); //工作週期
ServoMove( 750);
}
}
}
}
沒有留言:
張貼留言