サーボモーター

サーボモーターには、アナログ方式とデジタル方式があります。
アナログ方式は、入力されたPWMパルスを内部の回路でアナログ処理して電圧にし、さらにポテンショメータの電位と比較してモーターの位置決めをする方式と思われます。(実際の回路図を見たことが無いのでこのように思われますになります)。そのため、位置精度はそこそこですが安価になります。回転角度はパルスの幅に依存するため、物理的限界まで回転させることが可能だと思う。デジタル方式は、入力されたPWMパルスを内部の回路(CPUなど)でデジタル処理して、ポテンショメータの位置はA/Dコンバータで変換し、その差により位置決めをする方式だと思う。位置精度と保持力が高いと言われている。負荷がかかると高い音を出すようである。CPUによりバルス幅を測定するので、決められたパルス幅以内のパルス以外は受け付けないことになっている。従って、アナログでもデジタルでもどこまでコントロールできるかを調べておく必要があります。

デジタルサーボモーターを使ってみよう

取りあえず動かしてみるだけなので、秋月で売っている安価なSC-0352を使ってみます。


右回転左回転を繰り返す
    public class Program
    {
        public static void Main()
        {
            ServoMotor sv = new ServoMotor(Cpu.PWMChannel.PWM_1);
            sv.SetSpeed(1000);
            sv.Start();
            while (true)
            {
                for (uint i = 1000; i < 2000; i+=10)
                {
                    sv.SetSpeed(i);
                    Debug.Print("" + i);
                    CPU.delay(100);
                }
                for (uint i = 2000; i > 1000; i -= 10)
                {
                    sv.SetSpeed(i);
                    Debug.Print("" + i);
                    CPU.delay(100);
                }
            }
        }
    }
 1 
 2 
 3 
 4 
 5 CPU.P05と同じ、従ってP05に繋げる
 6 パルス幅を1000μsに設定する
 7 バルス出力スタート
 8 
 9 
10 左回り
11 
12 
13 
14 
15 
16 右回り
17 
18 
19 
20 
21 
22 
23 
24