Посетитель


149 8
Пятигорск
14 дн.

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

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

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

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

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




2011-06-1616/06/2011 11:21:27
#1443198
Нравится Volcan0, KoRvin
Завсегдатай


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

сообщение cz0
Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .


и не только, обязательно использовать BOD и в регистре адреса хранить адрес ячейки с неактуальными данными,
ну и в идеале каждый параметр в 3 ячейках и мажоритарная выборка

если же используются частые записи в eeprom, то необходимо использовать кольцевой буфер (как простой вариант),
также есть в аппноутах, для исключения быстрого "съедания" ресурса памяти (10 000 - 100 000 циклов записи, в зависимости от чипа)
2011-06-2020/06/2011 11:34:43
#1445184
Постоянный посетитель


521 11
Химки
2 года
Вот и получится у человека "простой" акваконтроллер...
2011-06-2020/06/2011 12:48:49
#1445215
Завсегдатай


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

cz0




зы: поэтому я и стараюсь использовать готовые уже опробованные решения, и быстрее и дешевле, ну если конечно приспичит и готового не подобрать, тогда уже своими ручками приходится ...
зызы: а топикстартеру желаю успехов в его начинаниях.
2011-06-2020/06/2011 12:54:03
#1445220
Постоянный посетитель


521 11
Химки
2 года
Угу.
А к успеху еще и упорства. У меня меги порой по пол сотни перепрошивок в день переживали, и так неделями. Хотя оффтоп, конечно.
2011-06-2020/06/2011 13:21:33
#1445242
Малёк


44
Шахты
5 года

сообщение Kiraso

сообщение cz0
Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .


и не только, обязательно использовать BOD и в регистре адреса хранить адрес ячейки с неактуальными данными,
ну и в идеале каждый параметр в 3 ячейках и мажоритарная выборка

если же используются частые записи в eeprom, то необходимо использовать кольцевой буфер (как простой вариант),
также есть в аппноутах, для исключения быстрого "съедания" ресурса памяти (10 000 - 100 000 циклов записи, в зависимости от чипа)


А можно ещё проще, зачем нам eeprom с его ограничениями по числу циклов? Я так понял у топикастера есть RTC таймер+батарейка, а в RTC есть RAM с неограниченным числом Write! Я думаю вы меня поняли))) Это все таки не електроних.ru
2011-06-2020/06/2011 14:18:01
#1445281
Завсегдатай


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

сообщение vlad61
А можно ещё проще, зачем нам eeprom с его ограничениями по числу циклов? Я так понял у топикастера есть RTC таймер+батарейка, а в RTC есть RAM с неограниченным числом Write! Я думаю вы меня поняли))) Это все таки не електроних.ru


конечно можно , просто автор упомянул о том что хранит данные в eeprom, а я только лишь пояснил о подводных камнях, возможно в несколько параноидальном исполнении ...
кстати, я так и не понял RTC в этих ардуинах не встроен? надо внешний "цеплять"? если так, то могли бы и поставить.
2011-06-2020/06/2011 15:16:36
#1445309
Посетитель


149 8
Пятигорск
14 дн.

сообщение vlad61

сообщение Kiraso

сообщение cz0
Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .


и не только, обязательно использовать BOD и в регистре адреса хранить адрес ячейки с неактуальными данными,
ну и в идеале каждый параметр в 3 ячейках и мажоритарная выборка

если же используются частые записи в eeprom, то необходимо использовать кольцевой буфер (как простой вариант),
также есть в аппноутах, для исключения быстрого "съедания" ресурса памяти (10 000 - 100 000 циклов записи, в зависимости от чипа)


А можно ещё проще, зачем нам eeprom с его ограничениями по числу циклов? Я так понял у топикастера есть RTC таймер+батарейка, а в RTC есть RAM с неограниченным числом Write! Я думаю вы меня поняли))) Это все таки не електроних.ru

Не могу найти пока как писать в рам RTC
2011-06-2020/06/2011 19:56:02
#1445456
Посетитель


149 8
Пятигорск
14 дн.

сообщение cz0

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

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

Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .

Это все конечно красиво и замечательно. Хотелось все сделать проще. Я согласен конечно с вами по поводу прерываний , но пока мне это тяжеловато...
А на счет EEPROM'а задержку я сделал 300мс думаю хватит.У меня значения пишутся только когда я их изменяю т.е. не часто.
2011-06-2020/06/2011 20:00:35
#1445458
Посетитель


149 8
Пятигорск
14 дн.

сообщение cz0

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

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

Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .

Это все конечно красиво и замечательно. Хотелось все сделать проще. Я согласен конечно с вами по поводу прерываний , но пока мне это тяжеловато...
А на счет EEPROM'а задержку я сделал 300мс думаю хватит.У меня значения пишутся только когда я их изменяю т.е. не часто.
2011-06-2020/06/2011 20:01:29
#1445459
Посетитель


149 8
Пятигорск
14 дн.

Вот первый раз в жизни попытался развести плату.
2011-06-2020/06/2011 20:09:48
#1445466
Малёк


44
Шахты
5 года

сообщение Paradox860

сообщение vlad61

сообщение Kiraso

сообщение cz0
Насчет EEPROM'а - таки да, там есть задержка при записи, которую нужно _обязательно_ выдержать, иначе получится импровизация на тему генератора случайных чисел .


и не только, обязательно использовать BOD и в регистре адреса хранить адрес ячейки с неактуальными данными,
ну и в идеале каждый параметр в 3 ячейках и мажоритарная выборка

если же используются частые записи в eeprom, то необходимо использовать кольцевой буфер (как простой вариант),
также есть в аппноутах, для исключения быстрого "съедания" ресурса памяти (10 000 - 100 000 циклов записи, в зависимости от чипа)


А можно ещё проще, зачем нам eeprom с его ограничениями по числу циклов? Я так понял у топикастера есть RTC таймер+батарейка, а в RTC есть RAM с неограниченным числом Write! Я думаю вы меня поняли))) Это все таки не електроних.ru

Не могу найти пока как писать в рам RTC

А какой RTC?
2011-06-2020/06/2011 20:12:58
#1445469
Посетитель


149 8
Пятигорск
14 дн.

vlad61

DS 1307
2011-06-2020/06/2011 20:32:52
#1445478
Постоянный посетитель


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

Paradox860

Для первого раза неплохо. Сразу замечания - нельзя таскать землю ЧЕРЕЗ контроллер, у Вас земля на кондеры тактового генератора идет не из земли платы, а из ноги контроллера. Вот конкретно в Вашем случае страшного в этом ничего нет (частоты не те), но так лучше не делать, потому что только богу известно каких гадостей наползет в эту землю, которая идет еще и в генератор. По хорошему землю от генератора нужно взять от точки, куда она пришла на плату, либо с толстого земляного полигона, но я обычно скрещиваю пальцы, закрываю глаза и тащу землю от ближайшей земляной дорожки (открещиваясь от встроенного в меня занудства словами "ну оно же цифровоо-о-ое, ну чего ему будет.."). Чуть правее по центру под контроллером у Вас не дорожка - а целый лабиринт. Я бы так делать не стал, а пустил бы дорожку по центру, а от нее сделал бы отводы на нужные ноги.
2011-06-2020/06/2011 21:00:15
#1445493
Малёк


44
Шахты
5 года

сообщение Paradox860

Вот первый раз в жизни попытался развести плату.


Цепи земли от кондеров генератора не хватает. А что за контроллер? может у него есть внутренний генератор так используйте его.
И ещё коллектора транзисторов включены на +12 в через светодиоды, так низя, нужны резисторы по 680-1000 Ом.
Плата будет делатся по ЛУТ технологии, поэтому односторонняя? Тгда делайте перемычки на верхней стороне , там где не можете провести дорожки.
2011-06-2121/06/2011 05:46:47
#1445600
Завсегдатай


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

сообщение Paradox860
Вот первый раз в жизни попытался развести плату.


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

зы: для разводки под ЛУТ и домашнего применения вообще рекомендую программку Sprint-Layout. В ручную можно очень душевные вещи сделать в ней и быстро.
2011-06-2121/06/2011 09:00:54
#1445635
Посетитель


149 8
Пятигорск
14 дн.

сообщение cz0

Paradox860

Для первого раза неплохо. Сразу замечания - нельзя таскать землю ЧЕРЕЗ контроллер, у Вас земля на кондеры тактового генератора идет не из земли платы, а из ноги контроллера. Вот конкретно в Вашем случае страшного в этом ничего нет (частоты не те), но так лучше не делать, потому что только богу известно каких гадостей наползет в эту землю, которая идет еще и в генератор. По хорошему землю от генератора нужно взять от точки, куда она пришла на плату, либо с толстого земляного полигона, но я обычно скрещиваю пальцы, закрываю глаза и тащу землю от ближайшей земляной дорожки (открещиваясь от встроенного в меня занудства словами "ну оно же цифровоо-о-ое, ну чего ему будет.."). Чуть правее по центру под контроллером у Вас не дорожка - а целый лабиринт. Я бы так делать не стал, а пустил бы дорожку по центру, а от нее сделал бы отводы на нужные ноги.


Земля на кондеры идет от преремычки (контакт чуть выше кондеров -> и напротив, справа от контроллера).Я даже и не знал что землю можно через контроллер кинуть))))
А дорожка которая как лабиринт это авторассировщик такое мутит)))
2011-06-2121/06/2011 19:26:25
#1445895
Посетитель


149 8
Пятигорск
14 дн.

vlad61

Про цепь земли ответил выше.
Контроллер ATmega168
Это не светодиоды это просто диоды(защитные) - там рядом пара контактов к ним вентиляторы на 12в подключаются.
Да плата Лутом будет делатся, перемычки есть я их просто не отметил.
2011-06-2121/06/2011 19:38:13
#1445903
Посетитель


149 8
Пятигорск
14 дн.

сообщение Kiraso

сообщение Paradox860
Вот первый раз в жизни попытался развести плату.


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

зы: для разводки под ЛУТ и домашнего применения вообще рекомендую программку Sprint-Layout. В ручную можно очень душевные вещи сделать в ней и быстро.


Разводка как раз такая странная зделанна в Sprint-Layout. Корпус есть. А плату стал разводить потому что мне нужно оставить ардуину для других подвигов)))
2011-06-2121/06/2011 19:42:24
#1445906
Посетитель


149 8
Пятигорск
14 дн.
Тааак давно ничего не писал небыло времени)))))
Вот набросал внешний вид корпуса...Осталось довести шпатлевкой загрунтовать и покрасить все!

2011-06-3030/06/2011 09:13:51
#1449880
Посетитель


149 8
Пятигорск
14 дн.
Платка))))


2011-07-0808/07/2011 10:58:49
#1453069
Посетитель


149 8
Пятигорск
14 дн.
Вот наконец все доделал!Работает уже месяц пока без проблем)))))))


2011-09-1111/09/2011 18:08:49
#1479513
Новичок


1
Russian Federation Moscow
7 года
расскажите по подробней как писалась программа или где то брали готовый код ?
я тоже давно хочу собрать контроллер для аквариума, но познаний в программировании очень мало можно даже сказать что их совсем нет (
2012-02-1616/02/2012 11:06:05
#1573040
Посетитель


109 1
Долгопрудный
5 года
Подробную схему потом показать сможете? И по цене во сколько обошлось всё.
Хотя метры аквариумистики и говорят, что лучше всё ручками делать в банке, чем автоматике довериться, но уж очень идея заманчивая)))
2012-02-1616/02/2012 12:09:31
#1573085
Посетитель


54 2
Королёв
4 дн.
Как Ваш контроллер ? Какие выявились баги?
2012-07-1919/07/2012 20:04:38
#1650040
Посетитель


149 8
Пятигорск
14 дн.
Мой контроллер отлично! Работает без передыху в моем домашнем аквариуме. Багов никаких не выявленно, все работает штатно. На данный момент почти готова новая версия. Контроллер стал модульным - основной модуль, силовой 220V, силовой 12V, модуль PH, модуль расширения портов на сдвиговых регистрах 4 -> 16.
Некоторые изменения в прошивке
- внесение удо по дням недели, в любой назначенный час
- 4 канала света с почасовой регулеровкой
- настройка даты
- системный сброс
- работа с PH датчиком.

Так что проект не заброшен, потехоньку развиваемся)))
У кого какие вопросы, помогу чем смогу!
2012-07-2424/07/2012 16:05:13
#1651551



Top