ロボットは電池で動作します。電源電圧を ADCで測定して監視することにより安全・安定した動作を行います。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
電池の容量を知る
電池の充電残容量は電池の電圧から間接的に知ることができます。電源(電池)の電圧を ADC( Analog to Digital Converter )で測定します。標準で Peripheral MCU内の ADCを使用します。
オプションで Body MCUの ADCを使用することもできます。詳しくはこちらをご覧ください。
電圧による電池の状態は以下のとおりです。これは電池ひとつあたりの電圧です。4本を直列に接続していますので電源電圧の測定では以下の電圧の 4倍になります。( 括弧内の電圧 )
- 1.4V ~ 1.45V: フル充電状態( 5.6 ~ 5.8V )
- 1.2V: 通常の放電状態( 4.8V )
- 1.0V以下: 再充電が必要( 4.0V )< この電圧になったら動作を停止
- 0.8V以下: 過放電状態( 3.2V )
電圧測定は放電中に行うと正確な状態で測定できます。電池を放置した場合電圧が回復することがあるため、負荷をかけた状態で測定することが望ましいです。
ESP32 内蔵の ADC
ESP32 に内蔵している ADCの特徴は以下のとおりです。
- 測定可能な電圧範囲: 0 ~ 3.3V
- 分解能: 12bit ( 9bit, 10bit, 11bit, 12bit を設定により変更可能 )
- アッテネーション機能: 0dB, 2.5dB, 6dB, 11dB に設定可能
- 2系統: ADC1、ADC2( ADC2は Wi-Fi有効時に使用不可 )
- ESP32 の ADCは精度、直線性が良くない。( 特に 3.3V近くの電圧では顕著 )
ESP32の ADCは低い精度な傾向があり、外部ノイズや電源の変動、リニアリティ(直線性)の問題でキャリブレーションが必要な場合があります。アッテネーション機能と測定できる電圧入力は以下のとおりです。
- 0dB: 0V〜1.1V(デフォルト)
- 2.5dB: 0V〜1.5V
- 6dB: 0V〜2.2V
- 11dB: 0V〜3.9V( 測定可能範囲から実際は 3.3Vが上限 )
分解能が 12bit は測定データとして、0 ~ 4095 になります。3.3Vを基準電圧とすると 1ステップあたりの電圧は 0.8mVになります。これらから、正確に測定できる電圧は「 電源電圧 3.3V、11dB減衰で 150 ~ 2,450mV の範囲 」となります。
STM32 内蔵の ADC
Leafony の STM32 Leafに搭載している STM32L4シリーズに内蔵している ADCの特徴は以下のとおりです。
- 測定可能な電圧範囲: 0 ~ 3.3V( STM32 の外部リファレンス電圧ピン / Leafony Bus の F4 AVREF )
- 分解能: 16bit ( 16bit, 14bit, 12bit, 8bit, を設定により変更可能 )
- 低電力消費: 低電力モードでも動作可能で、スリープモードにも対応しています。
- サンプリング時間: 各チャネルごとに設定できます。
- キャリブレーション機能: オフセットエラーやゲインエラーを補正することができます。
- ハードウェアオーバーサンプリング: ハードウエアで対応可能です。
詳細な機能を使用する場合は、STMicroelectronics社の STM32開発環境の HALライブラリ等を使用します。
分解能が 12bit は測定データとして、0 ~ 4095 になります。基準電圧( AVREF )を+3.3Vとすると 1ステップあたりの電圧は 0.8mVになります。これらから、測定できる電圧は「 基準電圧 3.3V、0 ~ 6.6V の範囲 」となります。
回 路
電源検出回路は以下のとおりです。
電源(電池)の電圧を R11, R12( 1MΩ )で1/2に分圧します。測定精度を上げるために 1%の抵抗をします。
この抵抗は電源に並列に入るため、常時電流が流れます。消費電力を抑えるために抵抗値は高く( 1MΩ )しています。
コンデンサ( C13 10uF )はノイズ対策用です。
標準は Peripheral MCUの ADCを使用します。オプションで半田ブリッジパターン JP2を切り換えることにより Body MCUの ADCで測定できるように変更できます。
電源電圧を 1/2に分圧して電圧を測定します。ADCの測定可能範囲に入っていることを確認します。ESP32の ADCは精度の高い測定範囲が限られますので、判断の対象となる電圧がその測定範囲に含まれていることを確認します。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet