UPS для 12 вольт устройств

Обсуждаем контроллеры компании Atmel.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

В общем как-то уже обидно стало все "оцифровались", а я до сих пор аналоговый...
Короче начал потихоньку.
Собрал avr910, прошил его ардуиной, благо на этом этапе всё просто.
Но тк avrdude его напрочь не видел прошил другой прошивкой (usbasp) отсюда.
Собрал пока только вольтметр/амперметр по этой теме.
С этим пока все норм.
Сейчас есть парочку attiny13, задумался о бесперебойнике для роутера под гелиевый аккумулятор.
Нашёл этот вариант.
Ну не совсем то что надо, нагрузку не отключит и убъет аккумулятор, а так вроде и ничего (напряжение зарядки великовато для герметичного акк - надо отключать заряд 13.8, включать 12.5), хотя есть куда улучшить, hex то я из этого дела сделаю (там проект в avr studio), но с asm я совсем не в ладах, фьюзы как говорит автор заводские.
В принципе для отключения надо только реле повесить на свободную лапу мк, и уже можно пользоваться.
ы. На ардуине может быть и написал бы скетч для этого дела, но пока не понял прокатит это с attiny13?
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

Ну примерно нарисовал тренировочный вариант, светодиодов добавил для себя.
Главное чтобы не напутал куда и чего.
5 (PB0) и 7 (PB2) -ая лапы как ацп же могут работать?
А также 2 (PB3), 3 (PB4), 6 (PB1) как выходы.
По задумке - мониторим напряжение питания и аккумулятора, переключаемся на акк, или заряжаем оный.
Изображение
Контактная информация:
Реклама
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

Для заряда: проводилось ли сравнение с тупо буферным режимом, обоснован ли выбор?
Для разряда: многовато деталей.

На рисунке от батарейки постоянно идёт ток через (как минимум) резисторы и 7805.
Если очень хочется применить реле - хотя бы не стоит тратить ценную энергию на ещё и его катушки подогрев.
Для читаемости стараются рисовать: от входа к выходу (от причины к следствию) ~ слева направо; от большего напряжения к меньшему ~ сверху вниз; ...
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

nirq писал(а):Для заряда: проводилось ли сравнение с тупо буферным режимом, обоснован ли выбор?
Не проводилось. Заряд в планах выключать 14.2, включать 13.2 вольт. Вообще алгоритм можно изменить, источник тока есть, батарея прицепленная к такому ups величина постоянная, так что резистор под батарею.
nirq писал(а):Для разряда: многовато деталей.
Выкинуть успею.
nirq писал(а):На рисунке от батарейки постоянно идёт ток через (как минимум) резисторы и 7805.
Если очень хочется применить реле - хотя бы не стоит тратить ценную энергию на ещё и его катушки подогрев.
Опять таки полевиков напихать не проблема, пока мне нужно щелкающее + моргающее чудище (шутка), тк опыт в мк мягко говоря никакой, мне потренироваться надо.
Хотя была идея перекидывать питание 7805 на вход и отключать полностью батарею при достижении разряда.
nirq писал(а):Для читаемости стараются рисовать: от входа к выходу (от причины к следствию) ~ слева направо; от большего напряжения к меньшему ~ сверху вниз; ...
Ммм, питание слева, нагрузка справа, батарейка посередине чятдн?
...
Гляньте лучше взглядом с портами мк все в порядке? Приблизительную печать уже накидал.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград

Сообщение zenon »

Так, на предидущей схеме ошибочка, АЦП могут быть только 1,2,3,7 лапы. 1 - reset, значит только в крайнем случае.
Исправленная схема.
Изображение
Макет собрал, работает, за attiny13 трудится пока ардуина.
Как уже говорил - кодер я тот еще, вот такое примерно пока накидал:

Код: Выделить всё

static int   BAT;                     // напряжение на аккумуляторе
static int   PWR;                     // напряжение на входе
static byte  BATSTATE = 0;            // состояние аккумулятора 0 - при разрядке достиг минимума 10.80 (522)
static byte  WAIT     = 0;            // состояние зарядки 0 - заряжаем до 14.22 (688), 1 - ждем 13.22 (639)на аккумуляторе
const int FULL_BATT       = 709; // 14.22
const int LOW_BATT        = 522; // 10.80
const int SUP_BATT        = 650; // 13.22 напряжение включения добивки акк
const int DONT_BATT       = 532; // 11.00 не включаемся до этого напряжения после разряда
const int LOW_PWR         = 390; // 14.40 на входе (зарядку включать бесполезно)
const int OUT_PWR         = 360; // уровень напряжения на входе при котором переходим на аккумулятор

void setup() {
}

void loop() {
BAT = analogRead (0);
PWR = analogRead (1);
if ( BAT > DONT_BATT ) BATSTATE = 1; // если на акк больше 11.00
if ( BAT < LOW_BATT  ) BATSTATE = 0; // если на акк меньше 10.80
if ( BAT > FULL_BATT ) WAIT = 1;     // выкл зарядки (достигли заряда 14.22 на аккумуляторе)
if ( BAT < SUP_BATT  ) WAIT = 0;     // вкл зарядки  (упало до 13.2 на акк) 639
// пока на входе меньше 14 и аккумулятор не разряжен - работаем
if ( PWR < OUT_PWR and BATSTATE  ) digitalWrite (12, HIGH);
// на входе пусто и аккумулятор сдох !!!
if ( PWR < OUT_PWR and !BATSTATE ) digitalWrite (12, LOW);
// 
if ( PWR > LOW_PWR) digitalWrite (12, LOW);
if ( PWR > LOW_PWR and WAIT  )  digitalWrite (3, LOW);
if ( PWR > LOW_PWR and !WAIT )  digitalWrite (3, HIGH);
if ( PWR < LOW_PWR) digitalWrite (2, LOW);
}
как ни странно, уместился в 544 байта (в платах добавлена attiny13).
Как-то так:
Изображение
Контактная информация:
Реклама
Ответить

Вернуться в «AVR»