Очередное определение уровня заряда аккумулятора
- Войдите на сайт для отправки комментариев
Вс, 08/05/2016 - 16:48
int zarya[2]; //переменная для хранения 3 последний значений напряжения
unsigned long ms; //счетчик секунд
unsigned long ms2;
int Bat; //заряд батареи в Вольтах
byte q; // счетчик
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(A1, INPUT);
}
void loop() {
ms = millis();
if (ms - ms2 > 1000) {
ms2 = ms;
q++;
digitalWrite(2, HIGH); //активируем делитель
delay(50); //ждем пока напряжение выравняется
zarya[q] = analogRead(A1); //считываем напряжение
digitalWrite(2, LOW); //отключаем делитель
if (q == 3) {
q = 0;
Bat = ((zarya[0] + zarya[1] + zarya[2]) / 3 * 5 /*опорное напр*/ / 1024 ) * 2 /*напряжение на аккумуляторе*/ ; //усредняем и пересчитываем
}
Serial.print(Bat); //выводим результат 1 раз в секунду, хотя оно меняется лишь 1 раз в 3 сек.
}
}
И так, доброго всем времени суток. Поскольку при создании первого поста я куда-то не туда нажал, суть проблемы пишу ниже. Необходимо определять сколько осталось до разряда аккумулятора. Для этого было решено контролировать его напряжение. Был собран резисторный делитель, НО! для того что бы схема постоянно не потребляла ток было принято решение включать делитель лишь раз в секунду, как именно думаю понятно из схемы и кода.
Прошу указать замечания по схеме, есть ли какие-то критичесикие несоответствия законам физики, успеет ли выровняться напряжение на аналогвоом входе, а так же помочь упростить код. Заранее благодарен.
PS поправочный коэффициент связанный с опорным напряжением внесу позже, так же пересчет в проценты сделаю тоже опосля, после прочтения даташита на аккум, до какого состояния его можно разряжать и заряжать.
Надо полагать -10В это в простонародии GND. Схема не рабочая. Транзистор никогда открываться не будет. На входе А2 будешь всегда получать примерно 2.1В, т.е. по сути (напряжение на выходе Digital 2 минус падение напряжения на БЭ переходе транзистора)/2
Надо полагать -10В это в простонародии GND. Схема не рабочая. Транзистор никогда открываться не будет. На входе А2 будешь всегда получать примерно 2.1В, т.е. по сути (напряжение на выходе Digital 2 минус падение напряжения на БЭ переходе транзистора)/2
Про -10В Вы правы, это просто земля. Но почему транзистор открываться не будет? Земля ардуино и аккумулятора общая.
Ну фиг с ним с транзитором, если его заменить на реле?
Lictor, транзистор нужно переставить вниз, под нижний резистор.
В цепь базы обязательно включить токоограничивающий резистор.
А вообще, я бы туда поставил MOSFET (полевой транзистор). Так, навскидку, не скажу, но по-моему у них характеристики для данных целей намного лучше. Кстати, токоограничивающий резистор в этом случае можно не ставить.
Lictor, транзистор нужно переставить вниз, под нижний резистор.
В цепь базы обязательно включить токоограничивающий резистор.
А вообще, я бы туда поставил MOSFET (полевой транзистор). Так, навскидку, не скажу, но по-моему у них характеристики для данных целей намного лучше. Кстати, токоограничивающий резистор в этом случае можно не ставить.
Благодарю за ответ, но скетч будет работать коректно? Насколько быстро выравнивается напряжение после открытия транзистора на аналоговом входе?
По поводу кода -
- это переменная для хранения двух последних значений, не трёх.
В остальном, вроде, пойдёт для начала.
Насчёт "успеет ли установиться" значение на аналоговом входе - так не скажу, придётся экспериментировать. Теоретически, время будет сильно зависеть от номинала резисторов делителя.
По поводу кода -
- это переменная для хранения двух последних значений, не трёх.
В остальном, вроде, пойдёт для начала.
Насчёт "успеет ли установиться" значение на аналоговом входе - так не скажу, придётся экспериментировать. Теоретически, время будет сильно зависеть от номинала резисторов делителя.
Ну я все таки настаиваю, что для 3-х. (правда я несколько напутал с q, теперь исправил). В zarya первое значение запишется в zarya[0]
Точно, боюсь что так. :)
Тогда что, городить схему на паре транзисторов?
А я настаиваю, что всё же двух. :)
Первое значение запишется в zarya[0], второе в zarya[1].
А в zarya[2], при заданном размере, писать уже нельзя - вылезет за пределы выделенного массива.
Думаю что так. Точнее могу сказать, если покажете, программу после исправления.
Счас ещё выяснится, что ардуина питается от того же аккума через линейный стаб. Экономим 5µA, расходуем на питание 10mA :-)
Благодарю за подробный ответ. Только вопрос по
100% что так и будет :)
Автор читай:
http://jeelabs.org/2013/05/16/measuring-the-battery-without-draining-it/
Может у него токи утечки и саморазряда в разы больше, чем ток через сопрот 2М, тогда нет и смысла городить.
Действительно цифра такая в даташите есть. R входа АЦП 100Mом. Значит я со своими знаниями сильно отстал. Тогда с коммутацией можно не заморачиваться.
Действительно цифра такая в даташите есть. R входа АЦП 100Mом. Значит я со своими знаниями сильно отстал. Тогда с коммутацией можно не заморачиваться.
Так тогда получится, что аккум постоянно замкнут на нагрузке в 2МОм, что тоже не способствует сохранению заряда.
100% что так и будет :)
Автор читай:
http://jeelabs.org/2013/05/16/measuring-the-battery-without-draining-it/
Обязательно прочту. Атмега питается от своего источника, просто массы связаны. Читал, что такое допустимо.
Прочел. Попробую добавить кондер.
Так тогда получится, что аккум постоянно замкнут на нагрузке в 2МОм, что тоже не способствует сохранению заряда.
10V/2M=5uA - этим можно пренебречь.
Опорное напряжение лучше использовать внешнее. Если использовать напряжение +5 в. то оно зависит от напряжения питания платы и может меняться в зависимости от нагрузки. Попробуйте в качестве внешнего опорника использовать что то типа TL431A.
По поводу связи напряжения питания и процента заряда есть программа для андроид. Там есть циферки зависимости.
http://4pda.ru/forum/index.php?showtopic=401883
как по мне то делитель на резисторах можно подключать простой записью в порт и настройкой пина. настроил на вход и все резисторы в воздухе. настроил на выход и выдал ноль (подключил к земле) выдал 1 (подключил к питанию..
только вот мне кажется смысла в такой экономии нет