8月7日(土)に第2回の試走会を終了しました。
その際出た問題として、
1)スタートしても走らない
2)途中で止まる
3)自分の計測器ではOKだが本番用の計測器をつけると不具合がでる
という現象がでております。
このような現象は、実車等でも起きるかもしれません。
この機会にPBLとして課題解決を検討するチャンスかと思います。
フェールセーフ的には、障害が起きた場合は安全側に倒すのが基本ですが
このコンテストでは走行体が止まることはリタイアにつながります。
是非、「はやぶさ」のように「こんなこともあろうかと」という設計を
検討してみてください。
QUESTの分析
「走行体に衝撃がかかった時に以下の事が考えられる。」
・モータのブラシ付近に火花が発生する。
・火花によりスパークノイズが発生する。
・ノイズの影響により+3.3Vの電圧が低下し、CPUリセットがかかる
・リセットがかかると、状態が0になったり不定な数字になる
・状態遷移がうまく動かなくなり、計測システムの命令が無視される
対策
・設計上あり得ない状態番号になった場合の対処を行う。
ここでは具体的には書きませんので、ご自分で設計してみてください
・暴走を考慮して、ウォッチドッグ機能をOFFする機能を定期的に呼び出す
下記に例を示します。試してないので、間違っていたらごめんなさい。
#include <avr/wdt.h> void watchdog_off() { wdt_reset(); MCUSR &= ~(1<<WDRF); WDTCSR |= (1<<WDCE)|(1<<WDE); WDTCSR = 0x00; }
是非この問題を解決して「はやぶさ」のように、リタイアしない走行体を設計してみてください。