PowerPoint

自立型ロボットの
走行プログラムの作成
矢萩・橋本研究室
工E11027
三浦 孝之
http://www.aomori-u.ac.jp/staff/yahagi/lab/elec.html
目的

自立型ロボットのプログラムをアセンブリ言
語を使用して作成する。
プログラム作成にあたっての流れ

モーターを回転させる

一区画走行するプログラム
ステッピングモータ

自立型ロボットの駆動部分にはPM型のス
テッピングモータを使用している。このステッ
ピングモータはロータが永久磁石で構成され
ている。回転原理はロータが永久磁石で出
来ていてステータに4個の突極巻き線がある
各相のCommon端子は直流電源の+側に
結線されている。そして、それぞれの相に流
れる電流はSW1~SW4のスイッチにより
ON/OFFが制御される 。
ステッピングモータ回転方法の図
ステッピングモータの1区画走行
に必要なパルス数

車輪の直径
D = 2r = 49(㎜)
より、車輪を1回転したときに進む距離は、
2πr = 49π ≒ 153.9(㎜)
となる。
そして、使用したステッピングモータは200パ
ルスで1回転するから1区画(180㎜)進むた
めに必要なパルス数をXとして
153.9:200 = 180:X
X = (200×180) / 153.9 ≒ 233.9
となり、1区間走行に必要なパルス数は234
パルスとなる。
プログラム作成のフローチャート
AKI-80の初期アドレスの設定する
走行プログラム
割り込みモードを設定する
アドレス設定
割り込みモード設定
スタックポイントをRAMENDに設定する
スタックポイント
AKI-80
イニシャルSET
I レジスタの設定
CPU暴走による誤作動を検出し正常動作
に戻し周辺LSIへの割り込みの有無を示す
CPUを割り込みアドレスモードにするため
にIレジスタの設定をする
プログラム作成のフローチャート2
イニシャライズ
駆動設定
スイッチ
CTCはPIOと同じであるだけでは何の
動作もしないので目的によりプログラム
の最初のところにおいて目的にあったイ
ニシャルセットをする必要があり、チャン
ネルを使用することで最初のチャンネル
0からイニシャルセットをし、チャンネル
0をカウンターモードでさらにCPUに割
り込みをする。
N区間進み停止させる
入力データの取り込みようスイッチ
プログラム作成のフローチャート3
タイマ
LEDの点灯 消灯をタイマを
使用してコントロールする
MAINプログラム
MAINプログラムから
各処理を動作する
終了
割り込み処理
・割り込み処理ルーチンの先頭アドレス
の決定過程



Z-80 CPUのIレジスタ
にHIGH VECTを設定
する。
割り込みをかけたペリ
フェラルが、LOW
VECTと呼ばれる8ビット
のアドレスデータをCPU
に送る。
CPUがこの8ビットアドレ
スとCPU内のIレジスタ
の8ビットと合わせて16
ビットのアドレスデータと
し、このアドレスから始ま
るメモリ2バイトに格納さ
れている数値を割り込み
処理ルーチンの先頭アド
レスとする。
ここから
割り込みモード設定
アドレス設定
ROMEND:
RAMEND:
;
EQU
EQU
7FFFH
0FFFFH
ORG
DI
IM
LD
LD
OUT
LD
OUT
LD
OUT
LD
LD
LD
OUT
LD
OUT
LD
8000H
2
SP,RAMEND
A,03H
(0F0H),A
A,0B1H
(OF1H),A
A,00H
(OF4H),A
A, HIGH VECT
I,A
A,LOW VECT
(CTC0),A
A,0A7H
(CTC1),A
A,150
Z-80 CPUのIレジスタにHIGH
VECTを設定する。
LOW VECTと呼ばれる
8ビットのアドレスデータ
割り込み処理プログラム
RMOTOR: LD
INC
LD
;
LD
CP
JP
;
LD
CP
JP
LMOTOR: LD
INC
LD
;
LD
CP
JP
;
LD
CP
JP
A,(R_CONT)
A
(R_CONT),A

A,(RKQA_F)
0
NZ,RKASOK
A,(RTE_F)
0
NZ,R_TEL
A,(L_CONT)
A
(L_CONT),A
A,(LKA_F)
0
NZ,LKASOK
A,(LTE_F)
0
NZ,L_TEI
CPUがこの8ビットアド
レスとCPU内のIレジ
スタの8ビットと合わせ
て16ビットのアドレス
データとし、このアドレ
スから始まるメモリ2バ
イトに格納されている
数値を割り込み処理
ルーチンの先頭アドレ
スとする。
R_GEN:
RKASOKU:
R_TEI:
LD
INC
LD
LD
CP
JP
JP
LD
DEC
LD
LD
CP
JP
LD
LD
JP
LD
CP
JP
LD
LD
A, (T_CTC2)
A
(T_CTC2), A
A, (R_CONT)
234
NZ, RPULSE
STOP
A, (T_CTC2)
A
(T_CTC2), A
A, (R_CONT)
70
NZ, RPULSE
A, 0
(RKA_F), A
RPULSE
A, (R_CONT)
164
NZ, RPULSE
A, 0
(RTE_F), A
割り込み処理
加速
定速
減速
RETURN
結果

ある程度のアセンブラ言語を理解して、マイクロマ
ウスを1区画動作させることができるようなプログラ
ムを作成することができた。