9.砲身リコイルの動作をプログラムして、リアルに動かす
組込みキットの製作 これまで製作してきたPICの基盤を、いよいよ実際のキットに組み込んでテストすることにしました。
特に、砲身のリコイル部分のや発砲時の振動をプログラムする時には、実際にキットに積み込んで見ないとわからない。


PIC制御テスト用キットとして、タミヤのタイガー1(後期型)を使用。
前進・後進は左右モーターをそれぞれ別のアンプで制御し、砲塔旋回・砲身上下・砲身のリコイルをサーボを使って動作させています。

プログラムの改良 これまで作ったテスト用プログラムをタイガー1用(4ch用)に一部修正しています。

砲塔旋回をプロポの左スティックの左右で、砲身上下を右スティックの上下で、大砲音・機銃音を右スティックの左右で行うようにしました。

実際に作ったプログラムはこれ→「t1a.asm
ブローバックプログラム ブローバック制御部分のプログラム
サーボ初期値
;-----------ブローバック用サーボ停止位置
MOVLW  200  ;
MOVWF  POUT5
MOVLW  255  ;
MOVWF  COUNT4

砲身後退
;----------- 砲身後退
MOVLW  90  ;砲身後退サーボの値を90にして
MOVWF  POUT5  ;砲身を一挙に後退
MOVLW  90  ;後退した後の一瞬の停止時間の設定
MOVWF  COUNT4  ;80〜100(100で停止無し)

砲身を戻す
;------------  砲身を戻す処理
PULSOUT31
MOVLW  5  ;砲身を戻すスピード(1-10)
ADDWF  COUNT4,1  ;COUNT4=COUNT4+5

<<サーボ初期値>>
起動時に、ブローバック用サーボの停止位置を一杯に切った200に設定しています。

「COUNT4」という、ブローバック制御用の変数を設定しています。
この変数で、砲身後退後の一瞬の停止(溜め)から、砲身が戻るスピードを制御させています。

<<砲身後退>>
大砲音のすぐ後で、ブローバック用サーボを90に設定し、一挙に動かしています。
サーボの動作幅は、本来100までですが、あえて100以下の値で動かしています。
サーボにもよりますが、通常の動作幅より大きく動きます。

「COUNT4」を90に設定します。(ブローバック用サーボの90とは別)
「COUNT4」の値は、200以下に設定すると、少しずつ増加し、200以上に戻るようになっています。
同時に「COUNT4」の値は、ブローバック用サーボと連動していて、「COUNT4」が増えると同時にサーボも 元に戻っていきます。
但し、「COUNT4」の値が100以下の時は、ブローバック用サーボは動作しません、この時間が砲身後退後の停止時間になります。
「COUNT4」の値を100より小さくすればするほど、砲身後退後の停止時間が長くなります。

<<砲身を戻すスピード>>
「COUNT4」の値をいくつずつ戻すかで、砲身の戻るスピードを決めています。
1ずつ戻せば、一番ゆっくり戻ります。
今回のタイガー1では、4か5がちょうど良いようです。
振動プログラム
;----------- 車体の揺れ?? --------
MOVLW  5  ;バックの時間
CALL  BACKSP
CALL  PULSOFF
CALL  PULSOFF
MOVLW  7  ;前進の時間
CALL  TOPSP

CALL  PULSOFF

BSF  PORTB,0  ;PULS1 on
MOVLW  150  ;停止位置にに戻す
CALL  TIM25
BCF  PORTB,0  ;PULS off

BSF  PORTB,1  ;PULS2 on
MOVLW  150  ;停止位置にに戻す
CALL  TIM25
BCF  PORTB,1  ;PULS off

発砲時の振動は、砲身の発光の直後、前進後進アンプに一瞬だけ200(前進最高速)と100(バック最高速)を入れて、モーターを動かしています。

前進時間と後進時間はそれぞれ別々に設定しています。

戻る

更新日2000.10.18