アルドウィーノを使った
オープンソース、オープンハードの
ローコストECU

テージのECUが壊れて
いるみたいなので
Speeduino(STM32)に装換します。


その15:RTCの不良解析
新作ハーネスで試走に向けて準備
初試走



2024年
10月4日
今日はずっと雨でガレージ内は快適です。Speeduinoを付けて試走に向け走れる状態にします。まずは、エアフィルタを戻します。調整で邪魔なのでエアフィルタボックスは外していました。



下側のエアフィルタのボックスに付いているゴム製のジョイントをスロットルボディに接続します。下側のボックスはプラスチック製です。


エアフィルタを間に挟んで、上側のカーボン製のボックスを4ヶ所ネジ止めしました。



10月5日
試走
に向けた準備の続きです。リアフェンダとバッテリカバーを取り付けました。



STM32のRTCが大幅に進む件で少し進展がありました。STMのフォーラムで 質問したところ、クロックソースが外部32.768Hzから生成してLSE以外になっているのでは?との回答がありました。512Hz出力はあくまで 32.768Hzの64分周として出力されて、RTCがこのクロックで動いているかとは別です。ソースコードを調べるとSpeeduinoのプログラムに rtc_common.cppに以下のrtc_setTime関数があります。これはクロックソースをLSEに設定してますが、RTCが初期化されていないという条件付きです。条件が付いてる理由は、常時これを実行すると、RTCが少し遅れる不具合があるためです。まだ原因は不明ですが、この条件を外して、必ずクロック ソースをLSEに設定するとRTCが大幅に進む不具合は発生しなくなります。ただ元の不具合により電源を入れるたびに少し遅延(0.5秒?)するように なっていると思われます。4時間で5分進むより、電源を入れるたびに0.5秒遅れる方がまだ良いです。本来であればRTCの各レジスタはボタン電池によりバックアップされているので、本来であれば一度この設定されれば、以降はLSEが選択されるはずです。


VSCでrtc_setTime関数の先を追うと、ライブラリのRTC_IsSetTime関数でRTCのバックアップレジスタ1にマジックナンバ0x32F2が書かれているかで時間が設定済みを判断しています。



10月7日
試走に向けて、空燃比が測れているが確認します。O2センサ(ナローバンド)は水平気 筒のエキパイに付いています。メータユニットとSpeeduinoへ並列接続されています。470Ω抵抗で分岐しましたが、特に問題は無さそうです。表示は約13.5です。暖機が終わっていないので、濃い目になっていると思います。


A/Fセンサ(ワイドバンド)は垂直気筒のエキパイに付いています。A/F表示は12.3です。A/Fセンサの方が濃い値です。これが水平/垂直気筒の違い なのか、センサシステムの違いなのかは、センサを入れ替えれば分かります。気筒の違いだと、アイドルパイパススクリューで調整できるかもしれません。O2センサはタンクとエアクリーナボックスを外さないとエキパイから外 せないですが、O2センサは消耗品なので、簡単に外せるようにしておいた方が良かったでです。ちょっと失敗でした。中間コネクタを追加して取り外せるようにします。



10月8日
O2センサを簡単に交換できるように中間にコネクタを追加します。初めに、タンクを取り外します。ホースはワンタッチカプラで接続されています。馴れていないと、なかなか外れませんが、コツが分かると簡単に取り外しできます。



O2センサのケーブルを途中で切断して、中間にコネクタを追加しました。これで、簡単にO2センサが取り外せます。タンクだけで、エアフィルタボックスはそのままで作業できました。


新しく追加してO2センサのコネクタの所にオリジナルのパルスセンサがあります。これは使わないないので外します。代わりにカバーを作製しますが、オイルシールは穴の内側に入っているので、パルスセンサと同じ直径のロッドを入れないとオイルが滲んで来ると思 います。


アルミ棒をパルスセンサと同じ18mmのロッドを作ります。センタに5mmの穴開けしておきます。


取り外したパルスセンサと18mmに削ったロッドです。ロッドは6mmのタップでネジを切っておきます。


パルスセンサには1mm厚の真鍮製のスペーサが入っています。これを参考にしてカバーのベース部を作製します。


QCADで図面を作成して、CNCフライスで4mm厚のアルミ板からベース部を作成しました。


切断したロッドをベース部にネジ止めして、カバーが完成しました。早速、パルスセンサの代わりに取り付けました。


パルスセンサと共締めで鉄製のケーブル押さえプレートが付いて います。ステアリングアームの近くにケーブルが通ってるため、接触しないように保護しています。上がオリジナルの鉄製のプレート、下は余っていたL字カーボンで作製したプレートです。


オリジナルはプレート、スペーサ、固定ネジとも鉄製で、合計で26gでした。


カーボン製のプレートとアルミスペーサ、アルミネジで合計で9gでした。26gから9gに大幅軽量化(笑)。


早速、取り付けました。



10月9日
O2センサの延長ケーブルを作製しました。前回と入替えて、O2センサを垂直気筒、A/Fセンサを水平気筒に取付ました。


アイドルバイパススクリューを調整してアイドル時の負圧は同じレベルに調整します。


垂直気筒のメータユニットのO2センサは12.6です。TunerStudioは11.4です。


水平気筒のA/Fセンサは約13.2です。条件が前回と同じではないですが、センサを入れ替えても垂直気筒の方が少し濃い傾向にあるようです。原因はインジェクタの特性ズレでしょうか?確認するにはインジェク タを入れ替える必要があります。垂直気筒のセンサのフランジは自作なので、ちょっと怪しいのですが、空気が漏れていると、薄くなるので大丈夫そうです。 インジェクタの交換はエアフィルタボックスを外す必要があります。


KosoのRX4メータユニットにエンジンチェックインジケータがあり、Speeduinoの汎用出力に繋がっています。Speeduinoに はECUが故障しているステータス出力は有りませんが、プログラマブル出力に色々な条件を設定でき、ECU本体の故障は判定できませんが、各センサ の異常が検出できます。例えば、油温センサが範囲外になった時などです。ただし、油温センサ以外のスロットルポジションセンサ(元々プルアップ抵抗が無 い)、気温センサ(燃調調整のためにプルアップ抵抗を外した)はプルアップ抵抗が無いため、断線、コネクタ抜け判定はできないです。


TunerStudioのプログラマブル出力のダイアログです。各センサの値を閾値に設定ができます。複数の条件を組み合わせて汎用出力ができます。


Speeduinoのアナログのセンサ入力の回路です。油温はサーミスタ用のプルアップ抵抗が付いています。気温は燃調調整のためにプルアップ抵抗を外してあります。また、TPSはボリュームと同等のため、元々プルアップ抵抗が付いていません。上の条件でTPSのコネクタを抜いても、入力抵抗が高いので、断線の判定はできません。TPSと気温の入力に1〜2MΩでプルアップを追加すると、ケーブル抜けや断線が判定 できるようになると思います。



10月10日
インジェクタを入れ替えるため、再度エアフィルタボックスを外しました。



インジェクタを取り外して、入れ替えました。これはハイパーモタード1100のインジェクタでオリジナルと互換性があります。


断線、コネクタ抜け検出のため、TPSと気温センサの入力信号に2.2MΩの抵抗でプルアップしました。


CPUボードはArduinoからSTM32に交換して、初始動しましたが、動作良好です。


エンジンは始動したものの、TunerStudioの空燃比ゲージが薄い方に振り切れています。


後で判明しまたが、空燃比センサの選択メニューが空白になっているのが原因でした。ナローバンドを設定しました。


10月11日
インジェクタを入れ替えたので、水平/垂直気筒の空燃比を確認します。条件が同じではないですが、垂直気筒のメータユニットは12.4です。TunerStudioは10.8です。


水平気筒の A/Fセンサは約12.9です。条件が同じではないのですが、インジェクタを入れ替えても垂直気筒の方が少し濃い傾向にあるようです。



10月12日
TPSと気温センサにプルアップ抵抗を追加したので、断線検出の確認を行います。TPSのコネクタを抜くと、上側に振り切れます。


続いて、気温です。NTCセンサなので、コネクタを抜くと低温になり、約−25℃まで低下しました。


クーラント(テージでは油温)は元々、2.49KΩのプルアップ抵抗が付いているので、気温と同様に−30℃付近まで下がりました。この3つのセンサ値でメータユニットのエンジンワーニング信号を生成します。


メータユニットとTunerStudioの空燃比がズレれている件を確認します。O2センサの信号線をGNDに接続します。この時は一番薄い状態ですが、 TunerStudioは20.1、メータユニットは17.5を表示しました。


ファンクションジェネレータで理想的な空燃比14.7の三角波(0〜1V)を生成して、O2センサの信号線に接続します。


この時は双方とも14.7付近を表示して、表示は非常に良いです。


続いて、ファンクションジェネレータでDC1Vを生成します。


この時は一番濃い状態ですが、TunerStudioは 10.4、メータユニットは12.1です。


メータユニットの薄い時、濃い時の表示範囲は仕様と完全に一致します。下のA/Fの表示範囲は12.1〜17.5になっています。中心から外れると表示がズレのはメータユニットの表示範囲が狭 いことが原因です。因みに、TunerStudio側にナローバンドセンサの特性を調整する機能は無いです。



10月13日
Speeduino/STM32で初試走します。フロント、サイドカウルは無しです。


思ったより、普通に走ります(笑)。オリジナルで出ていた、2000〜3000rpmのギクシャク感も無く、良い感じです。メータユニットの画面が白くなっているのは原因不明です。スピードメータとギアの学習は未実施です。


2往復して、無事帰還。


SDカードのログで空燃比を確認しました。TunerStudioの無償ログビューアは500カラムまでしか表示できないです。代わりに表計算で読み込みました。11〜14位を行ったり来たりしています。少し濃いようです。


フロント、サイドカウルを取り付けました。きつきつですが、何とか収まりました。



10月16日
メータユニットの画面が白くなる件を代理店に質問したところ、LCDの設定に自動モードがあり、周囲の明るさで切り替わる機能が働いていいるとのことでした。LCDのモードは昼間、夜間、自動があり、輝度の調整は昼間と夜間が別に設定できます。自動は直射日光でコントラストが下がるのを防止するために画面が反転する機能でした。モードを自動から夜間にすれば黒画面のままになります。


ベルトのクリアカバーを固定している、ポリカーボネート製のステーがガソリンに弱いのでアルミで作り直します。下の赤枠はガソリン漏れで、ヒビが入ってボロボロになったポリカーボネートのステーです。


図面はポリカーボネート用を少し修正して、一度に8個作ります。


CNCフライスで切削します。アルミ板の厚さは6.4mmで、ステーの厚は5.5mmなので島が残ります。


裏側を切削すると、ステーが外れます。ステーの切り出しは終了しましたが、この後、穴開け、ネジ切り、サンドブラストと結構な作業量です。



10月17日
カバーのステー交換の続きです。水平側から交換します。水平側のベルトカバーを外すには、デュアルホイールのパルスギアを外す必要があります。元に戻せるように位置を確認しておきます。ステンレスのボルトが上です。



前側に引き抜くと、水平側のカーボン製のサイドカバーが外れます。


先日、切り出したアルミステーに穴開け、ネジ切りしました。


ステーはアルマイトが掛かっているので、サンドブラストします。梨地になってキレイになります。


古いステーを外して、代わりにアルミステーに交換完了です。



10月18日
ベルトカバーのポリカーボネート製ステーをアルミに交換する続きです。水平側の交換完了しました。垂直側はタンクを外す必要があるので、ついでの時に作業します。



ステカでSTM32ーSpeeduinoのステッカを作りました。


黒のカッティングシートを切り出し。



早速、フロントカウルに貼ってみました。iのドットが取れてますね、後で追加しておきます。



10月19日
点火プラグの接地電極を短くすると、火花が安定するという動画があったので、簡易プラグテスターを作ってみました。燃えないゴミの日に捨てられていた、コイルと永井のハイテンションコード、電流増幅モジュールを100均のケースに入れた簡易プラグテスターです。元動画はこちら。



発振器は無いので、ファンクションジェネレータで30%デューティのパルスを供給します。後でNE555のパルスジェネレータを組み込めば、12V電源だけで動作させられます。


電極を短く加工した方の動画です。確かに安定します。精神衛生上は良いですが、実際にこれで何か変わるのかは不明です。クリックすると約0.5Mバイトの動画をダウンロードします。


未加工の動画です。クリックすると約0.5Mバイトの動画をダウンロードします。


かわせみ河原で行われたミリタリの集まりにテージで参加しました。片道約4.5kmです。大きな問題は無く到着です。


細かい問題発生です。タブレットのマグネット用の鉄板が外れました。両面テープの質が良くないようです。


メータユニットが揺れます。これは想定内でステーをカーボンで作り直したためです。緑の部分に突っ張りを追加して、揺れ防止の必要あります。


バッテリをモノタロウで購入しました。テージのバッテリは設置方向が寝ているので、ゲルバッテリの必要があります。



10月20日
上記のバッテリに交換しましたが、内部抵抗が大きいのか?満充電してもセルの回りが遅いです(泣)。



取り外したユアサ製に戻しました。こちらの方が元気に回ります。


10月21日
ジャンパケーブルを簡単に接続できるように、銅板でタブ端子を作製しました。プラス側はセルモータリレーの手前のケーブルにネジ止めしました。プラス側は後でケースを作製してカバーした方が良いです。


マイナス側はセルモータリレーの取り付けネジに共締めしました。


10月22日
バッテリの続きです。元々付いているのと同じユアサ製をアマゾンで購入しました(泣)。予備充電中です。


現在の点火マップは17度から始まっています。1100DSのマップを元に始動が良好になるように、オフセットして作成マップです。ちょっと進角しすぎで値がおかしいです。本来は3〜5度のはすです。


こちらは以前ネットで見つけた1100DSのマップです。3度から始まっています。


点火の設定ダイアログで進角を強制的に0度に設定して、点火時期を確認します。


プラグを外して、水平気筒のハイテンションコードにタイミングライトを接続してクランキングします。緑枠のマークとカムプーリマークが合った時が上死点です。


上記のマークが一致するようにトリガ設定ダイアログでアングルを調整すると120度で一致しました。以前は135度に設定されてたので、15度ズレていて、17−15=2で3と大体一致します。後で判明しましたが、これは間違っていました。



10月23日
ジャンパケーブルのタブの絶縁ケースを作製します。データはHeeksCNCで設計しました。


3DプリンタのスライサでGコードを生成します。コピーして一度に2個作ります。


久しぶりに3Dプリンタ動かしました。クリックすると約3.3Mバイトの動画をダウンロードします。


12分ほどで完成です。


タイラップの穴を開けて、早速、取り付けました。



10月24日
メータユニットの突っ張りを作製しました。アルミ板を曲げて型にしてカーボンを積層します。硬化後に離型します。


外形加工してメータユニットの固定ネジに共締めして突っ張りを追加しました。突っ張っているだけなので効果はどうでしょうか?


こちらは、ドライブレコーダの振れ止めステーとタブレットのケーブル押さえです。元はアルミ製です。


硬化後に離型します。ワックスが塗ってあるので、簡単に離型できます。


アルミの元の形に似せて、外形加工が完了です。


早速、取り付けました。左はフロントカウルの固定ネジで共締めしたケーブル押さえです。右が両面テープで固定した、ドライブレコーダの振れ止めステーです。ドライブレコーダの両面テープは透明にした方が良いです。