自作モータドライバー（A3921使用）の紹介

#はじめに
どうも，としひろです．
今回は現役ロボコニストだった時に設計・製作したモータドライバー（以下，MD）のデータをこれまで部内秘としてきましたが，個人的時効を迎えたので公開します．
ゲートドライバーにA3921を使用したMDのデータはあまり転がってないので是非参考にしてみてください．
＊嘘は書きませんが，特別丁寧に書くつもりはないので，ご容赦ください．



#キーパーツの詳細
|名称|型番  |ベンダー  　|購入先　|
|---|---|---|---|
|フルブリッジゲートドライバ  |A3921KLPTR-T  |アレグロ  |秋月|
|デジタルアイソレータ  |Si8640EC-B-IS1  |シリコンラブズ  |RSコンポーネンツ|
|NMOSFET  |RSJ550  |Rohm  |チップワンストップ（*1）|
|絶縁型電流センサー±12A  |ACS711ELCTR-12AB-T  |アレグロ  |秋月|
|CANドライバー  |MCP2561-E/SN  |マイクロチップ  |秋月|
|マイコン  |STM32F303K8T6  |STマイクロ  |秋月|
|RJ45  |3010-880  |Linkman  |マルツ|

#回路図と説明

モータドライバーの回路設計とPCB設計はKicad(私はキキャドと呼ぶ)を使いました．
回路図は引継ぎ，修正がしやすいように階層となっています．
グローバル線などの説明はKicad特有ではないと思うので省略します．

#上位階層
上位階層は機能ごとに分類されたブロックをまとめ，信号の流れがよく分かり，スマートな回路図を作ることができます．
・J12のpowerはモータドライブ用電源です．詳細は後程．
・H1からH4までのマウンティングホールは基板隅に設置する基板取付穴で，穴径は基本的に3.2mmで設計します．（Ｍ３のなべ小ネジがスムーズに入る穴径）
・H5は基板表面に印字するロゴマークのダミーシンボルです．
![motor_driver_ver4.2_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/46b205bd-e697-37f2-8362-2d43386e184a.jpeg)

#CAN通信回路
CAN通信は2線式の差動信号によるデータ転送が特徴で，ノイズに強いという特徴から，自動車のECUに使用されていたりします．（今はEthercatが主流だとか）
CANドライバーはPICマイコンでおなじみマイクロチップ社の石で，マイコンに内蔵されているCANインターフェースと直接接続できます．
・CAN通信は差動信号の重畳を防ぐために終端抵抗を120Ω接続することが推奨されています．ロボコンでは毎年変わるルールに合わせてモータドライバの数や配置が換わるので終端となるモタドラが読めません．
そのため終端ＭＤとなるときはスライドスイッチで切り替えて逐次切り替えをできるようにしました．
・CAN通信は某企業さん，他大学のロボコン部ではXHコネクタを使用している傾向がありますが，CAN通信に関してはXHよりもRJ45というEthernetケーブルの接続に用いられるコネクタを使用しました．Ethernetケーブルは内部がツイストペアになっており差動信号には好都合です．
・加えてRJ45を並列に2個並べて，ＭＤをカスケード接続させることで複数のＭＤの接続を一つのEthernetケーブルで統括通信することができます．
![motor_driver_ver4.2_page-0002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/0e4851e2-ba1f-977d-6078-ed7ea6dbf6f0.jpeg)

#電源回路
ＭＤ内には二つの電源があり，モータドライブ用の電源とマイコン用電源がGND独立で存在します．（徹底的にノイズをキャンセルするため）
この回路図はマイコン用電源で，電源電圧は12Vとし，ロータリーエンコーダに要求される電源電圧に対応できるようにさせます．
また，ドライブ回路とマイコン回路の電源が独立しているため，マイコン電源がダウンした時にモータが動作しないように，マイコン回路電源スイッチとドライブ回路内のゲートドライバーのリセットピンがLOWになるようにします．
電源レギュレータには２段構成にすると，1段目のU2に電流が集中するため，シリーズレギュレータは避けてDC/DCコンバータを設置します．なお，5V電源はCANドライバのみに使用するため，CANドライバが3.3Vに対応できれば不要となります．
そして，レギュレータ上部のダイオードは後述するSWDコネクタから流入する電源によってレギュレータ出力側の電位が高くなることによる故障を防ぐためです．
![motor_driver_ver4.2_page-0003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/d0b662c3-c3be-599e-b5b1-b1aa515dd03e.jpeg)

#マイコン周辺回路
マイコンにはロボコンでよく使用される低価格かつ機能盛沢山なSTM32F303K8T6の表面実装ＩＣを使用します．
基本的にはNUCLEO-F303K8の回路図を参考にしています．
回路構成はprintfデバッグ用のUART通信コネクタ，JTAG/SWDの書き込み，デバッグコネクタ（非正規）で味気ないので特に説明はありません．
![motor_driver_ver4.2_page-0004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/acb568b3-121c-2f31-d65e-c86c8df1215b.jpeg)

#ロータリーエンコーダ入力回路
ロータリーエンコーダはA相，B相，Z相が入力できるエンコーダでかつ，NPNオープンコレクタに対応できるように5V（理由は忘れちまった）でプルアップしています．
部内で購入したエンコーダで動作確認ができているものは
TRD-S1000B（光洋電機の9000円エンコーダ（ミスミものつくり支援で購入））
E6A2-CW5C（オムロンの1万円エンコーダ（ミスミものつくり支援で購入））
EC202A050A（千石の3200円エンコーダ）
なお，単位秒あたりのパルス数（パルス周波数）がマイコンの入力処理に追従できないっていう話もあったりなかったりするので，検討してみてください．（当時の計算では32kHzくらいで大丈夫だった気がする）
![motor_driver_ver4.2_page-0005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/087aa092-dc3c-b9d8-4059-dec26ba898fb.jpeg)

#モータドライブ回路
モータドライブのゲートドライバ（FETのゲートに入力信号を統括制御する石）にはA3921で約1年半くらい前に秋月電子さんで販売が開始されました．長岡技科大さん，慶応さんでも使用しているらしいですが，さすがに回路図は公開しませんよね（当たり前）．
ゲートドライバ周辺の抵抗やらコンデンサの細かい説明をすると気が狂うので，A3921のデータシートをご覧ください．定数もある程度計算しています．
ただ注意点としましては，VREGという確かIC内部で使用する電源がゲートチャージポンプでかなり電流を消費するので容量が大きくインピーダンス特性のよいコンデンサを使用したほうがいいです．
Hブリッジ回路ですが，ゲート部にダイオードやコンデンサを挿入する回路がまあまあありますが，短い競技時間なので高効率は目指さず，コスト面，部品占有率を重視しました．単なるNMOSFET内部の寄生コンデンサによる共振，ダンピングを防ぐだけの回路となりましたが動作に何ら問題ありません．
それと，モータの逆電流を流す還流ダイオードは確かロームの部品です．
電流センサーは中間の回転方向が検出できる位置に配置しました．
![motor_driver_ver4.2_page-0006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/9a9bd1c1-eb4c-80ed-67b7-71c57ee76e2b.jpeg)

#電流センサー回路
電流センサにはアレグロの絶縁型の双方向電流センサーを使用しました．
使用するモータがブラシ付きＤＣモータで，PWM制御をするため位相遅れの影響が出ない範囲の1.6kHzのローパスを通してます．
なお，この電流センサはIP+からIP-にモータ電流を流し，ホール効果で電流を測定するのでセンサの位置は他の電線，磁場から影響を受けない場所に設置するほうがいいと思います．（どの程度影響が出るかは不明）
![motor_driver_ver4.2_page-0007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/7cb5c39a-1ecf-79ef-0de0-8db73430e379.jpeg)

#デジタルアイソレータ回路
一般的には信号絶縁には内部に赤外線ＬＥＤが使用されたフォトカプラ（今まではTLP250を使用）を使いますが，部品点数が増えてしまうというのが問題でした．そのため1つの石で４つの信号を転送できるSi8640というデジタルアイソレータを使用して2つのPWM信号，ゲートドライバ用SR信号，PHASE信号を入力できるようにします．
コスト面もフォトカプラ1つ分でデジタルアイソレータ1つ分とリーズナブル．部品の占有率も削減できるのでかなりオススメです．
![motor_driver_ver4.2_page-0008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519618/6f19104a-fc88-5b62-aec0-15c0d6dcd33d.jpeg)

#最後に
回路図に関するご質問等がありましたらTwitterのDMにでもいただけるとお答えします．
他大学のロボコン部の方でも歓迎します．
無断転載はご遠慮ください．