простой и бюджетный вариант автоматизации домашнего аквариумного хозяйства на «ардуине» или ей подобных, решил предложить свой вариант, больше года «погонял» и исправил много разных ошибок, нормально работает на китайском клоне, памяти достаточно 32кБ.
чем управляем:
— светильник 4 канала (на выходе ШИМ 5В, 255 уровней, шаг 0,3%) вариант прямой и инверсный — для разных типов драйверов, рассвет и закат фиксированный по 1 часу, задаем для каждого канала: время восхода, длительность свечения, интенсивность свечения.
— контролируем температуру воды в аквариуме и управляем вентиляцией (12В реле/инверсия) или нагревателем (220В реле);
— по часам включаем клапан СО2 (12В реле/инверсия)
— по часам включаем аэратор (220В реле)
— по часам включаем дозаторы (2шт) (12В реле/инверсия)
— по часам управление кормушкой (12В реле/инверсия)
— отключение проточного фильтра при кормлении (220В реле)
— включение дополнительного света к белому каналу (220В реле)
УМНЫЙ СВЕТИЛЬНИК ДЛЯ АКВАРИУМА СВОИМИ РУКАМИ
— включение кулера охлаждения светильника (12В реле/инверсия)
что нужно:
— контроллер с USB
— часы реального времени RTC DS1307
— bluetoth HC-05 (HC-06)
— реле 5В (коммутируем 12В/до 3А) инверсное 6шт.
— реле 5В (коммутируем 220В/до 1А) 3шт.
датчик температуры ds18b20 1-2 шт.
приложение для настройкизагрузчик для контроллера
особенности сборки:
— после настройки не забываем записать все данные в энергонезависимой памяти, для случая отключения света.
— можно использовать обычный люменесцентный светильник
— прописывать датчики температуры не нужно
— до подключения блютон записать в часы время
— учитывать бросок тока для нагрузок с питанием 220В
позже опишу расширение для измерения pH и KH.
Отправлено спустя 1 час 9 минут 3 секунды:
забыл добавить два компонента:
— IIC/I2C/TWI/SPI Serial Board ( инверсный — прошивка под такие )
— экран 1602 HD44780
Вложения схема включения
назначение выводов TRAV_1.25.zip *.hex файл прошивки контроллера (24.32 КБ) 1640 скачиваний —>
готовый вариант
Источник: aquastatus.ru
Простой аквариумный контроллер
Идея максимально автоматизировать обслуживание аквариума зрела давно.
Просмотрев в сети множество конструкций, я остановился на одном из вариантов многофункционального акваконтроллера Виталия Шарапова. Существует несколько его модификаций. Вот схема автора, взятая мной за основу:
Аквариумный контроллер своими руками
К сожалению, сейчас сайт автора не работает, сохранилась информация только на нескольких сторонних ресурсах. Я связался с автором, и он любезно предоставил мне всю информацию по своей разработке. Архив с его файлами можно скачать тут: https://sdelay.tv/sites/sdelay.tv/files/ot_avtora.rar
Итак, что может этот прибор? Вот выдержки из авторского описания, полный вариант находиться в архиве.
- Отсчет реального времени в часах и минутах;
- Управление 3-мя нагрузками (Свет, Нагрузка1, Нагрузка2) по времени;
- 6 независимых программируемых таймеров (времён включения-выключения), каждый может управлять любой из нагрузок, дискретность – 15 мин.;
- Измерение температуры воды каждые 10 секунд с точностью до 1°C (диапазон 0…99°C);
- Управление нагревателем и охладителем (вентилятор или аппарат на основе модуля Пельтье) с точностью +-1°C (диапазон 20…39°C), работа охладителя на пониженной мощности при превышении допустимой температуры менее чем на 3°C (для снижения шума);
- Индикация состояния нагрузок (включено или выключено);
- Ручная коррекция времени (по сигналам точного времени);
- Автоматическая ежедневная коррекция времени на заданную величину (от -59 до +59 секунд в сутки);
- Сохранение хода часов (при наличии резервной батареи) при отсутствии напряжения в сети до 2-7 суток (зависит от используемой батареи);
- Сохранение настроек пользователя в энергонезависимой памяти при полном отключении питания, восстановление при включении.
Вот так всё начиналось:
Плату процессора я повторил почти полностью, изменения не большие и не принципиальные.
Прошивка тоже авторская. А вот силовой блок я переделал.
Исходил прежде всего из наличия у меня деталей и следовательно удешевления всей конструкции. Этим же обусловлен выбор индикатора МТ-10Т7. Он самый недорогой среди доступных, есть вариант без подсветки. Конечно, у такого выбора есть и минусы. Например, сложность отображения букв с помощью семи сегментов.
Уже после сборки я переделал схему питания индикатора. Считаю, что питать индикатор от батареи ни к чему, её задача сохранить питание микроконтроллера и тратить её на индикацию не стоит. Индикатор работает только при питании от сети, при переходе на питании от батареи, индикации нет. К сожалению, к тому моменту плата уже была спаяна, поэтому новые дорожки проложены навесным монтажем. Печатного варианта для такого подключения я не разрабатывал. Вот расположение навесного монтажа:
Вот мой вариант схемы:
И плата силового блока.
Резистор R6 есть смысл ставить при использовании аккумулятора в качестве резервного источника питания. Резисторы R9-R13 ставятся при необходимости и подбираются под конструкцию силового блока. Изначально в качестве корпуса был выбран сломанный сетевой фильтр. Опять же потому, что он у меня уже был.
Так как я не планирую использовать нагрузку 220 вольт более 150 ватт, то тиристоры установлены без радиаторов. Для основной массы аквариумных приборов это более чем достаточно. Транзисторы, управляющие нагрузкой 12 вольт так же без радиаторов. Следовательно, учитывая это, и мощность трансформатора, нагрузка на оба 12в канала должна быть не более 2 вт.
Для вентилятора-охладителя и светодиодной подсветки этого вполне достаточно. Единственный радиатор будет на КРЕНке, и то скорее для подстраховки.
В настоящее время таймер управляет освещением в аквариуме и продолжается работа над завершением корпуса.
Каких-либо проблем и ошибок в процессе изготовления и эксплуатации до настоящего момента не выявлено. В одном месте пришлость поработать надфилем, благо место позволило: отверстия крепления индикатора на плате не совпали с отверстиями на самом индикаторе-примерно на 0,5-1 мм.
Наличие шести таймеров дает широкие возможности для автоматизации аквариумного хозяйства. Конструкция достаточно проста, работоспособна и доступна для повторения. Архив с моим вариантом схемы, печатными платами и прошивкой: https://sdelay.tv/. /timer.rar Алгоритм работы таймеров в описан в авторском архиве.
Источник: sdelay.tv
Реализация универсального аквариумного контроллера
В последующем изложении хотел бы продемонстрировать и поделиться своими наработками по аквариумному контроллеру. На мой взгляд, тематика весьма востребована среди аквариумистов, но далеко не все аспекты и проблемы рассмотрены. Возможно, кого-то что-либо заинтересует, или кто-то захочет повторить конструкцию, поэтому в теме прилагаются все необходимые файлы. Для тех, кому захочется покопаться в программной составляющей устройства прилагаются все исходники.
Сразу оговорюсь, что создавалось все под собственные нужды и нужды друзей-аквариумистов. Все ниже описанное – 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В, и питающее напряжение ПК включены в один узел электросети (розетку). В ином случае возможна некорректная работа устройства, выход из строя определенных элементов конструкции. Ниже приведена схема и печатная плата радиомодуля:
Программная реализация
Программное обеспечение состоит из 2 частей – низкого уровня (прошивка) и высокого уровня (программа для ПК). Для разработки низкоуровневой части использовался программный продукт WinAVR, версия компилятора GCC 4.3.3. Для организации управляющих подпрограмм был реализован диспетчера задач, основанный на автомате флагов.
Было выделено несколько временных интервалов: 1 — 41ms, 2 — 167ms, 3 — 333ms, 4 — 1.34s, 5 — 2.67s, 6 — 10.6s. В первом временном интервале реализовано построчное отображение информации на ЖКИ. Во втором — опрос температурных датчиков (~ раз в 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 находится в справочных материалах, доступных через меню Помощь/Справка. Детальное описание устройства находится в файле «Техническое описание».
Примерная стоимость устройства, учитывая доставку комплектующих, ~100$
Это первая реализация проекта аквариумного контроллера. За более чем полгода не выявлено ни единого сбоя в его работе. Некоторые конструктивные и программные недочеты все же имеются, но этого пока недостаточно, для разработки следующего прототипа.
С учетом эксплуатации текущего контроллера, перечень того, что может быть дополнительно воплощено в последующем устройстве:
— аппаратная реализация на ARM Cortex;
— связь по Ethernet/Wi-Fi с организацией HTTP-сервера;
— наличие внешней клавиатуры для аварийного отключения или активации управляемых каналов;
— интеграция усилителя для PH и Redox электродов на плату контроллера;
— наличие управляемых каналов для светодиодной подсветки;
— управление дополнительными агрегатами (автокормушкой, системой подачи удобрения и прочее);
— увеличена номинальная мощность нагрузки;
— замена DS1307 на DS3231;
— возможность установки в один из стандартных корпусов.
Но пока это всего лишь планы на будущее, так как данный контроллер полностью удовлетворяет требованиям моего текущего аквариума.
Ниже загружена на github необходимая документация, программное обеспечение и исходники программ: Акваконтроллер 2014
Спасибо за внимание.
- diy
- программирование микроконтроллеров
- avr
- аквариум
Источник: habr.com