2007/11/10
5秒くらいかけてサーボが動くサーボディレイが無いとのことでしたので、
PICマイコンを使って実現できないかと、考えているところです。
今はまだ、ボリュームの値に応じてサーボの位置を動かせるだけです。
モニター用にボリュームが半分の位置より大きくなったら
LEDを点灯、小さくなったら消灯させるようにしてあります。
あとは、受信機からの信号を入力させて、ボリュームの値に応じて
遅延の量を変化させて出力させるようにすれば良さそうです。
とりあえずこれだけでも、サーボテスターになってますね。
2007/11/13
久しぶりに早く帰れたので、電車の中で考えたことを家に帰って試してみました。
まずは、受信機からの信号のHIGH幅の時間を測定し、同じ時間だけGPIOをHIGHに
するプログラムです。問題なく動作することを確認できました。
次に、入力信号の変化に対してゆっくりと出力パルス幅を追随させるのですが、
現在の出力パルス幅が現在の入力パルス幅と異なるときは、現在の出力パルス幅を
最小加算量ずつ加減するようにしました。少し考えていたよりサーボの動きが速いです。
理由を調べるのにオシロが欲しいところですが、さすがに自宅にはありません。
仕方が無いので、加減するタイミングを入力信号3回に1回の割合にしました。
いい感じになったようです。動作速度をボリュームで制御できるようにしてあるので
好みの速さが選べるようになっています。
サーバーの制限容量以内で動画が撮れました。 一番ゆっくりとサーボを動作させているところです。
2007/11/17
12F675のTMR1(16bit)を使って、出力信号の分解能を1usecにするように改良しました。
作成途中で原因不明のサーボのぴくつきが発生してしまい困ってしまいました。
そこで、HandyOscilloというPCのマイク入力を使った波形表示ソフトを使って、
サーボ信号の波形を観測して原因調査です。
受信機の出力信号。上がギアアップ、下がギアダウンの時の波形です。
ギアアップ時はパルス幅が約0.98msec、ギアダウン時はパルス幅が約1.78msecです。
デバッグ中の様子です。
サーボがぴくつくときは、受信機の出力信号が安定しているにもかかわらず サーボディレイの出力がばたついています。よくソースコードを見なおしていたらバグがありました。 ここを修正したら、ぴくつきは完全に無くなりました。 16bitのタイマーを使ったので、ずいぶんゆっくりとサーボを動作させることができるようになりました。
LEDがぴかぴかと点滅していますが、これはおまけでつけてある機能です。 1秒周期で光っているのは200msecの間です。 受信機は約20msec周期でパルス信号を出力しているので、 このパルスを受け取る度にカウンタを+1させます。 カウンタは50(50x20msec=1sec)になったら0に戻るようにしてあります。 このカウンタの値が40から50の間だけLEDを光らせるようにしています。
完成した試作回路です。実際に使うのにはもっとすっきりさせたほうが良さそうです。
いつも飛ばしているところで動作させていたら、ギアアップにしたときに 反応しなくなることがありました。原因調査しないとなりません。 引き込み脚が出っ放しでは、引き込み脚構造にした意味がなくなってしまいますからね。
多分、受信機からのパルスのmin値制限にひっかかって停止していたと思うので、 min値にマージンを持たせてみました。 室内実験では問題なさそうでしたので、12F675のSOP品を使って小さく作り直しました。 表面と裏面の様子と、基板を切り分けたところです。
動作チェックを行いました。とりあえず大丈夫そうです。
ゆっくりと動かしているところ一度片側に動かしきってから、反対側に少し動かして、途中で戻しています。 カチッという音は、送信機のギアスイッチを操作した時の音です。 右の方のLEDは、おまけ機能です。1秒に一回点滅させるようにした信号を作ってあります。 LEDと電流制限用の抵抗をつければ、こんな感じに点滅します。
シュリンクチューブをかぶせて完成です。