답변:
배터리의 전압을 측정하는 방법과 관련하여 가장 간단한 방법은 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)
}
!기음
tinker.it는 Atmega168 / atmega328에 "비밀"전압 레벨 미터를 발표했습니다. 약간의 트릭으로 Arduino는 VCC를 내부 정밀 1.1v 기준과 비교할 수 있습니다. 설명 및 코드는 다음과 같습니다. https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
shutterdrone의 제안은 매우 훌륭하지만 아날로그 전압 기준이 측정되는 전압과 동일하다는 것을 암시하므로 세부 사항이 누락되었습니다 (명백하게 언급되지 않은 Arduino가 사용된다는 가정 제외).
uC 또는 외부 구성 요소에 없어도 ADC가 필요합니다. ADC는 입력을 비교하기 위해 아날로그 전압 레퍼런스 (ARef)가 필요합니다. ARef가 감지하는 전압과 동일하지 않게하려면 ADC가 항상 입력 및 기준 전압이 동일한 것으로 인식하므로 감지 된 전압의 아날로그 값이 항상 최대가되기 때문입니다. 전원 공급 장치 전압이 변해도 변하지 않는 매우 정확한 아날로그 전압 기준이 필요합니다. ADC는이 기준 전압을 배터리 전압과 비교합니다. 전압 분배기를 사용하여 ARef 범위로 감지되는 배터리 전압을 줄일 수 있습니다.
Arduino (Atmega8 / 168 / 328 / etc.)에는 ADC가 내장되어 있고 1.1V 아날로그 레퍼런스가 내장되어 있으므로 전압 분배기의 저항기 만 있으면됩니다. 배터리의 전류 소모를 줄이기 위해 저항에 매우 높은 값을 사용하고 싶다고 생각합니다.