(電子工作) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
スピードメーター |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2009年春〜 【 回転検出近接センサー 】を使用して、正確なスピードメーターを製作してみたい。 PIC(ワンチップマイコン)での表示処理方法検討 タイヤが1回転する間に、9回の信号が出るが、その内の1回の時間を計測し、時速計算を行い表示する。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GIF 350x330 30.0KB |
時間を正確にカウントする必要があるので、 水晶を使うことにする。 秋月電子通商から、1.308MHz小型クリスタ ルオシレーター、5個で100円を購入した。 ←は、秋月電子通商のホームページから コピーしたもの。 この水晶でPICを活動させると1命令時間は 0.0000030581秒になるはず。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ピレリーMT-21の新品で、組み込み後のタイヤ半径を実測すると348mmだった。 スピードが1kmの場合は、 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
348[mm]/1000x2x3.14159x60x60 |
= 0.874618656 秒/パルス になる。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1km/hx1000x9[パルス] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
約1秒に近い。 意外?と長いので、プリスケールを「8」にして、1カウントを8倍の0.00002446464秒でやってみる。 それをPICの16bitタイマーでカウントさせると、35750カウントになる。(0.874618656÷0.0000244648) すなわち35,750カウントで1km/hの速度になる。 その10分の1カウントなら10km/hの速度になる。反比例する。 ∴速度表示の計算は35,750÷カウント数となる。 たとえば60km/hなら595カウントになるので、35,750÷595=60.084km/h 35,750カウント係数は、タイヤ半径により変わり次式になる。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイヤ半径[mm]/1000x2x3.14159x60x60 |
= カウント係数 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1000x9[パルス]x(1/1308000*4*8) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16bit計算 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2進数8bitでは255までしか数えられないので計算精度が低い。 16bitだと65535まで計算できる。 ビット数を多くすると精度が高いはずだが、プログラムと計算が面倒になる。とりあえず16bitでやってみたが、十分である。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
誤差考察 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
もし、実際のタイヤ半径と想定半径が10mm違っていた場合どれくらいの誤差がでるか? 磨耗や空気圧低下などにより、実際の半径が338mmで100km/hのスピードだと、 34722÷347=100km/h→35750÷347=103km/h表示となり、3km/h高く表示されることになる。 ノーマルメーターの場合は補正調整ができないが、今度は正確な表示ができるはず。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012年〜 計測精度アップ? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
秋月電子通商から安易に入手したクリスタルオシレーターを使用して良好だったが、時間カウント数は16bitを超えないようにプリスケール「8」を入れていた。(プリスケール「4」だとオーバーする。) 1.308MHz→1.000MHzならプリスケール「4」で16bit(65535)をオーバーしないかもしれない。 1/1000000x4x4=0.000016秒/カウント ピレリーMT-21の新品で1km/hの場合 0.874618656 [秒] ÷ 0.000016 [秒] = 54664 [カウント] オーバーしないことが分かったので、「1.000MHzクリスタルオシレーター」を調達することにする。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイヤ半径[mm]/1000x2x3.14159x60x60 |
= カウント係数 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1000x9[パルス]x(1/1000000*4*4) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイヤ半径348mmとすると、カウント係数は 「54664」 となる。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイヤ径を記録?! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
タイヤ径が多少異なっても計算上の速度誤差は、思ったより少なかったが、距離計は実測補正できるものを開発したので、速度計も補正したくなった。 距離計を実測補正する時に、回転検出近接センサーのカウント数から、タイヤ径を算出すればよい。 それからカウント係数を計算してEEPROMに格納するだけ。 と考えたのだが、… PIC内部で計算する桁数が大きい! 式を簡単にして桁数を減らそうと思ったが、誤差が大きくなりそうだし、僕には難しい。 そこで閃いた。 カウント数によるカウント係数表を作成して、テーブル変換としてはどうだろう。 タイヤ径はメーカーと種類により異なるが、摩耗分を考えても、直径で±25mmあれば十分だと思う。 たとえばピレリーMT-21の新品で696mmとして、最小671mm、最大721mm。 テーブル表は670mm〜720mmとすることにした。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
バイクでフローターフィッシングとキャンプ > バイク(オートバイ)DJEBEL250XC > スピードメーター |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<< トップページへ |