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

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


その12:ハーネスの作製の続き
SMT32_megaCPUボード



2024年
6月28日
3Dプリンタを購入しました。産業廃棄物のXYZテーブルを使って
DIYで3Dプリンタを作ったのは2014年でした。その後、レーザ加工機に改造したため、3Dプリンタとしては動かなくなっていました。最近のものは高速で良くて出来ています。


フロントカウル内のリレー3連ホルダは防水ではないため、3Dプリンタカバーを作製します。


2DCADのQcad平面図を作成します。必要なのはカバーの外側内側です。リレーとホルダの寸法は58x37x52mmですが、2Dでは高さの52mmの概念は無いので、角の取れた58x37mm内側1mm大きい外側の図面をDXFで保存します。


3DCADのHeeksCNCにDXFをインポートして、3Dに変換します。手順は外側を複製して名前を変えておき、内側外側52mm高さ付けて立体化します。立体化した外側から内側を減算すると側面ができます。その後、複製して名前を変えた外側1mm高さを付けて立体化し、側面加算すると厚みが1mmのカバーができます。開口部をにして図面を作ります。完成した立体はSTLで保存します。


3DプリンタのスライサSTLを読み込んで、スライスします。フィラメントはTPEを使います。TPEは柔軟性のある熱可塑性エラストマーです。条件が似ているTPUの設定を使います。


TPEフィラメントこの3Dプリンタに付いている0.4mmのノズルでは出が悪いので0.6mmノズルに変更します。


少し糸引きと側面が荒れていますが、50分位で無事出力できました。柔らかいTPEフィラメントは印刷速度を非常に遅くする必要があり、付属のPLAであれば10分以下で出力できると思います。


そのままでは取り付け出来ないので奥側スリットを入れます。カバーは雨がリレーとホルダに直接かからないようにするためですが、大量の雨は防げないです。


上から被せてリレーホルダに取り付けました。思いのほか柔軟性があり、強度も少し引っ張ったくらいでは破れません。側面の荒れは条件を変えると、もう少し良くなると思います。別の1個使いのリレー用に小さい物も作ってみます。



6月30日
燃料警告用の1個使いリレーのカバーも作製します。


フィラメントは同じTPEです。スリット無しです。


こちらは被せるだけで、設置完了です。


ブリーザボックスを廃止したので、エアクリーナボックスとの接続穴塞ぐ必要があります。グロメットの代わりにプラグ3Dプリンタ作製します。


QcadとHeeksCNCで段付きの円柱図面を作成します。分割して貼り合わせます。


3Dプリンタ印刷しました。寸法は良さそうなので、追加で同じものを印刷しました。


2個の段付き円柱をセメダインのスーパXを塗ってクリーナボックスを挟むようにボルト固定しました。



7月1日
気筒間を通る配線の車体左側はステアリングアーム可動部分に近いので、干渉しないようにタイラップでフレームのスペーサ固定しておきます。


大分前にTEMUでハーネス用の絶縁テープを4個購入しました。


後ろ側に伸びる配線を絶縁テープまとめてみます。下は右側に通るリアライト/ウインカブレーキスイッチニュートラルスイッチです。


続いて、右側の燃料ポンプ/残量センサの配線です。


7月2日
フロントカウルを一度元に戻して干渉を確認します。元々、外しにくく、戻すのも大変なのですが、リレーヒューズかさばっているので、以前より戻しにくくなっています。


左がレギュレータとSpeeduinoのコネクタ付近です。右はSpeeduino本体ヒューズ付近です。良いようです。



7月3日
タンクを一度元に戻して干渉を確認します。


先日取り付けたブリーザフィルタドレンホース干渉していました。


ブリーザフィルタのホースを少し長くして、シート下移動しました。



7月4日

SpeeduinoのCPUボードはアルドウィーノMEGAですが、BMWのチューナがMEGA互換のSMT32のCPUボードSTM32_megaを作っています。動画も公開しています。元々SpeeduinoプロジェクトはSTM32をサポートしていますが、MEGAのコネクタと違う基板なので、そのままでは使えないです。このMEGA基板互換STM32ボードということです。作製した下基板はそのまま、CPUボードを32bitARMに交換できます。


こちらは部品表です。緑色半導体デバイスです。搭載デバイスの内SPIのNANDフラッシュのパッケージがLGA−8ピンで、これは上から半田ゴテで半田付けできないです。これは使わなくても動くみたいです。


部品表から、プロセッサはSTMF407VET6です。ARMのCortexーM4、クロック168MHz、フラッシュ512KB、RAM192KBSDIO付です。SDカードへログが取れるのも良いです。MEGAは8BitのRISCですがクロックが8MHzのため、こちらの方が断然パフォーマンスが良さそうです。


手持ちにSTM32の評価ボードがありましたが、これはSTM32F401でちょっと違いました。


テージ用のSpeeduinoの基板を作製したPCBWAYでこのボードが購入できます。基板のみ、5枚$41です。円安なので、7000円弱です。


回路図があるので、確認してみます。MEGAの電源が5Vなのに対してSTM32は3.3Vです。CPUボード上にレベル変換を設けています。赤枠上アナログ入力でオペアンプのボルテージフォロワでバッファしてレベル下げているだけです。気になるのはボルテージフォロワの入力がオープンになので、別の車種で使わない端子ならプルダウン処理した方がいいです。赤枠下デジタル出力をHCTデバイスでTTLレベルから5VのC−MOS系に変換しています。直接続の端子もあり、5Vトレラントなので5Vを入れても大丈夫です。また、レベルが3V系でも良ければ出力も可能です。問題は端子が決め打ちなので、任意のポートを自由に入出力にアサインできず、BMW用に合わせて作られているということです。


今動いているソースコードを見ると、このCPUボードを作った人のコードが既に入っています。下はポートの初期化をしているinit.cppです。これを見ると、ボードIDCPU種別を適切に設定してポート合わせれば動きそうな感じです。ただ、STM32用のツールは別にインストールする必要がありあます。


7月5日
リアシート下にブリーザフィルタを移動したので、緩衝材とついでに断熱グラスウールを貼ります。テージのシートはモノコック構造シートレールありません。接着面を脱脂して断熱グラスウールを貼ってみましが、全然、接着しませんでした。


代替えとして、シリコンコーキング剤で接着してみます。断熱グラスウールを切って重りを載せて密着させます。



7月7日

断熱グラスウール貼りの続きです。シリコンコーキングだと接着力が弱いのでセメダインスーパーXに変更しました。この日は38℃の予想で暑さで午前9時頃までしかガレージ作業ができないです。



7月8日

STM32_megaの続きです。BMWチューナのページを参考に、SMT32をアルドウィーノのコードで動かすのに必要な、PlatformIOVisualStudioCodeにインストールして、ちょっといじってみました。下のplatform.iniファイルをボードに合わせて修正します。今回は上記の手持ちのNucleoーF401REボードを使います。frameworkarduinoにするとアルドウィーノのお作法が使えるようになります。因みに、VisualStudioCodeVisualStudioとは別物の、MSの無償拡張機能付のエディタです。


Lチカを作って、コンパイルしてダウンロードします。アルドウィーノでないボードがアルドウィーノ作法で簡単にプログラムできるようになりました。これでSTM32_megaのコードもコンパイルできそうです。


Lチカの動画です。クリックすると短い動画をダウンロードします。



7月9日
断熱グラスウールとブリーザフィルタの緩衝材を貼ったリアシート戻しました。少しでもシートが熱くならないと良いです。


STM32_megaの続きです。ソースをコンパイルするときに上書きするファイルにBLACK_F407の名前が出てきます。STM32_megaボードの元となったのはSTマイクロのBLACK_F407ボードのようです。


調べると、STマイクロが出しているアルドウィーノUNO互換ボードです。


回路図をダウンロードすると、JTAG/SWDコネクタが付いてます。


PlatformIOではST−Linkがサポートされていてます。下はアリエクスプレスで売っているST−Link2です。インターフェースはSWDと思います。一方、STM32_megaボードはデバッグコネクタは無く、代わりにSDカードが接続されていました、がっかり。まあ、ECUのプログラムはCPU止めると、エンジン止まるので、ブレークポイントなどは限定的にしか使えないですが。


ETCのLEDインジケータをメータユニットに付けるホルダ3Dプリンタで作製します。2DのDXFを作成して、3Dに変換します。


ABSフィラメントで出力しました。4分位で完了です。


写真ピンボケですが、艶消し黒の缶スプレーでペイントました。


両面テープでメータユニットの左上に接着しました。



7月12日
バッテリ周辺の配線少しエアクリーナボックスと干渉しているので、整理しました。


STM32_megaの続きです。platform.iniに定義されているボード種類はツールの下にあるボタンを押すと上部にプルダウンメニューが出て選択できます。bluetoothを使うにはblack_F407VE_FTDIを選択してUART1を有効化する必要があります。


ボードの選択後は、ソースコード内の#ifxxの定義されている部分の輝度そのまま、されていない部分は輝度落ちて見やすくなります。



7月13日
エアクリーナボックスバッテリカバーを仮止めしてます。緑線の高さがほぼ面一になってケーブルの干渉が無くなりました。



7月14日
ケーブルの干渉が無くなったので、スロットルボディを固定しました。インジェクタをスロットルボディに戻して、燃料ホースも取り付けました。



7月16日
Speeduinoのコネクタ結線を確認します。右ハンドルスイッチの燃調MAP切替のピン番を間違えていました。コンタクトを抜くより、基板側で入れ替えた方が簡単と思います。


基板のジャンパ線移動して対応しました。


STM32_megaの続きです。BMWチューナの提供しているCPUボードのピン定義ファイルをオリジナルのファイルと比較してみます。オリジナルの407Vxで、MEGA用です。ポートの定義をMEGAに合うように変更しています。


下はソースのinit.cppsetPinMapping関数で、どの機能の端子に何ポートを使うか定義しています。この部分をテージに合わせれば、SMT32で動くようになるはずです。ソースにコメントを入れてみました。赤枠の1段目インジェクタ出力でテージと同じです。赤枠の2段目直接続イグニッション出力で、スマートコイルなので3V系でも問題無さそうです。緑枠カム角パルス入力でテージと同じです。青枠はアナログセンサ入力殆ど同じ定義になっています。修正する所は少し良さそうです。



7月17日

STM32_megaの基板部品発注しました。レジストはにしました。価格は送料込みで、160円換算で5枚で約6400円です。1週間から10日で到着すると思います。


部品Digikeyだと欠品が多いので、3台分をLCSCに発注しました。元々部品表にLCSCの型番が入っています。160円換算で約9000円でした。LCSCで欠品のDIPSWと0.1%の470Ωの2点はマウザーで購入して2500円でした。マウザー はPSoC5LPボードを1枚追加して送料を無料にしました。LCSCは中国のDigikeyみたいな電子部品通販で価格は安いです。因みに STM32F407が1400円、Digikeyだと約2000円です。LCSCは残念ながら、幾ら買っても送料無料になりません。後で考えたら、アナログセンサ用のオペアンプは使わないものもあるので、数を減らした方が良かったです。LCSCは部品表をアップロードすると、在庫が直ぐに確認できて、部品表がエクスポートできます。