とりあえずスピードの計測のみ
本当はオドメーターやトリップメーターも自作でまかないたいが、とりあえずはスピードを測るだけを考えてみる。スピードの計測方法はホイールに磁石を付けてそれをリードスイッチによってパルス入力する方式が簡単だ。その場合
1、単位時間あたり何回ホイールが回転したかをカウントする方式
2、パルス間の間隔を計測することで1回転するのにどれだけの時間がかかったかを計る方式
が考えられる。タコメーターのときと同じだ。
まず17インチホイールに120/70のタイヤを装着した場合について考えてみると、タイヤ外径はおよそ600mmなので外周は3.14をかけて1884mmつまり1周すると1884mm進むことになる。さて、1秒間に1周するスピードは1884x60x60/1000000=6.7824km/hとなる。つまり1秒間に何回タイヤが回ったかを計るとすると分解能はおよそ6.8km/hとなる訳でメーターの表示もひどく荒いものになってしまうわけだ。単位時間を延ばせば細かくはなるが、今度は表示の更新される間隔が広がり、レスポンスの鈍いものになってしまう。なので1秒間に何回回ったか方式はいまいちだ。
ではパルス間隔を計る場合はどうだろうか。時速1kmのときのパルスの間隔は1884/(1000000/60/60)=6.7824秒となるこの場合時速1km/hで走行しているときには6.8秒たたないと表示されないがそんな低速は別に表示できなくても支障はない。逆に速度が100km/hだと0.068秒間隔で表示が更新されることになる。このあたりは工夫が必要になるかもしれない。またPIC16F648AのTimer1は16ビットカウンタなので65535カウントまでカウントできるが、内蔵クロックを使用した場合4MHzなので0.065535秒までしかカウントできない。これでは100km/h以下ではオーバーフローしてしまうのでクロックを落とすかプリスケーラを使ってカウントを水増ししなければならない。プリスケーラは8までしか使えないので結局0.52428秒までしかカウントできないので不十分だ。結局クロックを落として対処することになる。さて16F648Aの内蔵クロックは48kHzも選択できるようになっている。この場合1サイクルはおよそ83.33マイクロ秒となるが少々計算がややこしくなりそうだ。16F819を使う場合内蔵クロックは8,4,2,1,0.5,0.25,0.125MHzが選択できる。250kHzだと1サイクルが16マイクロ秒となりおよそ1秒程度までカウントできるようになる。そうすればだいたい7km/h以上の計測が可能だ。125kHzだとさらに半分3.2km/h以上の計測が可能という訳だ。ちなみに300km/hで706.5カウントになる。
以上のことからPICは16F819を使い内部クロック125kHzで動作させることとし、Timer1でCCPのキャプチャモードを使ってパルス間隔を計測し速度を計算するという基本設計になった。