Посетитель


145 7
Пятигорск
15 дн.

Простенький акваконтроллер на ARDUINO

Всем привет вот за пару дней наваял контроллер.

Что умеет:
1. Включать выключать свет по таймеру
2. Включать выключать Co2 по таймеру
3. Ну и включать кулеры в крышке или обогреватель - термоконтроллер
4. Показывать время и температуру))).

Что еще хотелось бы прикрутить:
1. измерение PH.
2. Добавление удо 1 раз в X минут или часов.
Проект пока не доделан. Может кто поможет оптимизировать код ну или поправить если что не красиво зделанно.
Корпуса пока нет))).

Щас жду некоторые запчастюльки для силовой части схемы потом продолжу если кому интересно.




2011-06-1616/06/2011 11:21:27
#1443198
Нравится Volcan0, KoRvin
Постоянный посетитель


521 11
Химки
2 года
Доброго дня (тяжелый вдох..).
Сразу вопросы:
1. на чем написан код?
2. как обрабатываются RTC, забираешь время по TWI (I2C, ага-ага) или прерывание от ноги в счетчик внутри меги?
3. не вижу резервного питания для основного контроллера - нужно обязательно, с этого надо начать
4. не вижу кнопков
5. работает ли вотчдог, как часто пинаешь?

P.S. с навесным монтажом бороться всеми силами, либо все провода на макетку, либо делать поэтапно функциональными модулями и их подключать несколькими проводами. Я предпочел последнее, ЛУТа для этого хватает с избытком.
2011-06-1616/06/2011 12:10:41
#1443225
Посетитель


106 3
Москва
1 года

Paradox860

Предлагаю добавить(замутить) датчик протечек с отправкой емайла или смс, или вот - все показатели в твиттер!(как чайник который по закипанию отдавал твит о закипании). Чем будешь мерить кислотность? Как будешь выставлять во внешний мир?. Как будешь добавлять удо?(мотор и счетчик оборотов/концевой/...)

cz0

Код на С++


Изменено 16.6.11 автор fc Антон
2011-06-1616/06/2011 12:16:36
#1443230
Посетитель


145 7
Пятигорск
15 дн.

cz0


А что такой тяжелый вздох?

Ответы:
1.С++
2.I2C
3.Все настройки сохраняются в ПЗУ. Зачем ему резервное питание?Вырубится свет вырубится весь аквас(хотя у меня для этого ИБП).
4. Кнопков 3 .
5. Все в цикле (канечно не правильно но просто не знаю как по другому).

PS. Навесного ничего не будет, это пока только макет. Как все отлажу сделаю плату ЛУТом и заменю контроллер на Мегу8 с загрузчиком Ардуино.
2011-06-1616/06/2011 12:42:10
#1443245
Посетитель


145 7
Пятигорск
15 дн.

fc Антон


Отправка смс очень дорого выйдет если по GSM делать но возможно...(нужно будет шилд купить).А вот по интернету дешевле шилд всего 20$ стоит прикрутить очень легко будет)))
На счет PH надеялся ктото подскажет как замутить . Есть мысль купить на ибэе мерилку за 13$ раскурочить ее и прикрутить сюда , но это пока только мысли.....

С удо еще не придумал впринципе можно делать как душа пожелает.
2011-06-1616/06/2011 12:47:01
#1443250
Посетитель


145 7
Пятигорск
15 дн.
Кстате как лучше замутить датчик протечки кто подскажет?
2011-06-1616/06/2011 12:49:44
#1443253
Малёк


44
Шахты
5 года

сообщение Paradox860
Кстате как лучше замутить датчик протечки кто подскажет?


Я использовал HIH4000-001, но нужно ацп он чисто аналоговый. При намокании на выходе мгновенно появляется +5в.
http://www.gaw.ru/ht...
2011-06-1616/06/2011 13:26:32
#1443280
Посетитель


145 7
Пятигорск
15 дн.

vlad61

АЦП имеетса...
Хм а сколько ты за него отдал?Хорошая тема.
Но хотелось бы что нибудь из подручных материалов зделать.
2011-06-1616/06/2011 13:35:56
#1443287
Посетитель


145 7
Пятигорск
15 дн.
Силовая часть схемы.

2011-06-1616/06/2011 13:54:50
#1443296
Посетитель


106 3
Москва
1 года

Paradox860

Ну нагуглил - надо разбираться
http://code.google.c... - собственно измерение ПШ
http://www.arduino.c... - форум где у парня контроллер измеряетTemp (heater, fan, kills lights if too hot) Water level (uses float switch) Power heads (kills pumps for 5 min for feeding) Displays pH
Собственно покурив проект(и форум), нашел как делается PH метр http://reefprojects....

А датчик протечки/перелива http://www.arduino.c... с кодом


Изменено 16.6.11 автор fc Антон
2011-06-1616/06/2011 14:04:58
#1443302
Посетитель


145 7
Пятигорск
15 дн.

сообщение fc Антон

Paradox860

Ну нагуглил - надо разбираться
http://code.google.c... - собственно измерение ПШ
http://www.arduino.c... - форум где у парня контроллер измеряетTemp (heater, fan, kills lights if too hot) Water level (uses float switch) Power heads (kills pumps for 5 min for feeding) Displays pH
Собственно покурив проект(и форум), нашел как делается PH метр http://reefprojects....

А датчик протечки/перелива http://www.arduino.c... с кодом


Изменено 16.6.11 автор fc Антон


Спасибо будим курить....
2011-06-1616/06/2011 14:51:13
#1443331
Постоянный посетитель


521 11
Химки
2 года
В первую очередь я бы рекомендовал бы заткнуть обработку часов во внешнее прерывание от RTC. От циклов избавиться, загоняться контроллер в IDLE, просыпаться по прерыванию от таймера (хоть внутреннего пустого) пускай 10 раз в секунду по пустому прерыванию что бы управление передалось в main или откуда было прервано (скорее всего от предыдущего слипа в конце мейна). В мейне пройтись про процедуркам (с) на предмет опроса времени, выявления сделать операцию по таймеру (сравнить установленное время по расписанию с текущим) и снова уснуть. Это чуть сложнее сделать, но бесконечный цикл - это кладезь багов и глюков в долгосрочной перспективе. Все будет работать на коленке в тестовом режиме, неделю-две-три, но потом обязательно заглючит. Не выключить свет из-за зависшего контроллера - пол беды, а вот не выключить клапан CO2 или заклинить в момент работы перистальтического насоса, подающего макро/микро (особенно нитраты с фосфатами) - результат не заставит себя долго ждать.
2011-06-1616/06/2011 15:00:28
#1443335
Завсегдатай


1007 71
Санкт-Петербург
21 час.

Paradox860

есть же готовые недорогие решения, или хотелось немного ручками?
2011-06-1616/06/2011 15:38:30
#1443356
Постоянный посетитель


521 11
Химки
2 года


Paradox860

есть же готовые недорогие решения, или хотелось немного ручками?

Ручками:
1. функциональней, потому что железяка будет решать именно данную конкретную задачу в окружении автора
2. интереснее, потому что развивает
Это я за себя ответил
2011-06-1616/06/2011 15:41:36
#1443359
Посетитель


145 7
Пятигорск
15 дн.

сообщение Kiraso

Paradox860

есть же готовые недорогие решения, или хотелось немного ручками?


Ручки чешутся))))
2011-06-1616/06/2011 19:36:32
#1443527
Посетитель


145 7
Пятигорск
15 дн.
Прикрутил выключение света при критическом перегреве.Оч кстате клевая штука.
2011-06-1616/06/2011 19:37:54
#1443528
Постоянный посетитель


521 11
Химки
2 года

сообщение Paradox860
Прикрутил выключение света при критическом перегреве.Оч кстате клевая штука.

Не забудьте прикрутить отключение подачи CO2 сразу при выключении света, если подаете свыше 20 мг/л.
2011-06-1616/06/2011 19:49:38
#1443536
Посетитель


145 7
Пятигорск
15 дн.

сообщение cz0

сообщение Paradox860
Прикрутил выключение света при критическом перегреве.Оч кстате клевая штука.

Не забудьте прикрутить отключение подачи CO2 сразу при выключении света, если подаете свыше 20 мг/л.

Ага ,спасибо, это уже сделанно))
2011-06-1616/06/2011 19:55:58
#1443546
Посетитель


145 7
Пятигорск
15 дн.
Кто подскажет по Ph датчикам есть ли принципиальна разница между ними?Или можно любой брать?
2011-06-1616/06/2011 20:01:04
#1443551
Постоянный посетитель


521 11
Химки
2 года

Paradox860

Они в общем и целом взаимозаменяемы. Бывают "твердотельными" и с раствором. Первые имеют срок годности, и чаще нуждаются в калибровке, во вторых надо менять раствор, но само тело вечное, по крайней мере когда я задал вопрос о ресурсе зав. лабой одного из научных институтов РФ, на что получил ответ "не задумывалась об этом". Либо они их чаще бьют (Ph электрод в лабах - расходник), либо действительно вечные. Еще бывают термокомпенсированные, бывают со встроенным термодатчиком, бывают на разные диапазоны температур.
От себя могу добавить, что у научников в лабах наиболее котируются электроды от Hana и Meter. Очень много годных электродов выпускает наша в вами необъятная в силу немалого количества различных хим. процессов и производств.

Изменено 16.6.11 автор cz0
2011-06-1616/06/2011 20:40:13
#1443585
Постоянный посетитель


521 11
Химки
2 года

Paradox860

Избавьтесь от циклов, мой Вам совет. Посмотрите треды в HOWTO на avrfreaks, там нет ничего сложного.
2011-06-1717/06/2011 12:39:57
#1443885
Посетитель


145 7
Пятигорск
15 дн.

сообщение cz0

Paradox860

Избавьтесь от циклов, мой Вам совет. Посмотрите треды в HOWTO на avrfreaks, там нет ничего сложного.

Да на Arduine впринципе любая программа это цикл voide loop{}.
2011-06-1717/06/2011 20:21:54
#1444092
Посетитель


145 7
Пятигорск
15 дн.

сообщение cz0

Paradox860

Они в общем и целом взаимозаменяемы. Бывают "твердотельными" и с раствором. Первые имеют срок годности, и чаще нуждаются в калибровке, во вторых надо менять раствор, но само тело вечное, по крайней мере когда я задал вопрос о ресурсе зав. лабой одного из научных институтов РФ, на что получил ответ "не задумывалась об этом". Либо они их чаще бьют (Ph электрод в лабах - расходник), либо действительно вечные. Еще бывают термокомпенсированные, бывают со встроенным термодатчиком, бывают на разные диапазоны температур.
От себя могу добавить, что у научников в лабах наиболее котируются электроды от Hana и Meter. Очень много годных электродов выпускает наша в вами необъятная в силу немалого количества различных хим. процессов и производств.

Изменено 16.6.11 автор cz0

Спасибо за развернутый ответ!!!!!
2011-06-1717/06/2011 20:22:32
#1444093
Завсегдатай


1007 71
Санкт-Петербург
21 час.

сообщение Paradox860
Да на Arduine впринципе любая программа это цикл voide loop{}.


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

Изменено 20.6.11 автор Kiraso
2011-06-2020/06/2011 10:46:56
#1445159
Постоянный посетитель


521 11
Химки
2 года

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

Именно так. Впрочем, у меня основной цикл не пустой, как правило, а содержит вызовы процедур, которые обрабатывают события, что-то типа:
int main(void)
{
for(;
{
проверить_клавиатуру();
проверить_буфер_usart();
проверить_что-то_еще();
установить_режим_сна(режим);
заснуть();
}
return(0);
}
Контроллер, получив пинка от прерывания проснется, обработает прерывание (засунет что-то в буфер клавиатуры, добавит в буфер USART'а,...), а затем вернется туда, откуда заснул - на начало цикла for, где ему будет предоставлена чудесная возможность разгрести все то, что он получил в прерываниях, после чего благополучно заснет до очередного пинка. Полезненько бывает сделать счетчик-таймер, который будет будить контроллер по переполнению даже если событий не было.

Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .
2011-06-2020/06/2011 11:05:35
#1445171



Top