第2回 Arduinoで遊ぼう・ホールセンサで簡易サイコンの回だよ
かんらだよ
Arduinoで遊ぼう!ホールセンサ使うよ!
第2回です。今回はホールセンサを使っていきます。
ホールセンサは、
ホールセンサー(ホール素子)とはホール効果を利用して「磁石が発する磁界」や「電流が発する磁界」を電気信号に変換して出力する非接触型の磁気センサーです。
ですね。
まあ磁力を数値として出力してくれるセンサです。
かわいいね。
この子はセンサキットに入ってました。
今回は、タイトルにもある通りこのセンサを使って簡易サイコンを作っていきます。
サイコンはサイクルコンピュータの略で、自転車につけて走行速度や走行距離を測れるデバイスです。
主にサイコンで使われる速度の計測方法としては
- フレーム、スポークに付けたセンサとの通信で出す
- 上の無線ver
- GPSでなんか測る。
があります。
今回はフレームにホールセンサをつけ、スポークに磁石を付けて速度を測る、選択肢で言うと一番上の方式でやっていきます。
まず、ホールセンサとArduinoを繋ぎ、シリアルモニターで数値が見れるようにします。
その状態で磁石を近付けたり、離したりすると、
こんな感じで数値が変わります。732とか542とか、751が近づいた時の値ですね。
ホールセンサの表裏で移動する値が異なります。
今回は磁石を近付けると値が増える方を使ってコードを考えて行きます。
磁石をホールセンサの前をサッと通過させたとき、出る値をある程度カバー出来る値を閾値とします。
とりあえず閾値は520としました。
最終的に磁石はスポークに、センサはフレームに付けるので、ちょっと距離が離れたり、メチャハヤで通り過ぎたりするので、ちょっと余裕をもたせるといいと思います。
速度を出すために必要なものは、距離と時間です。
今回は、
距離(ホイールの周長)/時間(ホールセンサに磁石が近づいてからもう一度近づく間)
で速度を出します。
ホイールの周長は
https://www.cateye.com/files/manual_dl/1/129/Tire_size_chart_JP_151023.pdf
ここで確認しました。僕のは700×25Cのホイールなので、2105mm。約2.11mです。/1000してkmにします。
ホイール1周にかかる時間はmillis()を使います。
millis()ではmsの値がとれるので、/1000して秒、/60して分、/60して時にします。
距離を時間で割ると
sp = 2.11 / loop_time * 3600;
となり、速度が求められます。
モニターに映す部分は今後表示する値が増えていくので別の関数を作りました。
ついでに1周にかかった時間も表示するようにしました。
早速測ってみます。
ホールセンサの前を通過させます。
数値が出ます。
ヤッタネ!
とりあえず速度を出すものが出来たので自転車に取り付けてみます。
仮止めでもしっかりしないとホイールにはさまったらえらいことになるから気ぃつけてね。
磁石もつけて、値が取れてるか確認。
突貫工事。
漕いでみます。
ちゃんと出ますね。
すごーい! pic.twitter.com/jgcjUJmcDl
— 艦楽(⊿Δδ) (@Kanra_6236) 2020年4月26日
まあ、今回は簡易サイコンということでここら辺で。
次はワット、瞬間パワーウェイトレシオを出します。
以上
艦楽(⊿Δδ)