はじめに
こんにちは、槇原です。前回は大会レポートでしたが、話を元に戻してマウスの設計の話です。足回りの設計まで説明したので、今回は回路設計についてです。
必要なもの
何が必要かどうかは以前のブログにて決定しています。その中でも回路系で必要なものを列挙していきます。
- 電源回路 3.7 V Lipo->3.3 V 電源スイッチ(2.5 A以上)
バッテリーは1or2セルということにしていましたが、ギア比の計算をした際にも、今回の目標の速度加速度にするためには1セルで十分なことが分かっているので1セルということで進めます。流す電流はモータに1Ax2個とほかの回路に0.5Aという余裕を持たせた電流を流せるようにします。 - 電圧測定回路
電圧監視をして電圧が下がりすぎた際にエラーを出せるようにします。また指定した電圧をかけるために必要です。 - 壁センサ
- IMU
- 磁気エンコーダ
こちらは以前の記事でMAQ473を選定済みです - モータドライバ(1 A/ch 以上)
- UI類
- ブザー
- LED
- スイッチx1以上
- マイコン
上記のアクチュエータ、センサ類を動かすことができること
電源回路
電源は1セルLiPoをスイッチによってON/OFFできるようにすることと、マイコン等に3.3 Vを生成する必要があります。
降圧回路ということで、実装面積的にも落とす電圧が低いことからもリニアレギュレータを使います。
入力電圧は3.0 ~4.2 Vとします。上限はLiPoの電圧、下限はリニアレギュレータで3.3 Vが出力できる電圧です。
出力電流は200 mAとします。
消費電力は最大でも(4.2-3.3)*0.2=0.18 Wとなります。
なるべく小さいパッケージとして1 mmx1 mmNCP177AMX330TCGを選びました。
スペックは
Vin: 1.6~5.5 V
Iout:600 mA
Vdrop:0.175 V
Rth=223℃/W
Tjmax:150℃
です。温度上昇については
dT=Rth x P = 223*0.18=40.1℃なので特に放熱なども問題なさそうです。
電源用スイッチはPMOSFETによるロードスイッチです。
流す電流はモータに1.5 Ax2個流れでも大丈夫なように3 A以上流せるものを選びます。
GSFC02A05は20 V 5 A Ron 20 mΩでSOT23パッケージです。
3A流した際の電圧降下は3*0.020=0.06 Vなので、電源電圧の3.0~4.2 Vに対して影響は少なく問題ないです。
熱抵抗は100℃/Wなので温度上昇は100* 0.002*3^2=18℃と温度上昇もそれほど大きくないです。
物理スイッチとしては小型であること、また繰り返しのON/OFFでスイッチが取れにくいようにボスがついているAYZ0102AGRLCを選びました。
電源スイッチとレギュレータ部の回路は以下の通りです。J1のコネクタにバッテリーを接続してモータ用のVCCとマイコンなどに3.3 Vを供給します。
電源電圧測定回路
電源電圧は1セルのLiPoバッテリーなので3.0~4.2 Vです。
これに対してマイコンのAD変換の入力は0~3.3 Vなので分圧抵抗によって入力電圧のレンジを変換ます。
今回は6.8 kΩと15 kΩで分圧しました。
これによって4.2 Vを入力すると、15k/(6.8 k+15 k)*4.2=2.89 Vとなり3.3 V以下になります。
またこの回路の消費電力はP=V^2/R=0.8 mWなので問題ないです。
マイコンへの入力については、STM32の入力インピーダンス50 kΩに対してこの回路の出力インピーダンスは(R21*R22)/(R21+R22)=(6.8 k*15 k)/(6.8 k+15 k)=4.7 kΩと10倍程度あるので特に気にしなくてよさそうです。
壁センサ
こちらについては本来はいろいろ検証の余地がありそうでしたが、今回はよくマウスで利用されているというセンサ類を使うことにしました。参考
発光側のLEDはOSI5FU3A11C、受光側のフォトトランジスタはLTR-4206Eを使います。
LEDには瞬間的に100 mAを流すようにしてそれが駆動できるDMN63D8Lを使います。
センサの出力にはHPFを入れて低周波の信号をカットするようにしています。
IMU
通常動作をさせるときの加速度と角速度はマウス設計時の加速度、各速度より
加速度:±2m/s/s=0.2g
角速度:±29rad/s=±1662deg/s
です。
出力形式は、SPIやI2Cといったシリアル通信の形式で、3.3 Vで動作するものがよいです。
部品選定時の在庫等があり、上記の条件も満たすものの中でいくつか調べたIMUの候補は以下の通りです。その中でもなるべく精度が高いICM-42688-Pを今回は採用しました。
型番 | Sensitivity Scale Factor Tolerance [%] | Sensitivity Scale Factor Variation Over Temperature [%] |
---|---|---|
ISM330IS | ±2 | ±0.01 |
ICM-20948 | ±1.5 | ±3 |
ICM-42670-P | ±1 | ±0.007 |
ICM-42688-P | ±0.5 | ±0.005 |
LSM6DSO | ±1 | ±0.007 |
モータドライバ
小型でかつ1chあたり4.2 V入力で1 A以上流せるということで
DRV8836DSSRを使います。こちらはサイズが2×3 mmで2~7 V入力 1.5 A/chです。
nSLEEPとMODEピンは動作モードを指定するピンですが、後から設定を変えられるようにジャンパピンで3.3 Vに接続しています。
マイコン
マイコンはソフトの開発スピードを重視して、使い慣れているSTM32シリーズを利用します。
必要なペリフェラルは次の通りです。
ペリフェラル | ピン種類 | 数 |
---|---|---|
ADC | 壁センサx4 電源電圧x1 | 5 |
GPIO | UI用LEDx4 UI用SWx1 壁センサLEDx4 | 9 |
SPI | 磁気エンコーダx2 IMUx1 | 9 |
SPI_CS | 磁気エンコーダx2 IMUx1 | 3 |
PWM | モータx2 ブザーx1 | 5 |
UART | デバッグ用TXRX | 2 |
SYS | 書き込みピンSWD | 2 |
必要なピンは最低でも35本なので48ピンのマイコンを使います。ピンに余裕があるのでスイッチなどはさらに追加しています。
またパッケージは小さいマイクロマウスの基板に乗せるためになるべく小さいパッケージが良いですが、BGAは手はんだやリワークが難しそうなのでその次に小さいQFPを使います。マイコンの性能的にはまずはなるべく性能が高いものということで、サイズの条件を満たしつつG4シリーズの中で一番性能が高いSTM32G474CEU6を採用しました。ただ改めて振り返ると性能的にはF4,F7,H5シリーズから選んでもよかったかもしれません。
ピンアサインは以下の通りです。
その他UI
ブザーは小型なものを探した結果SMT-0440-T-HT-Rを使いました。駆動用のFETは壁センサ用LED駆動と同じFETを使いました。 こちらのブザーはサイズ的には4×4 mmとなかなか小型ですが、ちょっと電流を流しすぎかな?とも思います。特にバッテリー電圧低下時にブザーを鳴らしたいのですが、それなりに電流を流すのでちょっと微妙だったかもしれないです。
インジケーター用LEDは1005サイズのSML-P12YTT86R、SML-P12M2TT86Rを使いました。
UI用スイッチとしてNANOT 100 ASを使いました。こちらもサイズ的には2.10×1.65 mmとかなり小型ですが、かなり押しづらさを感じるスイッチでした。
回路全体
回路全体は以下の通りです。
PCBのアートワーク
以前の記事で機体の寸法は決めているのでそこに合わせてレイアウトします。
レイアウト時に注意した点は次の通りです。
・機体を迷路区画の中心に置いた際に柱がちょうど見れる位置と向きに壁センサをレイアウトする
・LiPoを接続するコネクタは何回も抜き差しすることを考慮してスルーホール部品を利用する
・電源スイッチは基板の外側にはみ出ないように外形を調整する
・UI用ボタンを極力離れるようにレイアウトする
・IMUを機体中心に配置
実装してから微妙だったポイントとしてはエンコーダ基板を立てる箇所です。かなりピッチが狭くかつ、クリアランスをなるべく守ろうとしてエッジまでパッドを伸ばさなかったためかなりはんだづけが難しくなってしまいました。エンコーダ基板の位置がかなり機体の中央まで来てしまっていたので足回りの設計の時点でもう少し基板レイアウトを意識できた方が良かったと思います。
部品実装と組み立て
こちらはJLCPCBで製造してもらいました。基板厚は1 mmにしています。
表面実装部品を実装した様子がこのようになっています。
エンコーダ基板やスルーホール部品、モータ等を接続してハードウェアは完成です。エンコーダ基板は先述の通りはんだづけがかなり難しかったので気合で頑張って実装しました。
次回からはソフトウェアについて書いていきます。