로그인회원가입

내 RC카 배터리 얼마나 남았을까? 분압 저항으로 구현하는 실시간 전압계


리튬 이온 배터리는 완충 시 약 4.2V, 방전 시 약 3.0V~3.2V 사이의 전압을 가집니다. 하지만 ESP32-C3의 ADC 입력 전압은 보통 0V~2.5V(내부 설정에 따라 다름) 정도로 제한되어 있어, 배터리 전압을 직접 연결하면 MCU가 손상될 수 있습니다.

이때 가장 간단하고 효과적인 해결책이 바로 분압 저항을 사용하는 방법입니다.

1. 하드웨어 구성: 분압 저항(Voltage Divider) 원리

100kΩ 저항 두 개를 직렬로 연결하면 전압이 정확히 **절반(1/2)**으로 줄어듭니다. 배터리 전압이 4.2V일 때 ADC 핀에는 2.1V가 입력되므로 ESP32-C3에서 안전하게 읽을 수 있습니다.

  • 준비물: 100kΩ 저항 2개, ESP32-C3, 리튬 이온 배터리
  • 회로 연결:
    1. 배터리 양극(+) → 첫 번째 100kΩ 저항 시작점 연결
    2. 두 저항 사이의 중간 지점 → ESP32-C3의 ADC 핀(예: GPIO 0) 연결
    3. 두 번째 100kΩ 저항 끝점 → 배터리 음극(-) 및 ESP32-C3 GND 공통 연결

2. 마이크로파이썬(MicroPython) 구현 코드

ESP32-C3에서 ADC 값을 읽어 실제 배터리 전압으로 환산하는 코드입니다.

Python “battery.py”

3. 더 정확한 측정을 위한 팁

  • 저항 오차: 100kΩ 저항이라도 미세한 오차가 있으므로, 멀티미터로 실제 배터리 전압을 재보고 코드의 2 대신 2.05와 같이 미세하게 조정(Calibration)하면 더 정확합니다.
  • 전력 소모: 상시 구동 기기라면 100kΩ 이상의 높은 저항을 사용하거나, 측정할 때만 회로를 연결하는 트랜지스터 스위치를 추가하는 것이 좋습니다.
  • 노이즈 제거: adc.read() 값을 여러 번 읽어 평균을 내면 값이 훨씬 안정적으로 출력됩니다.

4. 맺음말

전원을 직접 연결하기 힘든 위치에 온습도계를 둘 때는 배터리를 쓰게 되죠. 이때 배터리 전압을 실시간으로 체크해주면 정말 편리해요. ‘배터리가 다 됐어요!’라고 기기가 스스로 알려줄 수 있도록 이번 강좌의 ADC 측정 회로를 꼭 적용해 보시기 바랍니다.

코멘트

답글 남기기