自転車用速度、距離計
【概要】
ホールセンサとオペアンプ内蔵PIC16F785を使った小型の自転車用速度距離計です。
自転車にセットすれば、速度と走行距離をリアルタイムで液晶表示器に表示します。
オペアンプ内蔵PICを使うことで非常に簡単な構成となりましたので、小型のケースに
すべて収める事ができました。
外観は下記のようになっています。
表示例は下記のようになります。
【全体構成】
まずこの速度、距離計の原理は下図のように、自転車の車輪に永久磁石を取り付けます。
さらに車輪の固定枠の磁石が通過する位置にホールセンサを取り付けます。
これで車輪が回転する都度、磁石がホールセンサの面を通過しますから、そのときに
センサの出力が行われ、パルスが生成されます。
このパルスの間隔を測定すれば速度がわかりますし、カウントすれば距離が計測
できることになります。
この速度計の全体構成は、下図のようになっています。ホールセンサを使うためには
定電流回路と出力用アンプが必要です。この2つをPIC内蔵のオペアンプで構成して
います。さらに、出力をA/Dコンバータに入力して、値をデジタル値で読見込んでいます。
したがって、磁力の強さに応じた電圧値が出力として読み込めることになります。
今回の使い方では、磁石の通過だけを判定すればよいので、適当なスレッショルド電圧
を決めてソフトウェアで通過を判定しています。
【回路構成】
上記構成に基づいて作成した回路図が下図となります。
PIC以外には特にICは必要ないので簡単な構成となります。
ホールセンサは外部取り付けとしていますのでコネクタでの接続となります。
アンプ回路はPIC内蔵ですから、抵抗コンデンサだけがPICの周りに接続
されることになります。
ここでホールセンサ関連の回路を回路図とすると、下記のようになります。
まずセンサを定電流駆動とするための定電流回路をOPAMP1で構成しています。
センサへの電流は,OPAMP1の出力が5V以下となるように3mA程度にしています。
センサの出力を増幅する差動アンプをOPAMP2で構成しています。
この増幅後の出力をA/DコンバータのAN5の入力としています。
【外観】
組み立て後の基板の外観は下記のようになります。小型ケースに実装するため
液晶表示器は基板に直付けとしています。
右下側に電源とホールセンサ用のコネクタ
を実装。横型で高さを低くした。
DC/DCコンバータは基板裏面の液晶表示器部が空いていますので、ここに
実装しています。
課題はホールセンサをどう取り付けるかですが、今回は上記基板作成で余った
基板部分をカッターで4本のパターンに分け、直接ホールセンサをハンダ付けして
います。この様子を下記に示します。
【プログラム概要】
この自転車速度距離計のプログラムはすべてCCS社のC言語で作成しています。
計算式を記述すのが簡単だからです。
全体をメインループだけで処理していますので、簡単な構成で下図のフローとなっています。
まず、タイマ2を10msec周期のインターバルタイマとしておき、時間カウンタを0とします。
この10msec周期ごとにホールセンサの出力レベルをチェックし、Lowだったら時間カウンタ
を+1します。Highだったらそこで時間カウンタから1回転の時間を求め速度に変換して
表示します。同時に距離カウンタを+1して距離も液晶表示器に表示します。
これだけのことを10msec間隔で実行しています。さらに速度が遅いときにはホールセンサの
パルス幅が広いため、すぐ検出してしまうため、一定の時間が経っていなければ無視する
ようにしています。
液晶表示器の制御は接続するPICのピンを任意にできるようにしています。
メインで下記のようにピンを定義すれば自由なピンに接続できます。
/**** 液晶表示用設定 *****/
#define DB7 PIN_A4
#define DB6 PIN_A5
#define DB5 PIN_A1
#define DB4 PIN_A0
#define RS PIN_C0
#define STB PIN_A2
#include <lcd_lib.c>
★★★ 自転車速度距離計のプログラム1式