Меню

Ардуино контроллер солнечной батареи

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

Солнечный контроллер своими руками — 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, то позже вам придет уведомление о выходе новой версии прошивки или каких либо аппаратных улучшений.

Источник

Контроллер заряда от солнечной батареи

Целью создания данного проекта является примером того, что программой многоуважаемого Сергея Глушенко активно пользуются и на ней можно собирать довольно серьезные проекты. Практически в самом начале я написал простенький таймер на FLProg и опубликовал сюда, когда еще в программе не было и половины того, что мы имеем сейчас. Далее мне захотелось создать нечто большее и соответственно полезное и применимое)). Но довольно долгое время у меня не хватало фантазии на что-нибудь интересное.
Но вот настал тот день когда на меня нахлынуло вдохновение! Виновником оказался мой коллега по работе и близкий друг. Он приобрел солнечную батарею и пару аккумуляторов, а вот от заводского контроллера заряда он отказался, так как посчитал что можно это и самим сделать. Вот и решили совместными силами собрать собственный контроллер.
Прочитав множество статей в просторах интернета о принципе смарт зарядки аккумуляторов, мы уже примерно представляли алгоритм программы. Осталось лишь применить это в железе.
Я занялся программированием, а друг взял на себя скрутить и спаять все это. Программа была написана примерно за день, но после многочисленных тестов добавлялись новые плюшки, корректировались ошибки. В данный момент все прекрасно заряжается и отрабатывают все защиты.
Что могу сказать об алгоритме программы? Зарядка идет «плавная», то есть ШИМ. Так же есть режим boost (интенсивная зарядка). Защиты по температуре, от разрядки и перезарядки батареи. Вывод показаний на дисплей и конечно же в COM-порт. Включение дисплея и включение/отлючение выхода нагрузки в ручном и автоматическом режиме.
Как все наверно догадываются, что у всех разный стиль написания программы и поэтому сильно не пинайте)) Если будут какие-либо замечания или добрые советы, то я с удовольствие выслушаю и приму к сведению в дальнейшем.
Спасибо за внимание.
Собственно программа
https://yadi.sk/d/oPgcPit8eSHyX

Извиняюсь за скучный ролик)) Он без слов и без музыки

Источник

Небольшое вступление.
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 градусов Цельсия. Многовато, но вполне приемлемо.

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

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

Источник

Читайте также:  Ориентация солнечных панелей угол наклона

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *