岩の製作記

作ったものを適当に記録します

電流センサ付き高出力モタドラの自作

初めまして。京大機械研の岩(@iwamechatronics)です。NHK学生ロボコン向けにそこそこ使えそうなモータドライバを自作したので、その過程を書いておこうと思います。

注意:この記事には素人の独断と偏見による誤った設計が含まれている可能性があります。ご了承ください。

概要

開発の経緯とか

強いモタドラって全人類の夢じゃないですか。というわけで強そうなモタドラを作りました。コンセプトは実用的でラクなやつです。

実は昨年度も下のようなモタドラを作っていたのですが、

爆熱・低出力・非絶縁とあまりよくない感じだったのに加えて、使用していたゲートドライバ(A3921)が入手できなくなったので新規開発に踏み切りました。ついでに電流センサと各種保護機能も載せることにしました。機構班と制御班がいじめてくるので、多少粗野に扱っても壊れない頑丈さを確保しました。

仕様

  • 定格電流: 40A
  • 定格電流 (空冷時): 60A
  • 定格電流 (瞬間): 100A
  • モータ電源電圧: 12-35V
  • 制御電源電圧: 3.3-5V
  • PWM周波数:1-20kHz
  • Duty比: 0-0.99
  • 電流測定範囲: 0-64.5A
  • 過電流検知閾値: 29.2-145.8A (半固定抵抗で設定)
  • 過熱保護: PTCサーミスタ
  • 基板サイズ: 60 x 80mm
  • 製造単価: 約5000円

構成

構成は以下の通りです。都合の良いゲートドライバICと電流センサICを見つけたので、それに合わせて組みました。面倒なことは専用ICにやらせましょう。

構成図

回路

回路図です。入手性を考えてなるべく秋月部品で組みました。

回路図

駆動部

特に捻りはありません。普通のHブリッジとブートストラップ回路です。

駆動部

ブリッジ

秋月のTK100E06N1を4個使ってHブリッジを構成しました。選定理由は、秋月で安く入手できて(130円/個)、100A流せて、耐圧がそこそこ高く(60V)、オン抵抗がそこそこ低い(1.9mΩ) からです。TO-220なのでパッケージの電流制限や放熱に関しても安心感があります。ゲート入力容量が少し大きいのは気になりますが、PWM周波数が高々10kHzでゲトドラもそこそこ強いので問題ありません。

ゲートドライバ

ゲート駆動には秋月のADuM3224を使いました。これ1個でブリッジ半分の絶縁とゲート駆動が一気にできるので楽ですね。

ハイサイドFETの駆動はブートストラップにしました。コンデンサとか抵抗の値はADuM3224のデータシートに従って計算しました。ここのコンデンサの選定で少しハマったので、後ほど記します。

ゲート電源は駆動電源をレギュレータで12Vに降圧して確保しました。ツエナーダイオードを使うのもアリですね。

コンデンサの選定でハマった話

コンデンサにはDCバイアス特性ってのがあります。これを知らずに部品選定をしてハマったので書き留めておきます。

誘電率系の積層セラミックコンデンサは直流電圧をかけると見かけの容量が大きく減小します。これがDCバイアス特性の罠です。

例えば秋月のこの子の場合だと、DCバイアス特性は以下のようになります。

秋月チップコンのDCバイアス特性

定格10uFですが10V時には2uF以下になってしまっています。対して、秋月のこの子の場合だと、同じ10uFですが10V時はだいたい5uFですね。一般にパッケージが小さいほどDCバイアス特性は顕著に現れます。小型大容量なMLCCを使うときはDCバイアス特性に注意しましょう。

保護部

電流センサの過電流検知出力とPTCサーミスタを使って過電流保護と過熱保護を実装しました。

保護部

過電流保護

電流センサCZ3A05は可変抵抗で閾値を設定可能な2系統の過電流検知出力(オープンコレクタ)を有します。過電流検知が作動するとトランジスタQ1がONになり、コンデンサC16の両端電圧が下がり、Q2がONしてゲートドライバに停止信号を送ります。

過電流状態が解除されるとC16がR13, R14を介して充電され、一定時間後にQ2はOFFになり停止状態が解除されます。これにより過電流保護と自動復帰を実現しています。

アナログ回路はなんもわからんなので各定数はLTspiceでゴニョゴニョして決めました(適当)。

過熱保護

秋月のPTCサーミスタヒートシンクに固定し過熱保護としました。高温になると抵抗値が上がり、Q3がONして停止信号を出力します。

制御部

NANDとワンゲートOR, NOTを使ってデコーダを組みました。デッドタイムはCRとダイオードで生成しています。

制御部

デコーダ

先代のMDと互換性を持たせるため、入力はPWM, PHASE (方向入力), BRAKE (OFF時のブレーキ有無) の3入力としました。NANDを4の倍数個使ってなるべくシンプルに組んだつもりです。どんな入力をしてもアーム短絡が起きないので安全です。真理値表は以下の通りです。

BRAKE PHASE PWM AH AL BH BL
0 0 0 0 0 0 0
0 0 1 0 1 1 0
0 1 0 0 0 0 0
0 1 1 1 0 0 1
1 0 0 0 1 0 1
1 0 1 0 1 1 0
1 1 0 0 1 0 1
1 1 1 1 0 0 1
デッドタイム生成

デッドタイムコンデンサを抵抗とダイオードを介して充放電し入力信号の立ち下がりのみを遅らせ、これを論理反転することで生成しました。700nsecくらいです。

電流測定部

電流センサの出力を抵抗分圧しADコンバータ(MCP3421)で読んでいます。分圧抵抗には秋月の精密抵抗を使ってみました。

電源/入出力部

駆動電源はピンヘッダまたは横向きXT60コネクタのどちらからでも取れるようにしました。制御電源を3.3Vまたは5Vの両対応とし、また先代のMDとピン互換にするため制御ピンが少々変則的な配置になりました。

基板

基板表
基板裏

60mmx80mmが幣サークルの標準基板サイズになっているのでそれに合わせて部品を配置しました。スカスカなので配線は余裕ですね。

パターンがあまり綺麗に引けなかったので結局GNDベタは施していません。まあ銅箔厚2倍だしなんとかなるやろ。

2層基板で銅箔厚は70umです。電流容量が明らかに足りてませんが大電流駆動するときはスズメッキ線で補強することとして諦めました。安かったのでJLCPCBに発注して1週間ちょいで着弾。

実装

基板表
基板裏

リフローと手はんだを駆使して3時間ほどで完成。部品点数多すぎて切実にチップマウンタが欲しくなりました。

FETは放熱面を上にして寝かせて実装しました。秋月のヒートシンクにタップを切り、放熱シートを挟んでFET4個とサーミスタを固定しました。

設計時に基板に穴をあけておき裏からドライバーを差し込んで着脱可能にするつもりだったのですが、サーミスタの位置に穴をあけ忘れてしまい着脱がものすごく面倒になってしまいました。

動作

とりあえず適当にコントローラを用意して動確。一発完動。やったぜ。

裏でデスマ中の人間の奇声が聞こえますがご容赦ください。

電流値もちゃんと取れました。温度上昇かなんかでゼロ点がちょっとずつドリフトするようなのでモータを止めるたびにソフト側で補正をかけた方が良さそうです。

775を24V無負荷で3分回してみましたが、有意な温度上昇は見られませんでした。実運用はこれからなので何とも言えませんが、まあ上出来でしょう。

反省とあとがき

今回のモタドラ製作で良かった点

  • 堅実で余裕のある設計
  • 各種保護機能による治安の向上
  • 熱設計をちゃんとやった(大事)
  • PWM入力としたためマイコンを選ばない
  • 部品を設計前に購入しておいた(在庫切れを起こさない)

良くなかった点

  • 部品点数が増えすぎて量産がしんどい
  • 電流容量を確保しようとピンヘッダ固定部のサーマルリリーフを設定しなかったため、半田の乗りが非常に悪くなり苦行と化す
  • ADCのI2Cアドレスが固定でカスケード接続できない
  • 無駄にデカい
  • 高価格(5000円/枚)

良くも悪くもオーバースペックで使いやすいモタドラに仕上がったと思います。次はもっとコンパクトに収めたいですね。