Какое то время назад решил я собрать свой вариант контроллера для аквариума.
На долго затянулся этот процесс.
Идейным вдохновителем стал Pimass,а автором графики и дизайна экранов его девушка Виктория. За что им огромное спасибо. У меня фантазии так и не хватило.
У меня в теме есть плата этого переходника с часами, делителем напряжения для пш. но собирать еее нужно самому. Детали стоят копейки. Плату можно заказать у китайцев но минимум 10 штук. или у меня есть еще парочка по 5 долларов.
Тогда все аккуратно без соплей и не нужно танцев с бубном.
Для нагрузки на 220 вольт такие реле, но я использую силовую плату на симисторах.
ПШ усилитель собрать самому, лан модуль стоит 14-17 долларов, но не стоит его брать, у меня реализовано только мониторинг на андроид телефон и дальше развивать нет времени.
Контроллер имеет 9 каналов для подключения нагрузки.
На каждый канал до 7 отдельных программ.
Дополнительно канал на работу с фильтром (временное отключение). Канал управления кулером охлаждения LED светильника.
Часы реального времени.
Можно подключить следующие датчики контроля:
4 датчика температуры
4 пш электрода
2 ультразвуковых датчика уровня воды
Каждый датчик можно одновременно использовать для управления несколькими каналами. Например:
1 канал осуществляет подачу СО2 согласно данным с электрода ПШ до уровня 6.00
2 канал следит что бы показания с того же электрода и как только показания достигнут 5.5 начнет работать компрессор и подавать воздух в аквариум.
Что умеет делать контроллер:
1. включать свет по таймеру (рассвет/закат)
2. контроль температуры обогрев/охлаждение
3. контроль СО2 повышение/понижение
4. контроль уровня воды слив/долив
5. подача удо или других жидкостей
6. каждый канал имеет регулировку PWM (шим) уровня,
есть возможность выбирать PWM частоту для всех каналов сразу, следующие значения в Гц: 3000, 2500, 2000, 1500, 1000, 500
7. калибровка дозатора УДО, Подача УДО с точностью 0,5 мл.
8. калибровка ПШ электродов
9. отключение фильтра от 10 до 50 минут
Пункты с 2 по 5 можно ограничить по времени. Например контроль CO2 с 8-00 до 19-00
В планах:
1 Подключить LAN модуль для управлением контроллером
2 Сделать ведение ЛОГ файла данных
3 Сделать управление помпой течения для моря
Необходима помощь в разработке силовой исполнительной платы
Буду рад любой помощи.
Настройка времени, поиск датчиков температуры, калибровка электродов ПШ, настройка LAN
Установка времени
Поиск датчиков температуры
Калибровка ПШ электродов
Установки условий работы канала
Настройка таймера
Настройка контроля температуры
Настройка контроля ПШ
Настройка контроля уровня воды
Настройка PWM (шим) уровня
Настройка подачи УДО
Калибровка дозирующего насоса
Калибровка датчиков "ультразвук" уровня воды
Пример работы с программы, немного устаревшая версия.
Исходники можно скачать тут
Данная версия работает у меня уже давно и вроде бы стабильно.
Есть некоторые "баги" но их исправляю.
Если я смог сделать, то Вы уж точно сможете.....
Новое в контроллере: 22 февраля 2015г.
1. Убрал внешний ЕЕПРОМ, все хранится на ардуине.
2. Заменил поплавковые датчики уровня воды 4 шт, на 2 ультразвуковых.
3. Сделал калибровку уровня воды для срабатывания датчика.
4. Добавил экран с отображением состояний выходных каналов в Диаграмме.
Востаннє редагував sae74: 23.02.2016 о 07:17..
Переглядів: 417645
Ці 62 користувач(ів) сказали Дякую sae74 за це повідомлення:
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
Все заработало!!!!
Как все было:
Компилятор ругался на "maxFilterStop"
Заменил на 60
Чтоб получилось вот так:
if (filtr >0 && filtr<60) {
TimeFiltra();
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}
else if (filtr ==0){
digitalWrite(k_Filtr, LOW);
s_k_10="smon.raw";
}
else if (filtr >59){
digitalWrite(k_Filtr, HIGH);
s_k_10="smoff.raw";
}
И все! Все получилось)))
Есть небольшой баг при калибровке УДО - Инверсия осталась.
Но это не существенная проблема.))))
Огромное спасибо автору!!!
void UdoTimeStop(unsigned long StopTime, unsigned long TekTime, unsigned long StartTime){
if(TekTime > StopTime || TekTime < StartTime) {// если вышло время выполнения условия обнулить данные подачи удо
icon ="smoff.raw";
unsigned long Unsigned_long_0;
Unsigned_long_0 =read_znach(AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma));
if (Unsigned_long_0 !=0){
int adr_vrem = AdrHranenieVneshEeprom_UDO(RaschKanal, RaschProgramma);
write_znach(adr_vrem, 0);//больше не подаем удо
//Serial.println(read_znach(adr_vrem));
//Serial.println(" stop 2");
}
analogWriteKanal=UrovenPWM(0, 2, 1, 2);
}
}
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
Именно поэтому я и заказал модуль-реле с триггером и теперь его можно использовать в любом проекте, просто переставляя перемычки.
Возможная аварийная ситуация и заставила над этим задуматься, так как бесконтрольная подача УДО убила бы акву.
Модуль - http://ru.aliexpress.com/item/12V-8-...b-967b6c409614
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
на 1.6.8 даже без правки скомпилировалось отлично! Т.к бутер на работе то залить пока не могу
несколько глупых вопросов
1 при отсутствии датчиков PH можно подачу повесить на реле по таймеру - правильно понял? (а аэрацию на нормальнозамкнутый контакт этого реле (как-то релюшек маловато заказал
2 светики К З С и Б повешу на ШИМ, уровнями по каналам смогу подогнать нужный цвет (а заменой картинок на карте с цифровых на буквенные еще и подписать их) но вот или туплю или как синхронизировать эти каналы? (таки поигрался чуть с ШИМами и приблизительно вырисовал себе ооочень красивую и надеюсь таки полезную цветовую картину. Утро с возрастающего синего через переход зеленого в красный и увеличение яркости белого. Когда белый 100% остальные 3 цвета выходят в 100%. (Сейчас у меня свет 4-2-4-2-4 т.е свет по 4 часа с перерывами и таки правду вычитал что при таких перерывах фотосинтез максимальный т.к при 12 часах подряд пузырять под конец почти переставало.. но мож это частный случай.) вместо выключения света в перерывах белый уходит в 20-30% а цвета уходят в синевато-красный (попробовать эмулировать тучи ) ну и на ночь синевато-белый 5-10% ) с уходом к желтому. (на словах описать трудно с работы выложу для критики цветографик отрисовал. Так вот вопрос синхронизации. В Олеговском (который для меня лично еще более избыточен Вашего) для этого графики по каналам, тут я так понял надо добавлять несколько программ на каждый канал и играться с ШИМ ?
ЗЫ - не на столько еще к сожалению еще освоил ардуиностроение но вдруг это не слишком сложно... Добавить +1 переменную которая 0 при ресете (очищенном ЕЕПРОМ) и 1 при сохраненных настройках и отдельной процедурой дать ЯВНОЕ из кода задание переменных, т.е вместо сидеть 2 часа с нуля настраивать задать предварительные настройки тех-же таймеров и подачи УДО итд...и через меню их уже корректировать по мере надобности. Логично?
3 вентилятор охлаждения ЛЕД ов вижу, а вентилятор охлаждения воды? или через шим, по если т ниже 25 (к примеру) то вкл реле обогревателя выкл шим канала Н на котором вентилятор и если выше то наоборот?
ЗЫ - сорри за многобукафф - до 3 ночи отбивал ДДоС удаленно
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
alex_palace,
1 - да можно.
2 - да нужно по времени разбивать уровни.График у меня тоже отображает. Там есть новая иконка для этого.
3 - для охлаждения воды используйте любой из 9 каналов. там есть выбор режимов работы.
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
а по тому что ЗЫ - сильно сложно? Чисто в теории понял куда конкретно сохраняются все настройки и +- адресацию их но вот склепать из этого всего процедуру пока нет (очень осложняет жизнь остутствие нормального эмулятора .. в протеусе 8 вроде как уже и ардуинка и даже ИДЕ к ней но к примеру экрана с тачем так и не появилось... да и ардуина в нем еще сырая - внешние библиотеки поддерживат не хочет а на железе туда-сюда гонять при отсутствии ясного понимания это таки слишком долго...
сам принцип понравился вот тут Скрытый текст
http://www.aquaforum.ua/showpost.php...6&postcount=37
Если сюда добавить
if reset = 0 then
{ timerUdo1vkl = .....
Ресет по логике ж вычищает ЕЕПРОМ, значит и 1й байт там станет нулем. Ну а при заполнении настройками нулем уже быть перестанет - логично?
Не пинайте сильно ногами т.к вообще учился на Бейсике, потом уже сам осваивал паскаль, до С дошло но т.к на то время более практично было админить то и забросил и теперь единственное программирование это скрипты на Bash
ЗЫ ЗЫ - таки буду морально решаться на покупку хотя-бы одного ПШ датчика
в
Re: Контроллер на базе Arduino Mega 2560 + 3.2" TFT Touch LCD ===www.aquaforum.ua===
я про програмно и говорю.
вопрос сложно ли при первом запуске скетча после сброса выставлять уже готовые и забитые вручную данные для таймеров ? т.е предварительно забить в код и сразу при первом старте уже настроенный контроллер ( вопрос к чему.. у меня считай 4 канала света и на каждом минимум 8 изменений яркости за день. 4 дозатора с подачей каждые 2 часа (в идеале)
а программа для таймеров сейчас 6 раз меняется за год ( не считая перевода времени.)
Если сложно и кроме меня никому не надо то со временем разберусь сам