なんだかんだで
昨年の7月以来半年以上更新してませんでしたが、皆さんいかがお過ごしでしょうか。
去年はあ〜んなことや、こ〜んなことがあって、久々の予選出場もでき、ジャンプもできて・・・というところで、時間が止まっております。
最近ようやく、やる気もチャージされたのでチビチビと再開しております。当面の目標は、芝浦工業大学の大宮祭に向けてがんばろうかと思います。4月の練習会は間に合わんかも。
ちなみに、ロボットは、胴体だけまともに存在していて、腕は片腕のみ装着済み。
SH/TINY (αP)
最後の設計で、マイコンの搭載場所について悩みましたが、腰内部に搭載するというマスマススペースのなくなるような設計をやらかしてしまったので、H8/3052F(秋月)では収まらなくなってしまいました。
で、H8/3069F(秋月)ならギリギリ入らないでもないのですが、厳しいです。3069を無理やり押し込もうとしていたとき、(〜長いので中略〜)まぁ、そんなこんなで去年の展示会にて入手したSH/TINYの小ささと性能が決めてになり、コイツでサーボを動かす事になりました。
そうは言っても、今まで使用していたDMACがないので、割り込みで32ビットPWMを作ることになります。現時点では、最大0.3°刻みでPWMを16chx2を作っています。ポートが足りないので、74HC541辺りのバッファICを使う予定。
プログラムの掃除もほぼ終わったので、コイツを柱にしてしばらくはコントロールボードに困らなくて済むようにしようかと。
基板の配置検討
PWM生成ルーチンもひと段落。現状のテスト基板にはその他機能を実験できるほどの機能も着いていないので、どうせ作るならロボットのマザーボードを作ったほうがマシかなと思い、部品の配置を検討。
部品の配置にはEAGLEを使ってみました。ただ、ライブラリに日本圧着端子(通称:日圧)がなかったり、48M05Fのような小さなレギュレータが無かったので、単列のピンヘッダを代用しています。解りづらいので、そのうちライブラリでも作ろうかと。
この基板の右の方にあるのがバッファICです。これだけだと16chしかPWM生成できませんが、その辺りの話は今後するとしましょう。SH/TINYの真下には加速度センサADXL311JE(ADXL202のアナログ出力のみ)と、EEPROMのAT24C1024があります。
他は、シリアル3ch(内2chは、SCKポートあり)と、A/Dが4ch、書き込み、電源(サーボの電源&マイコン用電源)のコネクタがそれぞれ着いています。
後は半田付けするのみ
今までは、適当に部品つけて配線していたので、結構痛い目を見ていたんですよね。EAGLEで配置して自動配線を使うと、複雑な配置も意外と行けたりするので、効率よかったかも。まぁ、基板を起こす訳ではないので、配線でどうとでもなります。それは、最終手段として取っておけば、結構綺麗に仕上がるかも。
さて、これから半田付けを行いますが、どのくらいでできるかな。今日中には無理かもしれないけど、結構早く仕上がるんじゃないかなと思っています。
EAGLEの配線図(パターン図)を見ながら
基板の配線を行っています。途中で外出していたというのもあり、なかなか進まず。しかし、実験基板よりもはるかに多い配線を半田付けできたので、効率は良いです。自分の場合は、こうやって図を作ってから配線する方が作業がはかどるみたいですね。
現状の進捗は、約70%ほど。残る作業はSCI0、SCI1、電源回路、電圧監視用の配線くらいです。完成すればEEPROM、加速度センサで遊ぶことができるようになります。
本当は圧電ブザーも付けたかったのですがスペースがないので断念。コネクタを配置するスペースもないので、空中配線でやるしかない。疲れていなければ、明日の夜には完成かな。
完成後の基板
ようやく完成です。ココだけの話、最後のチェックにて電源用端子のVCCとGNDが全て逆だった事が判明して配線しなおしたというのは秘密です。今まで作った基板の中でも良く配線できた方だと思います。
やはり、予めどう配線すれば良いか分かっているってのは効率いいですね。今後は面倒でもEAGLEにて配置を検討していくことにしよう。
さて、動作チェックについてですが、5V電源、マイコン用電源、サーボ用電源(A/D取得用)の配線のチェックをテスタにて行い、シリアル通信のチェックも行いました。マイコンは問題なく動作し、きちんと文字が表示されました。
ひとまず大丈夫そうです。
SH/TINYの裏側とか
SH/TINYの裏側はこんな感じです。EEPROMだけ取り付けてみました。加速度センサは半田付けし忘れたので、取り付けられず。まぁ、まずはEEPROMの動作チェックからなので、必要にはなりませんが・・・。
しばらくは、各種周辺機器の動作チェックで終わりそうです。書き込み回路も作らないとなぁ。(・_・ )
これらの話に全く関係ありませんが、写真取るためにデジカメを使おうとしたら電池がゼロ&デジカメ用電源ケーブルも行方不明で、探しだすのに苦労したことを付け加えておきます。OTL
設計ミス!?
書き込み回路を作る前に、加速度センサを取り付けようと思いコネクタを挿し、加速度センサを載せてみると・・・?SH/TINYの基板に接触することが判明。これは完全に設計ミスですね。本来ならば外に出さなきゃいけないのに・・・。
既に作ってしまったので、この状態でなんとかしなければ。LEDのジャンパ線を挿してみると結構良さそうなので、これを加速度センサに半田付けすることに。
ICソケットにLEDのジャンパを8本立て、加速度センサをICソケットに載せて半田がICソケットと加速度センサモジュールを接着しないように十分注意しながら作業を行った結果、なんとかなったようです。
プログラム上ではまだ確認していませんが、値がちゃんと取れることを祈りたい。
書き込み回路完成
大した回路じゃないけど、そこそこ時間がかかってしまった。DCジャック、電源スイッチ、書き込みスイッチ、リセットスイッチ、NMIスイッチ、各種コネクタだけなんですけどね。
黄色スイッチはNMIスイッチで、基板の都合上コネクタを用意できなかったため、配線はされていません。緑色スイッチはリセットスイッチでこちらは配線がされています。動作チェックしたところ問題なく動作。
書き込みスイッチも動作チェックしたところ書き込まれました。特に目立ったトラブルもなく、プログラム作成の土台は整ったようです。
早いところEEPROMと、加速度センサのチェックを終わらせないとっ。
秋月でSH2とSH/TINYマイコン
秋月の新商品をチェックしていたら、
SH/TINY(R5F71253)と
SH2/7144のCPUが単品で売られていた。秋月でこういうCPUが出る時は、新しいマイコンボードができる前兆だったりする。
どんなマイコンボードになるのかちょっとだけ期待かな。まぁ、出なければ基板を自分で起こすというのもありかもしれないですね。とりあえず今はアルファプロジェクトのボードがあるのでこれで遊びつつ、楽しみに待ってみる。
EEPROM動作検証完了
EEPROMのテスト完了。問題なく動作。いつもなら、SDAとSCLをどの端子に繋いだのか忘れたり確認作業が必要なのだが、今回はEAGLEで書いてあるため、確認作業は非常に簡単だ。
書き込み後のWaitの調整をして終了。今回のSH/TINYでは以下のように記述して3.5msec以上待機している。結構いい加減な値ですけど。(^^;
i = 0xffff;
while( i-- );
ラジコンサーボ繋いでみた
EEPROMもすんなりと動いてしまったので何をすればいいか一瞬分からなくなりましたが、幸いにもやることは多々あるので仕事を見つけるのは簡単。
まだサーボ繋いでなかったので、今回初めて接続してみようと思います。ただ、コネクタとサーボを繋げる手段が現状では皆無なので、ささっと変換コネクタ製作。基板製作の経験が生きて、今回は図面なしでもOKでした。
最初にサーボを一個挿して起動。1.5msecのパルスにより、90°の位置まで動作。その後角度を変更して遊んでいましたが、問題なさそうです。
次にもう一個繋いで動作させてみる。片方のサーボを動かしていると、もう一方のサーボがチリチリと震える(1°ではなく0.5°くらい?)
サーボを接続してないとそんな現象も起こらないんですけどね・・・ちょっとキニナル。
プログラムで20msecごとに1°増やす処理を実行しても特に影響なし。もちっと、詳しく見てみる必要がありそうです。
今後の予定でも考えてみる
作業を効率的に進めるために、ToDoリストでも書いてみよう。さて、何があったかな。
- A/D変換の処理(試験)
- 加速度センサのA/D取得
- 74HC541の増設(別基板)
- 16bit→32bitPWM出力試験
- シリアルコマンドによるデータの送受信
- モーションエディタの製作(アプリ)
- ジャイロセンサの搭載
- 加速度センサによるコマンド実行
- 無線コントローラ
- ロボットの足製作
- ロボットの塗装
うん、それ無理!(ぉぃ)
モーションエディタの製作がかなりへビィな気がする。来月に間に合わせるには難しいだろうから、エディタは何かで代用するしかないな。
他は必要な機能だし可能な限り実装する。無線は
コレにする予定。
来月のロボットフェスティバルが終わったら、エディタの製作も可能なはずだ。休日の作業でどれだけ消化できるかが鍵になるか。
A/D変換できました。
SH/TINYのハードウェアマニュアルを読むと、A/DトリガでA/D変換開始みたいな記述があったので、MTUもしくはタクトスイッチで操作しないといけないと思っていました。
でも、そういう機能も
あるというだけで、A/Dスタートフラグを1に設定すれば、変換してくれるみたいですね。トリガ機能はA/Dスタートフラグを自動で1に設定してくれる機能のようです。
解ってしまえば、あとは簡単でした。
void main(void){
unsigned int adat[4];
STB.CR4.BIT._AD0 = 0; // スタンバイモードの解除
AD0.ADCSR.WORD = 0x0013; // 4チャネルスキャンモード、チャネルセレクトAN0〜AN3
AD0.ADTSR.WORD = 0x0000; // トリガは使用しないが、念のために0クリア
while(1){
AD0.ADCR.BIT.ADST = 1;
while(!AD0.ADCSR.BIT.ADF); // A/D変換終了まで待つ
AD0.ADCSR.BIT.ADF = 0; // フラグクリア
adat[0] = AD0.ADDR0 >> 6; // 下位6bitには値が入らないので、
adat[1] = AD0.ADDR1 >> 6; // 10bitデータにするために6ビットシフト
adat[2] = AD0.ADDR2 >> 6;
adat[3] = AD0.ADDR3 >> 6;
}
}
最初試験したときに動かなかったので、なんだろうとちょっと読み返したら、スタンバイモードの解除ができていなかった。OTL
どうもH8時代の癖で見落としがちですね・・・スタンバイモード。しかしA/D変換ができたので、加速度センサ、電圧の値ももバッチリ読めました。加速度センサも無事に機能しているようです。( ̄▽ ̄ )
ちなみに、この加速度センサは50Hzで動作中です。20msecごとってヤツです。コンデンサが0.1uFしか手元になかったので、こうなってます。
今後の予定
- A/D変換の処理(試験) 完了
- 加速度センサのA/D取得 完了
- 74HC541の増設(別基板)
- 16bit→32bitPWM出力試験
- シリアルコマンドによるデータの送受信
- モーションエディタの製作(アプリ)
- ジャイロセンサの搭載
- 加速度センサによるコマンド実行
- 無線コントローラ
- ロボットの足製作
- ロボットの塗装
[BACK]
[TOP]
[NEXT]
Copyright (C) 2007 U-hirohito All rights reserved.