目次
前
次
メカ動作テスト
すでにメカ部分は、制御基板を実装済みです。
制御基板には、モータ制御回路とセンサーのLED
モニタが載っているので、これらをテストします。
各回路は、10ピンケーブルでマイコンやFPGAの
電子回路に接続できるようになってます。
まず、10ピンケーブルの仕様を見直し。
モータ制御回路
2個のモータにPWM波形を出力する信号ピンと
2LEDを点灯、消灯する制御ピンがあります。
また、トグル、プッシュの2種のスイッチの
信号を扱えるようになっています。
- Vcc
- illeagal code detect indicator(LED)
- cross white line indicator(LED)
- mode select
- start trigger
- (no connection)
- left motor PWM output
- (no connection)
- right motor PWM output
- GND
LEDモニタ
2種類のLEDが8個ずつ基板に実装されて
います。0出力で点灯、1出力で消灯。
信号配置は以下。
- Vcc
- (2 ^ 7) (MSB)
- (2 ^ 6)
- (2 ^ 5)
- (2 ^ 4)
- (2 ^ 3)
- (2 ^ 2)
- (2 ^ 1)
- (2 ^ 0) (LSB)
- GND
LEDの点灯、消灯は、単純にレジスタ値
を出力してテストします。
最下層の関数は、次のように単純に記述。
#define MASKFF 0xff
void test_led(UBYTE x)
{
PORT = x ^ MASKFF ;
}
1つ1つLEDを点灯、消灯すればよいので
次のようなデータを用意し、test_led関数
に与えます。
- 10000000 (0x80)
- 01000000 (0x40)
- 00100000 (0x20)
- 00010000 (0x10)
- 00001000 (0x08)
- 00000100 (0x04)
- 00000010 (0x02)
- 00000001 (0x01)
配列の中に16進数で点灯パターン
を用意し、繰返し、test_led関数
に渡します。
typedef unsigned char UBYTE ;
UBYTE patled[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01} ;
UBYTE i ;
UBYTE tmp ;
for ( i = 0 ; i < 8 ; i++ ) {
/* get LED pattern */
tmp = *(patled+i) ;
/* impress */
test_led(tmp);
/* wait */
delay();
}
高速動作でLEDを点滅させると目視できないので
ソフトウエアで遅延を入れます。
テストしたマシンは、以下。
ターゲットマシン(制御基板タイプA)
ターゲットマシン(制御基板タイプA)
ターゲットマシン(制御基板タイプB)
mugen2013(制御基板タイプC)
mugen2014予備マシン(制御基板タイプB)
HyperTerminalで、次のようにコマンドを与えて
モータとLEDをテストしてあります。
このテストでmugen2014マシンの制御基板タイプA
上のICおよびギアボックスに不具合があることが
わかりました。
予備マシンの制御基板タイプBを利用することにし
制御基板Aの方は、夏休み中に修理しました。
H8/3048FOne基板に接続する基板を予備として
作成したので、その上にモータドライブ回路
を載せています。
モータドライブ回路は、フォトカプラを介して
Pch−MOSFETをパルス駆動します。
ドライブICを利用しないで、ディスクリートで
組んだのは、モータへの供給電圧を考えたため。
上の基板に合わせたmugen2014のメカは、以下です。
前輪にボールキャスターを利用し、後の2輪で
操舵します。
目次
前
次