 |
|
17.03.2014, 13:10
|
|
Простой акваконтроллер ARDUINO
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні

17.03.2014, 13:10
Рейтинг:
(9 голосов - 5,00 средняя оценка)
Аква контроллер ARDUINO.
(Обратите внимание на доработанный вариант от форумчан. Ссылка внизу!)
( ПродолжениеПростой акваконтроллер ARDUINO v.2 (LED море))
(ГОТОВЫЕ КОНТРОЛЛЕРЫ НЕ ПРОДАЮ)
Решил ознакомиться я с ARDUINO, за одно порадовать своих рыбасей.
Сделать им(себе) доп удобства за минимальную цену и с минимальным напрягом по времени.
На eBay заказал.
Контроллер
Arduino PRO Mini ATMEGA328P 5V 16M (16MHZ) + CP2102 модуль + кабель = полный комплект для программирования - US $3.18
Часы реального времени
I2C RTC DS1307 AT24C32 Real Time Clock Module for Arduino + Батарейка US $1.15
Индикатор 84*48 LCD Module White backlight adapter PCB for Nokia 5110 Arduino US $1.83
Влагозащищенный цифровой датчик температуры
DS18b20 Waterproof Temperature Sensors (5м нормального кабеля) US $3.7
В качестве блока питания зарядка от iPhon там же за 1 бакс.
Еще немного мелочи типа симисторов и опторазвязки для силовой части.
Что вышло в итоге.
Аква контроллер с энергонезависимыми часами реального времени.
Графический экран с регулировкой яркости подсветки и контрастности.
Управление 13-ю нагрузками.
Куча таймеров, ограничил по 25 на канал (памяти хватит на 500).
Поддержка режима «кормление» - отключается фильтр на 20 мин.
Цифровой термометр и управление нагревателем и охладителем(в моем случае кулер).
Органы управления
1 кнопка отмена
2 кнопка вверх
3 кнопка вниз
4 кнопка ОК
Нагрузки
D10 куллер (С регулировкой оборотов)
D11 ЛЕД (Восход/закат)
А0 1W (термометр)
D12 Фильтр
D13 Нагреватель
D1 СО2
D0 Компрессор
А1 Свет1
А2 Свет2
А3 УДО Микро
А4 УДО Макро
А5 УДО Железо
А6 Управление БП
Себестоимость контроллера чуть больше 10 баксов.
На картинке силовая часть в виде готового релейного модуля (такие есть и на 8 каналов - цена около 8 баксов), я использовал свою плату силовой части - схема и печатка во вложении(плату изготавливал по ЛУТ технологии).
Все проверено - работает.
Все комплектующие покупались на ибей и цены ориентировочные доставке везде БЕСПЛАТНАЯ.
ВАЖНО.
соединять ардуино и часы проводниками минимальной длинны !!!
Варианты скетча:
MIHS, скетч с измененными буквами.
Одна из лучших реализаций от форумчан
burnashev https://www.aquaforum.ua/showpost.ph...postcount=1221
Ant0ny https://www.aquaforum.ua/showpost.ph...postcount=1224
Мініатюри долучень
Долучені файли
 |
libraries.rar (225,8 КБ, 5035 переглядів) |
 |
aqua_controll_PNG.zip (1,59 МБ, 5050 переглядів) |
 |
aqua_controll_spl7.rar (237,5 КБ, 4502 переглядів) |
 |
aqua_controll.rar (9,1 КБ, 4905 переглядів) |
 |
220_v3.rar (18,4 КБ, 4540 переглядів) |
Востаннє редагував AlexVOK: 01.02.2019 о 23:47..
|
Переглядів: 551916
|
Ці 48 користувач(ів) сказали Дякую AlexVOK за це повідомлення:
|
AkaPain (28.08.2015), Alex Meng (30.10.2017), Andressio (01.02.2015), Ant0ny (08.07.2018), Arduino (03.12.2016), burnashev (16.09.2018), chack (10.12.2014), Denisios (27.05.2014), dimul (29.04.2014), Floyd (09.07.2018), Gorbounov (20.09.2014), h_a_m (12.01.2015), imac2008 (20.12.2015), kolljj (20.11.2014), Litr55 (24.02.2021), LVit (20.01.2016), Mehannik (11.11.2014), MIHS (27.01.2016), Multiman (27.03.2015), nanolab (18.03.2015), Olegvs (25.03.2017), PaninAV (07.09.2018), paradox860 (22.12.2014), pdv1965 (20.03.2014), RozarioAgro (10.03.2015), rusianGrt (09.10.2017), sae74 (22.08.2014), sefr111 (28.04.2016), Sem (22.03.2015), Sikx (30.01.2019), Slesh (18.10.2014), Spiker (12.11.2015), spolyakov (20.06.2015), steals81 (17.03.2014), Toha24510 (22.10.2015), Tvister86 (07.02.2017), ya7sergey (09.02.2017), _Vadim (27.02.2016), _Константин_ (28.03.2016), акв@фанат (23.11.2014), Артур Дент (24.04.2014), Ветал (08.03.2016), Вячеслав Сергеев (14.09.2015), Игорь-1 (30.10.2014), Никола73 (31.03.2017), Петко Шкодров (18.10.2014), Сан Саныч (07.10.2024), Юрий77 (26.02.2016) |
06.06.2015, 16:32
|
#661
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Прошло две недели испытания акваконтроллера разработанного AlexVOK. Отдельное спасибо за такую полезную разработку, и помощь в процессе его сборки. Должен сказать, что до этой статьи никогда не работал ни с ардуино ни с другими контроллерами. Также огромное спасибо пользователю AlexNT за его подсказки =)
Вот что получилось:
Приборная панель
Вид изнутри
Блок дозирующих насосов ULKA
Ввод шлангов в аквариум
Немного поменял скетч:
- добавил меню настройки дозатора в котором внес меню калибровки насосов, а также добавил возможность ручной прокачки насосов.
- вывел на главный экран состояние работы всех таймеров, а также состояние работы систем нагрева/охлаждения
- вырезал за ненадобностью управление блоком питания, а также рассвет закат
- вместо рассвета/заката добавлен таймер ночной подсветки, который просто включает светодиодную ленту в заданное время.
- убрал таймер для отключения фильтра во время кормления.
Если кому будет интересно вышлю скетч - не понимаю как сюда его выложить....
__________________ 
Востаннє редагував spolyakov: 06.06.2015 о 16:46..
|
|
|
Ці 5 користувач(ів) сказали Дякую spolyakov за це повідомлення:
|
|
06.06.2015, 17:13
|
#662
|
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
spolyakov,
Отличная работа
Особенно мне понравился держатель для трубочек, сам гнул?
По поводу скетча выкладывай.
заархивируй его, (внизу под окном сообщения форума есть кнопка расширенный режим, там можно прикреплять файлы)
|
|
|
cказали "Дякую" AlexVOK за цей допис:
|
|
06.06.2015, 18:52
|
#663
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Нет держатель для трубочек это работа местного умельца http://www.aquaforum.ua/showthread.php?t=193084 , только пришлось немного рассверлить отверстия.
Скетч вроде прикрепил.
__________________ 
|
|
|
cказали "Дякую" spolyakov за цей допис:
|
|
06.06.2015, 19:58
|
#664
|
Живу я тут. Мохоманьяк
Реєстрація: 12.07.2014
Звідки Ви: Киев, Позняки сити
Дописи: 1.975
сказав Дякую: 1.151
сказали Дякую 2.542 раз(и) в 955 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
spolyakov, у меня клапана стоят на выходе, для предотвращения попадания воздуха. Кстати используемые вами вибро насосы конструктивно выполнены так, что имеют встроенные обратные клапана.

__________________
АКВАРИУМНАЯ АВТОМАТИКА И СВЕТОДИОДНОЕ ОСВЕЩЕНИЕ AQUAPLANNER
+38 095 249-77-51 моб.тел\вайбер Наш сайт
Роман
__________________ 
|
|
|
06.06.2015, 22:09
|
#665
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Они имеют даже 2 клапана, но в 2 из 3 насосов вода постепенно уходит назад в банки с удо.
__________________ 
|
|
|
06.06.2015, 22:14
|
#666
|
Живу я тут. Мохоманьяк
Реєстрація: 12.07.2014
Звідки Ви: Киев, Позняки сити
Дописи: 1.975
сказав Дякую: 1.151
сказали Дякую 2.542 раз(и) в 955 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Оффтоп
Извините за то что пишу не по теме автора. Долгое время использовал вибронасосы, не понравилось (шум, протечки). Перешел на такие помпочки, пока доволен.

__________________ 
Востаннє редагував RozarioAgro: 06.06.2015 о 22:30..
|
|
|
cказали "Дякую" RozarioAgro за цей допис:
|
|
16.06.2015, 21:12
|
#667
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Ребят при создании своего проекта обратил внимание на одну особенность, полез в скетч и возник следующий вопрос с данным куском кода:
currentTime = millis();
key = getPressedButton();
if((currentTime >= (loopTime + 250))||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)
А что будет приблезительно через 50 дней когда millis() обнулится (при условии, что за это время ни разу не выключали свет, у меня к примеру устройство подключено к УПС).
Тоесть условие currentTime >= (loopTime + 250) перестанет выполняться, а key в случае простоя будет равен prev_key (поидее 0). По идее программа тупо зависнет, пока пользователь не нажмет какую либо из кнопок. Или я не прав?
Если я прав то можно либо сделать контроль переполнения функции millis() , что добавит кусок кода и будет занимать дополнительно память контроллера.
Или переписать условие как-то так:
if((abs(currentTime - loopTime) >= 250)||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)
да такое условие будет давать ошибку на один пропуск, но по идее это не критично....
__________________ 
Востаннє редагував spolyakov: 16.06.2015 о 21:22..
|
|
|
16.06.2015, 22:28
|
#668
|
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
spolyakov,
был не прав
патч ниже
Востаннє редагував AlexVOK: 17.06.2015 о 10:34..
|
|
|
cказали "Дякую" AlexVOK за цей допис:
|
|
16.06.2015, 23:12
|
#669
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
не пойму почему так. millis () сбросился и равен пусть 0 в этот момент loopTime равен максимальному значению функции millis (). Следовательно условие currentTime >= (loopTime + 250) не выполнимо. Далее key будет равен prev_key и равен 0 так как контроллер в простое. Соответсвенно эта часть условия key != prev_key тоже не выполняется. Следовательно все что внутри функции if((currentTime >= (loopTime + 250))||(key != prev_key)){ не будет выполнено пока пользователь не нажмет какую либо кнопку и не выполнится условие key != prev_key.
__________________ 
|
|
|
cказали "Дякую" spolyakov за цей допис:
|
|
17.06.2015, 10:29
|
#670
|
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
spolyakov, мысли у вас конечно правильные
хотя за год никаких залипаний не было
но всетаки вы правы
предлагаю патчь
if((abs(currentTime-loopTime) >= 250)||(key != prev_key)){ // проверяем каждые 5мс (20 Гц)
Еще для полной отказоустойчивости нужно было б прошить новый бутлоадер в ардуинку с поддержкой WatchDog таймера
я использовал optiboot. (но сразу предупреждаю нужен програматор для AVR микроконтроллеров!!)
Внимание для тех кто повторил контроллер ОБЯЗАТЕЛЬНО ОБНОВИТЕ скетчь
(есть вероятность залипона, хоть и очень маленькая но она есть)
|
|
|
Ці 2 користувач(ів) сказали Дякую AlexVOK за це повідомлення:
|
|
04.07.2015, 01:00
|
#671
|
Придивляюся
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від spolyakov
Следовательно все что внутри функции if((currentTime >= (loopTime + 250))||(key != prev_key)){ не будет выполнено пока пользователь не нажмет какую либо кнопку и не выполнится условие key != prev_key.
|
|| - это ИЛИ
Так что условие сработает если разница в таймингах больше заданной (5мс) ИЛИ пользователь нажал кнопку (тогда плюем на тайминг и срочно обрабатываем весь цикл)
Кстати, вот только подумал. Ведь с таким условием можно запускать обработку и гораздо реже, раза 2 в секунду (чтобы точки на часах мигли  )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??
|
|
|
04.07.2015, 17:26
|
#672
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
правильно но разница в таймингах при обнулении функции millis() будет отрицательная так как значение loopTime будет почти максимальным значением функции millis(), а loopTime будет в момент сброса равно 0 или около того и следовательно эта часть условия (currentTime >= (loopTime + 250) никогда не выполниться. Вторая часть условия (key != prev_key) не выполниться до тех пор пока пользователь что-то не нажмет.....
__________________ 
|
|
|
04.07.2015, 19:31
|
#673
|
Живу я тут
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від AlexNT
|| - это ИЛИ
Кстати, вот только подумал. Ведь с таким условием можно запускать обработку и гораздо реже, раза 2 в секунду (чтобы точки на часах мигли  )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??
|
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером
Пусть себе малюет экран лишние разы - эму это не сложно 
|
|
|
04.07.2015, 23:59
|
#674
|
Придивляюся
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Цитата:
Допис від AlexVOK
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером
|
Ну в принципе... наверное да... это я не подумал. По сравнению с подсветками\помпами действительно мелочь. Тем более что loop() все равно будет бегать вхолостую и жрать энергию. Разве что в сон ложить... Но это лишние сложности ради 0.0001% и реакция на клавиши замедлится
|
|
|
05.07.2015, 12:26
|
#675
|
Живу я тут. Мохоманьяк
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
|
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===
Второй раз за месяц использования возникает странная ситуация - пропадает связь с датчиком температуры и сразу включается нагрев. После перезапуска контроллера все приходит в норму. Думаю связано с тем что я удлинял проводку к нему гдето на полтора метра. Думаю выйти из ситуации так: запихнуть в функцию кусок кода отвечающий за инициализацию датчика и при пропадании его вызывать эту фунцию к примеру 3 раза, если все равно не видит пишем еррор. Чтоже касается включения нагреваткля при обрыве датчика - то этот касяк можно исправить поменяв условие включения нагревателя, ато так можно уху сварить если к примеру датчик замокнет... Что думаете?
__________________ 
|
|
|
 |
|
Тут присутні: 3 (учасників - 0 , гостей - 3)
|
|
Ваші права у розділі
|
Ви не можете створювати теми
Ви не можете писати дописи
Ви не можете долучати файли
Ви не можете редагувати дописи
HTML код Вимк.
|
|
|
Часовий пояс GMT +3. Поточний час: 06:34.
|