アルドウィーノを使った
オープンソース、オープンハードの
ローコストECU
テージのECUが壊れていた時は
Speeduinoに装換する予定です。
その1:概要とコネクタ変更
2023年
5月17日
Speeduinoはアルドウィーノを使ったオープンソースのECUシステムです。DIYでルネサスのSH2を使ってケントエンジンをインジェクション化したのは2006年でした。今はオープンソースがあって良いです。
![](tn-speeduino_web.jpg)
Qiitaにも紹介ページがありました。
![](tn-qiita_speeduino.jpg)
5月31日
SpeeduinoのCPUはアルドウィーノの中でも、I/Oとメモリの多いMEGAを使います。机上テスト用にUNOを使ってエンジンの代わりにクランク角パルスを出力できるようです。両方とも手持ちありました(笑)。因みに右はMEGAーADKでこれもSpeeduinoのCPUボードとして使えます。これはやってみるしかないですね。
![](tn-arduino_cpu.jpg)
6月9日
MEGAにSpeeduinoのファームを書き込んで動作確認しました。アナログディスカバリのパターンジェネレータがカム角パルスの代わりです。右下のボリュームはアクセル開度(TPS)です。
![](tn-speeduino_test1.jpg)
下はドカの1100DSエンジンのカム角パルスホイールです。赤枠部分の歯だけステンレス/アルミ?になっていてパルスセンサが反応しないようになっています。48歯、1歯抜けです。後で判明しましたが、2歯抜けでした。詳細は実際に測ったここをクリック。
![](tn-speeduino_test3.jpg)
アナログディスカバリの任意波形パターンジェネレータの出力をオシロで確認します。48歯で1歯抜け、周期は約15.6Hzです。アナログディスカバリの出力は3.3Vですが、MEGAの入力は5V必要です。トランジスタを入れてレベル変換しました。
![](tn-speeduino_test2.jpg)
SpeeduinoのPC用のアプリのTunerStudioです。左上がエンジン
回転数、隣がアクセル開度です。設定を変更するとリアルタイムでゲージが変わります。カムの1回転が15.6Hzだったので、クランク回転は約31.2Hzで回転数では1875rpmになって、合っています。
![](tn-speeduino_test4.jpg)
6月10日
カム角、スロットル開度を入力してゲージが反応したので、インジェクタとイグニッションの出力を確認します。インジェクタ2本、イグニッション2本の出力をロジックアナライザに接続します。
![](tn-speeduino_test10.jpg)
エンジン設定をLツインに合わせます。エンジンタイプを奇数点火、奇数点火アングルを90度(270度の間違えでした)にすれば良いようです。Speeduinoはエンジン設定等がファームにハードコーディングされていません。設定を変更すると、都度、CPUボードに設定データを転送します。
![](tn-speeduino_test11.jpg)
設定誤、カム角パルスを入力すると、インジェクタとイグニッションが出力しはじめます。カム1回転で各出力が1回出ています。4stなので合っています。
![](tn-speeduino_test12.jpg)
気筒間の角度を確認します。カム角パルスは48パルスなので1パルスの角度は15度です。インジェクタの間隔は6パルスズレています。15*6=90度で合っています。イグニッションもズレは同じです。
![](tn-speeduino_test13.jpg)
7月2日
まだ実際に使うがどうか分かりませんが、アリエクスプレスでECU用ケースが安く売っていたので、購入してみました。誰が使うのかいまいち不明ですが、アリエクスプレスにはECUケースやコネクタ類がいっぱい売っています。
![](tn-ali_ecu_case.jpg)
7月11日
ケース到着しました。アルミダイキャスト製でちょっと重いです。もし、本当に使う場合には全体を少し削った方が良さそうです。コネクタ部はOリングが付いていますが、ケースとカバーの間にはシールはありません。防水仕様にするなら、対策必要です。いつものように、中国からの梱包段ボールはボロボロです。もう少しどうにかならないんでしょうか。
![](tn-Dsc03286m.jpg)
![](tn-Dsc03288m.jpg)
7月11日
Speeduinoの基板はKicad(フリーの電気CAD)で作られています。これなら基板のアートワーク変更も簡単に出来そうです。最近は小さい2層基板なら5枚で5000円以下の激安で作れます。
![](tn-speeduino_kicad.jpg)
少し古めのKicadがPCにインストールしてあったので、GitHubにある回路図をダウンロードして読み込んでみました。使われているライブラリもダウンロードすると回路図が読み込めました
![](tn-speeduino_drw2.jpg)
オリジナルの基板は3000円位で購入可能ですが、元々4気筒の4輪用なので余分な部分も多いです。信号線も40Pinのヘッダに接続されています。2気筒用に要らない部品を削除して購入したECUケースに合わせて、コネクタと基板サイズを変更してアートワークすれば良さそうです。
![](tn-speeduino_pcb4.jpg)
7月14日
Kicadは回路図からプリント基板を作製できます。Speeduinoの40ピンコネクタをECUケースに付属の24ピンにしたらどんな感じになるか、24ピンコネクタのフットパターンを作成して適当に引き回して、KiCADのアートワークの勉強も兼ねて少しいじってみました。Speeduinoはスルーと表面実装の2種類の基板がありますが、スルー基板だと部品は載るものの、きつきつで配線できない感じです。
![](tn-kicad.jpg)
ECUケースに付属していた24ピンのロック付き防水コネクタです。両端の6ピンはコンタクトが大きく、電流が多く流せるようになっています。ドカの1100DSエンジン(O2センサ1個、ステッピングモータのアイドル調整無し)なら24ピンで信号線が足りると思います。
![](tn-ecu24pin.jpg)
7月18日
Speeduinoのスルーホール版はきつきつなので、表面実装版をベースにコネクタを24ピンに変更して、モジュール扱いだった、カム角センサのパルス波形整形ICのMAX9926も基板に実装して、アートワークしてみました。24ピンのコネクタから引き出せない配線は無理にアートワークしないで、ジャンパ線にしています。空きスペースにはユニバーサル部を作り、部品追加できます。
![](tn-kicad_art.jpg)
7月24日
SpeeduinoにNXPのCortexーM4を使ったDropBearがあります。現在はSparkFunのTeensy3.5のCPUボードが入手できないようです。やはりアルドウィーノを使った方が無難のようです。
![](tn-dropbea.jpg)
下がTeensy3.5のCPUボードです。せっかく作るなら32bit/120MHzのARMの方が良いと思ったのですが、半導体不足が原因なのか、主な通販で在庫無しです。作製時に売っていたボードを使って設計しても、時が経つと入手不可になることは良くあり、要注意です。因みにアルドウィーノのCPUはAVR/8bitの16MHzのRISCコアです。1990年初頭のドカの851のECUのCPUは6803U4でした。たしかクロックは2MHzと思います。フェラーリF40のECUと同系列です。F40はV8なので、2個使ってます(笑)。
![](tn-teensy_3_5.jpg)
7月29日
前のアートワークはとりあえずだったので、アナログ入力部をコネクタに近づけて、アートワーク修正しました。空きスペースが増えたのでユニバーサル部も追加しました。
![](tn-artwork_230729.jpg)
部品表はCSVフォーマットで直ぐに出力できます。多くの部品が購入先もDIGIKEYに登録ずみで、直ぐに買えそうです。
![](tn-part_bom_230729.jpg)
基板の作製は中国が圧倒的に安いようです。価格比較のページがありました。最安値は送料込みで5ドルというのもあります。
![](tn-pcb_make.jpg)
7月30日
アルドウィーノUNOを使ってカム角パルスを出力するようにプログラムを作製しました。以前はアナログディスカバリの任意波形出力でしたが、ボリューム電圧をAD変換で入力して、delayMicrosecondsでウエイトすれば、ボリュームで回転数を変えられます。analogReadは変換終了まで待たされるので高回転側が早く回りません。赤枠のおまじないをすると、AD変換が早くなるとのことです。AD変換も48パルスに1回にして高速化します。出力波形は48歯の1歯抜けです。
![](tn-cam_uno_src.jpg)
高回転側は約82Hzでクランク回転数では9700rpmです。
![](tn-cam_uno_wav_high.jpg)
低回転側は約1.1Hzでクランク回転数では130rpm、セルモータで回してる感じです。
![](tn-cam_uno_wav_low.jpg)
UNOのカム角パルス出力をSpeeduinoのカムパルス角入力に接続して動作確認しました。動作良好です。
![](tn-03301m.jpg)
8月3日
SpeeduinoのページにDoxygenのページがあります。ソースコードからドキュメントを作成するツールDoxygenで生成したWEBページです。どんな関数、変数があるのか、関数はどこから呼ばれるのか、どこを呼ぶのかは図で分かります。一番知りたいのは関数のフローです。当然ながら、それは出てこないです。
![](tn-doxgen_speeduino.jpg)
timers.inoの解析図です。1msecで駆動される周期割り込みでインジェクタ1をトグルするinjector1Toggle関数が出てきます。
![](tn-doxgen_func.jpg)
どこように使われているがソースで確認すると、1msecを積算して1Hzのタイミングでテストモードならインジェクタを50%開く動作をしていました。知りたいのはこのような情報です。
![](tn-doxgen_src.jpg)
![](back.gif)