• 締切済み

PICでサーボモータ制御(C言語)

個人的PICでのにサーボ制御をしてみようとしています。 まず、動作確認をしてみようとPIC(16F84A)を用いて、PICの基本回路を構成してあります。 次にサーボ制御をしてみようという事で、信号をRB1から得る事にします。 (電源、グランドはしっかり接続してあります) そこで、以下のプログラムを走らせてみました。 ※コンパイラはHI-TECH社の無料版を使っています。 #include<pic.h> #include<delay.h> main(void){ int a, b;    TRISA = 0x00;    TRISB = 0x00; while(1){ RB1=1; for(a=0;a<16;a++)DelayUs(100); //PointA RB1=0; for(b=0;b<186;b++)DelayUs(100); //PointB } } ※DelayUs関数はμsecの待ち発生関数です。 サーボが約20secのパルスということなので、動作確認のために組みました。 PointA,Bと記述した部分をいくら変動させても動作がかわらず一定の角度方向にしか動きません。 ただ、確認のために組んだプログラムなのですが、これではだめなのでしょうか?

みんなの回答

  • 777_kenyu
  • ベストアンサー率68% (22/32)
回答No.1

どういうサーボを動かそうとしているが書かれていませんが、 RBポートからパルス出力を出しているということから推測して、汎用パルス列入力のサーボパックで位置制御モードだとします。 プログラムを拝見した限りではサーボパックのパルス列入力の片方にしかパルスを入力できないので、一定の方向に動くのはごく普通の動作です。 詳しくはサーボパックの取説のパルス入力の項をお読みください。

参考URL:
https://www.e-mechatronics.com/jsp_ssl/support/manual/servo/sijps80000045d_4_1/data/sijps80000045d_4_1_chap3.pdf