マイクロサーボ(SG92R)を使ってみる

マイクロサーボを試してみました。サーボが動いたときに電源がドロップしてしまうので、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);
    }    
    
プロジェクトファイルも含めたサンプル 16f1947_servo.zip
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132

カテゴリーから探す


関西ドローン安全協議会修了済み

モバイルショップ

広告