マイクロサーボを試してみました。サーボが動いたときに電源がドロップしてしまうので、VCCは5Vを供給し、サーボの電源も5Vが供給されるように配線しています。マイコン自体は3.3Vを使用していますので、1.7Vぐらいドロップしてしまっても大丈夫です。
サーボへの制御信号は3.3Vでも問題無いようです。このテストでは10kのボリュームにあわせてサーボが連動するようにしています。
使用機器は下記のとおり。他、パソコンや電源、PICKIT2も当然ながら必要です。
マイクロサーボ Tower Pro Pte Ltd SG92R
マイコンボード(PIC16F1947搭載)
ZEATEC co.,ltd. ZT-PIC16F194701(3.3V仕様)
接続は配線図と写真を参考にして下さい。
ライブラリを作るまでも無いと思ったのでメインループに下記のソースを記載しているところがメインの制御ソースです。ちなみにPWMも使っていません。PWMを使うとサーボの接続数が制限されると思うので使ったこと無いです。 counttimer_servo_oneという関数は20msec単位で0以外が割り当てされ、20msec単位でサーボの処理をしています。 0.5msec+アナログ値の時間分を1とし、終わったら0にする。それを20msec単位でループしています。同じ要領で複数用意すればいくつかのサーボが同時に制御できると思います。 また、サーボの制御でdelayを多用してしまうのでシリアルポートはusart1では無く、シリアル信号の割り込みによってサーボへの信号のタイミングが変わってしまうため、usart2のほうがいいと思います。
if(counttimer_servo_one != 0){
counttimer_servo_one = 0;
servo_angle = analog_value * 0.176;
output_bit(PIN_E0,1);
delay_us(500);
for(tmp1=0;tmp1<servo_angle;tmp1++){
delay_us(9);
delay_cycles(2);//10.5us
}
output_bit(PIN_E0,0);
}
©ZEATEC co.,ltd.