Может кому-то пригодится схема отслеживания напряжения на АКБ в машине для самостоятельного изготовления "умного" блока питания на
контроллере Arduino . Я (как и многие) отслеживаю состояние АКБ через делитель напряжения и аналоговый вход на Arduino. Как это делается можно почитать
здесь. Но есть альтернативный способ сделать это. Использовать регулируемый стабилитрон
TL431.
Работает схема следующим образом:если потенциал на Ref меньше 2,5В, стабилитрон TL431 заперт и через него проходит мизерный ток - 0,4 мА. Оптрон тоже заперт и на выходе уровень "LOW"(чтобы оптрон гарантированно был заперт при токе в 0.4 мА параллельно ставим резистор на 220 Ом ) .
Величина напряжения Uз при котором открывается оптрон , определяется делителем напряжения R1 и R2. Его можно рассчитать по формуле:
R2 = 2,5 х R1/(Uз — 2,5)
Я поставил R2 на 20К, что соответствует примерно 15В. И последовательно с R2 поставил подстроечник R7 на 10К, что в итоге дало возможность плавной регулировки порога срабатывания стабилитрона в интервале напряжения от 10.4 В до 14.6 В. Стабилитрон реагирует на изменение напряжения с точностью в 0.01 В.
Когда на контакте Ref больше 2,5 В, стабилитрон TL431 откроется и оптрон тоже, что даст на выходе уровень "HIGH". Это дает возможность отследить средствами Arduino напряжение на АКБ и что-то сделать по событию: если на выходе оптрона уровень "LOW" (АКБ просел), то выключаем что-то или все по алгоритму установленной программы, если на выходе оптрона уровень "HIGH"(АКБ в норме)- программа отрабатывает по алгоритму и ждет когда АКБ "обсохнет" и на выходе оптрона снова окажется "LOW". Если использовать две такие схемы, то можно одновременно отслеживать и "просадку", и максимально высокое напряжение на АКБ. Как-то так...
Схема мною была опробована на одном из моих
распределителей питания и как мне показалось - работала более стабильно, нежели с отслеживанием через аналоговые входы Arduino.
На мой взгляд этот метод гораздо проще и заслуживает внимания...
Но это мое мнение...
Небольшой простенький код :
PHP код:
int inPin = 5; // контакт, к которому подключен выход стабилитрона
int outPin = 13; //контрольный светодиод "АКБ в норме"
int outPin1 = 8; //контрольный светодиод "АКБ разряжен"
void setup()
{
pinMode(inPin, INPUT);// Устанавливаем контакт, как "Вход"
pinMode(13, OUTPUT); // Устанавливаем контакт, как "Выход" (просто для контроля работы):
pinMode(8, OUTPUT); // Устанавливаем контакт, как "Выход" (просто для контроля работы):
}
void loop()
{
if (digitalRead(inPin) == LOW)//если АКБ разряжен, то
{
digitalWrite (13, LOW);// выключаем контроль "АКБ в норме"
digitalWrite (8, HIGH); // и включаем контроль "АКБ разряжен"
}
else // иначе
{
digitalWrite (13, HIGH); // включаем контроль "АКБ в норме"
digitalWrite (8, LOW); // и выключаем контроль "АКБ разряжен"
}
}
Добавил вариант схемы блока питания с использованием вышеуказанного стабилитрона (на схеме Q1, Q2, Q3 - сборки на стабилитроне TL431 для отслеживания напряжения на АКБ).