回路図作成に入ります。
前回は回路のブロック図を書いて、どのように回路を構成するかを決めました。
構成が決まったら、KiCadを使って回路ブロックごとに回路図を引いてそれぞれを繋げていく作業となります。
回路図
回路設計を行います。完成した図面一覧はこちら。
壁センサ関連の回路
充電関連回路
ST-LINK関連回路
マイコン回路
前のブログで上げたSTM32F446回路設計の時とほぼ同じになります。上記の回路図には周りにごちゃごちゃと書いてありますが、基板設計の配線引き回し時にピンを変更できるかどうかをパット見でわかるようにしていました。
周辺の回路と接続するための、ピンの機能としては、以下になります。
機能 | 使用方法 |
入出力(GPIO) | インジケータの点灯/消灯の制御、ボタンの入力の取得 |
A/D変換(ADC) | 壁センサからの電圧変化を読み取る、バッテリ電圧を取得 |
D/A変換(DAC) | スピーカアンプへの電圧出力 |
タイマー(TIM) | PWM出力、エンコーダの値を取得 |
SPI通信(SPI) | ジャイロセンサとのデータのやり取り |
書き込み・デバッグ(SWD) | マイコンへの書き込み、マイコンからのデータ取得(メイン) |
UART通信(UART) | マイコンへの書き込み、マイコンからのデータ取得(サブ) |
USB通信(USB) | マイコンへの書き込み、マイコンからのデータ取得(サブ) |
モータドライバ
前回のブログで書いたとおり、Texas Instruments社DRV8424Pです。
モータドライバ周りの回路はこちらの図。
DRV8424Pには4つのハーフブリッジ構成のMOSFETが入っているのですが、安全で便利に使えるよう貫通電流を防ぐ仕組みや、過電流・低電圧・高温保護、エラー通知などの各種機能が内蔵されています。
プログラムや運用を間違えても、壊れない仕組みが入っているで開発が大変しやすくなります。
電流センサ内蔵で電流値も出力してくれるモータドライバなども選択肢に上がりましたが、2chのものがない、パッケージが大きい、値段が高いなどの理由で、今回は不採用にしました。
→訂正:VREFに0~3.3V入力で電流制御ができるようです。
DRV8424PとSTM32とのやりとりには、AIN1、AIN2、BIN1、BIN2、nSLEEP、nFAULTの6個のピンを使っています。
下記のデータシートにそれぞれのピンの入力機能が書かれています。
nSLEEPピンにHighを入力すると、スリープから起動して、モータに接続されている各OUTピンがオープン状態からVMかGNDのどちらかの電圧側へと内部のFETを介して接続されます。
AIN、BINそれぞれにPWMを入力すると、対応したハーフブリッジのピンがForward、Reverse、High-Side Brake、Low-Side Brakeになる。nFAULTはモータドライバ異常があった場合、HighからLowへ変化するエラー用信号です。
VREFA、VREFBは、AOUT、BOUTの最大出力電流の設定。3.3Vで2.5Aまで出力できます。DVDDが5V2mAを出力しているので、そこから分圧抵抗で3.3Vを作ることもできます(多分そのほうがいい)。
モータと一体化されているエンコーダは、コネクタJ5、J6を経由して接続します。エンコーダ用入力電圧は5Vで、パルスのHigh信号も5Vとなります。通常だと3.3V駆動のマイコンに5Vは入力できず、分圧したりレベルコンバータが必要になるのですが、STM32は5Vトレラントのピン(STM32F446のIOはDACピン以外ほとんど5Vトレラント)なので、そのまま接続できます。
スピーカアンプ
D級アンプのTexas Instruments社TPA2006D1DRBRを使います。以下が回路図です。
D級アンプは、入力された電圧をコンパレータで設定された増幅比と比較して、内部のハーフブリッジやHブリッジを動かすスピーカを駆動するためのPWMやPDM(パルス密度変調)を生成して、平均電圧を出力する仕組みのようです(参考URL参照)。
マイコンからDAC経由で出力された電圧0~3.3Vを入力として、スピーカが駆動できる電流に増幅します。スピーカへ出力する電圧も0~3.3Vなので増幅率は1:1です。
抵抗R15、R16で増幅率1:1、コンデンサC17、C18で20Hzのハイパスフィルタにしています。
※スピーカUGCT7525AN4は2000Hz未満は鳴らないことが後から判明
壁センサ回路
迷路の壁検出&距離測定のためのLED発光回路と、フォトトランジスタを使った受光回路の図です。
こちらはコンセプトのセンシングロバストで説明してます。
LEDを駆動するための定電流LEDドライバである新日本無線のNJU6080を使用しています。パッケージがSOT-23-6と小さいですが、電流を最大100mA流せます。
赤外線LEDのOSRAM製SFH4550は、最大100mAでの推奨動作電流のようなので、NJU6080の仕様に合致します。パルス発光などで100us以下であれば、突入電流1A流せる?ようですが、やりません。
フォトトランジスタの受光回路に関しては、AC特性を一定にする意図でバイアス用LEDを搭載しているのが通常と違う所となります。
昇圧回路
USBの5Vを10Vまで引き上げる昇圧回路です。使っているICはTexas Instruments社LMR62014XMFになります。R11、R12(コメントはデータシートの推奨回路リファレンス番号)の分圧抵抗で設定しているだけなので、簡単に使えます。変換効率は85%になります。
CVCC回路
リチウム系バッテリや鉛蓄電などの充電は、一定電流で充電しつつ、決められた電圧になったら、それ以上の電圧にならないよう一定電圧になるように電流を減少させ、電流が少なくなったら充電を停止します。Li-Poだと1セル4.2Vが最大電圧になります。
Li-Poを充電するための定電流定電圧回路になります。Texas Instruments社BQ24104を使っています。FBピンをプルアップでLi-Po2セル設定(8.4V)、R13で電流量を設定できます。R17、R19でプリチャージ(簡単に言うとちょろっと電流を流して様子見)を充電電流量の1/10にしておきます。オプションとしてRTHサーミスタ10kΩを使った温度監視もつけられるのでバッテリに貼り付けて接続できるようにしておきます。
電流量は、5Vバスパワー(最大2.5W)だということと、各回路の効率(昇圧回路&CVCC回路)を考えて、230mAになるようにしています。
ただし、このままではバッテリの内部抵抗等の影響で、各セルの電圧にバラツキ(例:4.3v+4.1V=8.4V)が発生します。
過電圧のまま放置すると内部でガス(酸素、二酸化炭素等)が発生、バッテリが劣化します。最悪だと、爆発炎上します。
追加情報:バッテリに接続しっぱなしで放置すると、充電ICの放電によりバッテリが過放電します。充電しない場合は、必ずバッテリコネクタを外しておきます。
セルバランス回路
充電中、充電後、使用中などで、セルの電圧が均一になるよう制御するために、セルバランスIC等便利なICが各社出ています。Texas Instruments社BQ29209を使っています。
このICは2セル専用です。2セルとして適した電圧かどうかチェックしているので、CVCC回路の不調時などで過電圧になったときは、C15で設定した3秒で様子を見た後、MOSFETにより充電を切ってくれます。
ただし、過電流(ショート等)や過放電の保護は行いません。
ST-LINK V2回路
デバッグできるように、Nucleoについてくる、ST-LINK/V2の回路をそのままコピーします。ここは特段言うことなし。(ライセンスの扱いが調べてもよく分からず)。
ソースコードは公開されていないため、NucleoからSTM32F103を引っ剥がして使いまわします。
UARTも使えるので、そのままマイコン回路のUARTに接続します。
→訂正:ST-LINKをつけたままでターゲットマイコンを使用する場合、NRSTには1kΩプルアップ抵抗が必須となりました。ST-LINKマイコンを起動(3.3V供給)せずに、マイコンを起動するとLow電圧となるので、1kΩ抵抗をプルアップすると2Vとなり、Highで認識されます。
(10kΩだと1.4V、4.7kオームだと1.6Vで起動せず)
レギュレータ回路
バッテリ電圧から、5Vと3.3Vを別々で生成します。
効率から考えると、8V→3.3Vではなく5V→3.3Vにしたほうがいいと思いますが、LED発光回路で5Vラインでは大きなパルス電流を流すため、そのノイズが乗ると予想されます。そのためジャイロセンサやフォトトランジスタなどのセンサで使う3.3Vと分けたいという理由があります。
まとめ
なぜかTexas Instruments社のICが殆どを締めてしまったのですが、モータ関連や電源関連では秋月電子通商で手に入る部品が多く、製品サイトに見慣れている≒ほかのICも探しやすいというのも理由として大きいかもしれません。
参考URL
D級アンプで、ポータブルで低電力のオーディオ回路設計を簡素化
リチウムイオン電池の劣化メカニズムの解明 -電解液の分解反応機構-