Tang Primer 25KのSoMはとても小さく,装置にFPGAを組み込むときにとても使いやすい.今回はBLDCドライバ・ボードをTang Primer 25Kを使って作ってみた.以前,Tang Nano 9Kを使って作ったものの機能追加版となっている.

▲追加した機能

 カート用のスピードメータを作るため,ドライバ・ボードから回転数などの情報をCANで送信する機能をFPGAに実装した.

バージョン1.不具合多発に付き更新した
作るシステムの全体構成

 ベースとして,CQ出版から販売されているインバータ・キット2を使う.このキットはBLDCを駆動するためのもので,インバータ・ボードとNUCLEOマイコンボードの2枚構成である.

 インバータ・ボードには,3相のHブリッジ(ゲートドライバ含む)とMOSFETが搭載されており,制御はNUCLEOマイコンボードで行なう構成となっている.

 制御部分をTang Primer 25Kにしたいので,NUCLEOボードを外す.

 ベースとして使う,ドライバボードに手を加えたくないので,NUCLEOボードのコネクタ(38ピンソケット×2個)を介してTang Primer 25Kを接続するための専用変換基板を作る.

インバータ・キット2

 作った変換基板がこれ.この基板にADCのIC(MCP3008)も載っている.電源(24V)から5Vを作るために,DCDCコンバータ(BP5293-50)も載せた.

 写真の左上に見えるのは,CANバス接続用のRJ45ジャック.CAN通信にはツイストペア線としてLANケーブルを使う.その右隣のSOP8はCANトランシーバ.

 左下に,トグルスイッチを搭載.右側SWには,モータ出力のON/OFF機能を割り当てた(テスト時に使う). 左側は,前進/後退の切替機能とした.

 ボード右下には,DIPスイッチのパターンも用意した(今回は未使用).

 ビットストリームの書き込みは4ピン・ヘッダを通してJTAGで行う(要FT-2232など)

SoMを外した状態の専用変換基板
専用の変換基板をかませて,Tang Primer 25KのSoMをインバータ・ボードに接続した

●CANによるデータ送信機能

▲BLDCのコントローラ+CANコントローラをFPGAに実装

 BLDCを制御している都合上,FPGA内部ではモータ回転数を常に把握できている.この情報をCANパケットに載せて,CANバスへ送出する.今回は,Interface誌の別冊付録「GOWIN Vol.4」を参考にして,CANコントローラはFPGA内にRTLで実装した.CANトランスミッタ(TJA1441)はハードウェアで専用変換基板上に実装した.

▲受信側はラズパイ+AGL

 受信側の端末として,ラズベリー・パイで動くAutomotive Grade Linuxを使う.受信したCAN情報に応じて,画面にスピードメータを描画する機能も受け持つ.ラズベリー・パイはCANバスに直接繋げられないので,CAN HAT(Waveshare)を使った.

 初期基板では色々トラブルも出ており,バーション2の基板では,いらぬトラブル回避のため,CANトランシーバは直接基板に実装するように変更した.

 今回は,ドライバ・ボード(緑基板)が大きいので独自変換基板を小さく作る価値がなかったので,大きな基板で設計しており余裕をもって実装できた.NUCLEOボードのピンに合わせて独自変換基板を作る必要性もあったために,基板サイズが大きくなっているが,SoMのサイズだけを考えれば,かなりコンパクトな実装も可能である.

バージョン2基板
車載した状態(上部に見えるのがモータ)

●バッテリ

動力として使う鉛バッテリを充電

自動車用のバッテリ充電器で満充電後,さらに安定化電源を使って限界まで詰める

動力は,UPSなどで使う密閉型鉛バッテリ

●つくばサーキットも走った

 2024年10月20日 つくばサーキットで行われたミニEVカートレースに,このコントローラを使って出場した.

30分のレースでつくばサーキットを6周走り切った

レースで使う車体はこのような感じ

車名は速そう…

IVI(In Vehicle Infotainment)も搭載した
タイム計測用のトランスポンダーを装着
スタート待ち

●AGL

AGLを使って作るスピードメータはこのような感じで動く.

GitHubリポジトリ

コメントを残す