アルドウィーノを使った
オープンソース、オープンハードの
ローコスト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、RAM192KB、SDIO付です。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です。これを見ると、ボードIDとCPU種別を適切に設定してポートを合わせれば動きそうな感じです。ただ、STM32用のツールは別にインストールする必要がありあます。
7月5日
リアシート下にブリーザフィルタを移動したので、緩衝材とついでに断熱グラスウールを貼ります。テージのシートはモノコック構造でシートレールはありません。接着面を脱脂して断熱グラスウールを貼ってみましが、全然、接着しませんでした。
代替えとして、シリコンコーキング剤で接着してみます。断熱グラスウールを切って重りを載せて密着させます。
7月7日
断熱グラスウール貼りの続きです。シリコンコーキングだと接着力が弱いのでセメダインスーパーXに変更しました。この日は38℃の予想で暑さで午前9時頃までしかガレージ作業ができないです。
7月8日
STM32_megaの続きです。BMWチューナのページを参考に、SMT32をアルドウィーノのコードで動かすのに必要な、PlatformIOをVisualStudioCodeにインストールして、ちょっといじってみました。下のplatform.iniファイルをボードに合わせて修正します。今回は上記の手持ちのNucleoーF401REボードを使います。frameworkをarduinoにするとアルドウィーノのお作法が使えるようになります。因みに、VisualStudioCodeはVisualStudioとは別物の、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.cppのsetPinMapping関数で、どの機能の端子に何ポートを使うか定義しています。この部分をテージに合わせれば、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は部品表をアップロードすると、在庫が直ぐに確認できて、部品表がエクスポートできます。