На головну сторінку Аквафорум
На головну сторінку




Назад   Аквафорум - форум акваріумістів та тераріумістів > Акваріум та обладнання > "Самоделкин" > Аквариумная автоматика
Аукцион Реєстрація ЧаПи Учасники Календар Нинішні дописи

Примітки

Відповідь
 
Параметри теми Параметри перегляду
Старий 17.03.2014, 13:10  
Простой акваконтроллер ARDUINO
 
Аватар для AlexVOK
Живу я тут

Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
 

сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
AlexVOK AlexVOK поза форумом 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

Мініатюри долучень
Щоб збільшити малюнок, клацніть по ньому
Назва:  $(KGrHqZ,!rYFG1iISsbLBRzjq2iFV!~~60_12.JPG
Переглядів: 3815
Розмір:  18,8 КБ
ID:	415548   Щоб збільшити малюнок, клацніть по ньому
Назва:  TK0616-2-easydealhere.jpg
Переглядів: 4593
Розмір:  122,2 КБ
ID:	415549   Щоб збільшити малюнок, клацніть по ньому
Назва:  047167-1-03.jpg
Переглядів: 3952
Розмір:  25,3 КБ
ID:	415550   Щоб збільшити малюнок, клацніть по ньому
Назва:  047167-1-02.jpg
Переглядів: 3843
Розмір:  17,8 КБ
ID:	415551   Щоб збільшити малюнок, клацніть по ньому
Назва:  27482.jpg
Переглядів: 4118
Розмір:  63,9 КБ
ID:	416203  

Щоб збільшити малюнок, клацніть по ньому
Назва:  Плата 220.jpg
Переглядів: 5551
Розмір:  88,0 КБ
ID:	451418   Щоб збільшити малюнок, клацніть по ньому
Назва:  aqua_controll_sch.jpg
Переглядів: 11724
Розмір:  55,4 КБ
ID:	457447  

Долучені файли
Тип файлу: rar libraries.rar (225,8 КБ, 5035 переглядів)
Тип файлу: zip aqua_controll_PNG.zip (1,59 МБ, 5050 переглядів)
Тип файлу: rar aqua_controll_spl7.rar (237,5 КБ, 4502 переглядів)
Тип файлу: rar aqua_controll.rar (9,1 КБ, 4905 переглядів)
Тип файлу: rar 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..
spolyakov поза форумом   Відповісти з цитуванням
Ці 5 користувач(ів) сказали Дякую spolyakov за це повідомлення:
AlexVOK (06.06.2015), Multiman (26.07.2015), RozarioAgro (06.06.2015), Sem (16.06.2015), Toha24510 (19.10.2015)
Старий 06.06.2015, 17:13   #662
Живу я тут
  
 
Аватар для AlexVOK
 
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

spolyakov,
Отличная работа
Особенно мне понравился держатель для трубочек, сам гнул?

По поводу скетча выкладывай.
заархивируй его, (внизу под окном сообщения форума есть кнопка расширенный режим, там можно прикреплять файлы)

AlexVOK поза форумом   Відповісти з цитуванням
cказали "Дякую" AlexVOK за цей допис:
spolyakov (06.06.2015)
Старий 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 , только пришлось немного рассверлить отверстия.
Скетч вроде прикрепил.
Долучені файли
Тип файлу: rar aqua_controll_2.rar (9,1 КБ, 234 переглядів)


__________________

spolyakov поза форумом   Відповісти з цитуванням
cказали "Дякую" spolyakov за цей допис:
kolljj (06.06.2015)
Старий 06.06.2015, 19:58   #664
Живу я тут. Мохоманьяк
  
 
Аватар для RozarioAgro
 
Реєстрація: 12.07.2014
Звідки Ви: Киев, Позняки сити
Дописи: 1.975
сказав Дякую: 1.151
сказали Дякую 2.542 раз(и) в 955 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

spolyakov, у меня клапана стоят на выходе, для предотвращения попадания воздуха. Кстати используемые вами вибро насосы конструктивно выполнены так, что имеют встроенные обратные клапана.

__________________
АКВАРИУМНАЯ АВТОМАТИКА И СВЕТОДИОДНОЕ ОСВЕЩЕНИЕ AQUAPLANNER
+38 095 249-77-51 моб.тел\вайбер Наш сайт
Роман


__________________

RozarioAgro поза форумом   Відповісти з цитуванням
Старий 06.06.2015, 22:09   #665
Живу я тут. Мохоманьяк
  
 
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Они имеют даже 2 клапана, но в 2 из 3 насосов вода постепенно уходит назад в банки с удо.


__________________

spolyakov поза форумом   Відповісти з цитуванням
Старий 06.06.2015, 22:14   #666
Живу я тут. Мохоманьяк
  
 
Аватар для RozarioAgro
 
Реєстрація: 12.07.2014
Звідки Ви: Киев, Позняки сити
Дописи: 1.975
сказав Дякую: 1.151
сказали Дякую 2.542 раз(и) в 955 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Оффтоп


__________________


Востаннє редагував RozarioAgro: 06.06.2015 о 22:30..
RozarioAgro поза форумом   Відповісти з цитуванням
cказали "Дякую" RozarioAgro за цей допис:
_Vadim (28.02.2016)
Старий 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..
spolyakov поза форумом   Відповісти з цитуванням
Старий 16.06.2015, 22:28   #668
Живу я тут
  
 
Аватар для AlexVOK
 
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

spolyakov,
был не прав

патч ниже


Востаннє редагував AlexVOK: 17.06.2015 о 10:34..
AlexVOK поза форумом   Відповісти з цитуванням
cказали "Дякую" AlexVOK за цей допис:
spolyakov (16.06.2015)
Старий 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.


__________________

spolyakov поза форумом   Відповісти з цитуванням
cказали "Дякую" spolyakov за цей допис:
AlexVOK (17.06.2015)
Старий 17.06.2015, 10:29   #670
Живу я тут
  
 
Аватар для AlexVOK
 
Реєстрація: 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 микроконтроллеров!!)

Внимание для тех кто повторил контроллер ОБЯЗАТЕЛЬНО ОБНОВИТЕ скетчь
(есть вероятность залипона, хоть и очень маленькая но она есть)

AlexVOK поза форумом   Відповісти з цитуванням
Ці 2 користувач(ів) сказали Дякую AlexVOK за це повідомлення:
AlexNT (04.07.2015), spolyakov (17.06.2015)
Старий 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 в секунду (чтобы точки на часах мигли )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??

AlexNT поза форумом   Відповісти з цитуванням
Старий 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) не выполниться до тех пор пока пользователь что-то не нажмет.....


__________________

spolyakov поза форумом   Відповісти з цитуванням
Старий 04.07.2015, 19:31   #673
Живу я тут
  
 
Аватар для AlexVOK
 
Реєстрація: 11.07.2013
Звідки Ви: Киев (Борщаговка)
Дописи: 665
сказав Дякую: 106
сказали Дякую 535 раз(и) в 244 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від AlexNT Переглянути допис
|| - это ИЛИ
Кстати, вот только подумал. Ведь с таким условием можно запускать обработку и гораздо реже, раза 2 в секунду (чтобы точки на часах мигли )
Ошибки срабатывания таймеров управления будут не больше секунды, что вполне достаточно.
Не ??
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером

Пусть себе малюет экран лишние разы - эму это не сложно

AlexVOK поза форумом   Відповісти з цитуванням
Старий 04.07.2015, 23:59   #674
Придивляюся
  
 
Реєстрація: 08.01.2008
Звідки Ви: Pinsk, RB
Дописи: 43
сказав Дякую: 5
сказали Дякую 16 раз(и) в 12 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

Цитата:
Допис від AlexVOK Переглянути допис
это возможно но особого смысла в этом нет, так как нет необходимости экономить электроэнергию потребленную самим микроконтроллером
Ну в принципе... наверное да... это я не подумал. По сравнению с подсветками\помпами действительно мелочь. Тем более что loop() все равно будет бегать вхолостую и жрать энергию. Разве что в сон ложить... Но это лишние сложности ради 0.0001% и реакция на клавиши замедлится

AlexNT поза форумом   Відповісти з цитуванням
Старий 05.07.2015, 12:26   #675
Живу я тут. Мохоманьяк
  
 
Реєстрація: 01.10.2010
Звідки Ви: Одесса
Дописи: 95
сказав Дякую: 33
сказали Дякую 24 раз(и) в 11 повідомленні
Re: Простой акваконтроллер ARDUINO ===www.aquaforum.ua===

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


__________________

spolyakov поза форумом   Відповісти з цитуванням


Share/Bookmark

Відповідь

Мітки
arduino, акваконтроллер


Тут присутні: 3 (учасників - 0 , гостей - 3)
 

Ваші права у розділі
Ви не можете створювати теми
Ви не можете писати дописи
Ви не можете долучати файли
Ви не можете редагувати дописи

BB-код є Увімк.
Усмішки Увімк.
[IMG] код Увімк.
HTML код Вимк.

Швидкий перехід


Часовий пояс GMT +3. Поточний час: 06:34.


vBulletin 3.8.7 ; Copyright © 2000-2025 Jelsoft Enterprises Limited
Переклад: © Віталій Стопчанський, 2004-2010
(с)Бешлега Олександр Анатолійович, 2002-2025. Використання матеріалів сайту без посилання на джерело заборонено.
Дякуємо за ліцензійну версію форума компанію Барбус, представника торгової марки Sera в Україні.


no new posts