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


Посетитель




132 4
Пятигорск
10 дн. назад
Простенький акваконтроллер на ARDUINO
Всем привет вот за пару дней наваял контроллер.

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

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

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




2011-06-16 добавлено 16/06/2011 11:21:27#1443198
Нравится KoRvin

Свой на Aqa.ru




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


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

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

Свой на Aqa.ru




522 11
Химки
3 мес. назад
Вот и получится у человека "простой" акваконтроллер...
2011-06-20 добавлено 20/06/2011 12:48:49#1445215

Свой на Aqa.ru




997 68
Санкт-Петербург
8 час. назад
cz0




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

Свой на Aqa.ru




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

Новичок




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


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

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


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

Свой на Aqa.ru




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


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

Посетитель




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


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

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


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

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

Посетитель




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

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

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

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

Посетитель




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

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

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

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

Посетитель




132 4
Пятигорск
10 дн. назад

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

Новичок




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


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

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


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

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

А какой RTC?
2011-06-20 добавлено 20/06/2011 20:12:58#1445469

Посетитель




132 4
Пятигорск
10 дн. назад
vlad61

DS 1307
2011-06-20 добавлено 20/06/2011 20:32:52#1445478

Свой на Aqa.ru




522 11
Химки
3 мес. назад
Paradox860

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

Новичок




44
Шахты
3 г. назад
сообщение Paradox860

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


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

Свой на Aqa.ru




997 68
Санкт-Петербург
8 час. назад
сообщение Paradox860
Вот первый раз в жизни попытался развести плату.


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

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

Посетитель




132 4
Пятигорск
10 дн. назад
сообщение cz0
Paradox860

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


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

Посетитель




132 4
Пятигорск
10 дн. назад
vlad61

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

Посетитель




132 4
Пятигорск
10 дн. назад
сообщение Kiraso
сообщение Paradox860
Вот первый раз в жизни попытался развести плату.


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

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


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

Посетитель




132 4
Пятигорск
10 дн. назад
Тааак давно ничего не писал небыло времени)))))
Вот набросал внешний вид корпуса...Осталось довести шпатлевкой загрунтовать и покрасить все!
2011-06-30 добавлено 30/06/2011 09:13:51#1449880

Посетитель




132 4
Пятигорск
10 дн. назад
Платка))))

2011-07-08 добавлено 08/07/2011 10:58:49#1453069

Посетитель




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


2011-09-11 добавлено 11/09/2011 18:08:49#1479513

Новичок




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

Посетитель




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

Новичок




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

Посетитель




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

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

<< 1234567 >> Создать новую темуБыстрый ответ