LancerStratos’s blog

第23回ロボットグランプリに向けたロボットランサー”ランサーストラトス”開発記録

TSL-1401の使い方(その3)

今回はTSL1401を使って初めて参加した第22回大会の思い出話です。

LancerStratos2の照明

マイコンカーWikiに載っているような理想的な出力を期待してたのに、実際は下のような結果になりました。

TSL1401出力例1

グラフは横軸が128素子の並びで縦軸がADC値です。ロボットランサーのコース色は黒ではありませんが、灰色で、コースラインの白色に比べれば明らかに暗く、そのコントラストは十分にあります。でもグラフが示すように、中央付近にラインを示す鋭いピークが現れるかと思いきや、右側が全体的に明るいという形です。

この原因を探るため色々考えました。レンズの焦点が合ってない?AD変換のタイミングが間違っている?マイコンとモジュールの電源電圧を合わせないと?CLKが早すぎる?モジュール自体が壊れている?などなど・・が、結局大会の前日まで改善することができず、一時は出場をあきらめようとも考えました。

そんな中、ヘンテコながらもコースライン位置との相関と再現性があることが分かりました。下のグラフは、ライン位置をずらしたケースを重ねて表示したものです。

TSL1401出力例2

山の高さはバラバラですが、立ち上がりの斜面がライン位置に対応して左右にずれています。TSL1401の出力を正常にするには時間も知識も足りないので、このヘンテコ出力ありきでプログラムを作成し、何とか低速でライントレースできる状態になったところで時間切れ。大会には出場しましたが、最初のカーブで脱線するという情けない試合結果となってしまいました、が、昔、友人とランサーを作っていた時に、同じように大会直前まで不眠不休でロボット作りをしたことを思い出し、どこか懐かしい気持ちでした。

未だこのヘンテコな出力の原因は解明できていませんが、その後、AOでなくAO0端子(オペアンプを介さないTSL1401の生出力)を使ったところ、明らかにAOよりはピーク位置が明確になったので、原因の一つは、モジュールに付属のオペアンプの出力特性に原因があるのではないかと考えています。また、当時は照明用高輝度LEDを10個しか使っていませんが、現在は24個に増やし、波形の改善と併せて露光時間を短縮(3msec→1msec)できたので、検出対象を均等に照らす”照明”がとても重要な要素だと考えています。

この頃はSDカードを使ったログ機能は装備してなくて、マイコンとPC間のシリアル通信でTSL1401のデータを読み取っていたのですが、通信ケーブルがつながっているため走行中のデータが確認できなかたり、専用のプログラムに書き換えたりと、非常に手間がかかったことが、現在の機体にログ機能を搭載するきっかけになりました。