ブラシレスモーター用DCCデコーダを作りました

ケーディーカプラーの連結解放の時など、超低速で滑らかな運転ができないものかと考え、当初はステッピングモーターを考えていたのですが、掲示板でブラシレスモーター(BLDC)を使用するというアイデアを拝見しました。
私も実際にバラックで組んでみたところ、超低速でも安定た低速度で制御できることが分かったため、車両組み込み用のデバイスを製作しました。


モーター:中国の通販で見つけた、1個約400円の1623サイズ(16φ×23mm)の12V用モーターです。3個のホールIC(デジタル出力)を内蔵していて、3相の信号でローターの位置検出ができます。中国の通販製品ではよくあることですが仕様書など大雑把で、電極配置以外の細かい点が不明なのでテスト回路で確認しながら進めます。

CPU: PIC18F27Q84にしました。
最近のPICは、PPS(Peripheral Pin Select)を利用することで、タイマーやIOなど、内蔵ペリフェラルの入出力と物理的なピンとの対応をかなり自由に変更できるため、基板のパターンの引き回しが大変楽になります。
また、CPLD的な働きをするCLC(Configurable Logic Cell)が8個あるのも魅力です。
20ピンデバイス(PIC18F16Q41など3x3mm)と比べるとサイズが一気に2倍(6x6mm)になってしまうので、ピンを節約して20ピンにすればよかったと反省しています。

ドライバIC:TIの3相BLDC用ドライバのDRV8311Hです。
3種のバリエーション(他にDRV8311S,DRV8311P)がありますが、DRV8311Hは、内蔵PWMなどの機能がない代わりに、モード設定端子の入力電圧で最低限の動作モードを設定でき、外部からPWM信号を入力する場会には使い易いのでこれに決めました。

整流器:BOURNSのCD-MMBL110Sです。
3.5 mm x 3.8 mmのDFNで、10年前(鉄道模型は10年ぶりです)に、デコーダ用の小型の製品を探した時にはこのサイズのものは見つからなかったので、比較的新しい製品でしょうか。

簡単な回路ですが要点としては・・
・DRV8311Hの3.3V出力(Max100mA)を使うことで、レギュレータを省略しました。
はまりそうになった落とし穴は、nSLEEPが内部プルダウンされているので、電源ON直後には3.3Vが出力されません。何かがnSLEEPをHにしないといけない(PICは電源OFF状態)ので、VMを抵抗で分圧して加えることにしました。
・集電が不安定な場合にもPICはなるべく動作させておきたいので、DRV8311Hの3.3V出力とPICの間にダイオードを入れ、PICのVDDに大きめのコンデンサを付けました。
・DRV8311Hの3.3V出力には吸い込み能力は無いと考えられるので、VDDにVMが流れ込まないよう、レールからの信号は分圧した上でPICに入力しています。念のためですがVDDとの間に保護ダイオードも入れています。

13mmx19mmに収めました。右のやたらスペースをとっているのがPICです。
Nゲージにも組み込めそうですが、Nゲージ車両に収まるモーターがあるかはまだ調べていません。両面基板のままもう少し小さくできそうですが、手ハンダで実装するので、無理はしないことにしました。PICを20ピンにして、予算さえあれば、デザインルールを0.1mm以下、4層基板で、実装もリフローにすればかなり小さくできそうです。
接続部はモーター付属のコネクタがそのまま挿さるように1.27ピッチのピンヘッダです。

HOを想定しているので、面積は多少大きくなっても厚みを抑えようと考えました。さらに、ドライバの放熱を考えて片面実装にしました。基板厚は0.8mmですが、もっと薄くてもよかったかもしれません。リードレスの部品は基板のゆがみでハンダが割れやすいのが心配ですが。
ドライバのEPの部分には、裏側から手ハンダできるよう1.2mmのスルーホールをあけてあります。放熱の経路になり、裏側はフラットなので、放熱用部品を取り付けることができます。(最近は、部品面、ハンダ面 というのも実感が無いので、表面、裏面にしました)

正弦波駆動でテストしていますが、PWMの周波数やデューティー比の制御などで発熱量やトルクが大きく変わるので、最適な条件を探索中です。
基本的には回転数を目標値に保つために、目標回転位置とセンサーが検出している回転位置のずれ(位相差)を検出して、通電タイミングとデューティー比を制御するという方法を試みています。効率は最重要ではなく、内蔵センサーの分解能も低いので、ベクトル制御までは考えていません。

車両に組みこむのは少し先になりそうなので、結果はまた改めて追記させていただきたいと思います。