7.2chで砲塔旋回もするプログラム
砲塔旋回 1/35戦車をラジコンで砲塔旋回しようとすると、永久回転に改造した小型のサーボを使って砲塔を回転させると簡単なんですが、良く見るとリアルさに欠ける!
例えば、
砲塔の回転スピードがスティックによって変わるので、一定スピードで旋回しない。
ちょっとスティックを触っただけで動いてしまうので、走行中に砲塔が旋回したりする。
チャンネル数を節約するために、動いてない時(前進後進スティックがニュートラル)の時だけ砲塔旋回(動いてる時は、左右旋回)させようとすると、サーボで動かす切り換えスイッチを追加しないといけないので、製作が面倒!

と、言う訳で、PICを使って一定スピードでリアルに旋回するように砲塔旋回サーボをコントロールし、それだけじゃ面白くないので、2chでも砲塔旋回出来るようにする。

左右スティックの動き
前進・後進スティックが中間の停止してる時に、左右スティックをいっばいに切ると、砲塔が微速で旋回します。


プログラミング開始! <砲塔旋回部分だけ>
  1. 砲塔旋回サーボの位置を中間にする(変数POUT3を中間の150に)
  2. 前進・後進のPIN2が中間で、左右のPIN1が120以下の時は、POUT3=145(微速旋回)
  3. 前進・後進のPIN2が中間で、左右のPIN1が180以上の時は、POUT3=155(微速旋回)
  4. POUT3の値を出力
  5. ループへ戻る。
実際に作ったプログラムはこれ→「savo5a.asm

実際に使ってみると... 砲塔旋回スピードが一定で、スティックを深く倒した時しか旋回しないので、誤動作も無い!
これまで、苦労してスイッチを作っていたのがアホみたい??......

と、手放しに喜べない問題が発生!!!

問題は、PICのプログラムで砲塔旋回サーボの停止位置を中心の150で設定しましたが、実際には、停止位置がセンターからずれていて、150では停止しない....
サーボのアンプのセンターを調整するポテンショメーター(可変抵抗)を回して、停止位置を調整できれば好いんだろうけど、そうするには、サーボをばらして中のポテンショメーターを取り出して調整しないといけないので、思いっきり面倒!!
(もともと、サーボを永久回転に改造した時には、センター(停止位置)の調整が面倒...)

ソフト側で、サーボに合わせて停止位置を変更してプログラムすれば好いんだろうけど、実際どれだけずれてるのか見つけるのが大変!(150を151にしてみて...152では....153なら....止まった!!)
仮に、そのサーボの停止位置を見つけて、プログラミングしたとしても、使ってるうちに微妙にずれてくるので、また設定しなおし???

センター位置設定モード付き! 実用化するには、どうしてもセンター(停止)位置を自由に設定出来るようにしなくては....

と、言う訳で、砲塔旋回サーボの停止位置設定モードを付けて見ました。

  1. 電源投入時に前進・後進スティックが下に倒されていたら(PIN2が180以上)設定モードになる
  2. 左右スティックの値PIN1をそのまま砲塔旋回サーボPOUT3へ出力
  3. 左右スティック又はトリムで、砲塔旋回サーボの停止位置を捜す
  4. サーボが停止した状態で、前進・後進スティックを上に倒すと(PIN2が120以下)設定終了
  5. 設定終了時の左右スティックの値PIN1をセンター(停止)位置として記憶する
  6. メインのルーチンへ

要するに、電源投入時にプロポの前進後進スティックが下に倒してあると、砲塔旋回サーボのセンター位置の調整モードーに入ります。
この状態で、左右スティックやトリムで砲塔旋回が停止する様に調整し、その状態で前進後進スティックを上に倒すと設定モードが終了して、センター(停止)位置が記憶されます。
以降、砲塔旋回スピードは、記憶されたセンター位置に+5(−5)した値で、微速旋回します。

実際に作ったプログラムはこれ→「savo5b.asm

毎回設定しないといけない?? 一度、センター位置を設定しても、一旦電源を切ると忘れてしまうので、次に電源入れた時は、また設定しなおさないと行けない....

どうせ、電源入れる時には設定しないといけないなら、いっそ電源投入時は自動的に設定モードにしようか.....とも考えましたが(笑)、やっぱ電源が切れても、設定値を記憶してくれた方が好いですね...(^^ゞ

使ってるPIC「PIC16F84」には、電源OFFになっても記憶内容が消えない不揮発性のフラッシュメモリ(EEPROM)を持ってるので、そこに書き込めれば......



設定値をEEPROMに記憶! この、EEPROMの書き込み方法はなかなかサンプルプログラムが出てなくて大変でした..(^^ゞ
唯一、「PICガイドブック」のP.166に説明が出てるだけ....
実際に作ったプログラムはこれ→「savo5b1.asm

これで、一旦設定すると、次回電源投入時に、EEPROMから前回設定データーを読み込みます。
もちろん、電源投入時に上下スティックを下げてあると、再設定できます。

どうせなら、砲身上下もやろう! 前回作った、砲身上下付き3chプログラムに、今回の砲塔旋回機能を追加してみました!

実際に作ったプログラムはこれ→「savo5c1.asm

2chで砲塔旋回&砲身上下もやってみよう! まぁ、ここまで欲張らなくても良いかもしれないけど...(^^;;;
一応、2ch受信機で、4ch分の動作を行って見ました(笑)

前進・後進スティックが中間(停止)の時、左右スティックの動かす幅で、砲身上下と砲塔旋回を行ないます。

実際に作ったプログラムはこれ→「savo5d1.asm

これで、2chプロポでも、4ch分の動作が出きる!(笑)


戻る

更新日2000.7.26