Tang Primer 25KのSoMはとても小さく,装置にFPGAを組み込むときにとても使いやすい.以前,Tang Nano 9Kで作ったBLDCドライバ・ボードをTang Primer 25Kを使って小さめに作ってみた(あまり縮んでいないけど).
さらにカート用のスピードメータを作るため,ドライバ・ボードから回転数などの情報をCANで送信する機能もFPGAに実装した.
ベースとして,インバータ・キット2を使う.このキットは,インバータ・ボードとNUCLEOマイコンボードの2枚構成である.
インバータ・ボードには,3相のHブリッジ(ゲートドライバ込み)とMOSFETが搭載されており,制御はNUCLEOマイコンボードで行なう構成となっている.
制御部分をTang Primer 25Kにしたいので,NUCLEOボードを外す.
そして,NUCLEOボードのコネクタにTang Primer 25Kを挿すために,専用の変換基板を作る.
作った変換基板.この基板にADCのIC(MCP3008)も載っている.電源(24V)から5Vを作るために,DCDCコンバータ(BP5293-50)も載せた.
左上はCANバス接続用のRJ45ジャック.ツイストペア線としてLANケーブルを使う.その右隣のSOP8はCANトランシーバ.
左下に,トグルスイッチを搭載.右側は,モータ出力のON/OFFに割り当てた(テスト時に使う). 左側は,Reserved.
ボード右下には,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トランシーバは直接基板に実装するように変更した.