車輪を転がして距離を測る「ローラー距離計」を作ってみました。
コロコロと転がしていくと、有機ELディスプレイに距離が表示されます。
計測の仕組みは、回転するプーリーの穴をフォトリフレクタで検知して、距離をカウントしています。
ユニバーサル基板を使って、フォトリフレクタと抵抗を載せたシールド基板を作りました。
穴のある/無しを見るだけなので、距離は3cm単位でしか測れません。とてもアバウトな距離計です(^_^;)
まあ、車輪の滑りや、プーリーを回す輪ゴムの伸縮もあるので、この程度の精度がいい所でしょう。ギアを組んでプーリーを増速したり、もっと大きなプーリーを使えば、精度は出そうですが…。
今回、タミヤの「楽しい工作シリーズ」のパーツを買い集めてメカを作ってみました。
こんな簡単な機構でも、実際に作ってみないとわからないことがたくさんあって、いろいろ勉強になりました。
もし野外で使うなら、フレームやタイヤをもっとしっかりした物にしないといけないでしょう。
今回はとりあえず距離計を作ってみましたが、他のメカにもいろいろ応用できます。
例えば、同じ仕組みをロボットカーに載せれば、走行距離のカウントや速度計測などができそうです。
材料
- タミヤ 楽しい工作シリーズ
- フォトリフレクタ(反射タイプ) TPR-105(秋月電子)
回路図
フォトトランジスタのバイアス抵抗を、今回51kΩにしました。こうするとANA(2)の値が
- プーリーの穴…200前後
- プーリーの壁…900前後
になります。
TPR-105のデータシートによると推奨抵抗値は1kΩなのですが、その場合のANA(2)の値は
- プーリーの穴…10未満(1桁)
- プーリーの壁…20〜30
になります。判別が難しくなりますが、その代わり反応速度が上がるようです。
今回は穴の判別を優先して大きい抵抗にしましたが、速度計測などをする時は小さい抵抗にして反応速度を上げるといいと思います。
プログラムリスト
- 実行すると、0cmから距離をカウントします。車輪を転がして距離を測ってください。前進/後退のどちらでもカウントします。
- 距離は3cm単位でしかカウントしません。また、プーリーの穴と壁の所で微妙に前後させると、たくさんカウントしてしまうので注意してください。
- 計測し終えたらIchigoJamのボタンを押すと、リセットして0cmに戻ります。
※(9/14修正)明るい場所での誤検知を防ぐため、穴の判断のしきい値を変更。
10 '*Roller Measure 20 CLV:GSB @OLEDINIT 30 D=30 40 B=ANA(2) 50 CLS 60 ?"Roller":?"Measure" 70 LC 0,3:?0;"cm" 80 GSB @OLEDOUT 90 @LOOP 100 IF BTN() RUN 110 A=ANA(2) 120 IF B<850 AND A>=850 GSB @COUNT 130 B=A 140 GOTO @LOOP 150 @COUNT 160 L=L+D 170 LC 0,3:?L/10;"cm" 180 GSB @OLEDOUT 190 RTN 200 @OLEDINIT 210 poke#780,#00,#40,#21,#00,#7F,#22,#00,#07,#AE,#D5,#80,#8D,#14,#20,#00,#DA,#12,#81,#CF,#D9,#F1,#DB,#40,#A4,#A6,#AF 220 forP=#788to#799:i=i2cw(60,#780,1,P,1) 230 next 240 poke #79a,#70,#b5,#40,#18,#07,#23,#1b,#02 250 poke #7a2,#c9,#18,#10,#24,#03,#78,#db,#00 260 poke #7aa,#d3,#18,#1d,#68,#0d,#60,#5d,#68 270 poke #7b2,#4d,#60,#20,#30,#08,#31,#01,#3c 280 poke #7ba,#f4,#d1,#70,#bd 290 @OLEDOUT 300 forP=0to7:i=usr(#79A,#907-P):i=i2cw(60,#781,1,#700,128):next:rtn
プログラム内部では、距離Lをmm単位で計測しています。そのため最大で32767mm=約32mまでしか測れません。
30行の「D=30」が、穴1つにつきカウントする距離(mm)です。メカの機構によって、この数値を較正して距離を合わせてください。
その後
フレームや基板を改良した「ローラー距離計 V2」を作りました。
http://d.hatena.ne.jp/shiro0922/20180919