ホゲフガな部屋 2023年08月
[2023年07月]
[2023年09月]
[INDEX]
いよいよ本番バッテリを使用してのシステムテストを実施する準備が整った。ただし、ブレーカは50A。当日は、60Aのブレーカが貸与される(遮断時間は未確認)。
- SCiBバッテリパックにハーネスをネジ止めする。今年はちゃんとした絶縁ドライバーを用意した(今まではビニテ巻いただけ)。ショートさせないようにドキドキはらはら
- せっかくなので記録動画を撮影しておく。4Kね。
- 30分のランニングを無事終えることができた。燃えたり焦げたり壊れたりはしなかった。
- バッテリ電流120Aを超えようかとするところで、ブレーカトリップ。相電流300App程度。制御に何かあやしいところが出てて、コツコツとモーター駆動音に異音が混じるが、使わない領域なので、深追いはしない。
- 23Ahの容量しっかり使えそう。投入電力600Wはどうでるか。SCiB タイプE電池使うからには、使い倒さねば。
- インバータのSi-MOS FETをIRFP4368から、IRFP7430に交換。ベタに接続しているスルーホール(S/D)のハンダが全然溶けない。実装ずみのFETの再利用をあきらめて、足ちょんぱ。それでも、大変。なんとか交換して、良好な動作を確認した。
ボディダイオードの逆回復時間が半減しているので、スイッチング損失が少しでも減ればいいなぁと。あわせてON抵抗も1mΩ弱減っているのも期待。
- 電子負荷をCRモードにして、抵抗変化させて、インバータの運転状況を可変させて、動作を様子み。モータ相電流300Appまでくると、あちこちが発熱しだす。FETしかり、平滑コンデンサしかり、スナバのコンデンサしかり。スナバコンデンサが結構温度上昇していることが判明、Δ45℃上昇って、ちょっとやめてほしい状況?!。ヒートシンクはΔ35℃ほどで安定。
- レシーバ2台目をセットアップ。PROTOモジュールにLoRa RFモジュールを組み込んである。これをCore S3の直下にスタックし、さらにその下にBatteryモジュールをスタック。ボトムにアクリル板を削り出したカバーをいれて、ネジで止める。M3 25mmと30mmで間に合った。
- ファームを転送したならば、2台同期して、モニタできることが確認できた。やった〜、嬉しい。
- やっつけのUI画面設計。情報を画面にならべてみただけのUIを作ってみた。レイアウト設計は二の次で、現物合わせで表示位置を調整。
- タッチパネルが付いているので、フリックで画面遷移させることに。StatusView、LapTimeView、SetupViewを移動させる。ちょっとコツいるけど、いい感じに動作してる。
- コントローラの時刻計算にしょうもないバグを発見。修正して、経過時間が正しく取得できるようになった。
- だましだまし使ってたGNUPACK収録のEmacs 26.0.90が、File error: Doing vfork, Resource temporarily unavailable...とのたまい正常に起動しなくなった。
今時のEmacs 29を本家からDownloadして、tr-imeを使ったIME環境を構築。init.elは大部分をGNUPACKのものを移植。。
- M5StackのUIをどうするか、検討中。いろいろイジってみる
- ピクセル単位で描画する必要があるので、ピクセル単位でUIを設計しないと、ダメか。なんか昔を思い出す。
夏休み12日目。最終日
- Eclipseのビルドが調子悪い件、どうもおせっかい機能が悪さしてる模様。
Window->Preferences->C/C++->CodeAnalysis->Syntax and Semantic Errors: OFFで、意味不明なERRORが検出されることが無くなった。なんだかなぁ。
- あ〜だこ〜だ、して、インバータ〜コントローラ〜トランスミッタ <- AIR -> レシーバの系で、車両情報をレシーバまで届けることに成功。めでたい。夏休みの課題は最低限やれたかな。UIが未着手なのが残念だった。
- LoRa若番Ch. で連続送信を行った結果、400ms送信間隔に制限された場合、ペイロードが32bytesに制限されるとあった。けど、非トランスペアレントモードだと、Addr+Chの3byteも内数になっている事が判明。都合ペイロードは29bytesとなった。今回の用途ではこの制限でも特に支障なし。
夏休み11日目。
- レシーバのE220モジュールの制御ができるようになった。ESP-IDFのポーリング処理用の関数を使用する
consoleはUART0 TX:43pin, RX:44pinに出すように、sdkconfig ESP System SettingでChannel for console output をCustom UARTを選択して、UART0を指定。printf()が全部ここに出るようになる
E220はUART1 TX:17pin, RX:18pinに接続。
- ESP-IDF で C++関係で ambiguous エラーでビルドできなくなった場合は、Eclipseを再起動すると復旧する可能性がある。がく〜
- インバータ〜コントローラ〜トランスミッタのデータ疎通を確認できた。その際に、インバータのパラメータ設定ミスに気がついた。。
やば〜。修正して、しっかり電流流せることを確認した。モータの相電流、0-peakで150A程度まではいける。にしし。
- あとは無線区間。
夏休み10日目。
- M5Stackの開発環境(ESP-IDF v5.1使用)が、そうこうしているうちに、オカシクなった。ビルドが通らない。idy.py実行すると、エラーMSGが出力される。それがError扱いになってビルドが止まるというロジック。
一応、解決できたっぽい。超雑に説明すると、どうもPython側のモジュール動作が変更となり、その対応ができていないのが原因。v5.2-devでは対応されたとのことで、tools¥check_python_dependencies.pyをいれかえる。
- コントローラに、CAN MSG追加の作業を開始。レシーバの問題解決で、ラチあかないからね。
夏休み9日目。
- トランスミッタのハング問題はクリアできた模様。終夜安定試験も無事パスしました。よかった。
- M5StackS3で音が出ない問題。M5Unifiedのパラメータ設定に問題がありそう。spk_cfg.stereo=1; として、ステレオフォーマットでAMPに送るように指定したところ、無事に音がでた。これも、いろいろと苦労した。
v5.1使っているけど、esp-idfのローカルコピー(c:¥users¥hogehoge¥.espresif配下)を削除して、v4.4.5で再トライ。。とか、
v5.0.3でやりなおしたりとか。いろいろ。まぁ、めでたい。
- レシーバのM5Stack Battery Moduleをスタックした際のボトムカバーをアクリル板で製作。
夏休み8日目。
- レシーバの開発環境の確認。とりあえずesp-idfのインストールが完了してるならば、cmd.exeから export.batを実行すると、各種パスを設定してくれる。idf.pyが使えるようになる
- M5Unified の環境構築と、サンプルコードのお試し。CoreS3にはスピーカ内蔵されているのだけど、音がでない。なんで?
esp-idfのバージョンダウンをやってるけど、、サンプルコードでビルドエラーがでるのですが。。ハマりパターンだな。
- トランスミッタのハングアップの件、xsprintf()の最後のstrptr = 0; で hard fault exp.で落ちる。どうやらマルチスレッドで、グローバル変数を用いているxprintfを使用しているのが間違いの元で、バッファのポインタを0にしているので、(そのポインタを使って動こうとして)例外発生。というカラクリの模様。悩ましいね。該当部分を割り込み禁止にして、対策とした。。うまくいくかな。デバッガが使えるありがたさよ。。
>
夏休み7日目。
- トランスミッタのLoRa RFモジュールの初期化ロジックの作成。モジュールのAUX出力タイミングとの同期を取るのに一手間かかった。
- STM32cubeMXのUARTドライバで動的なボーレート変更の調査。ドライバの最初帰化だと、ノイズが出たので、没。ボーレート設定レジスタを変更することで解決。
- ううむ。終夜安定度確認で、ハングアップしてた。リソース枯渇してそう。確認しよう。
結局のところ、バッファをheapメモリからダイナミックにmalooc/freeを繰り返ししていたのが原因。スタックにバッファを取るように変更して安定した。
夏休み6日目。
- I2Cドライバの使い方確認と、LCD Moduleの動作確認。悩むことなくサクサクと動作させることができた
- CANドライバの使い方確認。これには色々とハマった。結局は、ハード実装のミスもあり、紆余曲折しながらも、無事に動作させることができた。コントローラとインバータ間の通信をモニタできるようになった
残るはLoRa RFモジュールの動作確認。。
夏休み5日目。
- トランスミッタのUARTドライバの開発。一通りデバック完了。ChaN様のxprintfも組み込みデバックずみ。STM32cubeMXの生成してくれるドライバが、微妙に使いづらくて、結局ISRまわりと、リングバッファは、ねむいさんのコードを参考にガシガシ作り込んだ。。1キャラクタの送受信するのに、すごい大回りだもの。。
- トランスミッタのFreeRTOSの習熟。セマフォまわりの調査。哲学者が無事に食事にありつけた模様。
rand()関数がなぜか、別々のスレッドで同じ数字を返してきて???が。スタックが分かれているので、同じ系列になるらしい。srand()を適当回数実行して、適当な待ちをいれられるようにした。
夏休み4日目。
- トランスミッタのソフト環境整備。ST-LINK/V1はGDBデバックに対応していなかった。手持ちのNUCLEOボードのST-LINK/V2-1部分を借用して、制御できることを確認した
- まずは、LEDの点灯制御を、HALのタイマだけで実装。難なくクリア
- FreeRTOSを組み込んで、TASK化のうえ、OS側のタイマを使って制御。ここは色々と苦戦。STM32CubeIDEにソースファイルの追加方法が判らず、試行錯誤した。無事にクリアして、FreeRTOS制御下で、LED制御できた
- UARTを使用したデバック出力。シリアル出力できるところまで確認できた。バッファ制御、DMA制御は、まだ手付かず
- レシーバのハード製作の続き。各部をラッピングワイヤで、ハンダ付で配線。ちょっと苦労したけど、2台分の実装が完了した
夏休み3日目。
- テレメトリシステムの通信フォーマットの策定。CAN通信とLoRa通信とのそれぞれのフォーマットを策定。
コントローラで計算している情報をCAN通信に新たに載せる必要が出てきた。
- 気分転換に、工具屋さんにGo。目当ての品がなく、ちょっと気落ちしながら、気になっていた品を購入して、帰宅。疲れた〜(手ぶらで帰ってもよかったのに。というツッコミは無しで)
- レシーバの回路設計。簡単な配線だけど、一応回路図に残しておく。
- レシーバのPROTO MODULEの基板加工と、ケース加工。2台分まとめて実施。一つはデバックSerial追加できるようにしておく
- トランスミッタのファーム環境の調査。FreeRTOSの組み込み実施
夏休み2日目。
- 申請書類をまとめて、送付した。
- テレメトリのレシーバ側のソフトウェア環境を整備。M5Stack S3を使用するので、ESP-IDFをセットアップ
こちらもAMAZON Free RTOSが標準で動作している模様。かつ、SMPに対応しているとな。低いレイヤの組み込みシステムでも、マルチコアプログラミングできる世の中になったのか。
- インバータのMOS FETのGate波形を念の為に再度確認。絶縁プローブで、Hi-Side、Low-Sideともに確認。スイッチング時に変なオーバーシュート、アンダーシュートは出てないから、少し安心。でも、FET変更するんだよね。これから。
- 新しいFETは、Digikeyから購入ずみ。型番も全数チェックして、問題なし。オーダした品が届いていた。金曜日夜にオーダして、月曜朝に届いた。すんごいね〜。
- テレメトリのトランスミッタのハードの火入れ。電源系は、正常に動作していることが確認できた。よかった。
- テレメトリのトランスミッタのケースをちょいと加工。電解コンデンサのサイズが微妙に大きく、ケースに当たっていたので、ケースをガリガリと削った。面倒だった。。
夏休み1日目。
- トランスミッタのソフトウェア環境の導入。STM32CubeIDEをセットアップ。その前にEclipse2023-06ベースで用意してて、Arm Cross GCCが出てこなくて焦った。これ、プラグイン(The Eclipse Embedded CDT plug-ins)を別途インストールが必要だった。
- AMAZON Free RTOSが比較的簡単に導入できそうな感触。使う方向で検討しよう
- 車両の整備。リアホイールベアリングも結局打ちかえることにした。日本製のNACHIのベアリング6001Zを使用。念の為、ディスタンスカラーも設置してある。
トランスミッタの回路設計設計が先日8/5に完了した。結局、LoRaモジュール意外は、在庫の部品で間に合った。というか間に合わせた。
ケースの加工と、そこに入れるユニバーサル基板の外形加工が、一番大変だった。そこから先は、部品実装して、ラッピングワイヤをハンダ付で配線して、ハードウェアはほぼ完成。
八幡ネジのロックナットを締めるために、薄いスパナが必要だったので、工具屋さんへGO。夕方〜夜にかけて気温はだいぶ運動しやすくなった。と自転車で、買い出し。
STAHLWILLE(スタビレー)のイグニッションスパナ 3mm厚。10mmと13mmを購入してきた。ついにSTAHLWILLEゲット。仕上げは梨地でいい感じ。
工具箱がパンパンなので、ドライバー入れる良い入れ物がないかと、100均に探しにいってきたら、100φ 150mm高さのプラ容器を発見。これちょうど良さそう。
電装系の整備の続き。
- 鉛電池のF2端子-XT90のハーネスは製作してある。その先のハーネスを製作。XT90コネクタから、とブレーカ/フューズまでのハーネスを製作。こちらは5.5sqで製作。バッテリは並列接続とするので、ブレーカでは2本共締めとなる。またもや70Wハンダゴテが活躍
- コントローラや、トランスミッタの電源配線用の端子台を別途用意するので、そのハーネスも準備
部品箱をあさっていたら、STBEE Mini Ver.1が出てきた。IO電圧が3.3Vで、CAN コントローラも内蔵しているので、こっちを使おう。サイズ小さいので、好都合
[2023年07月]
[2023年09月]
[INDEX]