Контроллер для солнечных панелей ардуино

Что мы будем делать?

Солнечный контроллер своими руками — UNO версия

Если вы пришли по прямой ссылке на эту страницу, например из поисковика, то я рекомендую, в начале вам ознакомится с этой статьей «контроллер солнечного коллектора на Arduino MEGA». В данной же статье, речь пойдет об его модификации, т.е контроллере, построенном на базе Arduino UNO. Это очень популярная модель плат ардуино, но менее «навороченная», если так можно выразиться.

Вид готового контроллера солнечных коллекторов Arduino UNO, в сборе

Чтобы вместить прошивку в Arduino UNO пришлось оставить все самое основное и убрать много красивостей. Ниже приведена сводная таблица с основными отличиями:

Как видно из таблицы, ни энкодер, ни слот SD карты, ни дисплей 20×04 в данной версии не поддерживаются. Это очень простой и недорогой контроллер, выполняющий свои функции.

Зато, контроллер на базе Arduino UNO собирается гораздо проще, потому что применяется готовый LCD Shield. Его надо лишь аккуратно вставить над основной платой и получаем практически готовый контроллер. Нам остается только подключить часы, реле и температурные датчики и все! В статье, ссылку на которую я разместил в начале этой страницы, подробно описано подключение всех компонентов. У нас подключение почти «такое же», за исключением номеров контактов. На плате Arduino UNO они немного другие.

Компоненты Контакты Arduino UNO
Датчик TO D11
Датчик Tk D1
Датчик T2 D0
Датчик T3 D3
Реле Р1 A1
Реле Р2 A2
Расходомер D2
Датчик солнца A5
Часы, контакт SDA SDA
Часы, контакт SLC SLC

Это и есть все наше подключение. Для минимальной работы не обязательно иметь/подключать все 4 датчика. Контроллеру будет выполнять свои функции при наличии двух датчиков – Tk и T2. Это минимум.

Подключение к LCD shield — температурные датчики, реле

Подключение модуля часов DS1307

Думаю, что больше пояснений не требуется.

Страница загрузки прошивки для этого контроллера на той же странице, где и прошивка для Arduino MEGA – просто выберите нужный тип UNO/MEGA во время скачивания. Если вы оставите ваш email, то позже вам придет уведомление о выходе новой версии прошивки или каких либо аппаратных улучшений.

Источник

Если кто «не в теме», лучше ознакомиться с началом истории тут .

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

Заранее прощу прощения, за бессистемное изложение материала, сумбурный поток мыслей и возможные стилистические и грамматические ошибки 🙂

Еще летом 2014-го я начал изготовление простейшего контроллера заряда солнечной панели. Но, к сожалению, реальной панели у меня в тот год не появилось. Подвели продавцы. И все наработки были применены для изготовления СМАРТ-зарядного для автомобильных АКБ.

Плата осталась практически без изменений, как говорят: «Те же eggs, только в профиль».

Все это было размещено в корпусе от источника бесперебойного питания (ИБП). Кстати, трансформатор взят от того же ИБП. Диодную сборку и полевик (самые горячие элементы) разместил на радиаторах. В архиве есть фотки процесса размещения всего этого хозяйства, вдруг кому будут полезны.

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

Вот еще один вариант: доработанная версия платы от одного из пользователей этого ресурса, Александра (публикую с его разрешения).

Сложено в отдельную папку в архиве. В его версии мне понравилось следующее: применение Ардуино нано и подключение LCD по I2C-протоколу.

И вот, радость-то какая! В прошлом году (2015) мне все же удалось заполучить в свое распоряжение солнечную панель. Гораздо мощнее (100 Ватт, вместо планируемых 50), но за те же деньги 🙂

Результаты испытаний первой версии контроллера оказались не очень радужными: весьма ощутимо грелись диод (по входу) и полевик. Хотя, все «с большего» работало. Отчаянные попытки что-то улучшить (замена диода, установка дополнительного радиатора) в ввиду компактности шилда не привели ни к чему хорошему… Короче в определенный момент диод не выдержал и просто треснул.
Воодушевленный результатом, я приступил к разработке нового варианта контроллера уже по вот такой схеме:

Из крупных изменений: в качестве преобразователя я использовал MC34063. На это было несколько причин:
— выдаваемая мощность оказалось более чем достаточна для питания моей платы
— этих микросхем (в виде автомобильных зарядок) у меня оказалось (спасибо тебе, Павел!) в таком количестве, что не знаю куда их девать 🙂
Далее, вместо классической Ардинки, я использовал Arduino nano. Тот же функционал, но гораздо компактнее. Экран подключается теперь по протоколу I2C. Сделан разъем подключения дополнительных светодиодов. Полевик я взял N-канальный… В схеме для его нормальной работы применено решение Pump Charging (D5-D6-D7-C3-C4-C5). Для защиты и безопасности установлены аж 3 (три) предохранителя и супрессор. Появился узел управления нагрузкой. Сначала я проверил задумку на макетке.
Работает.
Плата разведена, сделана и проверена. Вышло вполне компактно. Пора приступать к полевым испытаниям (весна 2016).

Код я практически оставил без изменения с мелкими «допиливаниями» и «причесываниями». Попутно словил себя на мысли, что неплохо бы нумеровать билды и этот номер выдавать на дисплей при старте (а то очень легко запутаться).

В таком варианте я уже практически без боязни оставлял устройство на даче на все лето и осень. Для АКБ и инвертора соорудил небольшой столик из поддона. Этакая маленькая электростанция.

Чуть позже обзавелся достаточно большим аккумулятором (с какого-то зерноуборочного комбайна) в очень даже работоспособном состоянии. И все… потом отвлекся на другое, потом «Кибервесна», потом работа подвалила (была деноминация у нас в стране). Как говорится, «то да се», «пятое-десятое»… И третья версия (с учетом всех моих хотелок) пока только у меня в голове… Не могу обещать, что дойдут руки.

Весь материал забираем тут . Пользуйтесь на здоровье.

Источник

Двухосевой солнечный трекер на Arduino

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

В данном случае прототип солнечного трекера собирался на базе Arduino. Для вращения платформы в горизонтальной и вертикальной оси используются сервоприводы, угол поворота которых зависит от мощности падающего на фоторезисторы света. В качестве корпуса используется всеми любимый советский металлический конструктор.

Нелишним будет упомянуть, что всё это делалось как курсовой проект, поэтому я не стал заниматься приобретением и креплением собственно, самой солнечной панели и аккумулятора, так как их наличие не имеет отношения к работе трекера. В оправдание могу сказать, что возможности советского металлического конструктора необъятны, так что прикрутить к нему небольшую солнечную панель для зарядки телефона не составит особенного труда, если возникнет такое желание.

Итак, что использовалось при сборке:

  • Arduino MEGA 2560 R3
  • Сервопривод Tower SG90 — 2x
  • Фоторезистор MLG4416 (90mW; 5-10kOhm/1.0MOhm) — 4x
  • Звонок пьезоэлектрический KPR-G1750
  • Металлический конструктор
  • Резистор выводной 10 kOhm; 0,25W; 5% — 4x
  • Печатная макетная плата, корпус, шнуры для соединения

Mega использовалась исключительно по причине её наличия в шкафу на момент утверждения темы проекта, если учитывать покупку всех элементов с нуля, то в данном случае вполне себе хватит и Uno, но выйдет, конечно, дешевле.

Внезапно оказавшийся в списке спикер потребовался для пущего эффекта высокотехнологичности. Дело в том, что сервоприводы могут поворачиваться только на 180 градусов, да большего нам и не требуется, при учёте того, что следим мы за солнцем. Но при тестировании работы проекта, когда за солнцем в две минуты демонстрации особо не последишь, оказалось, что неплохо было бы сигнализировать, в какой момент стоит перестать размахивать фонариком, потому что сервопривод достиг мёртвой зоны. Для этого и был добавлен вышеупомянутый звонок.

Итак, начнём собирать трекер. Для начала разделим предстоящий фронт работ на условные четыре этапа: сборка подставки для солнечных панелей и крепление сервоприводов, крепление к собранной конструкции светочувствительных элементов, пайка и написание кода для Arduino.

Фигура первая: конструкторская

Путём интенсивного поиска была найдена парочка примеров конструкции подобных устройств. Наибольшего внимания удостоились два:

  • www.youtube.com/watch?v=SvKp3V9NHZY – победитель в номинации «Подача материала» проиграл в надёжности и практичности устройства: конструкция представляет собой соединение двух сервоприводов напрямую.
  • www.instructables.com/id/Simple-Dual-Axis-Solar-Tracker — собственно, отсюда и была взята основная идея моей конструкции, за исключением материала и общего внешнего вида поворотного корпуса.

Сборка из металлического конструктора была сопряжена с определёнными трудностями: пришлось подогнать дрелью отверстия для подключения сервоприводов, а также надёжно приклеить их к платформам в двух плоскостях. То, что получилось, показано на видео ниже.

Фигура вторая: схемотехническая

Главной задачей крепления фоторезисторов было даже не их подключение, а обеспечение разделения света для каждого из четырёх элементов. Понятно, что оставить их без каких-нибудь перегородок было нельзя, так как тогда значения, получаемые с фоторезисторов, были бы примерно одинаковы и поворота бы не получилось. Тут, к сожалению, возможности металлического конструктора подвели, главным образом из-за наличия во всех деталях отверстий. Найти подходящей металлической детали не получилось, поэтому мой солнечный трекер обзавёлся инновационной перегородкой из картона. Несмотря на достаточно убогонький вид, своё предназначение она выполняет отлично.

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

Немного схемотехники: подключение светочувствительных элементов осуществляется по схеме делителя напряжения, для чего потребовались указанные в списке элементов выводные резисторы. Все фоторезисторы припаяны к общему контакту, подключенному к пятивольтному выходу питания Arduino. Для удобства и эстетики ноги фоторезисторов припаяны к контактам двух трёхжильных изолированных проводов (один контакт остался неиспользуемым и спрятан). Все схемотехнические детали можно рассмотреть на схеме ниже.

Фигура третья: паяльная

Что-либо подробно описывать тут не несёт особого смысла, поэтому просто прилагаю фото используемых материалов и полученную в результате макетную плату.

Фигура четвёртая: с новым кодом!

Общий алгоритм работы заключается в обработке данных с фоторезисторов при помощи АЦП. Имеем 4 элемента, то есть 4 показания, находим среднее показание по левой стороне ((верхний левый + нижний левый) / 2), аналогично по правой, верхней и нижней сторонам. Если разница по модулю между левой и правой стороной больше порога, то осуществляем поворот в сторону с большим средним значением. Аналогично для верха и низа. Особые плюшки в коде: можно задавать вручную чувствительность срабатывания и максимальный и минимальный угол в двух плоскостях. Листинг рабочего кода приведён ниже.

Результат работы

Источник

Небольшое вступление.
1- Заранее предчувствуя высказывания и «советы» типа, “а на кой это нужно”, «Проще кабель проложить”, “купи готовое и не парься”, скажу сразу, весь этот проект носит скорее академический интерес, а не экономический.
2 — Читать данный „опус“ можно „по диагонали“, т.е., перейти непосредственно к практическим частям. А именно „Переделка UPS в инвертор 220 Вольт“ и „Самостоятельное изготовление PWM контроллера заряда аккумулятора“. Дело в том, что я не хотел разрушать целостность повествования, и мне было интересно!

Лето. Период дачного сезона в полном разгаре. Всякие посадки и крупные работы сделаны, теперь тупо шашлыки, отдых и ожидание сбора урожая :). И моя очередная попытка совместить полезное с приятным. А именно, захотелось мне попробовать свои силы в организации энергоснабжения второго этажа дачи (пока его там нету в принципе, только с помощью удлинителя).
Немного погуглив, и почитав соответствующие ресурсы я обозначил “кубики” будущего проекта. Типовая блок-схема организации “солнечного электроснабжения”.


»В крупную клетку» — все просто! Очень удобно, что любой такой кубик можно заменить/проапгрейдить в дальнейшем. Например, можно будет добавить в параллель еще один аккумулятор. Или доустановить солнечную панель, если мощности этой недостаточно ну и так далее. Короче, решил попробовать.

Как говорят, “Большому кораблю — большое плавание”, так и “К серьезному проекту — научный и тщательный расчет!” 🙂

Энергетическое обоснование.
Вот что я планирую использовать на втором этаже дачи:

Посидеть часок другой с ноутом (80 ватт), возможно роутер с 3G модемом, пару лампочек светодиодных (10..20 ватт), небольшой телевизор (80..100 ватт), небольшой паяльник иногда (25..35 ватт), ну и подзарядить телефон (планшет) (пусть еще 10 ватт). Это все, как правило, не одновременно и пару часов. Считаем, 250 ватт. Час работы всех энергопотребителей — 0,25 кВатт-час.
(Тут можно посмотреть примеры расчетов:
ru.wikipedia.org/wiki/%D0%9A%D0%B8%D0%BB%D0%BE%D0%B2%D0%B0%D1%82%D1%82-%D1%87%D0%B0%D1%81 )
Обычный, средний автомобильный аккумулятор (55 А*Ч) имеет запас энергии 55*12=660 Ватт. Т. е., при грубом подсчете (даже с учетом всяческих потерь при преобразовании) должно хватить на больше, чем два часа (660/250=2.6) работы всего запланированного электрооборудования включенного одновременно. Еще немаловажно, что пользоваться этим я буду только в выходные- 2 дня, а заряжаться АКБ будет 5 дней. Даже учитывая, что погода у нас (в Республике Беларусь) не всегда солнечная, 50 ватная солнечная панель (3 Ампера) должна заряжать АКБ за 12 часов ВЕЛИКОЛЕПНОЙ солнечной погоды. Это теория. Практика говорит, что нужно накинуть еще. Хорошо-хорошо, пусть заряжается 20 часов. Очень-очень надеюсь, что за неделю в сумме должно же набраться эти ясные/солнечные 20 часов 🙂

Естественно, все блоки для солнечного электроснабжения можно купить. (Да и вообще, можно купить в этом мире практически все. Ну, кроме, наверное, самих денег. Но тогда вообще скучно жить).

Так что, дайте попробуем максимально все сделать самостоятельно.
Итак, Солнечная панель (далее по тесту СП) и аккумулятор (далее в тексте АКБ) — ничего не попишешь… Сэкономить не удастся.
Эти компоненты придется купить.
(Небольшая поправка насчет СП. Изначально я думал собрать ее самостоятельно, из отдельных панелек (0.5 вольта при стоимости около 3 у.е.). Получалось, что как минимум мне понадобиться порядка 30 панелек. Плюс ровные руки и куча терпения и аккуратности. Но, к счастью, нашел людей продающих готовые панели для наружного применения и не очень дорого-80 у.е. Ее параметры: 20 вольт холостого хода и ток КЗ порядка 3-х Ампер. Мощность 50 Ватт. Прямо, то, что мне и нужно. Заказал, пока жду).

А вот инвертор и контроллер — все в наших руках 😉

ИНВЕРТОР.
Для преобразования электроэнергии из 12 вольт АКБ в переменные 220 Вольт, обычно используются инверторы. Естественно, идеально для такого применения подойдет автомобильный инвертор. Но… Любимый принцип Ивановича: “используй то, что под рукою и не ищи себе другого”. Попробуем в качестве инвертора использовать UPS. Он же бесперебойник.

Думаю, в каждом офисе найдется парочка исправных ИБП (источник бесперебойного питания) с высаженными АКБ. Вот с ним то и попробуем замутить. Интернет просто кишит материалом о таком варианте. К счастью, бесперебойники у меня были ДАЖЕ на выбор. Однако я остановился на Vivaldi 800VA. Попробую пояснить почему. Что тоже важно:
1. он оказался самым мощным (800 ватт)
2. у него включение просто кнопка с двумя состояниями (а не сенсорная или интеллектуальная, типа нужно нажать и подержать пару секунд)
3. он выключается в зависимости от состояния АКБ (а не по заданному интервалу времени). Что тоже важно: он сам контролирует степень разряда аккумулятора.
4. у него на задней пенили две обычные розетки.
5. он оказался полностью рабочим и был в металлическом корпусе 😉


В качестве доработки я сделал:
— Установил небольшую плату переходник с предохранителем на 25 ампер
— Убрал сетевой шнур. Вместо него вывел мощные провода (сечением 4 мм2) с клеммами для подключения АКБ.
— Выпаял на фиг раздражающую пищалку-буззер
— Усилил самый горячий радиатор дополнительным медным
— Установил принудительный вентилятор и насверлил в корпусе под него отверстия

Провел “ходовые испытания”. Обычный ПЭВМ с ЭЛТ монитором (да, я нашел такой монитор) чудесно отработал 2 часа. Вполне хороший результат.

Ну и основная часть моего опуса:
КОНТРОЛЛЕР ЗАРЯДА.
Немного теории. Для общего понимания и развития.
Контроллер заряда является важным элементом в задуманной системе электроснабжения. Он поддерживает необходимый уровень напряжения на аккумуляторах, предотвращая их полный разряд или перезаряд. Существует несколько типов контроллеров:


Погуглив, я нашел два любопытных варианта контроллера MPPT:
1) www.256.co.uk/?p=1158
2) duino4projects.com/arduino-peak-power-tracker-solar-charger/
Но для реализации варианта MPPT нужно контролировать ток. Ничего подходящего для этого у меня под рукой не оказалось. На будущее, пришлось заказать в Китае микросхему MAX4173.

Ну, что же. Попробуем свои силы в изготовлении PWM контроллера.
За основу взял творение некого товарища из далекой Индии. Очень хорошо все описано и разжевано (правда, не на русском). Читайте тут: www.instructables.com/id/ARDUINO-SOLAR-CHARGE-CONTROLLER-PWM/

Мои “хотелки”:
— плата-шилд (стандартного размера)
— плата должна быть односторонней
— возможность быстрого подключения проводов (т.е., клеммники)
— вывод полезной информации на двухстрочный LCD 16х2
— LCD сделать выносным (вдруг понадобится разместить в корпус) и отключаемым (на разъемах)
— дополнительная светодиодная индикация (что бы издалека понимать, что происходит)
— автономная работа устройства (т.е., без дополнительных батарей и аккумуляторов)
— безопасность работы устройства без присмотра

Схема контроллера — это фактически компиляция кусков из разных схем. В окончательном виде она выглядит так.

Обратите внимание, в схеме отсутствует узел управления нагрузкой. Дело в том, что изготовленный мною самодельный “ИНВЕРТОР” сам контролирует этот момент.

Как говорится: «Хорошая мыслЯ — приходит опосля» 🙂 Честно говоря, я думаю, что было бы более правильным сделать три отдельных линии от АКБ (5 Вольт, 12 Вольт и 220 Вольт) и все же контролировать напряжение на АКБ, во избежание сильного разряда аккумулятора. Например, зачем подключать к линии 220 Вольт блок питания того же роутера, если логичнее подключить его сразу к линии 5 Вольт. Но этот вариант я попробую учесть в следующей поделке. Хм, если не потеряю интерес.

Условно эту схему можно разбить на следующие узлы:


Узел питания. На рисунке под №5.
Чуть-чуть лирики. На работе многие коллеги обзавелись видео регистраторами. И для подключения к бортовой сети многие отказались от штатного подключения в прикуриватель. В связи с этим, нашей радиолюбительской братией был довольно плотно проштудирован вопрос DC-DC преобразователей. Для этих целей из Китая были получены чудесные STEP-DOWN преобразователи LM2576 в достаточно большом количестве. Ниже кусочек из даташита:


Согласитесь, что грешно пропадать полученным таким образом полезным наработкам и микросхемам :). Итак, для питания Arduino в автономном режиме я разместил на шилде такой преобразователь. Он будет запитываться (через диоды) и от СП и от АКБ (в темное время суток).

Что нам дает такое подключение? Пусть Анод первого диода подключен а АКБ (Аакб), анод второго диода подключен к СП (Асп), Катоды соединены вместе и подключены к преобразователю (К).

Имеем в худшем случае: Аакб = 14В, Асп = 18В. Падение на диоде пусть в худшем случае 1В,
тогда на общем катоде будет К = 18 — 1 = 17В. А, заметь, на Аакб = 14В, т.е. диод заперт обратным напряжением.
Посему с СП будет течь ток, потребляемый стабилизатором (сколько-то там ампер), а через диод АКБ будет лишь обратный ток утечки (он будет _в_ АКБ, типа зарядный) в несколько там микроампер, т.е. НОЛЬ. Ток будет потребляться с обоих источников — АКБ и СП — только когда их напряжения примерно равны. Когда напряжение на СП упадет ниже напряжения на АКБ примерно на 0.7-1В, ток будет потребляться только с АКБ.

Были небольшие сомнения, при выборе напряжения преобразователя 5 вольт или 9. Однако, решив, что двойное преобразование (на самой Arduino есть линейный стабилизатор) неэффективно, остановил свой выбор на 5-ти вольтовом варианте.

Контроль напряжения на АКБ и на СП. (Узлы №1 и 3 соответственно)
Берем с запасом, максимальные напряжения на выводах солнечной панели 25 вольт, на АКБ — 15 Вольт. Естественно такие напряжения напрямую подавать на Ардуино — смерти подобно.
Воспользуемся on-line калькулятором для делителя напряжения (он же Voltage Divider). Кому лень (или нет интернета :)), расчет ведется по формуле
Vout=(Ra*Vin)/(Ra+Rb).
Чтобы не “плодить номенклатуру”, резистор Ra возьмем 100 kOm.
Получаем такие величины
Для СП:
Input Voltage=25V
Ra=100kOm
Output Voltage=4.5V
=> Rb=22 kOm

Для АКБ:
Input Voltage=15V
Ra=100kOm
Output Voltage=4.5V
=> Rb=42 kOm (у меня под рукой был на 47 kOm)

Для пересчета значения “из попугаев” на входе АЦП в реальные вольты пришлось высчитать нужные коэффициенты.

Индикация состояния: два светодиода и LCD дисплей.
Светодиоды — ничего нового. А подключение LCD — “дудка в дудку” в соответствии с описанием на официальном ресурсе

Сам дисплей сделан выносным и к шилду подключается двумя шлейфами: питание и сигнальная линия.

ШИМ-контроллер (Узел №2).
Подробнее о ШИМ можно почитать тут arduino.cc/en/Tutorial/PWM
или тут robocraft.ru/blog/arduino/34.html
Этот узел я нагло слизал у индуса. (Нет, конечно, я честно попытался заменить “полевик” на n- канальный (они более распространены и в открытом состоянии имеют меньшее сопротивление). Но, для его полного открытия необходимо обеспечить положительный потенциал (обычно около 10 вольт) между Gate и Source. Напомню, что Source в нашей схеме подключается к “+” АКБ. Выход из такой ситуации есть: т.н., Charge pump. Но мне что-то не хотелось в тот момент усложнять схему. Тем более, что я планирую в дальнейшем изготовление MPPT контроллера).

Обычно PWM контроллеры работают с частотой 50/100 Герц. А у Ардуино по умолчанию на 6-ом пине ШИМ с частотой 976.5625 Герц. Короче, для изменения частоты ШИМа просто изменим значение предделителя на 1024 (вместо 64).
TCCR0B = TCCR0B & 0b11111000 | 0x05; // prescaling 1024
И получим что-то около 61 Герца. Пока так. Естественно, при этом перестают корректно работать функции delay() и тому подобные. К счастью, в данном скетче это не критично.

В целях защиты, на плате дополнительно установлен предохранитель на 3 Ампера. (Хотя, более удобно было бы его установить в разрыв соединительных проводов).

Итак, печатная плата:

Далее, классическая цепочка: ЛУТим — ТРАВИМ — ЛУДИМ — ПАЯЕМ…
Фу, Готово. Готовый контроллер выглядит примерно вот так:

Обратная сторона (предохранитель по цепи питания от преобразователя (на всякий пожарный случай) и SMD-диодик)


Вид “сбоку” с установленным на “полевик” радиатором:

Назначение узлов, перемычек и разъемов на плате

Перемычка №3 — питание Ардуино от СП и АКБ (при использовании внешнего БП или батарейки, перемычку нужно снять)
№2 — индикатор работы преобразователя (можно отключить перемычкой №1)
№4 — регулировка контрастности LCD дисплея
№5 — делители напряжения
№6 — светодиодные индикаторы заряда батареи и состояния

Для отладки системы я пользовался “полудохлым” АКБ из авто (как раз один коллега купил новый, а старый отдал на опыты) и блоком питания 15 Вольт (3 Ампера) -(т.к., пока у меня нету реальной солнечной панели).

Теперь переходим к софтверной части.

Алгоритмы “правильного” заряда нашел на форуме arduino.ru/forum/proekty/pwm-kontreller-zaryada-na-attiny13?page=2 (Спасибочки товарищу с ником HWman, который не поленился и разрисовал для меня каждую стадию заряда).

Я решил выделить пять состояний, в которых будет находиться контроллер:
режим сна. (SLEEP Mode). В этот режим контроллер переходит в случае, если напряжение с СП меньше, чем необходимое для заряда АКБ
режим ЗАРЯДА (Charge Mode). В этом режиме весь ток, от СП отдается АКБ
режим ВЫРАВНИВАЮЩЕГО ЗАРЯДА (Balance Mode). В этом режиме, с помощью изменения ШИМ на АКБ поддерживается необходимое напряжение
режим ПОДДЕРЖИВАЮЩЕГО ЗАРЯДА (Storage Mode). В этом режиме ничего не происходит, а контролируется напряжение на АКБ. И при определенном значении, переходит в режим заряда.
— Ну и небольшой BONUS 🙂 режим ВОССТАНОВЛЕНИЯ АКБ (Refresh MODE). Вот, что натолкнуло на эту мысль:

Реализация кода — Конечный автомат (он же, [ Finite State Machine ]).
Граф состояний (может будет кому-то полезным):

Для удобства восприятия, на графе я использовал те же переменные и константы, что и в скетче.
А ниже и собственно скетч. Он оказался не очень объемным, поэтому я привел здесь его полностью. Для отладки, оставлен вывод в СОМ-порт. Естественно, полезная критика приветствуется 🙂
(Прокомментирован — по максимуму. Несколько раз перечитывал, даже сам разобрался 🙂

Над кодом я трудился несколько недель… (период отпусков, и все такое. ). При тестировании с блоком питания (вместо солнечной панели, никак не довезут) — все очень даже красиво и хорошо.

Во время зарядки, «полевик» достаточно хорошо нагревался. Я замерял его температуру (есть у нас такой прибамбас к тестеру)- и она доходила до 65 градусов Цельсия. Многовато, но вполне приемлемо.

Честно говоря, я пока не могу уверенно сказать, что КАЧЕСТВО заряда — ИДЕАЛЬНОЕ! Время покажет 🙂
Естественно, данный код можно приспособить для зарядки других аккумуляторов и реализации других алгоритмов. Как Ваша душа пожелает.

Для всех заинтересовавшихся и желающих повторить, весь материал одним архивом — ТУТ .

Источник

Читайте также:  Какое сечение провода для солнечных панелей
Оцените статью