目次
前
次
サーボモータの動かし方
1個のサーボモータは、電源、GND、制御信号端子の3ピン構成である。
制御信号に、20msごとに1ms〜2msのHパルスを与えると、パルス幅
に比例した角度分、軸を回転させる。これをPWM(Pulse Width Modulation)
と呼ぶ。
マイコンを利用する場合、1個のサーボモータならば、0.1mごとにカウント
アップする変数stateとパルス幅を制御する変数pwmを用意して、タイマー割込み
でPWM制御信号を生成する。
タイマー割込みが0.1msの場合は、変数stateにより次のようにサーボモータ
に信号を送ればよい。
state 0 -> 9 H出力
state 10 -> 19 (state-10) <= pwm H出力 それ以外は L出力
state 20 -> 199 L出力
タイマー割込み処理のコードは、次のようにする。
void timer_hanlder(void)
{
UBYTE tmp ;
/* 割込み関係の始末 */
/* PWM信号判定 */
if ( state > 20 ) {
tmp = OFF ;
} else {
if ( state > 10 ) {
tmp = OFF ;
if ( (state - 10) <= pwm ) {
tmp = ON ;
}
} else {
tmp = ON ;
}
}
/* PWM信号出力 */
SERVO_BIT = tmp ;
/* カウンタ更新 */
state++ ;
if ( state == 200 ) {
state = 0 ;
}
}
目次
前
次