Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств. |
18.09.2011, 16:05
|
|
Временная регистрация
Регистрация: 07.08.2010
Сообщений: 97
Сказал спасибо: 15
Сказали Спасибо 17 раз(а) в 12 сообщении(ях)
|
Контроллер температуры и освещения террариума
Возникла необходимость быстро сделать простой и дешевый терморегулятор для террариума. Сроку - неделя, доступа на радиорынок нет (так как он у нас вторник/пятница, а я в это время работаю), поэтому покупать что-либо специфичное было некогда и негде, и я решил собрать железку из того, что нашлось под рукой (корпуса, транзисторы, кнопки и БП у нас на радиорынке и в воскресенье можно купить, что стало полезным бонусом). Схему я рисовал уже пост-фактум, когда железка была готова, а клепал её из подручных средств "по ходу".
Итак, что получилось за неделю:
Сердцем устройства стала ATMega16 в DIP-корпусе. В качестве датчика температуры используется DS18B20. 4-х разрядный 7-ми сегментник для настройки и отображения текущей температуры. RTC DS1307 для автоматического переключения день/ночь, с кварцем из старой материнки. Полевики IRFZ48N для управления освещением (под рукой оказался метр RGB-ленты из 60-ти 5050-х светодиодов. Кроме того под рукой валялись ненужные RFM12B (сам я спрыгиваю на RFM70, поэтому 12-е мне больше не нужны) и USB приемник к нему, который я делал ещё в прошлом году (и который мне, опять же, больше не нужен). А, ну и симистор BTA26-700 (не релюшка, так как громко щелкает и ресурс у неё меньше). С небольшим радиатором он спокойно протягивает киловатт, кратковременно тестил на утюге с положительным результатом (утюг греется быстрее симистора, а в период отключения симистор успевает остыть) - в общем запас сумасшедший.
Управление конструкцией по 3-м кнопкам - +/-/set
+/- - следующий/предыдущий экран. set - переключение режима меню/редактирование
Список экранов:
0) текущая температура, текущий режим (день/ночь). Отображение текущего режима - смещением знака градуса: ввержу - режим 1, внизу - режим 2
1) установка температуры для режима 1. Диапазон: 15-40, шаг 0.1. Обозначение - t1S
2) установка гистерезиса для режима 1. Диапазон: 0.1-9.9, шаг 0.1. Обозначение - t1H
3) установка ЧЧ старта режима 1. Диапазон: 00-23, шаг 1. Обозначение - t1hh
4) установка ММ старта режима 1. Диапазон: 00-59, шаг 1. Обозначение - t1nn
5) установка температуры для режима 2. Диапазон: 15-40, шаг 0.1. Обозначение - t2S
6) установка гистерезиса для режима 2. Диапазон: 0.1-9.9, шаг 0.1. Обозначение - t2H
7) установка ЧЧ старта режима 2. Диапазон: 00-23, шаг 1. Обозначение - t2hh
8) установка ММ старта режима 2. Диапазон: 00-59, шаг 1. Обозначение - t2nn
9) установка коррекции термометра. Диапазон: +/-9.9, шаг 0.1. Префикс - E
10) установка ЧЧ. Диапазон: 00-23, шаг 1. Суффикс h
11) установка ММ. Диапазон: 00-59, шаг 1. Суффикс nn
12) установка СС. Диапазон: 00-59, шаг 1. Суффикс S
13) установка дня. Диапазон: 00-31, шаг 1. Суффикс d1
14) установка месяца. Диапазон: 00-12, шаг 1. Суффикс d2
15) установка года. Диапазон: 11-99, шаг 1. Суффикс d3
16) установка коррекции часов в секундах. Это значение прибавляется кажду неделю. Диапазон: +/-99, шаг 1. Префикс - C. За двое суток ни одной секунды не убежало, так что не особо нужная штукенция.
17) установка процента красного цвета для режима 1. Диапазон: 000-255. Обозначение: rEd1
18) установка процента зеленого цвета для режима 1. Диапазон: 000-255. Обозначение: GrE1
19) установка процента синего цвета для режима 1. Диапазон: 000-255. Обозначение: blu1
20) установка процента красного цвета для режима 2. Диапазон: 000-255. Обозначение: rEd2
21) установка процента зеленого цвета для режима 2. Диапазон: 000-255. Обозначение: GrE2
22) установка процента синего цвета для режима 2. Диапазон: 000-255. Обозначение: blu2
23) установка времени перехода между режимами освещения. Диапазон: 000-255 минут. Обозначение: tLI
Через ~10 секунд простоя выходим из режима редактирования и переходим к первому экрану
Измерение температуры и принятие всех решений (по обогревателю и по яркости) - 1 раз в секунду по прерыванию от часов
с усреднением 10 крайних измерений температуры
Самая правая точка горит при включении обогревателя (для диагностики)
Все редактируемые пункты меню хранятся в байтовой таблице data, что дает диапазон изменения температуры 25.5 градуса (храню, ессна, целые, точку рисую). Но так как диапазон 0-25.5 неинтересен, то к значениям температуры прибавляется 150 при отображении. Отсюда диапазон 15-45.5. Вся эта таблица при редактировании сгружается в память RTC, что даёт двойной профит: во-первых нас не беспокоит ресурс eeprom, во-вторых можно вытащить батарейку и вернуться к начальным значениям, если потерялся в настройках.
Это всё, что касается основной работы. Ввиду нехватки времени поленился сделать автоматический переход летнее/зимнее время и не сделал, как изначально собирался, таблицу с временем восход/закат, чтобы автоматически смещать время переключения режима по году.
Так как связь с компом - дополнительная плюшка, а времени у меня было мало, то софт я пока для неё не писал (и не уверен что буду), общался через realterm. Ниже описание протокола, если кто-то захочет повторить:
При изменении температуры (или режима работы день/ночь) по радиоканалу отправляется посылка виде
"26.1 D+" - первые три цифры - температура, затем пробел, D/N - день/ночь, +/- - включен/выключен нагреватель
Кроме того, по радиоканалу можно получать/сохранять данные памяти
В команде всегда должно быть ровно 6 байт. После получения 6-го байта и отправки пакета приходит "+" (от свистка, не от контроллера), обрамленный символами конца строки.
Таким образом, если получен +, а число переданных байт не равно 6, значит где-то нарушилась передача - надо оборвать передачу текущего пакета и отправить его заново
Контроллер принимает пакеты вида
T‹S/G›‹xx›‹yyy›, где G - команда получения, S - команда изменения, xx - адрес ячейки (в ASCII), yyy - значение байта (в ASCII) - при запросе GET эти три байта могут быть произвольными, они игнорируются
Номеря ячеек соответствуют пунктам меню, то есть, чтобы получить текущий гистерезис режима 2 надо оправить
TG06000
в ответ придет
+(от свистка)
CG06005 - где C - Confirm, 06 - адрес запрашиваемой ячейки, 005 - значение. Так ка все температуры хранятся в целых числах, то это значит, что текущий гистерезис режима 2 равен 0.5 градуса
Если запросить ячейку за диапазоном - придет код ошибки. Например просим TG46000, получаем EG46000
Дополнительно к ячейкам меню можно получить текущие значения цвета. R имеет код 24, G-25, B-26 (но эти ячейки нельзя напрямую установить, так как они вычисляются каждую секунду)
Пример изменения данных: установим часы включения режима на 18:00. Говорим TS07018, получаем в ответ CS07018, значит значение успешно записано.
Если вылетели за диапазон (например ставим 45 часов TG07045) - вернется ES07045
Аналогично, если вылетели за число ячеек.
Скорость общения по радиоканалу - 4800.Максимальное время отклика на запрос - одна секунда. Если через секунду после "+" ответа нет - можно повторять передачу.
Буфер отправки общий, приоритет имет текущий статус - то есть, если запрос пришел прямо перед прерыванием по часам и у нас изменилась температура, то вместо ответа на запрос придет сообщение со статусом :)
Скорость свистка - 115200, 8N1
В коде свистка - просто прием пакета из 6 байт по UART, дописывание к нему контрольной суммы и отправка, которая отмечается '+' в UART.
При приеме последовательность обратная - считаем CRC по 6 байтам, если OK - отправляем в UART.
Вот такая вот железка получилась за неделю (паять начал в прошлую субботу). Наверняка есть уйма недочетов, возможно есть ошибки. Но в целом стабильно работает, двое суток уже коммутирует лампочку и подсветку, вроде пока без сбоев. В архиве схемы в формате Eagle, исходники под 5-ю студию и hex-ы (для USB-мастера и собственно для железки). USB и RFM совершенно необязательны - без них устройство совершенно самодостаточно.
Задавайте любые вопросы и вносите предложения - пока друг не забрал змейку, возможно успеем вместе улучшить конструкцию :)
Последний раз редактировалось dmitry.shagin; 18.09.2011 в 18:03.
Причина: обновил прошивку - был глюк в чтении байтиков с RTC + добавил WDT
|
|
|
Эти 3 пользователя(ей) сказали Спасибо dmitry.shagin за это сообщение:
|
|
|
18.09.2011, 16:24
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Ставим обычный бытовой терморегулятор и термопару выносим из корпуса туда, где будем регулировать. Неделя времени сэкономлена.
|
|
|
|
18.09.2011, 18:01
|
|
Временная регистрация
Регистрация: 07.08.2010
Сообщений: 97
Сказал спасибо: 15
Сказали Спасибо 17 раз(а) в 12 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Сообщение от Easyrider83
|
Ставим обычный бытовой терморегулятор и термопару выносим из корпуса туда, где будем регулировать. Неделя времени сэкономлена.
|
Согласен
Тут только несколько отличий от бытового терморегулятора:
-параллельно это RGB контроллер (который тоже надо покупать отдельно) с плавным переходом между цветами и регулируемым временем перехода
-присутствует режим день/ночь (что есть далеко не во всех терморегуляторах)
-есть регулировка гистерезиса (учитывая симисторное регулирование можно ставить сколь угодно малый гистерезис и не париться насчет ресурса релюшки)
-присутствуют часы реального времени (а не таймеры на X часов, которые обычно ставят (если ставят) в терморегуляторы)
-наконец, всё это дешевле бытового регулятора за 200 гривен (причем этот терморегулятор вообще надо ручками крутить) и сильно дешевле продвинутых регуляторов с таймерами и прочими плюшками (которые стоят под $100)
-за счет использования симистора выше ресурс и нет постоянных щелчков
-ну и в качестве плюшки - мониторинг и управление с компа
|
|
|
|
18.09.2011, 18:54
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Да все это есть в дешевых китайских регуляторах. Даже локальная сеть с веб интерфейсом. Впрочем, вы уже все решили и сделали. За предмет 5, за изобретение неуд. )))))
|
|
|
|
18.09.2011, 21:29
|
|
Временная регистрация
Регистрация: 07.08.2010
Сообщений: 97
Сказал спасибо: 15
Сказали Спасибо 17 раз(а) в 12 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Сообщение от Easyrider83
|
Да все это есть в дешевых китайских регуляторах. Даже локальная сеть с веб интерфейсом. Впрочем, вы уже все решили и сделали. За предмет 5, за изобретение неуд. )))))
|
Ну на изобретение не претендую
А можно ссылочку на дешевый китайский регулятор, а то искал в свое время и не нашел: у меня еще 6 теплых полов дома, к которым собираюсь сам беспроводные контроллеры делать (делать-то там в принципе нечего, в корпус упираюсь ) - если есть недорогое подходящее решение не буду морочить себе голову.
|
|
|
|
18.09.2011, 21:31
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
dmitry.shagin, сами погуглите. Мне такие в ремонт приходили одно время. Дневной\ночной режим, суточный таймер, жк дисплей. Стоил около 10 евро.
|
|
|
|
18.09.2011, 21:53
|
|
Гражданин KAZUS.RU
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Сообщение от Easyrider83
|
Мне такие в ремонт приходили одно время.Стоил около 10 евро.
|
Ну, а все-таки, какие модели? Иначе будет бла-бла-бла.
Цитата:
|
"Не верю." Станиславский.
|
Весчь, сделанную своими руками, всегда можно модернизировать.
Автору респект.
Последний раз редактировалось XoDoK11; 18.09.2011 в 21:56.
|
|
|
|
18.09.2011, 22:02
|
|
Временная регистрация
Регистрация: 07.08.2010
Сообщений: 97
Сказал спасибо: 15
Сказали Спасибо 17 раз(а) в 12 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Сообщение от Easyrider83
|
dmitry.shagin, сами погуглите.
|
Дело в том, что я гуглил очень много эту тему. Из беспроводных не смог найти ничего дешевле $100. И китайцев что-то не попадаются - видел беспроводные решения от Honeywell, DEVI, Venstar, но это всё дорого, в случае с DEVI сами термостаты чуть дешевле (по $70), но голова к ним еще 1000 евро (можно было бы свою сделать, если бы протокол был открытый). Был бы признателен, если хотя бы название скажете китайского чудо-девайса а то я уже весь made-in-china.com перерыл... (у меня в принципе уже есть платы миниатюрные 0.5x1" под это дело, есть БП и есть симисторы с радиаторами, которые можно запихнуть в подрозетник. есть куча написанных исходников (хотя бы из этого проекта), которые можно туда залить, а вот с корпусами беда. Пока единственный вариант - распотрошить выключатель, но оно выглядит не особо (клавиша плоская получается и возникает ощущение сломанного выключателя), да и крышку закрывающуюся не сделать, так как механизм убираться будет - остаётся только заклеивать, что некошерно... И нормальных корпусов не могу найти для подрозетника. Единственное, что подходит - вот http://biakom.com/tn/41081/34675/, но его не возят в Украину )
|
|
|
|
18.09.2011, 23:08
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
dmitry.shagin, беспроводные я и сам не видел. На 485 они чаще всего, если вообще интерфейс предусмотрен. Да и то как собаке пятая нога. Вы бы еще в электрочайник wifi засунули. Это даже как-то не смешно уже.
Вот варианты:
http://rozumdim.com.ua/new/content/v.../lang,russian/
Вот статейка
http://www.prestig.ru/news/?content=news&id=266
Я одному богатею обогрев бассейна на нечто подобном делал. Вынес термодатчик, закрепил на трубу, подключил ТЭН через контактер и все до сих пор работает где-то в пригороде Праги.
XoDoK11, вас на гугле забанили?
|
|
|
|
19.09.2011, 00:06
|
|
Временная регистрация
Регистрация: 07.08.2010
Сообщений: 97
Сказал спасибо: 15
Сказали Спасибо 17 раз(а) в 12 сообщении(ях)
|
Re: Контроллер температуры и освещения террариума
Эти я находил, но это не 10 евро, а 100 долларов - очевидно, что самопал многократ дешевле А по поводу WiFi - я постепенно умный дом собираю, на все основные точки растянул UTP при ремонте ещё, а вот про доп. провода к теплому полу, вентустановке и освещению в зале - забыл. В итоге на свет я уже давно управление сделал на RFM70, к установке кабель собираюсь кинуть по тому же вентканалу, а вот теплые полу остаются только на беспроводе. Почему так, а не умные терморегуляторы на каждой точке? По той причине, что полов у меня шесть, их очень неудобно настраивать и контролировать бегая от одного к другому. Плюс полы, вписанные в умный дом, позволят прилично сэкономить на свете в противовес обычным умным регуляторам. Пример - обычно на регуляторах все ставят максимально комфортную температуру на выходные на таймере (так как обычно семейство в сборе). А тут решили дружно куда-то все уехать. Очевидно, никто не будет бегать по дому и перенастраивать неудобные в управлении регуляторы - они будут честно все выходные греть полы, которые никому не нужны. С централизованным управлением проще - при выходе из дома задал предполагаемое время возвращения (или просто "два часа нет движения-греть некому-выключаемся") и поимел неплохую экономию электричества. А оно нынче дорого, и дорожает. А беспроводные есть, я озвучивал выше производителей, и даже держал их в руках. Но ценники неадекватные совершенно. Это всё правда оффтопик, в террариуме беспроводка не сильно нужна - хотя я сейчас его конфигурировал и проверял удаленно, так как просто лениво отрывать попу от стула и идти в другой конец комнаты тыкать кнопки, а свечение лампочек освещения и обогрева их другого конца комнаты видно отлично
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:09.
|
|