秋月縛りで電流センサ付きDCモータドライバーを自作する
今回は電流センサ付きDCモータドライバーを自作したので,その過程を書こうと思います.
背景
幣サークルのチームリーダーがモタドラ制作(の沼)にはまってて俺もやりたい!ってノリで始めました. あと自分は今までスルーホールの部品ばかり使ってたのですが,時代は表面実装なのでSMD使って回路作ってみたかったってのもあります. 軽いノリで始めたので,あくまで自分の趣味で,色々な場面で使えそうなのを考えます.そしてせっかくなので秋月の部品のみで組んでみました.
この記事は素人の偏見と素人による超適当な設計が存分に含まれています.ご容赦ください.
この記事はPCB Prototype & PCB Fabrication Manufacturer - JLCPCBの宣伝も含まれています.
仕様
- 電流測定範囲: 10A
- モーター電源電圧: 24V(MAX)
- 制御電源電圧: 5V
- 入力: PWM/方向
- とりあえず動かす
せっかくモタドラを自作するので,電流センサを付けます.秋月で売っている中で一番簡単に使えそうなのはACS724だったので,これを使います.これは±10Aまで測定出来て,出力も絶縁されてるのでポン付けで使えそうです.これが10Aまでの測定なので,FETも10A耐えれるものにします.入力はPWMで速度を制御し,方向ピンにデジタル入力01で回転方向を指定します. 入力が分かりやすいようにLEDもつけておきましょう.
せっかくSMD使って回路を組むので,できるだけ基板を小さくしたいですね.あと部品コストもなんとなく意識しておきます.ケチなので.
そして,あらかじめ保険をかけておきますが、今回はとりあえず動かすことを目標にします.電流センサの出力はアナログ出力ですが,配線によるノイズの影響とかも知りません.モーター電源のパターンもできるだけ太くするよう心がけますが,計算してないので本当に耐えるかも分かりません.焼けたらその時考えることにします.(まぁ10Aくらい適当でも耐えるやろ)
そのほかの仕様は部品に合わせることにします.
回路
Hブリッジ
分かりにくいですがブートストラップ回路を使ったシンプルなHブリッジです.TO-252のNP52N06SLGを使いました.50A流せて1個20円って理由だけで選びました.50Aも流したらどっか別の場所が壊れると思うので十分です.ON抵抗とかゲート容量の比較とかは特にしていません.
ハーフブリッジドライバにIR2302を使います.これは内部でデッドタイム生成や同時オン防止とかもやってくれる便利なやつです.ジャンパーはIRS2003にも対応できるようにした名残.IRS2003の入力は2番がHIN,3番がLIN(反転)なのに対し,IR2302は2番がIN,3番がshutdownです.なので3番には信号を送るかIC電源につなげるか選べるようにしてました.ほぼ同じ機能で安いので本当はIRS2003を使いたかったのですが,電源電圧の関係でIRS2003は使えないことに基板発注後気づきます.さらに,IR2302の3番には内部でプルアップされてるっぽいので,わざわざ外部で電源につながなくてもよかったっぽいです.データシートちゃんと読んでないのバレる.
モータの横に何も考えず電流センサをつけてます .
Hブリッジにあるダイオードはフライホイールダイオード(フリーホイールダイオード?)です.これもつけるかどうか迷い,そのまま忘れてローサイド側だけつけっぱなしにしてました.(結局実装していません.)
モーター側と信号入力の絶縁にはフォトカプラを使っています.写真には入れていないですが,ICの入力部にTLP2361を使っています.TLP785みたいな1個2,30円くらいの安いものはPWMに追いつけなかった気がします.(要検証)目安10kHzくらいで駆動したいので,速そうで安いこれを選びました.秋月にはADUM3224という絶縁も一緒にやってくれるハーフブリッジドライバがありますが,これはデッドタイム生成をしてくれないのと値段が高いので止めました.でもゲートに吐ける電流はADUM3224の方が多かった気がします.
ブートストラップコンデンサの容量とかゲート抵抗とかは勘で決めました.今までこれで動いてたしいけるやろ.
入力部
入力はPWMによる速度制御と方向のHigh/Low入力にしたかったので,方向ピンに応じて左右のどちらかにPWM信号を送るように論理回路を組みました.この回路だと,ICの出力はそれぞれ本来ほしい出力を反転させたものになります.ただTLP2361がインバータロジックのフォトカプラなので,ここでさらに反転されてハーフブリッジドライバに信号がいい感じに送られます.フォトカプラがインバータロジックだったおかげで,ロジックICが1つで済みました.IR2302がデッドタイム生成とか同時オン防止とかやってくれるので,かなりシンプルです.
コネクタとか
制御信号・電流測定の入出力はXH5ピンでやります.モーター電源と出力は横向きXT60を使いました.これだけ秋月に売ってないですが,幣サークルでよく使われてるのでこれにします.朱雀が閉まっちゃったので入手性が悪化しました.
配線,発注,実装
到着,からの実装.今回はhttps://jlcpcb.com/JPVで発注しました.
部品を詰め込んで,60mm×50mmに収まりました.裏面に部品の実装したり工夫すればもう少し小さくできる気がしますが,サイズ感に関してはこれで満足です.
ただ詰め込んだので一部パターンが細くなってます.モーター電源ラインは一応表と裏の両方に配線引いてますが,FETとセンサーもSMDなのでそこだけはどうしても表面に電流が集中しそうです.ビアたくさん打ったら多少は発熱や抵抗を抑えられるのでは?って思って打ちまくってますがどうでしょうか.10A無理な気がしてきた.
部品数はそこまで多いわけではないのと極端に小さい部品を使ってるってわけでもないので,手はんだで何とかなりました.1608Mまでにしておいてよかった.リフロー炉なんてありません.
LED6個付いてるのは信号確認用です.壊れたときにどこまで信号が正しく来ているのか確認しやすくなると思って付けました.LEDがスルーホールなのは以前表面実装のLEDをはんだ付けしたときに極性が分からなくて間違えまくったからです.電解コンデンサがスルーホールなのは手元にあったからというのと表面実装にするの忘れてたからです.新しく買わずに持ってたのをとりあえず付けましたが,容量小さいですね.基板サイズがギリギリなので,固定用の穴はM2になってます.
動作確認
とりあえず動いたやったぜ pic.twitter.com/FdRwUtMSYo
— や (@yamaaaaaaaaaaa_) 2023年3月25日
一発で普通に動きました.
オシロなんて持っていないので,nucleoでPWMを吐きつつReadPinとADCつかってPWMと電流波形を取り出してみました.PWMのHigh期間に電流が増え,Low期間に減ってるので正しく読めてる気がします.
ちなみにこのプロットはArduino IDEのシリアルプロッタ使ってます.マイコンがArduinoでなくても適当に数字送り付ければ勝手にプロットしてくれるので便利.でもこの波形はPWM周波数を500Hzまで落とし,Baudrateを2000000まで上げて,読んだADCの値を割り算して桁数を減らしてprintfに突っ込んでます.こうしないと通信が間に合わずプログラムが止まっちゃいました.めんどくさいことしてますね,おとなしくオシロ買うべきです.
値段
モタドラが動いたのでやりたいことは出来たのですが,一応1枚当たりの値段も計算してみます.部品の値段は時期だったり為替によって変化するので,あくまで目安程度でお願いします.
基板1枚当たりの個数 | 単価 | 小計 | |
---|---|---|---|
ブートストラップコンデンサ | 2 | 10 | 20 |
電解コンデンサ | 1 | 15 | 15 |
ブートストラップダイオード | 2 | 2.5 | 5 |
LED | 6 | 10 | 60 |
XH5ピン | 1 | 15 | 15 |
XT60 | 1 | 60 | 60 |
XT60 | 1 | 60 | 60 |
Nch MOSFET | 4 | 20 | 80 |
NAND | 1 | 20 | 20 |
フォトカプラ | 2 | 50 | 100 |
ハーフブリッジドライバIR2302 | 2 | 260 | 540 |
3端子レギュレータ | 1 | 50 | 50 |
電流センサ(ACS724) | 1 | 350 | 350 |
チップコンデンサ(1608M) | 7 | 2.5 | 17.5 |
チップ抵抗(1608M) | 18 | 0.2 | 3.6 |
基板(製造費+輸送費) | 1 | 500 | 500 |
合計 | 1896.1 |
2000円下回りました.基板製造費はJLCPCBで5枚2$で簡易見積りで計算しました.あとIRS2003は2つで180円だったので,これを使えれば1500円くらいだったかもしれません.なんか悔しい.そういえばレギュレータは秋月で売り切れてたのでコアスタッフからいただいたRohmのものを使っています.(おい) 在庫復活してました.
最後に
今回は電流センサ付きモタドラを秋月縛りで作りました.コンパクトな大きさにまとまったので,表面実装にしてよかったと感じました.反省点としては適当に設計しすぎたと思っています.パターンが焼けずに何Aまで流せるのか分かりませんが,もう少し安心して使える配線にしたかったですね.熱計算は今後の課題です.センサのノイズもどれくらい影響あるかわかってません.あと部品の定格ミスってたのが残念です.まぁとりあえず動かすという最重要課題は達成できたので良しとします.軽いノリで初めた工作で,775回すつもりもないので満足です.気が向いたらこれらを修正したり,2ozで発注するかもしれません.
追記
結局部室で775モータ回しました.
24Vduty比90%無負荷ななこ耐久テスト(平均2Aちょいくらい) pic.twitter.com/m4mAjqUspp
— や (@yamaaaaaaaaaaa_) 2023年3月27日
24V,duty比90%無負荷で3分間回しました.極性は確認してません.中華の安定化電源の表示では2Aちょいって出てたんですが,もっと流れてる気がします.FET周辺からぬくもりを感じたので,負荷かかるとちょっとキツそうですね.
追記2
なんか遊んでたらレギュレータが破裂しました.
フォトカプラも壊れてました.マイコンのプログラムを変えたタイミングで破裂したので,送る信号がまずかった気がします.このフォトカプラは通信インターフェース用らしいんですが,その横でモーター回すのはまずかったんですかね.モタドラが壊れるのはよくあること()だと思います.新しい部品に交換したら問題なく?動いたので今回は良しとします.
追記3
(2023/6/26)
宣伝です.
今回の基板はJLCPCBで発注しました.発注するときに別の基板も頼み,そっちでは部品実装サービスも使いました.
手はんだでは大変な大きさの部品とかも利用しやすくなるのは便利かなと思います.ぜひ利用してみてはいかがでしょうか.
(そっちの基板との兼ね合いでこの基板の記事に宣伝を書いておきます.)
というか5枚での製造費が安いから,宣伝とか関係なしにおすすめです.
PCB Prototype & PCB Fabrication Manufacturer - JLCPCB
部内向けに適当に作ったKicad資料を貼っておきます.発注の仕方とか簡単にまとめています.間違いなどあればご指摘していただければと思います.