- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Статьи по AVR

Читать в Яндекс.Подписках



    Двухканальный терморегулятор на DS18B20
Просмотров: 4856
     Один из моих старых проектов. Делал я его под заказ для обеспечения работы какого-то простейшего домашнего инкубатора. Себестоимость приборчика сама по себе оказалась небольшой (а чего-там?! Дисплей, контроллер, пара релюшек и корпус), но в последний момент мозгом заказчика овладела Жаба, и он отказался от уже готового девайса в пользу какого-то черного ящика со стрелочными приборами и термопарами, живого свидетеля холодной войны. Тем не менее, свой терморегулятор я разрабатывал как результат изучения цифрового датчика температуры DS18B20 и попыток применения его в быту.
     Терморегулятор я сделал двухканальным (с двумя датчиками DS18B20), и хотя выводов управляющего микроконтроллера было предостаточно, я решил посадить свои датчики на одну линию. Только программную реализацию определения индивидуальных ID-кодов датчиков температуры, подключенных к одной линии, я делать не стал (про реализацию данного решения можно почитать тут), а пошёл более простым путём – с помощью своего нехитрого приборчика (или программного кода?) определил индивидуальный код ПЗУ каждого датчика температуры, после чего записал их в исходник своего проекта, и обращение к датчикам осуществлял через эти заданные адреса. Если все вышесказанное вызывает у вас отторжение и непонимание, тогда советую предварительно ознакомиться с работой данного датчика вот тут.
     Сама схема терморегулятора:
     Вот только тип применённых реле не помню, а разбирать приборчик как-то лень да неохота! В любом случае вы можете применить любые реле на 12 Вольт, запитав их, естественно, после диодного моста VD1. В качестве индикатора подойдет любой ЖКИ с системой команд HD44780, у меня же в приборчике стоит WH0802. Микроконтроллер ATmega8 тактируется от внутреннего RC-генератора частотой 8 МГц. Фьюзы соответственно:
     Настройка терморегулятора.
     При нажатии на кнопочку Режим (она же – функция Ввод) вы попадёте в скромненькое меню приборчика, которое состоит из 3-х пунктов:
- SET t1 – установка порогов срабатывания первого датчика температуры
- SET t2 – установка порогов срабатывания первого второго температуры
- Rezol – установка разрешения датчика температуры (одновременно на 2 датчика)
Выбор нужного параметра для настройки осуществляется кнопочкой ВыборЕсли вы хотите установить верхний и нижний пороги температуры для работы первого датчика (или реле), то при выборе соответствующего пункта увидите следующее:
     где TH1 и TL1 – соответственно верхний и нижний пороги срабатывания реле. Т.е. если температура (например) в каком-нибудь попугаечнике будет менее (или равна) 20°C, то реле К1 будет включено, а при достижении температуры 25°C реле выключится. Аналогично настраиваются пороги температуры для второго реле. Выбор нужного сегмента осуществляется кнопкой Выбор, а ввод нужного значения – кнопкой Режим. Вводимые значения находятся в диапазоне 0…99 °C и сохраняются в энергонезависимой памяти EEPROM. При равенстве верхнего и нижнего порогов терморегулятор не работает!
     При выборе меню Rezol вы увидите такую картинку:
     В этом меню вы может выбрать четыре типа точности измерения датчиков DS18B20: 0.5°C, 0.25°C, 0.125°C и 0.0625°C. Для чего сделал выбор такого числа точностей измерения при шаге изменения порогов температуры в 1°C и при использовании 8-ми строчного LCD даже сам не знаю. Оно и нафиг не надо, но раз сделал, то сделал, а переделывать неохота (не нравится – исходник в зубы и вперёд!). Применением дисплея на 8 строк также обусловлено и отсутствие значка °C при выводе на дисплей значений температуры. Ну что ж, пусть это будет на моей совести! Выбор нужной точности измерения осуществляется кнопкой Выбор, а ввод нужного значения – кнопкой Режим. Выход из режимов настроек осуществляется кнопкой Выход, а для чего нужна кнопка Подсветка – догадайтесь сами!
     А вот и сам приборчик:
     Согласен – не экспонат янтарной комнаты, но вполне работоспособен, невзирая на неоптимизированность и корявость кода. К тому же всё паялось на макетной платке проводочками, так что не обессудьте! Да и назначение пары кнопочек в окончательной версии было изменено и доработано в лучшую сторону.
     А в самом исходнике вам нужно будет записать свои значения индивидуальных ID-кодов датчиков DS18B20, найдя в самом начале программы такие строчки (мой вариант):
flash unsigned char dt_1[]={0x28,0x5C,0x49,0xA6,0x01,0x00,0x00,0x5C}; // ID-код первой микросхемы
flash unsigned char dt_2[]={0x28,0x97,0x2C,0xA6,0x01,0x00,0x00,0xF8}; // ID-код второй микросхемы
     Иначе вместо показаний датчиков увидите тайные знаки типа NO DT.
     Про один из способов определить этот самый ID-код – читать тут.

     Скачать

Опубликовано 10.12.2014
©Igoryosha, 2014
 
 
Назад к содержимому | Назад к главному меню