2012年1月3日 星期二

Netduino--伺服馬達控制

遙控模性中常見的伺服馬達(servo)的,連接線包含三條線,黑色接地,紅色接正電源(大多介於4.8V~7.2V之間,依伺服器規格而定),另一條控制線則接收控制板送來的訊號,轉動伺服器的擺臂至固定角度 。

image

大部分伺服器接收的訊號為20ms的週期脈波,藉由操控高電位的長度(工作週期duty cycle),可讓伺服器知道該讓擺臂轉到哪個角度,例如下圖表說明了當duty cycle=1.0ms(1000us)時,擺臂位置位於-45度,當duty cycle=1.5ms(1500us)時,擺臂位置位於0度。

clip_image002

伺服器能接受的duty cycle值,多介於750us~2250之前,依伺服器規格而定。

以下程式片段控制接在pin9的伺服馬達,設定duty cycle=1500,可讓伺服器擺臂轉動至中間位置

static PWM servo = new PWM(Pins.GPIO_PIN_D9);

servo.SetPulse((uint)20000, pos); // (全週期, 工作週期)

實驗線路如下圖

clip_image002[6]

完整程式如下表,程式執行後會看到擺臂不斷的在左-中-右-中-左來回擺動。

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);
            }
        }
    }
}

沒有留言:

張貼留言