Tang Primer 25KのSoMはとても小さく,装置にFPGAを組み込むときにとても使いやすい.今回はBLDCドライバ・ボードをTang Primer 25Kを使って作ってみた.以前,Tang Nano 9Kを使って作ったものの機能追加版となっている.
▲追加した機能
カート用のスピードメータを作るため,ドライバ・ボードから回転数などの情報をCANで送信する機能をFPGAに実装した.
ベースとして,CQ出版から販売されているインバータ・キット2を使う.このキットはBLDCを駆動するためのもので,インバータ・ボードとNUCLEOマイコンボードの2枚構成である.
インバータ・ボードには,3相のHブリッジ(ゲートドライバ含む)とMOSFETが搭載されており,制御はNUCLEOマイコンボードで行なう構成となっている.
制御部分をTang Primer 25Kにしたいので,NUCLEOボードを外す.
ベースとして使う,ドライバボードに手を加えたくないので,NUCLEOボードのコネクタ(38ピンソケット×2個)を介してTang Primer 25Kを接続するための専用変換基板を作る.
作った変換基板がこれ.この基板にADCのIC(MCP3008)も載っている.電源(24V)から5Vを作るために,DCDCコンバータ(BP5293-50)も載せた.
写真の左上に見えるのは,CANバス接続用のRJ45ジャック.CAN通信にはツイストペア線としてLANケーブルを使う.その右隣のSOP8はCANトランシーバ.
左下に,トグルスイッチを搭載.右側SWには,モータ出力のON/OFF機能を割り当てた(テスト時に使う). 左側は,前進/後退の切替機能とした.
ボード右下には,DIPスイッチのパターンも用意した(今回は未使用).
ビットストリームの書き込みは4ピン・ヘッダを通してJTAGで行う(要FT-2232など)
●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のサイズだけを考えれば,かなりコンパクトな実装も可能である.
●バッテリ
動力として使う鉛バッテリを充電
自動車用のバッテリ充電器で満充電後,さらに安定化電源を使って限界まで詰める
●つくばサーキットも走った
●AGL
AGLを使って作るスピードメータはこのような感じで動く.