После сборки и недолгой эксплуатации системы видеонаблюдения, я столкнулся с одной неприятностью. Камера, расположенная на определённом удалении от сервера, отключалась при отключении электроэнергии. Камера подключалась к местной розетке.

      Поэтому пришлось установить в буфер по питанию камеры аккумулятор (благо питание камеры составляет 10 - 12В). Но в этом случае аккумулятор находился бы в постоянной подпитке от блока питания камеры, что отнюдь не очень полезно для самого аккумулятора. Поэтому было принято решение создать бесперебойник с функцией отключения зарядки в случае заряда аккумулятора до определённого напряжения. Сначала была идея сделать устройство с применением компаратора, даже схему собрал, но у схемы были недостатки которые приводили к дребезгу на уровне переключения компаратора, решить эту проблему можно было с помощью второго компаратора и триггера. Но так усложнять схему не было никакого желания. Да и компараторы, которые прислали мне китаисы, оказались бракованными (из 5 штук 1 рабочий). В общем решил я использовать в бесперебойном устройстве ардуино нано и для упрощения схемы поставил пару реле вместо ранее планируемых силовых транзисторов. В итоге получилось нижеследующее.

Код для ардуино, блока управления зарядкой аккумулятора.

Имя  
Эл. почта  
Сообщение  
  
#define analoginput     0   // аналоговый вход А0 (к аккумулятору)
#define digitalinput    7   // цифровой вход D7 (вход зар.)
#define outblock         3   // цифровой выход D3 (к транзистору реле блокировки)
#define outrele         4   // цифровой выход D4 (к транзистору реле зарядка)
#define lum_u           5   // цифровой выход D5 (к светодиоду Uвх)
#define lum_zar         6   // цифровой выход D6 (к светодиоду зарядка)

float vizm = 5.03
;       // значение опорного напряжения 
                          // (измеренное 5В вых. power arduino)
                          
boolean vinzar;        // переменная напряжения Вход зар. 
                         // LOW - на входе зар. нет напряжения
                         // HIGH - на входе зар. есть напряжение
float vak;             // переменная - уровень заряда аккумулятора
float v1;              // переменная - напряж. аккум. на входе А0

int a;                 // индикатор наличия сети, если а = 0 напряжения на входе 
                       // зарядного нет, а = 1 напряжение есть. 
int sum;               // Счетчик
void setup() {

// направление портов вход или выход

pinMode (digitalinput,INPUT);
pinMode (outblock,OUTPUT);
pinMode (outrele,OUTPUT);
pinMode (lum_zar,OUTPUT);
pinMode (lum_u,OUTPUT);

Serial.begin(9600);

digitalWrite(outblock, LOW); // включить реле блокировки (Uвых есть)
}

void loop() {
  v1 = analogRead(analoginput);  // чтение значения на входе А0
  vak = v1*vizm/1024.00/0.174;    // вычесление уровня заряда аккум.
  vinzar = digitalRead(digitalinput); //чтение значения на входе D7
  
  if (vinzar == HIGH && a == 0 & vak < 14)    // При появлении напряжения на входе зарядного и 
   {digitalWrite(lum_zar, LOW);  // идикатор наличия сети а = 0, то включаем реле
    digitalWrite(outrele, LOW);  // зарядка и светодиод зарядка. 
    delay(1000);}                // включаем задержку 1 сек для корректного работы реле
  
  if (vinzar == HIGH){                    // Если на входе зарядного есть напряжение,  
    digitalWrite(lum_u, LOW); a = 1;}     // то включить светодиод Uвх, 
    else {digitalWrite(lum_u, HIGH);      // иначе выключить светодиод Uвх
         digitalWrite(lum_zar, HIGH); a = 0;}    // выключить светодиод зарядка
  if (vinzar == HIGH && vak <= 11.00){   // Если на входе зарядного есть напряжение 
    digitalWrite(lum_zar, LOW);     // и напряж. аккумуляттора ниже 11.0 В, то 
    digitalWrite(outrele, LOW);}    // включить светодиод зарядка и включить реле
  if (vinzar == HIGH && vak >= 13.00){   // Если на входе зарядного есть напряжение 
     sum = sum + 1; delay(1000);      // и напряж. аккумуляттора выше 13.00 В, то     
     if (vak >= 14 || sum >= 60){     // отсчитать 60 секунд или напряжение на аккумуляторе 
      sum = 0;                        // станет 14В, затем
      digitalWrite(lum_zar, HIGH);    // выключить светодиод зарядка и выключить реле зар.   
      digitalWrite(outrele, HIGH);}}  
       
  if (vinzar == LOW && vak < 10.00)   // Если на входе зарядного нет напряжения 
                                    // и напряж. аккумуляттора ниже 10 В, то 
    {digitalWrite(outblock, HIGH);}  //  выключить реле блокировки
    else  if (vinzar == HIGH)      // иначе включить реле блокировки (Uвых есть)
    {digitalWrite(outblock, LOW);}  // при появлении входного напряжения

 
  Serial.print("Заряд аккумулятора "); 
  Serial.print(vak); Serial.println(" В");
  Serial.print("Напряжение на входе зарядного (есть или нет): ");
  Serial.println(vinzar);  
  if (digitalRead(outrele) == LOW){Serial.println("Аккумулятор заряжаеться.");}
     else {Serial.println("Аккумулятор не заряжаеться.");}
  }  

Файлы - со скетчем для ардуино, файлы PDF и САПР платы и STL файлы корпуса выложены на яндекс ресурсе.

Напишите отзыв.

     Блок-схема состоит из бока питания, блока понижающего преобразователя DC-DC, блока управления зарядкой (ардуино и реле) и аккумулятора.

Блок понижающего преобразователя DC-DC устанавливается если камера критична к напряжению выше 12,5В. Блок подключается в разрыв последовательно с диодом D2 (выход блока +12,5В к аноду диода, вход блока 14-15В к гнезду подключения анода диода в плате, земля - блока к земле – блока управления). В качестве блока понижающего преобразователя DC-DC использовал модуль питания LM2596.

Бесперебойное питание IP камеры видеонаблюдения.

Блок-схема устройства бесперебойного питания.

    Блок питания может быть любого исполнения - параметры Uвх=14-15В, Uвых=11-12.5В, I=3А.

Блок управления зарядкой.

 

 Схема блока управления в качестве основного элемента управления содержит плату ардуино нано. Светодиоды отображают наличие напряжения на входе устройства (с блока питания) и отображение включения зарядки. Реле предназначены для включения подачи напряжения на аккумулятор (зарядка) и реле блокировки (отключает нагрузку при сильном разряде аккумулятора). Резистор R9 мощный (чем мощней тем лучше J) Ватт 10 пойдёт. Данный резистор предназначен для ограничения тока заряда аккумулятора. Аккумулятор - 12В, 7А*Ч.

Диод D1_1 добавлен для увеличения разности потенциалов на аккумуляторе и выходом блока (за счёт напряжениия открытого перехода диода, я применял диоды HER308 и напряжение составило чуть более 1 В).

Алгоритм работы устройства.

    Алгоритм работы устройства:

 

  • В случае полной зарядки аккумулятора (выще 12,5В) - реле К2 отключено, а К1 (защита) включено;
  • В случае разряда аккумулятора ниже 11В и наличии входного напряжения - включается реле К2, К1 включено;
  • В случае разряда аккумулятора до 10-9В (зависит от точности настройки вольтметра на ардуино) и отсутствия  входного напряжения – выключается реле К1 отключая нагрузку (но ардуино не отключается до талого, надо иметь это ввиду).

 

   Формула расчёта вольтметра Uизм*Uоп/1024/0.174. Uизм - измеренное значение на входе АЦП, Uоп - опорное напряжение (в данном случае напряжение питания контроллера ардуино), 1024 максимальное значение разяда 10 разрядного АЦП. 

Коэффициент 0,174 в формуле вольтметра (разница между измеренным напряжением навходе АЦП и действительным на аккумуляторе) вычисляется по формуле: R5/(R4+R5). Нужно измерить точное значение резисторов R4 и R5 тестером. Также нужно измерить тестером опорное напряжение (Uоп) (питание контроллера – выход стабилизатора на плате ардуино).

Платка получилась вот такая.

Корпус устройства простенький распечатал на 3Д принтере.