アイトラッカー(アイマークレコーダ)を作成しました。特徴としては
強膜反射法を使っています。詳しい所はgoogleってみてください。
東海大学の山田研究室様の解説がわかりやすいのかも
回路としては、TinyH8マイコン(秋月)のA/DコンバータにJFET入力のOPアンプで
バッファリングして、フォトトランジスタの電流量を入力する。
可変抵抗で明るさを変えられる赤外線LEDをPort8(マイコンのLEDドライブ用ポート)
につないでるだけです。
フォトトランジスタはTPS603A、赤外線LEDはジャンクなので型番不明です。
ただし、LEDには改造が必要です
というのも普通のLEDは指向性が強いので、一部分しかてらされなかったり、ちょっとした振動でLEDが動いただけで、光の強さがかわってしまい使いにくいです。
そこで、LEDの頭をけずってたいらにするという作業が必要です。(実はこのアイディアはLED萌えの重機研の人が昔おしえてくれた)
ついでに、私の場合は光量が足りなかったのでさらに削りこんで光量アップもしてます(^^;
あとはLEDとフォトトランジスタを水中眼鏡に取り付けてハードウェアは完成です。(とっても簡単)
あとはシリアルでパソコンにつなぐだけ。半田付初心者の練習にもってこいですね
それで、馬鹿みたいに二つのフォトトランジスタの出力を足したり引いたりするだけで
目の位置がわかるのは、真っ暗な部屋で運用したときのみです。
世の中そんなに甘くありません。
でもそれに対抗するためのノイズリダクションアルゴリズムはとっても簡単です。
以外と世の中甘いものかもしれません
まず、入力される光を
さて、次の敵は蛍光灯です。
さくっとモデル化しましょう。・・・・・と思ったけどぶっとばして、結論から。
蛍光灯の明るさの変化をsin波と仮定すると、非常に短い時間でなら、線形(y=ax+b)に近似できます。
じゃ、短い時間で計測して線形成分を叩き消せばいいのです。
要領は(その1)と大差ないです。
このほうほうはさすがにTinyH8単体では実行できません。また、私もまだためしていません
(石川県にいると、電子パーツ地元でうってないからねぇ)
まず、ハードウェア構成構成が変わります。3chのフォトトランジスタの内容を同時にとりこむ必要があります。
TinyH8付属のA/Dコンバータだと1つのA/Dをスイッチで切替えてつかうのでだめです。
さて、(その2)の問題点をかんがえてみましょう。
0.3ms以内で線形に近似できるような低周波はたしかにカットできます。
しかし、センサーが感知できる最高周波数よりも十分遅い周波数をカットすることしか
できなさそうなのは上のアルゴリズムから容易に推測できますね?
推測できないひとは、後日報告をまとめるのでそちらを読んでください
さて、どうしましょう。
ここで3本目のセンサーが登場です。
まず前提として、センサーの追従できる最高周波数より十分高い周波数でデータをサンプリングできるものとします。
(そういう速度で、サンプリングしないと高周波数のノイズの影響をうけてしょぼーそのはず)
そして3本目のセンサーはLEDの光だけが入るように細工をしてLEDの明るさをはかります。
3本のセンサーにLEDの光に入るのに距離/光速の時間差がありますが、これは十分無視できるように設計するものとします
あとは、2本のセンサーとled光量センサーの相関を見てあげればLEDの反射光成分のみを切り出すことができます。
フーリエ変換で習いましたよね?ある周波数のsin波と同じ周波数を持つ物の振幅しりたければ、そのsin波を得られたデータに掛算していって和をとればいいのです。
同じことはsin波だけじゃなくて任意の波形でもよさげなのはフーリエ展開を考えると容易に想像できますね?
直観的な理論としてはそんなかんじです。(私も直観的にしかしらない(ぉ))
この際LEDに単純な一つの周波数の矩形波かけると、たまたま同じ周波数成分を含む
データを持つ信号原のノイズを強くうけてしまうので、いろいろな周波数を含むような信号をLEDに加えればいいかんじになるでしょう。
とりあえず、この方法はまだ試していないのでだれか試してくれると嬉しいです。
でもこんなことすると15K円はかかりそうなので(汗
光センサーが光量に対して線形な出力をすることを仮定しています。
線形じゃない時は変換関数を前段に噛ませる必要があります。
LEDの明るさはダイナミックレンジと外部の明るさを考えて適当に設定してください。
私の場合LEDがonの時の明るさがoffの時の2倍になるようにしました。
あと、LEDの出力をがんがんにあげて目玉焼きをつくらないように気を付けてください
この報告はあくまで速報です、間違っててもしりません