2020年10月30日金曜日

グロム スピードメーター補正 完了

グロム スピードメーター補正の続き.

数分に 1回位の頻度でスピードメータ表示が一瞬 1km/h になるので,原因を調べてみた.といってもデバッグに使用できるのは LED 1灯だけw
メーター表示が 1km/h になるということは,メーターに対して出力するパルスが盛大に抜けていることになる.まずスピードセンサー → arduino のパルスが抜けているか調べたところ,それは抜けていなかった.

そうするとメーターへのパルス出力を行っているタイマ制御で何かおかしなことになっているはず.ここからはもう現象から原因を推定するしか無いのだが,パルス出力タイマは,

1. 出力パルス 1個分の時間をタイマで計測
2. その時間に達したら割込み発生,割込みハンドラ内でパルス幅の補正計算を行う
  タイマは並行して 0 に自動的にカウントが戻り,カウントアップを継続する
3. パルス幅の補正計算結果をタイマのカウント最大値として設定,タイマがその値に達したらまた 2. の処理が走る

となっている.ここで 3. でカウント最大値を設定した時,タイマのカウンタがその値をすでに超えていたら,カウンタはその値で止まらずに 0xFFFF まで回ってしまう.その時のパルス幅は時速換算で 0.3km/h なので,メーターとしては 1km/h を表示する.
と辻褄はあっているが,2. の補正計算 (32bit 乗算) は 8bit の AVR にはそんなに重い処理なんだろうか? 100km/h のパルス幅であっても 14414 サイクル@16MHz の処理時間が使えるから,余裕あると思うんだけどなぁ.

まぁ悩んでも仕方ないので以下のように変更.

・補正計算は loop() 内で実施 ( = いつでも割込み可能)
・タイマの割込みルーチンでは,補正計算値をタイマレジスタに設定するだけにする.そうすると,割込み発生からすぐにカウント最大値を設定するので,カウンタがすでに過ぎている可能性は低くなる.

でやってみたら直ったヽ(´ー`)ノ
これでソフトは fix したので,3D プリンタでケースを作った.

車体への取り付けは,バッテリー上とシート下に隙間があったので,ここに設置 (テープ止めwww)
というわけでめでたく完成ヽ(´ー`)ノ これでやっと正確なスピード表示ができる.あとつけようと思ってた USB の口もつけられたんで満足.

ていうか,デジタルメーターなんだから,裏設定かなんかでスピード補正表示とかさせてほしいんだが.スプロケットの歯数変更とか割とみんなやるでしょ.

2020年10月28日水曜日

グロム スピードメーター補正 (2)

グロム スピードメーター補正の続き.

前回は電気的な接続を確認したので,今回は Arduino のプログラムを作成する.
で色々プログラムのこと書こうと思ったけどめんどくさいのでやめたwww 興味ある人は GitHub で公開してるのでどうぞ.
まぁ一言でいうと,タイマでパルス幅を測って,その幅を補正したあと別のタイマで補正パルス幅の信号を出力するだけ.

で,Arduino 用に 5V 電源が必要だけど,AliExpress で 12V -> 5V/3A のレギュレータモジュールを見つけたので,ついでに USB 給電ユニットも作ることにした.
車体側はスピードパルスのギボシ端子がある付近にアクセサリ電源用のコネクタがあるので,こっから取ろうと電圧等を調べてみた.で,ふと気づいたらシート下右側に,いかにも電源をとってくださいとばかりの赤いコネクタがあるではないか.
コネクタの形は同じなのでピンアサインも同じかもと思ったら,GND の位置が違っていた.今回は楽なんでこっちから取ることにした.それ用のコネクタはアリエクで購入→これ.これの値段知ってたらキジマの電源分岐ケーブル買うのがアホらしくなってくるwww

で,ついに完成したので車体に接続して試走してみた.
スピード表示も問題なく,ノイズ等による誤動作等もなく完璧に動作したヽ(´ー`)ノ USB からの充電も問題なさそう.

... と思いきや,数分に 1回,スピードメータ表示が一瞬 1km/h になったりする.多方使用には問題ないものの,やっぱり気になる.
うーん,直すか.

2020年10月26日月曜日

グロム スピードメーター補正 (1)

バイクのメーターは総じてハッピーメーターだけど,グロムは GPS 比較で 10% も速度が高く表示される.これはちょっと酷いので補正したいと思ったけど,既製品は \9,000 とちょっと高い.なので,マイコンで自作することにした.

使うマイコンボードはBIOS パスワードをぶっ壊す! の時に使った Arduino Pro Micro.安い,小型,開発が楽,機能・性能も十分,ということで今回の目的にピッタリ.

まずは車体左のカウルを外し,スピードパルスのギボシを特定する.自分 (JC75) の場合は薄黄色に緑ラインの線だった.わかんなければ適当なキボシ外して車体動かしてメーターの車速が動かなければ,それ.
最初に,Arduino → メーターに信号を渡して,速度とスピードパルス周波数の関係を調べる.自分はロジアナを持ってないので電圧とかは推定するしかなく,多分スピードパルスは 12V の信号と推定されるが,まずはダメ元で 5V を突っ込んでみたら普通にメーターが認識した.
そこでいろいろな周波数の信号を突っ込んでみたところ,大体 1km/h あたり 11.1Hz だということがわかった.

次に車速センサーのパルスを Arduino で拾ってみる.これも 12V だと思ったので抵抗分割で 5V に落としてみたら,Arduino 側で認識できなかった.もしかしてスピードパルス 5V なの? とダイレクトに Arduino に突っ込んでみたら,パルスを認識した.本当はアカンもしれんけど,Arduino に保護ダイオード内蔵されてるしまぁいいか.
我々は特殊な訓練を受けています.良い子は絶対に真似しないでください.

最後に,スピードセンサ → Arduino → メーター とつないでみて,タイヤを動かした時メーターが動くか見てみたところ,バッチリ動いたヽ(´ー`)ノ
これで電気的な接続は pass したので,あとは Arduino のプログラムを作成するだけ.

2020年10月17日土曜日

ケツ痛シート改善ファイナル

前回ウレタンに多数穴開けることでウレタンを柔らかくして,ケツ痛航続距離が倍くらいに伸びたものの,それでも 200km くらいが限界. 
丸一日走り回ることを考えるとこれでは足りないので,ドンキで見つけた低反発クッション (変形させてもじわーと戻るやつ) を貼り付けることにした.

まずはクッションの厚み分,大胆にウレタンをカット.
そしてクッションを貼り付けてシートの形にカット.
カッターで切ったのでかなりガタガタだが,表皮を被せれば目立たないので気にしない.
あと,タンデム乗車位置はもともとウレタンが薄く,削り取れる厚みが 2cm くらいしかないが,クッション (厚さ 4.7cm) を薄く加工したりせずにそのまま貼った.
というのも,自分はいつも一人乗車位置とタンデム乗車位置の境界あたりに着座しているので,ここを薄くするわけにはいかないので.
完成図.
かなり見た目がモコモコになったがw 座り心地は超最高ヽ(´ー`)ノ 200km は余裕になった.

加工にかかった費用はドンキのクッション代 \1,000 だけ.割と簡単だったので,穴なんか開けずに最初からこうしておけばよかった.

あとこのシート (Noi Watdan),フラットシートで複雑な造形が必要ないのと,表皮が立体縫製であまり表皮を引っ張らないで済むので,中身のウレタンがガタガタでもあまり目立たない.安いし加工ベースとしてはおすすめ.