A/D変換終了割り込み
昨日に引き続き、A/D変換で遊ぶ。今回は、A/D変換終了割り込みもやってしまいました。ADCSRのADIEビットを1にセットし、ADSTを1にセットすれば、A/D変換の割り込みが終了するのと同時に値をゲットできます。( ̄▽ ̄)
その後、現在の電圧を0.1V単位で計算できるようにし、加速度センサのためにキャリブレーション機能も搭載してみました。しかし、初期化時に値を取ろうとすると0が返ってきてしまうので、しばらく待機しないとダメみたいですね。(-_- )
値が安定するまで待つ処理を加えたところうまく正常な値を入手できたので、加速度センサの値を±で保存することが可能になりました。
見せてもらおうか、秋月の加速度センサの実力とやらを
さて、せっかく値が見れるようになったので、垂直の時にどんな値がでるのか見てみることにしました。で、垂直に立ててみると?
0(0°)→58(90°)
ひょっとして、冗談を言っているのか?角度測れないじゃん。OTL
これでは、ロボットへの衝撃くらいしか計測できませんねぇ。オペアンプ増設するスペースもないし・・・。まぁ、この辺はジャイロに任せましょ。
倒れる時の加速度センサの値ってどんなの?
気になったので、調べてみた結果こんな感じの値が取れました。マイコンボードごと倒れるような軌道を描いた時のものです。
結構大きな値が取れるものなんですね。MAXで512が限界の中300辺りまでの値が取れてますからねぇ。ロボットに積んだら、各モーションの時の加速度とか計測してみたいなぁ。モーション製作の役に立つかもしれないし。
今は10msecごとにA/D変換を行い、4回分の値を平均化しています。一番古い値に新しい値を上書きする方式なので、40msecほど反応が遅れているはず。
そんなにノイズなどの影響を受けていないので、これくらいでも十分そうですけどね。でも、ロボットに載せたときの状態はまた違ったりするので、油断はできませんね。
今後の予定
- A/D変換の処理(試験) 完了
- 加速度センサのA/D取得 完了
- シリアル通信の割り込み化
- 74HC541の増設(別基板)
- 16bit→32bitPWM出力試験
- シリアルコマンドによるデータの送受信
- モーションエディタの製作(アプリ)
- ジャイロセンサの搭載
- 加速度センサによるコマンド実行
- 無線コントローラ
- ロボットの足製作
- ロボットの塗装
特に進まず。新たに、シリアル割り込みを予定表に追加してみました。
シリアル割り込み
シリアル通信を割り込み化してみた。送信側と受信側にそれぞれ256個の配列を用意して、リングバッファにした。char型のオーバーフローを利用した処理のため、if文などをほとんど使うことも無く簡潔に書けた。
さっそく使ってみたが、なかなかいい感じに仕上がっている。先日問題となった、サーボを動かすと、他のサーボが動くという現象も収まる。割り込みがかかった時に現在の作業を退避するのに時間がかかっているためパルス生成にも影響を及ぼしてしまったようですね。
今後の予定
- A/D変換の処理(試験) 完了
- 加速度センサのA/D取得 完了
- シリアル通信の割り込み化 完了
- シリアルコマンドによるデータの送受信
- モーションエディタの製作(アプリ)
- 加速度センサによるコマンド実行
- ジャイロセンサの搭載
- 無線コントローラ
- 74HC541の増設(別基板)
- 16bit→32bitPWM出力試験
- ロボットの足製作
- ロボットの塗装
ボチボチ、モーション作れるような手段を見つけないと・・・。24MHzだと115.2Kbps作るのが厳しいのが難点。(=_= )
変換装置を作らないとナ。
ホコリかぶっているH8/3069Fを使う
某エディタと接続するには通信速度の壁が立ち塞がるので、H8/3069FをPCとSH/TINYとの翻訳装置にすることにしました。なぜH8/3069Fかというと、配線が面倒だったから。(=_= )
H8/3069Fだと、電源コネクタは付いているし、SCI0,SCI1には3ピンのピンヘッダが出ているので、即使えるんですね。しかも、書き込みスイッチ(ディップスイッチですが)も付いているので、書き込み回路を作る必要もないというナイスな一品。
おかげで、テスト用のプログラムは1時間くらいで書き終えられました。処理は、115.2Kbpsを57.6kbpsに変換するというもの。一方向ではなく双方向ですよー。
STK-7125で作ったリングバッファ式のシリアル割り込みが役に立ち、そのままの形で移植ができました。(レジスタ名がちょっと違うのでその手直しくらい。)
USBシリアル二本接続して、動作検証完了。特に文字化けもしていないので、いけます!
せっかくのH8/3069Fをシリアル通信だけしかできないというのはもったいないので、色々機能を追加していこうかなと。モーションスタートスイッチとか、そのまま無線機の機能もつけてしまうとか、まぁ、いろいろやりようはあるかと。
ポジション設定、読み込みを試す
もう気づいている方もいると思いますが、某エディタ(HtoH)と通信するためにH8/3069Fを使っています。通信がうまくいってそうなので、そろそろSH/TINYとコマンドのやり取りをやってみようと思います。
まずは、ポジションの設定から。いきなり送るのもアレなので、読み込みでデータを取りながら調整していきます。まだまだ通信関係の調整が甘く、HtoHからの通信をロストしたりタイムアウトエラーが起こったりすることも度々あり、調整に少々手間取りましたがなんとか動作!
ひとまず、24chを割り振ることに成功しました。各4chずつ余るんですけどね・・・今はこのままで行きます。
ポジション設定
昨晩動いたところで終わっていたので、もうちょっと遊んでみる。SH/TINY側が結構コマンドロストをしていたので、受信タイムアウトを増やしたところ、ほぼ100%でコマンドを受信し、角度が更新されるようになりました。
ただ、SH/TINY側に保存してあるポジションを読もうとすると、通信失敗してHtoHに反映されないんですよね。H8/3069Fのもう一つのシリアルを使ってモニタしたほうがいいかも。現状では、よく分からない・・・。
ホームポジション
ポジションが確実に更新されるようになったので、コマンドリストに載っている分の空の関数を用意しました。それに伴い、別ファイル化。ホームポジションの保存コマンドを実装して試してみると、電源を切っても値が保存されていました。
ただ、こちらもやっぱり読み込みのところで失敗しています。一体どんなやりとりがされているのだろうか・・・。次回はモニタできるようにしてやってみようと思います。(〓ω〓)
通信状況をモニタ
H8/3069Fはシリアルが3つあります。現在は、「HtoH ←→ AKI-H8/3069F」、「SH/TINY ←→ AKI-H8/3069F」となっているので、ここにもう一つ「PC ←→ AKI-H8/3069F」を加えました。
さっそくモニタしてみると、全て見えますよ!ごちゃ混ぜになってはいるけど、どちらの通信か解るレベル。これによると、HtoHから送られてくる量が少ない時は、SH/TINYから送る前にすぐ再送信しちゃうみたいですね。
でも、送られてきたコマンドは全て送り返しているので、ロストしている信号はなさそうです。なかなか優秀だ。ひとまず、これでデバッグしやすくなりそうです。
ホームポジションの読み込み
ホームポジションを読み込む事ができるようになりましたが、その際にPWMがめちゃくちゃな更新を永遠と続けてしまうというバグを発見。たぶん、更新するタイミングが悪いせいだと思う。
ポジション読み込み
昨日できなかった、ポジション読み込みも修正。ソフトウェアスイッチの処理がうまくいってなかっただけで、この部分を直したら動いた。シリアル様様ですよ。後はトリムができれば、いよいよモーションですねぇ・・・。もうちょっとだ。
ホームポジションのバグが取れた
ホームポジションに戻すコマンドを送るとパルスが乱れる原因がありましたが、解決しました。ただ単に構造体のアドレス渡しの際に指定するアドレスがあさっての方向のアドレスだっただけでした。OTL
すぐ取れたけど、なんだかなぁ・・・。(=_=)
トリムとモーションの書き込み、読み込み
通信モニタのおかげで、トリム、モーション共にすんなり実装できました。これでほぼ必要な機能は揃いました。シナリオモードの実装はまだですが、ひとまずモーションが動作しないことにはね。
モーション再生用の処理はまだないんですよー。これを作らないと、モーションが実行できないんですよね。そんな訳で、次回はモーション再生機能のプログラミングですね。
4月中に上半身くらいは動かせそうだ。下半身はゴールデンウィーク中に加工したいが、できるかな。
モーション再生処理
終わってないです。なんだか、やる気がダウンしてしまったので、気分転換に下半身の設計&製作してました。まぁ、これからまた平日が来るので、ソフトの方の作業を再開すると思います。
足フレームの製作
そんな訳で、日曜日辺りに足の設計を終わらせて、月曜日に製作しました。仮組みしてたら、夜中になってましたよ。(=_=|||)
今回は、SC-2350ARM1を使用したので、板金はそんなにやらずに済みました。どちらかというと、このブラケットの製作に手間取るんですよね。穴の数も多いので・・・。
上半身と合わせると
こんな感じになります。上半身は自宅の遺跡から発掘されました。(^-^;
腕のブラケットも旧型から取り替えればそのまま使用できそうです。そんなことよりも、今回製作した足フレームで耐えられるのかが気になりますね。スネのパーツはかなり強化しましたが、どういう結果になるのか・・・。
あぁ、配線もしないといけませんねぇ。このままでは、ただのガラクタでしかない。
ちなみに、腰部分は干渉したりするので作り直したほうが良さそうです。
[BACK]
[TOP]
[NEXT]
Copyright (C) 2007 U-hirohito All rights reserved.