自立型ロボットの 走行プログラムの作成 矢萩・橋本研究室 工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区画動作させることができるようなプログラ ムを作成することができた。
© Copyright 2024 ExpyDoc