JASALMAのプログラム解読Part3 センサーとバッテリー等々のその他&走行系の補足
こんにちは。
もう年の瀬ですね...
もうほんと早いな~と思いながらこんな話はまた明日、大晦日に残しておこうと思います。
さてさて、今回のブログではプログラムの細かい部分と走行系の補足についてです。
まず補足から行きましょう。(今後もまた何か思い出したら随時補足していきます。)
その中で任意の距離を走れるようになる!、という話をしたと思います。
そのためには基準となる点(区画の中心や境界)で走行距離をリセットするのがポピュラーなやり方なんじゃないかと思います。
このリセットのタイミングについて言及していなかったのでここで記していきたいと思います。
何も考えずにやるなら走り始めるタイミングでリセットをかける人が多いと思います。
(↑個人の独断と偏見)
ですが後々のことを考えると走行が終わったタイミングでリセットをかける(基準の点を出る時ではなく、到達した時)ようにしておいたほうがいいと思います。
これに関しては後々ある動きを実装しようとしたときに幸せを感じられるものだと思います。
のであえて理由は書かないでおきます。
さあ、いよいよ本題(?)の細々した部分について書いていきます。
まずはセンサー関連について、主にチャージ発光についてです。
(※書いてるのが雑魚なので詳しく知りたい人は自分で調べるかもっと強い人に聞いてみましょう)
(Miceの標準回路を使用していれば)センサー周りの回路内にLEDと並列でコンデンサがあると思います。
センサー用のLEDを点灯させる際はこのコンデンサに充電してあるエネルギーを使用しているらしいです。
そのため点灯からの時間によってその明るさが・・・変わる・・・?(ホンマか?)
つまりセンサーの値を取得する(AD変換する)際には1つづつ行う必要があります。
またチャージ発光とは少し違う話になりますがセンサー値の外乱を取り除く方法について記していきます。
この処理をしないと機体を180度回転させるだけで値が100ほどずれる場合もあるので是非行いましょう。
さて、外乱を取り除く方法ですがこれはLEDが点灯している時のセンサー値から消灯している時のセンサー値を引けばよいでしょう。
以上の2つを考慮してLED1つ1つを順々に”点灯→AD変換→消灯→AD変換→(次のLEDを点灯)”を行えばいいと思います。
また点灯からセンサー値が変化するまでにはラグが存在するのでその対策は忘れないようにしましょう。
JASALAMAではこれらの処理をCMT割り込みで行い、1ms毎にセンサー値の取得を行っておりました。
全日本大会の3日前までこの処理をしておらず(上手くできておらず)壁制御もセンサー値も安定していませんでしたがこの処理をしてから色々と安定し幸せになることができました。
なので是非
みんなには幸せになってほしい
と思う今日この頃です...
次にバッテリーの電圧測定についてです。
マイクロマウスで多く用いられているリポ(リチウムポリマー電池)は軽量、高電圧、大容量などとても優れた電池でドローン(マルチコプター)などにも用いられています。
一方でやばいことをしてしまうと発火してしまうなど、大きな危険性も孕んでいます。
やってはいけないこととして以下のようなものがあげられます。
- 過充電はしない
- 過放電はしない
- 保管中にショートしないようにする
- 充電は安全な場所で目を離さないように
- 充電終了後or異常が確認されたらすぐ充電器から外す
- 使用していないときには丈夫なケースに入れて保管する
以上より、動作中に起こりうるやばいことは過放電です。
そのためマウスでバッテリーの電圧を読んであげる必要があります。
標準の回路図を用いていればバッテリーを抵抗で分圧させてその電圧がマイコンに入力されているはずです。
つまり分圧のために用いている抵抗の値がわかればマイコンからバッテリーの電圧が読めるはずです。
そのために・・・
はんだ付けする前に分圧に使う抵抗の抵抗値を測定しておきましょう!
それさえやっておけばAD変換とその抵抗値を用いて電圧が読めるはずです。
それで電圧が読めるようになったらどうするか?
→ある値以下の電圧を示した段階で動作を終了し充電させる
この基準となる値に関しては詳しくないし適当なことも言えないのでもっと強い方に聞いてください。
JASALAMAでは電源を入れた時とモードを選択したときに10.9V(?)以下となっていたら無限ループに入るようなプログラムとなっています。
これで電圧が降下してきたら動かなくなるのですぐにわかります。
なのでリポはこのような形でなくてもいいですが過放電を起こさないような対策をしてから使うようにしましょう。
では今日はここらへんで失礼します。
何か指摘等あればお待ちしてます。
(^.^)/~~~
F