ソフトウェアの説明 (2)
●LED表示部,サーボ・モータ制御部,音声出力部
タイマ1とタイマ3の割り込み処理で構成され
- LEDの表示(動作の強調と内部状態表示)
- RCサーボへの制御出力(目標位置への移動)
- 光受信コードのコード解析(移動動作の構築)
- WAV→PWM変換(音声出力)
を行います.
LED表示,音声出力,RCサーボ動作の関連を表1に示します.
表1 LED表示,音声出力,RCサーボ動作の関連
表中にあるLED表示のパターンとは,乱数発生により得られたON/OFF時間でLED表示を行うことです.LEDが割り付けられたポートごとに乱数計算を行い、ON/OFF時間を取得してLEDの表示を行います.
▼RCサーボへの制御出力
RCサーボへの制御出力は15ms~20ms周期で出せばよいので,6個のRCサーボを動かしたい場合3ms周期で時分割すれば,パルス出力用のタイマとあわせ2個のタイマ割り込みがあれば可能となります.
基準タイマをT1タイマ割り込みとして,約1msごとに割り込みが発生されるように設定します.図1の(a)に示すようにT1タイマ割り込みが3 の倍数で循環するように状態を遷移させます.各状態は1msごとに処理を行い,状態を遷移させます.最初の1ms割り込みではLEDの表示更新,続く1ms の割り込みではモーションのパターン移動更新,最後の1ms割り込みで当該RCサーボの位置移動更新を行います.
LEDの表示更新は,3ms周期ごとに当該LEDの表示更新を行います.乱数発生により取得した当該LEDのON/OFF時間を更新したり,当該LEDのON/OFF時間経過の場合表示制御をしたりします.当然,表11の状態に合致したLED表示を行います.
モーション移動更新は,さらに図1(b)に示すような表1の状態遷移を行います.パワーONにて起床(WAV音声再生)を経由して停止状態になり
ます.停止状態では,光信号コマンドを取得し動作に対応した状態に遷移します.光信号コマンドが約1分以上取得できなかった場合,RCサーボへの通電を禁
止し非通電状態に遷移します.
前進(後退)状態では,全軸の1モーションが完了したか管理し,光信号コマンドが取得できるかの判定を行います.停止コマン
ド(または逆動作コマンド)を受信した場合,停止状態に遷移させます.前進(後退)状態で光信号が途絶えた場合,最後の動作を保持したままその状態に留ま
ります.図中にある「異常状態」には,どの状態にあっても異常発生時は遷移します.
RCサーボ移動更新は,当該RCサーボの時間位置での移動更新を行います.RCサーボの移動には,開始位置から終了位置までどれくらいの時間で移動するかの情報を元に行います.
T1タイマとT3タイマの関連は,図2に示すようにT1タイマのRCサーボ移動更新においてポートON出力したものをT3タイマの割り込みでポートOFFすることです.
なお,内部では配列が7個のテーブルで構成しているため,ひとつのRCサーボに注目すると約21ms周期でT3タイマを起動させています(図3参 照).T3タイマは0.6msから2.4msの範囲で動作しますが,RCサーボの中央が1.5msとは限りませんので±90μs(0~±9度)を調整可能 範囲とします.したがって,実際のT3タイマの動作範囲は0.510msから2.49msとなります.
基準タイマが非常にアバウトですが,RCサーボから見て必須項目は駆動周期ではなく,パルス幅の正確さのようです.
▼WAV→PWM変換(音声出力)
音声データはWindowsで使われているWAVファイル(拡張子wav)を,そのままEEPROMに
記憶します.WAVの再生は11025spsのWAVを対象とし行います.EEPROMからの読み出しと再生をシリーズに行っているとプログラムの可視性
はよいのですが,音が途切れるという問題が発生しました.プログラムがわかり難くなりますが読み出しと再生部へのデータ設定を一つの処理にしています.プロ
グラム自体は22050SPSのWAVも再生できるようにしてありますが,録音・再生の確認は行っていません.
図4に音声再生の概要を示します.WAVデータ再生の基準時間はタイマのT3を使います.WAVデータは8ビット,11025spsとしますの
で,タイマ割り込み周期は90.7μsとなります.モニタからコールされるのは,読み出しと設定処理です.読み出しと設定処理は,EEPROMに保存され
ているウェーブ・データを順次読み出しリング・バッファに設定します.タイマ割り込み処理であるPWM出力は90.7μsごとに起動し,リング・バッファ
を見てデータがある場合,リング・バッファからデータを取得しOC1RSに出力します.
EEPROMからすべてのデータが読み出され,出力が完了するまで
上記シーケンスを繰り返します.
■参考文献
(1)トランジスタ技術 PICで体験するマイコンの世界,2007年8月号,CQ出版(株)
(2)トランジスタ技術 パソコンで作る私だけの実験室,2006年8月号,CQ出版(株)
(3)二足歩行ロボット製作超入門,浅草ギ研著,2006年9月,オーム社
(4)dsPIC30Fファミリーリファレンスマニュアル(70046b_jp.pdf),Microchip Technology Inc.
(5)TDA2822M データ・シート,1464.pdf,STMicroElectronics社
(6)HN58X24256データ・シート,rjj03c0116_hn58x24xxxi.pdf,(株)ルネサステクノロジ
(7)PL-IRM0101-3データ・シート,PL-IRM0101-3.pdf,HB Electronic Components
(8)μPC29Mxxデータ・シート,G10027JJ4V0DS00.pdf,NECエレクトロニクス(株)
(9)ホーム・ページ テクニカルライター後田 敏の部屋
▲ http://goda.blog3.fc2.com/
<田中 達美>
