РадиоКот :: Очередной термостат на Tiny2313 и DS18B20
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

Очередной термостат на Tiny2313 и DS18B20

Автор: СКАЗОЧНИК
Опубликовано 16.01.2017
Создано при помощи КотоРед.

Категорически приветствую всех Котов, а заодно и поздравлю с Новым 2017 годом. 

Также хочу выразить благодарность котам за постоянную помощь в реализации идей: ARV, Z_h_e, Albert_V, pyzhman, Kavka, oleg110592 и другим, кого не упомянул...

Наконец-то и я решил опубликовать на любимом сайте свое творение, долго не решался, но подобных термостатов было собрано уже штук 6 и все исправно трудятся в течение года. Все они включают/выключают различные вентиляторы для охлаждения при достижении "верхней" температуры. 

Как это работает.

Собственно о чем речь. Заказали мне как-то изобрести простенький термостат (даже проще - термометр) и собрал я его ради интереса из того, что было под руками, а также в учебных целях (распотрошить протокол 1-Wire).

Термостат очень простой и представляет из себя устройство с семисегментным четырехразрядным индикатором. Собран на микроконтроллере ATTiny2313. Подключается к нему всего один внешний датчик DS18B20. Двумя кнопками настраивается температура верхнего порога (во всем диапазоне температур работы датчика от -55 до +125 градусов Цельсия), при нажатии на любую кнопку пропадает значок градуса в правом разряде, через некоторое время (ориентировочно 30 секунд) термостат переходит в режим контроля температуры, а значение выставленного порога сохраняется в памяти EEPROM.

В режиме контроля температуры отображается значок градуса в правом разряде индикатора. При достижении установленной температуры включается нагрузка (см. схему там транзистор с открытым коллектором) и на индикаторе в правом разряде еще появляется десятичная точка (символизирует о работе нагрузки). Когда температура упадет на пару градусов - нагрузка отключается. Вот и все! 

Об 1-Wire.

Описаний протокола 1-Wire в сети очень много, поэтому в него уже углубляться не буду, скажу лишь одно для начинающих, что всегда старайтесь разбить большую задачу на много маленьких. Так и в программировании, не пытайтесь освоить все сразу (в том числе и из описания этого протокола, как и любого другого), разбивайте на блоки. Общение микроконтроллера с датчиком это не все сразу. Это какие-то команды и ответы на них. А команды - это байты циферок (как и ответы). А байты уже состоят из битов! Так вот! Минимальная единица информации - бит - вот с чего надо начинать в изучении и написании своей библиотеки. Все задержки/интервалы начинаете с битов чтения и записи. А если смогли записать/считать один бит, то потом уже оформляете дальше чтение и запись целого байта. А потом уже просто все - передаете команду, а подпрограммы все выполняют. ))) Надеюсь, поможет. 

И сейчас меня может начнут пинать, но я все равно сделал по своему. Если внимательно изучите исходник (а он на ассемблере с комментариями), то увидите, что у меня нет определения адреса датчика, как и нет подсчетов контрольных сумм. Поэтому и датчик в моем термостате всего один. В любом случае, исходный код свободный и открытый, так что для усовершенствования годится - дерзайте, исправляйте и цепляйте кучу датчиков. ))) А можем и вместе покумекать, тогда вопросы на форум, будут интересные идеи - доработаем. 

Схема.

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

Как видите, сама схема не отличается каким-либо разнообразием и изысками, впрочем, как и большинство устройств с микроконтроллерами. Почему она именно такая? А все очень просто, сначала я взял индикатор, потом микроконтроллер и примерил одно к другому. Так разрабатывалась печатная плата. Где выводы индикатора и микроконтроллера совпали, там и получились дорожки, а значит и порты заняты именно эти. Заметьте также, на схеме не указаны цепи питания, а на плате разводка под стабилизатор типа 7805 и конденсаторы. Настоятельно рекомендую ставить стабилизатор в корпусе ТО-220. Но если его использовать просто как термометр, то у меня дома он вообще питается от какой-то старой пятивольтовой зарядки для телефона, работает без стабилизатора.

Транзистор на схеме любой. На плате разведен под корпус типа SOT-23, т.е. маленький поверхностный. Рекомендую туда поставить вообще какой-нибудь полевой типа IRLML0030. Все силовые цепи по моей задумке внешние и управляются через реле. 

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

Как это реализовано.


Сначала, конечно делаем ЛУТ и травим. (Рисунок платы в СпринтЛайауте прилагается)

 

Для эксперимента я на первый образец ставил стабилизатор типа 78L05, но его мало, т.к. индикаторы довольно много жрут. Почему и советую поставить помощнее. Слева на плате видны штырьки - это для подключения питания и нагрузки. Справа три штырька для подключения самого датчика температуры, а снизу для подключения кнопок! (всегда сверяйтесь со схемой). Также на фотографии видны провода - это припаян программатор, в конце, конечно, все они убираются. 

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

Давайте теперь запихаем это чудо-юдо в какой-нибудь корпус! Ведь, хоть какое-то устройство у Кота должно быть в корпусе. )

Переднее дымчатое стекло взял от какого-то принтера сломанного.

Малость шлифанем и чуток заполируем. 

 

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

Готово! Результат см. выше. 

Если кто-то захочет поменять разводку платы - пожалуйста, тогда можно применить микроконтроллер в любом корпусе. Индикатор, который использовал я называется KEM5461AG (общий катод). Были и зеленого и красного и желтого цвета. Соответственно программа под них и создавалась. У кого будут другие индикаторы по разводке ног и по общим анодам - плату и прошивку правьте сами. Тем более, я даже призываю к этому. Не следует тупо повторять конструкцию - это не по-кошачьи. Резисторы в анодах индикатора на свое усмотрение, у меня стоят 100 Ом (кстати, на схеме они не показаны, а на плате есть). Индикация динамическая, поэтому 100 Ом в самый раз. Резистор в базе транзистора тоже зависит от того транзистора, который вы будете использовать. Для биполярного пойдет в районе 1 кОм или больше. Для полевого в районе 200 Ом. И еще рекомендую базу (затвор) притянуть к земле каким-нибудь резистором в районе 10 кОм (на схеме и плате его нет). 

Если у вас получилась длинная линия до датчика температуры и термометр плохо работает, попробуйте уменьшить сопротивление R1. 

Надеюсь кому-нибудь да пригодится в образовательных целях. 

Все вопросы как всегда в форум. 


Файлы:
Клеим стеклышко
Плата
Архив с прошивкой и исходником


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

41 11 6
2 1 0