アルドウィーノを使った
オープンソース、オープンハードの
ローコストECU
テージのECUが壊れていた時は
Speeduinoに装換する予定です。
その3:エンジンエミュレータ作製〜
エンジンへの接続準備
2023年
8月27日
前回失敗したイグナイタ基板は再作しました。


8月27日
カム角センサの波形整形デバイスのパッケージを間違えて、ちょっとピンを切ってパッドがギリギリで実装してあるので、CPUボードは接続しないで、単体で動作確認します。コネクタを介して、アナログディスカバリのファンクションジェネレータで正弦波を入力し、デジタル出力をオシロで確認します。

振幅を変えて、正弦波(青)のカム角を入力して、整形後の5Vの矩形波(黄)が出力されることを確認します。動作良好です。

8月28日
エンジンエミュレータをタッパーウェアに組込みます。アルドウィーノUNOのカム角出力と各センサのボリューム/スイッチを取り付けました。2つのスイッチはニュートラルとサイドスタンドです。


8月31日
Aliexpressのイグナイタ用の保護ツェナが到着しました。440Vです。

9月1日
早速、赤枠の所に保護ツェナを取り付けて、ダミー抵抗で動作確認します。

アナログディスカバリから5Vのデューティ20%の信号を入力して、ダミー抵抗を駆動します。動作良好です。

続いて、実際の点火コイルを駆動してみます。2本出ているハイテンションコードの先にプラグを2個接続します。動作良好です。

エンジンエミュレータにカム角パルスのアルドウィーノUNOを入れて、ラベルテープを貼りました。

アルドウィーノUNOで作っているカム角パルスは0−5Vです。ボード上のカム角パルス波形整形ICは振幅がマイナス側も振っている必要があります。オペアンプを使ってマイナス側にオフセットします。LTspiceでシミュレーションを行いました。

手持ちの部品でオフセット回路を作製しました。電源はプラスマイナス5Vでアナログディスカバリから供給しています。入力に5Vのパルスを入力して、出力がマイナス側に振っていることを確認しました。エンジンエミュレータに組み込むには−5V電源が必要です。


秋月で購入のオフセット回路用のプラスマイナス5VのDC−DC電源が到着しました。ついでに購入したのは2SK2698の予備とWEBサーバの予備ラズパイ4です。

エンジンエミュレータの出力信号取り出し用のバナナチップ端子をアマゾンで購入しました。安くて良いのですが、バナナチップのオスは端子に刺してもグラグラです。コンタクトバネは端子に勘合するのですが、コンタクトバネと中心端子がグラグラです。テンションが掛かっていないと接触不良になります。ポモナの本物のバナナチップは1個500円位しますが、これは40個セットで1000円ですから、しょうがないですね(笑)。

9月3日
エンジンエミュレータの出力側をバナナチップ端子とLEDで追加しました。イグニッション以外のインジェクタやリレーは12Vの吸い込み信号です。


9月6日
エンジンエミュレータの動作確認も兼ねて、クランキング中の燃料増しの設定をしました。UNOとレベルシフト回路の疑似クランク角パルスも正しく動作して、ボードとエンジンエミュレータのインジェクタ/イグニッションのLEDインジケータも正常に点灯しています。写真だと点灯が分からないので動画にしました。シャッタスピードの関係でLEDが変な順番で点灯しています。クリックすると約2Mバイトの動画をダウンロードします。

TunerStudioでクランキング時のセッティングができます。400rpmより低ければクランキング中として設定します。クランキング中はクーラント温度(テージは空冷なので、エンジン温度)により燃調を濃くします。グラフで増量を指定できます。

1200rpmでアイドリング中は噴射時間が約5.8mSecです。下の”Running”インジケータが緑に変わります。

クランキング中でエンジン温度を可変すると、温度に対応して噴射時間が増えることを確認しました。約11mSecになっています。下の”Cranking”インジケータが緑に変わります。

9月8日
Speeduinoにはデフォルトでタコ出力があります。エンジンエミュレータにタコ端子付けました。また、カム角パルスは48歯の1歯抜けでオシロで同期が取りにくいので、テストデバッグ用の基準
に1歯抜けと同じタイミングで出力するSYNC信号も出力しました。

タコ出力はTunerStudioのダイアログで設定できます。タイミングをハーフの3mSec幅に設定しました。

タコ出力はカム角と同じ周期で3mSec幅で出力されることを確認しました。オリジナル
のタコメータの仕様は不明ですが、このハーフの設定では4ストロークのシングルと一致します。市販の汎用タコメータはエンジン種別を設定できるのでこの設定で問題ないと思われます。


9月9日
デフォルトで入っている燃調マップを表示させてみます。初めに、必要燃料計算のダイアログで排気量と気筒数、インジェクタの吐出量、理想空燃比を入力します。

その後、計算させると、規定の100%の噴射時間が表示されます。11.2mSecです。

4000rpmでスロットル40%開いた状態です。インジェクタの駆動信号はゲージに表示されているパルス幅6.6mSec、デューティ22.3%はオシロでも確認できます。ゲージとオシロの値は合っています。


Speeduinoの燃調マップは何%開いているかの開弁率を表示/設定します。2次元マップを表示させると、リアルタイムで採用されている値が楕円で表示されます。XY軸とも16段階ですが、中間値の補完された値が使われます。

3次元マップは設定値(開弁率)を高さ方向に表示した図です。これもリアルタイムで表示されます。現在値は60%です。これは最大噴射量11.2mSecを100%とした時の60%という事だと思います。左と下のスライダを調整すると3Dマップがグリグリ動きます。昔作った、ケントのECU化では開弁時間(マイコン内蔵のタイマの設定する値)を使っていました。開弁時間マップの方が直観的で分かり易いと思います。

9月11日
エンジンエミュレータの疑似カム角パルスはUNOでボリュームの電圧をAD変換して、この値をループ内のタイマに設定し周波数を可変していますが、回転数が上がると結構ブレてます。これはAD変換値が変動してるからで、試に5〜10回平均してみましが、いまいち安定しないです。下はブレているゲージのキャプチャ動画です。クリックすると約3.6Mバイトの動画をダウンロードします。

そこで、AD変換するのをやめて、外部クロックから48歯の1歯抜けのカム角パルスを作ることにします。300〜18KHzのパルスを555で作ってUNOに入力すれば、うまく動くはずです。プログラムは単純で、入力クロックの立ち上がり、下がりを待って、出力を交番させるだけです。クロックは2倍の周波数が必要です。

アナログディスカバリのパルスを入力して48歯の1歯抜けの動作確認をおこないました。上が疑似カム角パルス、下がオシロ同期用のシンク信号です。良いようです。

555でカム角パルスの源クロック発振器を作製します。スマホにElectrodocという555計算機があり、必要な周波数のコンデンサと抵抗が直ぐに分かります。


ユニバーサル基板に手持ちの555で発振器を作りました。周波数の範囲からボリュームは500KΩを使います。

9月12日
555基板を小さくして、エンジンエミュレータに組込みました。

回転数のブレが少なくなりました。クリックすると約4.2Mバイトの動画をダウンロードします。動画はその時にPCで流していたネットラジオのBGMが音声として取り込まれてます(笑)。

9月14日
点火時期を確認してみます。デフォルトで入っている点火時期マップを3D表示してみました。燃調と同様に2D/3Dで表示設定できます。

進角の確認を行います。初めにドゥエル時間(スイッチがONしている時間。短いと火花のエネルギが小さくなり、大きいと電気の無駄使いになります)を4mSecに設定します。

進角設定にテストモードがあり、進角を固定できます。初めに0度に設定します。ドゥエル時間は約3.7mSecで、上で設定した4mSecより少し短いです。信号がLOWになった時に、逆起電力で点火します。1歯抜けの後の初めの立ち上がりが上死点になっいるようです。


次に15度に設定します。カム角1回転で720度なので48歯の1歯は15度です。カム角パルスと同じ幅で、上死点の前約15度になっています。正しく進角していることを確認しました。ECUでは点火時期の制御が一番シビアですが、ブレも少なく良いようです。


9月15日
少し前にテージと同じエンジンを積むムルチストラーダ1100の中古ハーネスがヤフオクで売ってました。誰も入札せず1200円で買えました。

実際にSpeeduinoのハーネスを作ることになったら、センサなどテージと共通のコネクタも多いので流用できそうです。分解して勉強中です。

四輪よりもはるかに少ないですが、二輪でもリレーを使っています。下のムルチストラーダ
の配線図です。セルモータリレーにサージ吸収用のダイオードが入っています。ミッレ、F1、851、1198SPの配線図見てきましたが、ダイ
オードが入っているのは初めてです。

セルモータリレー以外のリレーもダイ
オードを入れた方が良いいと思ったのですが、ISOマイクロリレーを使えば内蔵されてました。

ただ、RC−5003の方
は見慣れない回路記号です。バリスタ、サプレッサの類でしょうか?

9月16日
TunerStudioにはミニターミナルがあり、シリアル経由でSpeeduinoと通信できます。メニューからミニターミナルを開きます。

ミニターミナルでファームに組み込まれたCUIコマンドが使えるようになります。’?’でコマンドリストが表示されます。

WEBサイトにデータのプロトコル説明があり、例えば現在の内部の状態をダンプするには’A’コマンドを使います。3バイト目はエンジンステータスです。

PCからAを送信するとSpeeduinoから120バイトが送信されて表示されます。下は16進で表示した時です。

3バイト目のエンジンステータスはソースのインクルードファイルにビット定義があり、例えば、クランキング中なのか、エンジンがかかっているのかが判定でます。このエンジンステータスはプログラム可能なGPIO設定の条件にも使えます。

9月21日
配線図をKicadで入力中です。オリジナルはメンテナンスマニュアルにありますが、実体と合ってない所もあります。部品の配置はオリジナルに似せています。画像ではなく、回路図で入れれば、ネットリストが生成できるので、信号線を追うのが楽になると思います。まだ、アノテーションしていないので、ロケーションが?のままです。上の赤枠はハンドルスイッチ、下がイグニッションとインジェクタです。

ハンドルスイッチの拡大です。

イグニッション、インジェクタの拡大です。Speeduinoはスマートコイルしか駆動出来ないので、四角枠のイグナイタが必要です。

9月22日
ECUとメータユニットの配線を追加しました。アノテーションして95%ほど終了です。回路図はほぼ終了ですが、実際のハーネスを作製するのはGND(アース)線の処置が難しいです。ムルチストラーダ1100のハーネスがあるので、分解して調査中です。メータユニットはKOSOのRX4を想定しています。

SpeeduinoのECU周辺です。24ピンコネクタと2ピンの電源が必要です。

メータユニットの周辺です。まだライブラリが無いです。

想定しているKOSOのRX4、TFTマルチファンクションメータです。価格は結構高くて$700です。

メータユニットは汎用品なので、コネクタから配線が出て、ちょん切れているだけなので半田付けが必要です。O2センサは使用しません。

KOSOは台湾のメーカです。下を見ると高速の’高’、発想の’想’で”高想”とのこと、発音は”コーソー”みたいです。

オリジナルのメータユニットもKOSO製です。RX2Nをテージ専用にカスタムした物と思います。小さくKOSOのロゴが入っています。

下は汎用品のRX2Nメータユニットです。アリエクスプレスなどで似たものが3000円位で沢山売られてますが、これは外観を似せたパチ物で、機能やコネクタが別物で、本物の定価は$440です。

9月23日
メータユニットのライブラリを追加しました。使用したヒューズは7個、普通のリレーが3個、セルモータ用が1個です。赤ラインは全てGND(アース)線です。一番電流が大きいのはセルモータですが、これは別格です。ヘッドライト、ホーン、ウインカ、燃料ポンプ、O2センサ、ECUの電流が大きいです。ただ、ヘッドライトとウインカはLEDなのでハロゲンの1/3位に減っていると思います。カム角センサ、スピードセンサはパルスコイルなのでシールド線を使用した方が良さそうです。

回路図からネットリストを生成しました。信号線は明示的に名前を付けています。画像やPDFでは配線を追いにくいですが、ネットリストがあれば簡単です。

バッテリのGND部の拡大です。回路図でも実際にハーネス作製するイメージで、電流の多く流れるGNDはバッテリの直近まで配線します。

ムルチストラーダのハーネスのバッテリのマイナス側です。多数のGNDがマイナス端子まで配線されています。

ハーネスの途中でまとめている配線も多数あります。太い配線がまとめて細くなっていたりします。


10月15日
エンジンエミュレータにスロットルポジションとカム角の実センサを接続できるように
コネクタを追加します。スロットルポジションのコネクタはケーブルにコンタクトを圧接してから、前側から入れるんですね。初め分からなくて思考停止しました。色々なコネクタを作りましたが、前から入れるのは珍しいです。カム角の方は他で多用している3極コネクタです。


作製したコネクタはスイッチを介してエンジンエミュレータに接続しました。スイッチで外部の実センサかエンジンエミュレータ内の疑似センサか、切り替えられます。これで専用のハーネスを新規に作らなくてもSpeeduinoの仮接続ができます。エンジンを回すだけなら、基本のスロットルポジションとカム角の入力、出力はイグニッションx2、インジェクタx2と燃料ポンプリレーだけで良いです。その他のセンサは補助的な補正に使われるので、無くてもエンジンは動きます。

10月21日
モノタロウからISOマイクロリレーを3個購入しました。サージ吸収ダイオード入りです。余分なタブが付いているので外して使います。カプラはアリエクスプレスで以前に購入してありました。リレーのコンタクトは真鍮で、残念ながら防水仕様ではありません。リレーは燃料ポンプ、ライト系、インジェク/イグニッションを3つを制御します。

10月29日
ケースに電源とUSBケーブルを通して密閉する準備をします。ケースはコネクタが2個付く仕様ですが、今回は1個なので、使わないコネクタの切り欠きが残ります。ここから電源とUSBケーブルを外に通します。赤枠のUSBコネクタは標準のBタイプで大きく、ケーブルの取り出しに邪魔なので外してピンヘッダに交換します。

USBケーブルは途中で切ってピンヘッダ用のコンタクトを圧接しました。右はアマゾンで購入の2.54ピッチのコンタクト/ハウジングセットです。


10月30日
UNOのUSBコネクタを取り外しました。多ピンコネクタでもコネクタを壊して良い場合は簡単に取り外しできます

裏面にL字のピンヘッダを実装しました。

PCに接続して動作確認しました。動作良好です。

モノタロウで購入のベント弁です。気圧センサは基板に実装されているので、これを使えばケースを密閉しても水分は通さず、気圧は外と同じにできます。これはゴアテックスを使って水分は通さず、空気は通過させてケースと外の気圧差を無くします。

下はWishで購入の防水ケーブルグランドです。電源とUSBケーブルを通します。

11月1日
ケースの下側にベンドを取り付けました。取り付けネジは6mmのP0.75の細目です。

電源とUSBの取り出しパネルは使わないコネクタのピンを取って代用します。パネルを樹脂板から新規に作るとOリングの溝の角のR加工が面倒なので、使わないコネクタを使います。コネクタのピンを全て取り除いて板状に加工しました。ピン穴はのアクリル板を接着して、ケーブルグランドを2個付けられるようにします。

ピン穴を塞ぐアクリルパネルを作製します。QCADで図面を作成して、HeeksCNCでGコードを生成しました。ガレージのレーザ加工機で切り出す予定でしたがレーザ加工機が不調です。症状はここをクリックしてください。


11月10日
Speeduinoでエンジンを回すための点火のトリガタイミングを調べます。エンジンエミュレータで回している場合は48歯の1歯抜けの所が仮のTDCになっています。実際のエンジンでは1歯抜けが何処なのかを調べる必要があります。はじめに、カム角センサを取り外します。

プラグを外して、ギアを入れてリアホイールを回し水平シリンダをTDCの緑枠の位置に合わせます。ジェネレータカバーの窓に赤枠のTDC確認ラインが出ます。


タイミングギアのポンチの打ってある1歯抜け(緑枠)が出てくるまで、リアホイールをゆっくり回します。

1歯抜けが出てきた時に、カムは約90度進んでいるようです。

水平シリンダのTDCからカム角で90度進んだ所で1歯抜けが出てきたので、水平シリンダのTDCからクランク角で180度進んだ所に1歯抜けがあることになります。トリガ設定でトリガ角度を−180度に設定して、テストモードで進角を0度に設定します。


1歯抜けを基準にして、カム角の180度にマーカを付けておきます。1歯で15度なので、12*15=180度です。

カム角の代わりに水平シリンダのイグニッションの波形を測定します。マーカの所に立下りが一致しています。カム角センサを分岐してエンジンをかけ、実際のタイミングを測定する必要があります。ただし、進角を0にすることは出来ないので要注意です。

11月15日
レーザが出なくなっていたレーザ加工機はチューブ交換して復活しました。ケーブルグランドの取り付パネルを5mm厚のアクリルから切り出しました。ケーブルグランドの丸穴は10mmです。

ケーブルグランドのネジを12mmの細目タップで切って、ピンを外したコネクタ板にセメダインのスーパXで接着しました。外してあったOリングを戻して、ケースに組込みました。2つのケーブルグランドの1つはUSBケーブルと電源で、USBケーブルはピンヘッダ仕様にしてあるため、ケーブルグランドに通すことができます。残りの1つはブルートゥースモジュール用の予備です。

