H8タイニーでラジコン用プロポ制御

2003年2月23日修正

ラジコン用のサーボモータは下記のようなパルス信号を加える事で制御出来ます

制御パルス図

20mSの周期で1mSから2mS幅のパルス信号を加えると、サーボはパルス幅に見合った角度で左右に首を振ります。1.5mS幅のパルスにすると、ほぼ中間位置で停止し、それよりも短いパルス幅だと左周りに、長いパルス幅だと右周りに首を振ります。

つまり、1.5mS幅を中心として、±約0.5mSだけパルス幅を増減させることによって、連続的に首振りの角度を制御することができます。

マイコンによるパルス信号の制御

このパルス信号をはタイマWPWM動作をさせFTIOBにパルス信号を出力します。パルスの周期はジェネラルレジスターA GRAにパルス周期の20mS を設定の為40000を入れる (1/(16000000/8))*40000=0.02=20mS

パルス幅はジェネラルレジスターB GRBに2000〜4000を入れる事で1mS〜2mSに変化します。

1.0mS   (1/(16000000/8))*2000=0.001=1mS

1.5mS   (1/(16000000/8))*3000=0.0015=1.5mS

2.0mS   (1/(16000000/8))*4000=0.002=2mS

となります 2000〜4000間でサーボモータの位置を制御できます。

 

動作確認

 SW14    ON      1.0mS 出力 MIN方向(CCW)

SW15    ON      1.5mS 出力 中心

SW16    ON      2.0mS 出力 MAX方向(CW)

SW17    ON      VR1をまわす事で1から2mSの間可変

状態をLCDに表示します 以上の動作をします。

サーボモータプログラムはこちら

 

回路図

 

 

 

プログラムの一部です。

    TMRW = 0x81;                         /* FTIOB PWM出力 */

      TCRW = 0xb0;                         /* GRAでカウンタクリア  16MHz/8 */

      GRA = 40000;                        /* GRAを40000に設定 (1/16MHz/8)*40000=20mS */

      TOB=1;                               /* タイマ出力レベルセットB H*/

  wait(5000);                         /* 5ms wait*/

      lcd_cmd(0x80);print_lcd("サーボモータコントロール"); 

     while(1){

     if(P14==0) {

      lcd_cmd(0xc0);print_lcd(" MIN   1.0mS        ");  

       GRB = 2000;                 /* (1/16MHz/8)*2000=1mS */

             }

     if(P15==0) { 

      lcd_cmd(0xc0);print_lcd(" SENT  1.5mS       ");  

       GRB = 3000;                 /* (1/16MHz/8)*3000=1.5mS */

             }

     if(P16==0) { 

      lcd_cmd(0xc0);print_lcd("  MAX  2.0mS       ");  

             GRB = 4000;                 /* (1/16MHz/8)*4000=2mS */

             }

             

     if(P17==0){

      for(;;){

      ad0_read();                   /* AD0 READ */

      ad_data = ADDRA>> 6 ;         /* AD0 10BIT  */

      GRB = 1976 + (ad_data * 2);   /* GRB = 1976 〜4024 0.9ms〜2.01ms */

      lcd_cmd(0xc0);P83=1;

      sprintf(s_txt," AD SARVO %4d  ",ad_data); 

      print_lcd(s_txt);

TOP