FC2ブログ

最近の記事 - RSS

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

サーボが届いたので…。

早速サーボ駆動の実験開始。
srvtest_02.jpg
実験コンポーネントはこんな感じ。

…動く気配すらない。
最初はどこかを間違っていてポートA-2から何も出てないのかと思ってLEDを繋いでみたらちゃんと出ているっぽい。

という事で、多分GRAとGRBの兼合いが間違っているのだろう。
PWMで20msの周期で1~2ms(1.5msがセンター)のパルスを出せば動くはずなんだが…。

安いRCサーボだからやっぱりオシロスコープで観測しながらじゃないと駄目なのかな?
そもそもGRAとかの計算方法すらあやふやである。

まず、H8/3052Fの基本クロックは25Mhz。
で、タイマーではクロックを1/8で動作させているので3.1250MHz。
この状態では10ms周期で実行されているので、RCサーボ用の20msを作るには倍の6.25MHz。
で、これをGRAにして…パルスのGRBは1~2msなので3125Hz~6250Hzというわけかな?多分ね!
多分安いRCサーボだから誤差があるだろうが…。

…あれ?

記事を書きながら弄っていて、ふと気が付いた驚愕(バカ)な事実。

srvtest_01.jpg

…まさか…。

srvtest_03.jpg

ブレッドボードの真ん中って繋がってないんだったー!!

まさかのスタンドアローン状態第二段…('A`;
っていうか私ヒューマンエラー多すぎでしょ…どこかネジでも抜けてるのかね・゚・(ノ□`)・゚・

まあそんなわけで気を取り直して再挑戦。
おお…動いた動いた…でもニュートラル位置も変だし全部で90度位しか動いてない。
これは明らかにさっきの計算が間違っていることをQED(証明終了)

…結局数値を適当(ぇ)に変えまくりつつ、180度動作に漕ぎ着けた。

【RCサーボ動作テスト】


ちなみにサーボは千石電商で売っていたミニスタジオRB303cという代物である。
駆動音はかなりうるさいが全然プルプルしない。

今回実験に使用したソースはこちら。
#include <3052.h>
#include <SROM3052.h>

unsigned int PWM;

int main(void)
{
  char buf[256];
  int num=2750;
  int rad=0;

  PWM = 5500;
  initPWM0(62499,2750+1600);

  P4.DDR = 0x00;
  P4.PCR.BYTE = 0xff;

  P2.DDR = 0x00;
  P2.PCR.BYTE = 0xff;

  initLCD();
  cls_lcd();
  lcdprintf("サーボテスト");

  while(1){
    if(P4.DR.BIT.B5 == 0 && num<=5500) num+=5;
    if(P4.DR.BIT.B4 == 0 && num>0) num-=5;
    if(P4.DR.BIT.B7 == 0 && num<=5500) num+=50;
    if(P4.DR.BIT.B6 == 0 && num>0) num-=50;
    if(num<0) num=0;
    else if(num>=5500) num=5500;
    if(P2.DR.BIT.B0 == 0) num=0;
    if(P2.DR.BIT.B7 == 0) num=5500;
    if(P2.DR.BIT.B4 == 0) num=5500/2;
    PWM = num+1600;
    ITU0.GRB = PWM;
    rad = num/(5500/180);
    sprintf(buf,"GRB:%04d RAD:%03d",PWM,rad);
    cur_pos(0,1);
    lcdprintf(buf);
    }
}
※タブを全角スペースに変換しているのでこのままコピーしても動きません。
参考元はいつものPukiWiki

ちなみに手元にボリューム抵抗が無かったのでタクトボタンとかディップスイッチで値が変わるようにしてある。
あと、sprintfが使えないのがいい加減鬱陶しかったので、さり気無くモニターに関数群を組み込んだ。
モニターへの関数群の組み込みも参考元はPukiWiki(*´ω`)b
全くもって感謝である…。

次回もサーボを使って色々と遊んでみたいと思う。
スポンサーサイト
管理者にだけ表示を許可する

トラックバックURL

http://nukopan.blog58.fc2.com/tb.php/11-a9833c2c

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。