배터리 부족 표시기


22

마이크로 컨트롤러와 함께 사용할 수있는 배터리 수명 표시기를 만들고 싶습니다. 배터리 잔량을 유지하기 위해 남아있는 현재 배터리 수명을 읽고 점차 마이크로 컨트롤러를 절전 모드로 전환 할 수 있기를 바라고 있습니다.


1
어떤 마이크로 컨트롤러?
Brian Carlton

답변:


13

배터리의 전압을 측정하는 방법과 관련하여 가장 간단한 방법은 arduino의 ADC 핀 중 하나를 사용하는 것입니다.

배터리에서 5V를 제공하는 경우 (아마도) 핀에서 아날로그 중 하나에 +를 직접 실행하고 analogRead ()를 사용할 수 있습니다-0에서 1023 사이의 각 증분은 4.9mV를 나타냅니다. 따라서 읽은 값에 .0049를 곱하여 볼트를 읽습니다.

5V보다 높은 전압을 사용하는 경우 (아마도) 전압 분배기 회로 ( http://en.wikipedia.org/wiki/Voltage_divider 참조 )를 사용하여 아날로그 입력으로 보내는 전압을 가져올 수 있습니다 <= 5v. 12V를 사용하는 경우 전압을 약 1/3로 나누고 싶을 것입니다. 그런 다음 ADC 값을 곱한 후 3을 곱하여 실제 전압을 얻습니다.

따라서 12V 및 1/3 전압 분배기를 사용하는 경우 :

#define BAT_PIN 14

float read_batt_volts(void) {

  int val = analogRead(BAT_PIN);

  float volts = (float) val * (float) 0.0049 * (float) 3;

  return(volts)
}

!기음


2
여기에 추가해야 할 두 가지 중요한 사항이 있습니다. 첫째, 대부분의 12V 배터리는 0V에서 죽지 않고 전체 충전 전압의 5V 이내에서 아주 가까운 곳에서 죽습니다. 작동 범위에서 더 높은 해상도를 측정하는 일반적인 기술은 제너 다이오드로 전압을 낮추는 것입니다. 제너와 직렬로 연결된 저항이며 저항을 가로 질러 측정합니다. 둘째, 대부분의 사람들은 남은 전력에 대한 좋은 아이디어를 얻기 위해 배터리에서 전류를 끌어 야한다는 것을 인식하지 못합니다.
Kortuk

@Kortuk : 내 학습에 대해 두 가지 설명을 할 수 있습니까? (1) 핀 허용 전압 범위 내에 들어가려면 제너 다이오드 방식이 전압 분배기 방법보다 높은 해상도를 제공 할 것을 제안합니까? (2) 왜 여기에 "현재를 끌어 내야한다 ..."등의 특별한 언급을 했습니까?
boardbite

22

tinker.it는 Atmega168 / atmega328에 "비밀"전압 레벨 미터를 발표했습니다. 약간의 트릭으로 Arduino는 VCC를 내부 정밀 1.1v 기준과 비교할 수 있습니다. 설명 및 코드는 다음과 같습니다. https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/


우수, 나는 배터리에서 atmega를 실행하고 있으며 신뢰할 수있는 vref 값을 가질 수 없었습니다. 이것을 게시 해 주셔서 감사합니다. 마술 같은 내 문제를 해결했습니다!
radhoo

10

shutterdrone의 제안은 매우 훌륭하지만 아날로그 전압 기준이 측정되는 전압과 동일하다는 것을 암시하므로 세부 사항이 누락되었습니다 (명백하게 언급되지 않은 Arduino가 사용된다는 가정 제외).

uC 또는 외부 구성 요소에 없어도 ADC가 필요합니다. ADC는 입력을 비교하기 위해 아날로그 전압 레퍼런스 (ARef)가 필요합니다. ARef가 감지하는 전압과 동일하지 않게하려면 ADC가 항상 입력 및 기준 전압이 동일한 것으로 인식하므로 감지 된 전압의 아날로그 값이 항상 최대가되기 때문입니다. 전원 공급 장치 전압이 변해도 변하지 않는 매우 정확한 아날로그 전압 기준이 필요합니다. ADC는이 기준 전압을 배터리 전압과 비교합니다. 전압 분배기를 사용하여 ARef 범위로 감지되는 배터리 전압을 줄일 수 있습니다.

Arduino (Atmega8 / 168 / 328 / etc.)에는 ADC가 내장되어 있고 1.1V 아날로그 레퍼런스가 내장되어 있으므로 전압 분배기의 저항기 만 있으면됩니다. 배터리의 전류 소모를 줄이기 위해 저항에 매우 높은 값을 사용하고 싶다고 생각합니다.


2
우수한 점-그리고 당신은 내가 (올바르게) 믹스에서 Arduino를 가정 한 것이 맞습니다. =)! c
shutterdrone
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.