Контроллер освещения для аквариума

Контроллер освещения для аквариума

Содержание

Аквариумный контроллер "Аквамарин"

Автор: zhu4er
Опубликовано 29.07.2014
Создано при помощи КотоРед.

Здравствуйте, уважаемые коты! Рыбкой побаловаться не хотите? Вы же так обожаете этих вкусных, сочных рыбок ;))) Вот и я люблю их, но предпочитаю ими любоваться через стекло:

Пока фоткал, охранник Кеша Мозгоклюев начал на меня шипеть, пришлось его тоже запечатлеть малёха:

Вообще жизнь рыбок и товарища Мозгоклюева была бы спокойней, если бы я не был электронщиком до мозга костей. Поэтому они периодически подвергаются моим опытам. Вот и один из них — аквариумный контроллер "Аквамарин".

Встречаем схему (в конце статьи в архиве оригинал):

Как видите ничего архисложного в этой схеме нет. Микроконтроллер ATMega16 отвечает за сбор и выдачу информации и принимает соответствующие решения, управляя релюшками и полевиками. Теперь всё по порядку. Сбор информации идёт от датчика температуры U2 DS18b20, от U3 DS1307 — часов реального времени, и естественно от кнопок управления. Выдача информации осуществляется на LCD1 типа Star0802А восемь символов по две строки. Дисплей русифицирован — знания английского не требуется 😉 У контроллера есть три режима работы "Автоматический", "Ручной режим" и режим настроек. При ручном режиме, вход в который осуществляется нажатием кнопки "Режим/Ввод"

Внешний вид:

Лицевая сторона

Под крышечкой 🙂

Сюда подключаем нагрузки

Вид на эти розетки изнутри

Ну что, заглянем, посмотрим на внутренности?

Вид на разъёмы подключения датчика температуры(слева) и подключения светодиодных модулей синего и белого света(справа)

С одного бока

С другого бока

В ручном режиме можно включить или выключить подачу воздуха и фильтрацию, нажав на кнопки "+Л/Воздух", "Фильтр". О том, что включёны фильтр и воздушный компрессор, сигнализируют светодиоды "Воздух" и "Фильтр".

"Ручной режим" удобен для кормления рыбок и при чистке аквариума. Выход в автоматический режим кнопкой "Режим/Ввод".

В автоматическом режиме на дисплее выводится информация о времени, дате и температуре в аквариуме.

В автоматическом режиме контролируются параметры температуры и времени суток. По заданным параметрам температуры можно управлять нагревом воды в аквариуме, если аквариум в холодном помещении ИЛИ охлаждением, если аквариум находится в тёплом помещении.

По параметру времени суток контроллер отрабатывает программу Рассвет/Закат.

К контроллеру подключены светодиодные модули белого и синего цвета через полевые транзисторы IRFL024, и управляются методом ШИМ. Закат происходит в заданное время в течении полутора часов. Белый свет начинает угасать, а синий прибавляет яркость. В итоге имеем синее освещение аквариума ночью. Очень приятно глазам при походе ночью в туалет :)). Ночничок, так сказать :)) Утром же наоборот, при заданном времени начала рассвета происходит угасание синего и увеличение яркости белого света. Процесс этот происходит тоже в течении полутора часов. В приложенных исходниках это можно поменять как ваша душа пожелает. Так же в контроллер заложена функция восстановления режимов работы после сбоя в электросети. Если вы уехали на целый день на шашлычок, и в это время был выключен свет, а потом включен(ну всякое бывает), то контроллер автоматом включит фильтрацию, воздух и подогрев/охлаждение так, как это было задано Вами! Вообще я делюсь с Вами, дорогие мои котофеи, всем проектом с исходниками, что хотите с ним, то и делайте — мне не жалко 🙂

А на последок предлагаю глянуть видеоролик:

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

Кто хочет помурлыкать на эту тему все вопросы на форум. Создаём тему, меня оповещаем и общаемся 🙂

Сообщество аквариумистов

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

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

Для начала определимся что нам нужно — сколько каналов для 220в нагрузок, сколько для 12в нагрузок.

Я выбрал 5 каналов 220в:

4 независимых канала с периодом 30 мин (48 интервалов на сутки)
И один отдельный канал для углекислоты.

Для охлаждения будем использовать компьютерный вентилятор на 12в

Плюс к этому я хочу видеть состояние каналов в реальном времени, поэтому добавим ко всему LCD дисплей.

Управлять всей этой красотой будем с помощью одного энкодера. Переходы по меню нажатием на энкодер, переход по значениям внутри одного меню — поворотом энкодера. Для изменения значения, нужно нажать на энкодер и не отпуская повернуть в нужную сторону.

UPDATE 22 ноября 2019г. : После прошивки контроллера нужно отключить питание, зажать энкодер нажатым и заново подключить питание. Подождать до появления вот такой картинки

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

И так, нам понадобится:

1. Arduino nano 3.0 с Atmega 328p на борту
Ссылка на али: Купить
2. Дисплей 1602 с модулем I2c
Ссылка на али: Купить
3. Датчик температуры Ds18b20 В герметичном корпусе
Ссылка на али: Купить
4. Часы реального времени DS3231
Ссылка на али: Купить
5. Модуль реле на 4 канала и еще один на 1 канал
Ссылка на али: Купить
6. Модуль с силовым ключем
Ссылка на али: Купить
6. Понижающий Преобразователь
Ссылка на али: Купить

Перед сборкой нужно настроить понижающий преобразователь на 5В

Схема подключения :

Прошивка:

После сборки по схеме остается залить прошивку.

Файл прошивки лежит ТУТ Обновлен 22 ноября 2019г.

Прошиваем один HEX с помощью простейшей программы XLoader:

Работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload

Архив с программой Xloader.zip

Если есть вопросы, то их можно обсудить в соответствующей теме ССЫЛКА НА ТЕМУ

Простой контроллер для аквариума на ARDUINO : 4 комментария

Ещебы рассвет и закат, и этомум контроллеру цены бы небыло

Всем привет .ПРОДЕЛАЛ ПРОЕКТ ..со2 4 реле и температура .. прошу помощи ..
меню разьяснить —переключение джойсиком .. — один режим работал по температуре ..пока щелкал остальные 1234 реле разобраться .. после включения реле щелкают но не в режиме программы молчат .. например ..подсветка экранчика ..крутил присматревался к стреле ..где как ..можно случайно включить ..

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

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

Сразу оговорюсь, что создавалось все под собственные нужды и нужды друзей-аквариумистов. Все ниже описанное – IMHO и не претендует на «истину», или глобализацию решения всех существующих проблем.

Вступительная часть

Предпосылки для создания контроллера весьма банальны — был приобретен аквариум на 450 л, и к нему в дополнение шла крышка с установленными лампами, ЭПРА, кулерами, PH-электродом с усилителем, и управляющим всем этим многоканальным контроллером. Первое время все работало без сбоев, но потом начали умирать управляющие симисторы, сбрасываться текущее время, да и функционал не совсем удовлетворял возросшим требованиям. После длительного использования и анализа имеющегося контроллера было принято решение сделать свой управляющий орган, и продуман функционал будущего устройства:

1. Управление 8 каналами (+1 ШИМ канал):
— 4 канала освещения;
— компрессор;
— нагреватель;
— электроклапан системы CO2;
— помпа/электроклапан автодолива;
— кулера 12В (ШИМ).
2. Подключение 3-х температурных датчиков DS18B20.
3. Подключение электродов PH и Redox-потенциала.
4. Подключение датчика уровня воды (аналоговый датчик).
5. В качестве коммутирующего элемента использовать электромеханические реле.
6. Подключение 4-х строчного ЖКИ на контроллере HD44780.
7. Наличие часов реального времени DS1307Z.
8. Связь с ПК организовать 2 способами:
— радиомодуль, использующий Bluetooth HC-05 (основной канал);
— подключение по USB (резервный канал).
9. Номинальная мощность коммутируемой нагрузки 650 Вт.
10. Наличие электрических фильтров питающих напряжений и защитных элементов основных цепей устройства.
11. Промаркировать все разъемы и выводы подключений.
Возможности программного обеспечения для ПК:
— ручной режим управления нагрузкой;
— 4 автоматических режима (температурный режим, режим PH/CO2, режим вентиляции крышки, режим автодолива воды);
— использование 3-х таймеров на каждый канал, с возможностью по секундной установки интервалов;
— калибровка электродов;
— ограничивающие временные интервалы подсветки ЖКИ, работы кулеров и системы СО2;
— запись данных в энергонезависимую память контроллера и всевозможная индикация текущих параметров системы.

С некоторыми поправками данный функционал может быть отнесен к категории универсальных устройств. Это конечно не совсем корректно, т.к. аквариумные контроллеры можно разделить на 2 подгруппы – для пресноводных и морских обитателей. Различаются в данном случае и режимы освещения, и наличие различных электродов, определяющих параметры воды, и программные режимы, стабилизирующие эти параметры, и др. Аппаратная составляющая аквариумов так же весьма отличается. Освещение может быть организовано люминесцентными лампами, а могут быть использованы светодиоды или светодиодные ленты. IMHO – использование светодиодов более привлекательный подход, как с точки зрения получения необходимого спектрального состава, так и при организации управляющих режимов. Однако, использование качественных комплектующих, стабилизаторов тока, источников питания и вопрос отвода тепла делает этот подход более дорогостоящим. Ввиду чего, большое количество аквариумистов все еще использует люминесцентное освещение, и менять его пока не собираются. Различий может быть великое множество, ибо готовые решения приобретаются крайне редко, и большая часть аквариумов собраны под индивидуальные вкусы их владельцев. В данном случае рассматривались 3 аквариума, и были объединены/усреднены требования по оным. В итоге, получилась система для пресноводного аквариума (либо травника), с люминесцентным освещением, объемом до 500 л., автономным режимом работы, выводом необходимой информации на ЖКИ и подключением к ПК для конфигурации.

Аппаратная реализация

Исходя из личного опыта, опыта других разработчиков и вредности своего IMHO – конструкции типа «бутерброд», построенных на базе Arduino и иже с ним, стараюсь не использовать. Вообще и никогда. Это же касается и программного обеспечения (низкого или высокого уровня). Исключения составляют внешние библиотеки, собственноручно переработанные и прошедшие не одну сотню часов тестирования. Ну и разумеется стандартные либы, блокнот, компилятор, программатор/отладчик и осциллограф.

Аппаратная часть основана на микроконтроллере фирмы Atmel — ATmega32A, работающего от внешнего кварцевого резонатора 11.0592 MHz. Выбор обоснован наличием большого кол-ва флеш- и оперативной памяти, необходимым кол-вом выводов, дабы не чувствовать себя стесненным в средствах (в итоге было использовано

80% ресурсов МК). Коммутация нагрузки реализована посредством электромеханического реле. В устройстве использовались реле герметичного исполнения фирмы OMRON, серия – G5LA. Получение текущего времени организовано посредством микросхемы DS1307Z + прецизионный термостабильный резонатор, заблаговременно снятый со швейцарского промышленного оборудования. Выбор был обусловлен наличием этой микросхемы и качественного резонатора. В другом случае предпочтительно использовать DS3231. Для управления кулерами используется ШИМ-сигнал. В качестве ключевого элемента используется полевой транзистор LR3714Z. Для вывода данных на ЖКИ используется 4-х битная шина, для коммутации подсветки используется транзистор FMMT717TA. Связь с ПК организована посредством радиоканала (RS232-Bluetooth HC05), либо преобразователя RS232-USB CP2102. Скорость передачи данных 9600 kbit/s. Фильтрация сетевого напряжения рассчитана на номинальную мощность

650 Вт. Терминирование температурных датчиков DS18B20 необходимо производить в непосредственной близости от датчика. Для повышения надежности устройства использовался внешний супервайзер ADM690ANZ, отслеживающий тактирование МК и уровень питающего напряжения. Радиоканал реализован отдельным модулем, подключаемым на плату контроллера через 4 пиновый разъем. Присутствует всевозможная индикация (активность каналов, наличие питающих напряжений, тактирование МК, передача пакета данных).

Хотелось бы, конечно, использовать Wi-Fi подключение, с HTTP сервером. Но для этого необходимо иметь в распоряжении Ethernet MAC модуль, что тянет за собой также необходимость и DMA интерфейса, — а это уже задача не для AVR. Да и стоимость адекватного Wi-Fi модуля довольно высока. Не будем рассматривать цепочку из нескольких плат (об этом я писал вначале параграфа), или же дешевых китайских модулей, способных на все, но при этом отваливающихся каждые полчаса. И с ARM7TDMI на более свежую архитектуру все никак не осилю себя перейти. Да и смысл использовать ARM для такой задачи, где с лихвой хватает AVR. Только для Ethernet/Wi-Fi — не вижу смысла. В общем, это уже задача другого уровня. Для текущего автономного контроллера было принято решение ограничиться USB/Bluetooth и внешним супервайзером.

Для разработки устройства использовался программный продукт P-CAD 2006 SP2. Ниже приведена принципиальная схема устройства (кликабельно):

Печатная плата устройства была разработана под SMD-монтаж. Класс точности – 4. Используются корпуса TQFP44, QFN28, SOT23, TAN-A, TAN-B, SMA, 0805, 0603 и др. Плата имеет двухстороннюю реализацию. Общий вид печатной платы устройства приведен ниже (кликабельно):

Изготовление печатной платы было доверено китайским специалистам, ибо качество местных изготовителей оставляет желать лучшего. Какая именно фирма занималась производством платы уже сказать не смогу, т.к. заказывал я ее через товарища, к которому я просто «упал на хвост» во время его заказа, и отправил ему все необходимые файлы. Качеством «поднебесной» я был весьма впечатлен. Стоимость одной платы обошлась мне примерно в 20$. Так же очень порадовал предоставляемый сервис. Стоимость платы зависела от ее класса точности, размеров, и прочих заданных требований. В течение одного рабочего дня мой заказ был обработан, рассчитан и указана точная дата прибытия в мой город. В тот же день средства были уже переведены на их счет. И именно в указанный день мне пришло сообщение о доставки моей посылки. Обработка заказа, изготовление и доставка заняли чуть менее 2 недель. Ни один из отечественных производителей мне такое и близко не смог предложить (в рамках адекватной стоимости). Ниже приведено фото одной из полученных плат:

После напайки всех компонентов, прочистки ультразвуком от флюса и прошивки контроллера устройство приобрело следующий вид:

Для установки супервайзера предусмотрена 8-пиновая панелька. ADM690ANZ весьма чувствителен к флуктуациям питающего напряжения, и если у вас нет возможности установить качественный стабилизированный источник питания на 5В – лучше супервайзер не использовать. Иначе получите больше проблем, нежели пользы от его использования. Для переключения между USB и Bluetooth используется соответствующая перемычка.

Изначально, устройство планировалось устанавливать в крышку аквариума. Поэтому организация корпуса не предусмотрена. Однако, в дальнейшем, возможно, надобность в оном появится. Для отображения информации использовался 4-х строчный ЖКИ WH2004L-TMI-CTW, устанавливаемый на переднюю часть алюминиевой крышки. Во избежание наводок на индикатор, во время коммутации силовой нагрузки, сам индикатор необходимо изолировать от соприкасающихся металлических частей крышки, а шлейф, идущий от контроллера к экрану, — экранировать.

Ну и в завершении описания аппаратной составляющей ниже представлена фотография крышки аквариума. В ней установлен сам контроллер с ЖКИ, источник бесперебойного питания на 5В с аккумулятором, импульсный источник питания на 12В, 6 ЭПРА, плата усилителя для PH-электрода (основана на CA3140E), 2 80мм кулера и разъем для сетевого питания с простеньким входным фильтром.

Реализация связи с устройством

Основным каналом связи предусмотрен радиоканал Bluetooth (HC-05), USB-подключение – резервное. Устройство не имеет гальванической развязки между микроконтроллером и преобразователем уровней CP2102 (USART-USB). При подключении посредством USB необходимо убедиться, что источник электропитания, используемый для получения +5В, и питающее напряжение ПК включены в один узел электросети (розетку). В ином случае возможна некорректная работа устройства, выход из строя определенных элементов конструкции. Ниже приведена схема и печатная плата радиомодуля:

Программная реализация

раз в 3 секунды), получение текущего времени, опрос АЦП и расчет значений электродов, с учетом калибровочных коэффициентов. В третьем временном интервале реализованы основные управляющие функции контроллера:

— обработка данных входящих пакетов;
— преобразование текущего времени в числовое значение (для удобства все временные значения в программе представлены в числовом виде HHMMSS);
— управление заданными каналами, в соответствии с выбранными режимами работы (раз в секунду);
— управление каналом PWM;
— обработка данных управляющих режимов (температурный режим, режим PH/CO2, режим вентиляции крышки, режим автодолива воды);
— установка ограничений временных интервалов (подсветка ЖКИ, работа кулеров и системы CO2);
— запись данных в EEPROM;
— анализ текущего состояния каждого из каналов, выбранных режимов с соответствующей индикацией;

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

Проект состоит из нескольких файлов: main.c, hd44780.h, i2c.h, USART.h, Functions.h, ds18b20.c, delay.h, crc8.c. Библиотеки для работы с шиной 1-Wire были позаимствованы с открытого проекта на одном из немецких сайтов и переработаны под собственные нужды (убраны неиспользуемые функции и добавлено указание используемого порта и вывода МК для соответствующего датчика). Все остальные либы написаны с чистого листа.

Для отладки низкоуровневого программного обеспечения использовалось компьютерное моделирование устройства, посредством программного пакета Proteus 7.7 SP2. Ниже приведена собранная схема устройства:

Для разработки программного обеспечения высокого уровня использовался программный продукт Microsoft Visual Studio 2007. Основные возможности ПО представлены 4-мя закладками: отображение информации, режимы/события, ежедневные таймеры, калибровка электродов. Данные обновляются раз в 3 секунды. Для передачи данных используется метод транзакций. ПО отправляет пакет данных устройству, которое в свою очередь, после получения, отправляет принятый пакет обратно на ПК. Если отправленный и принятый пакеты совпадают — транзакция прошла успешно. Если же данные различаются, то текущий пакет данных отправляется заново. При многократном не совпадении отправленного и принятого пакета данных отображается ошибка соединения с устройством. Для передачи данных использовался строковый тип, что позволяет безошибочно определить начало/конец пакета, его тип и сами данные. Ниже представлен интерфейс программного обеспечения для ПК:

Полное описание работы программного обеспечения AquaController 2014 находится в справочных материалах, доступных через меню Помощь/Справка. Детальное описание устройства находится в файле «Техническое описание».

Примерная стоимость устройства, учитывая доставку комплектующих,

Это первая реализация проекта аквариумного контроллера. За более чем полгода не выявлено ни единого сбоя в его работе. Некоторые конструктивные и программные недочеты все же имеются, но этого пока недостаточно, для разработки следующего прототипа.

С учетом эксплуатации текущего контроллера, перечень того, что может быть дополнительно воплощено в последующем устройстве:

— аппаратная реализация на ARM Cortex;
— связь по Ethernet/Wi-Fi с организацией HTTP-сервера;
— наличие внешней клавиатуры для аварийного отключения или активации управляемых каналов;
— интеграция усилителя для PH и Redox электродов на плату контроллера;
— наличие управляемых каналов для светодиодной подсветки;
— управление дополнительными агрегатами (автокормушкой, системой подачи удобрения и прочее);
— увеличена номинальная мощность нагрузки;
— замена DS1307 на DS3231;
— возможность установки в один из стандартных корпусов.

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

Ниже загружена на github необходимая документация, программное обеспечение и исходники программ: Акваконтроллер 2014

Читайте также:  Наибольшее допустимое время защитного автоматического отключения
Оценить статью
Добавить комментарий