Индикатор низкого заряда батареи


22

Я рассчитываю сделать индикатор заряда батареи, который можно использовать вместе с микроконтроллером. Я надеюсь, что смогу тогда прочитать текущее время автономной работы и все больше перевести микроконтроллер в режим сна, чтобы продлить срок службы батареи.


1
Какой микроконтроллер?
Брайан Карлтон

Ответы:


13

На основной вопрос, как измерить напряжение батареи, самый простой метод - это использовать один из выводов АЦП на Arduino.

Если вы подаете 5 В от батареи (маловероятно), то вы можете запустить + прямо на один из аналоговых выводов и использовать analogRead () - каждое приращение значения (от 0 до 1023) будет представлять 4,9 мВ. Таким образом, умножьте значение чтения на .0049, чтобы получить показания вольт.

Если вы используете напряжение выше 5 В (более вероятно), вы можете использовать схему делителя напряжения (см .: http://en.wikipedia.org/wiki/Voltage_divider ), чтобы подать напряжение, которое вы посылаете, на аналоговый вход для <= 5 Если вы используете 12 В, вам нужно разделить напряжение примерно на 1/3. Затем, после умножения значения АЦП, умножьте на 3, чтобы получить фактическое напряжение.

Таким образом, при использовании 12 В и 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
У меня есть две основные вещи, чтобы добавить к этому. Во-первых, большинство аккумуляторов 12 В не разряжаются при 0 В, а вместо этого при совсем близком, по крайней мере, в пределах 5 В, напряжении вашего полного заряда. Обычный метод получения измерений с более высоким разрешением в рабочем диапазоне - понижение напряжения с помощью стабилитрона. Резистор последовательно с стабилитроном и вы измеряете поперек резистора. Во-вторых, большинство людей не осознают, что вам нужно получать ток от батареи, чтобы получить представление о оставшейся мощности.
Кортук

@Kortuk: Не могли бы вы сделать два разъяснения для моего обучения: (1) Чтобы достичь диапазона допустимых напряжений, вы предполагаете, что метод стабилитронов даст более высокое разрешение, чем метод делителя напряжения? (2) Почему вы особо упомянули здесь, что «вам нужно провести ток ...» и т. Д.?
прикус

22

tinker.it опубликовал «секретный» измеритель уровня напряжения в Atmega168 / atmega328. С небольшой хитростью Arduino может сравнить VCC с внутренней точностью 1.1v. Объяснение и код здесь: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/


отлично, я использую Atmega на батарейках и не смог получить достоверное значение VREF. спасибо за размещение этого, это решило мою проблему как волшебство!
Раду

10

Предложение shutterdrone очень хорошее, но не хватает деталей, так как это означает, что аналоговое опорное напряжение такое же, как напряжение измеряется (в сторону от предполагая, что Arduino используется, который явно не указано иное).

Вам понадобится АЦП, будь то встроенный в ваш ОК или внешний компонент. АЦП необходим аналоговый источник опорного напряжения (AREF), чтобы сравнить вход с. Вы не хотите, чтобы ARef быть таким же, как напряжение вы будете зондирование, потому что тогда АЦП всегда будет видеть входные и опорные напряжения в равных условиях, поэтому аналоговое значение для считываемого напряжения всегда будет максимальным. Что вам нужно, это очень точное опорное напряжение аналогового что не будет изменяться по мере изменения напряжения питания. АЦП будет сравнивать, что опорное напряжение на напряжение аккумуляторной батареи; Вы можете использовать делитель напряжения, чтобы уменьшить напряжение аккумулятора в диапазоне ARef.

Arduino (Atmega8 / 168/328 / etc.) Имеет встроенный АЦП и встроенный аналоговый эталон 1,1 В, поэтому единственными внешними компонентами, которые вам нужны, являются резисторы для делителя напряжения. Я думаю, что вы также хотели бы использовать очень высокие значения для резисторов, чтобы уменьшить ток утечки на батарею.


2
Отличные очки - и вы правы, что я (неправильно) принял Arduino в миксе. =)! c
shutterdrone
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.