フライングロボット用の自律飛行制御装置のβ版が完成しました。
当初は、以前完成していた標識方向センサー β版とバス接続(I2C)でつながった飛行制御装置を考えていたのですが、I2Cがうまく動作しませんでした。
原因がわからない状態なので、標識方向センサー、RCシグナル認識、自律飛行制御などの全ての機能をPICに入れたスタンドアロンタイプの自律飛行制御装置を作成することにしました。
後、実験中にPingが故障したので、次回の飛行会は、高度制御部分はなしで実験することになります。
PIC16F88に関して、理解状況をまとめました。
1.PIC16F88のI2Cはスレーブ機能のみハードウェア実装している。
マスター機能はソフトで行なう。コンパイラ(CICC)にソフトエミュレーション機能があるので、それを使うことになる。
ただし、マスター側のPINはスレーブハードウェアで指定されているPINを2つとも使うと動作しない。1つは別のPINを選択する必要がある。
2.マスター側からの送信要求、受信要求は、スレーブ側のI2C割込みで認識できる。
しかし、スレーブ側での受信しても、デバイスコードは受信できるが、データが受信できない。
マスター側でも、データ受信ができない。
3.当初RCシグナルをRB6に接続し、RB割込みで動作するように作成したが、うまく動作しなかった。
現在は、RCシグナルはRB5から取り込み、サーボ出力をRB2,RB3,RB6へ行なっている。
4.RB割込みルーチン内で、Timer0をセットし、RCシグナルインターバルを検出しようと、Time0割込みを有効にしたが、うまく動作しない。
割込みは発生しているようだが、割り込みが発生した後のRB割込みがうまく動作しなくなる。
最終的にはTimer1を使い、RB割込みルーチン内ではセットなどせずに値を取得(get_timer1)のみ使った処理でうまく動作した。
pingの故障について
実験中に誤って2セル(7.2V)を接続したら、動作しなくなった。1セル(3.6V)では動作しない。5V厳守のようです。
自律飛行制御ロジック
��IC内に、台本(script)構造体変数を定義しておく、その情報に従って、自律飛行を行なう。
台本には、目標高度、目標標識、終了情報などが入る。
台本変数は複数行指定でき、1行実行して、終了条件になったら、次の行を読み込む仕掛けになっている。繰り返しコマンドなども設けているので、パターン飛行を繰り返し行なうことも可能にしてある。
予め違った台本がセットされているPICを現場で取り替えれば、別の飛行パターンを飛行できることになるわけです。
今回の台本は、目標高度は制御しない(RCシグナルをそのまま使う)設定で、目標標識の周りを左旋回する設定で実験する予定です。
0 件のコメント:
コメントを投稿