前回のパルスモードの記事の続きです。

BLDCに流す波形が決まったので次は実際にモノを作っていきます。

基板はいつも通りKiCadで回路図を引いて作っていきます。
no title

基板1枚でBLDC2台を駆動しこれを3枚使用して6台のBLDCを駆動する構成にしました。今回は基板1枚にATmega328P1つ載せマイコン1台で2つのモータを制御する構成にしましたが、パルスモードの検討の結果これがかなりの痛手になってしまいました。(詳細は最後に書きます)

回路の信号の流れとしてはマイコンの出力→絶縁用の信号用フォトカプラ(TLP2361)→ゲートドライバ(NCP5104)MOSFET(TPCA8024)となっています。似た構造のモータドライバでは絶縁用にもゲート駆動用フォトカプラを使う例も見られますが、信号用フォトカプラはこれらより安価で周波数帯域が広いのが特徴です。

ゲートドライバに関してはRSで安さと性能を比較検討してNCP5104にしました。50個購入で1つあたり50円、出力電流Out250mA Sink500mA動作電圧範囲9~20Vと個人レベルではコスパがいいほうだと思います。なお、MOSFETはヤフオクの安いやつです。

 

回路図が出来たら基板のアートワークを行います。
1
2

KiCadなので3DViwerで確認をしてからFusionPCBに発注して基板を組み立てます。
IMG_20190310_110113

 これを3枚作ればBLDCの基板は完成です。

MIDIを受ける基板も別途作ります。
IMG_20190310_110001

STM32マイコンのDMA機能を使って確実に制御信号を受け取れるようにしました。

MIDIの受信のプログラムに関しては過去の記事に書いています。

 

基板が完成したので次は本体を作っていきます。

まずはアルミの板にBLDCを固定します。
IMG_20190310_111558

続いてべニア板で共鳴箱を作ります。IMG_20190310_111500

そして、BLDCのユニットを固定すれば本体も完成。IMG_20190310_111917

 

続いてソフトウェアを作っていきます。

システムの構成としては以下のようにしています。Untitled Diagram

シリアルでの受信と回転速度の設定部以外は基本的にコンペアマッチ割り込みで処理を行っています。タイマー0,28bitタイマーを回転界磁生成用, タイマー116bitタイマーをPWM生成用に使ってます。

PWMを高周波にしたことでこのPWM生成の割り込み(コンペアA,B割り込みとオーバーフロー割り込みでPWMを生成)の回数が非常に多くなり処理性能の限界が結構来ました。実験的にはPWM周波数はマイコンクロックの1/1024が限度でした。そのため、実際にBLDCを回したい場合はPWMをハードウェアで生成できるようにモータ1台につき1つのマイコンを使うことを強く勧めます

余計なコードも混じってますが、実際に使用したコードを公開します。

https://github.com/HanDenMotor/BLDCMusic-ATmega328P

(PWM周波数の確保を目的にATmega328P24MHzでオーバークロックしてるので注意)

 

そして完成。

動画がこちら

https://www.nicovideo.jp/watch/sm34805846

 

以上簡単ですが、作品の製作日記でした。