Как стать автором
Обновить

Цифровой термометр? Это очень просто

С месяц назад я наткнулся на топик о простом термометре. Но моим нуждам не удовлетворяла система, в которой есть такое громоздкое и прожорливое устройство, как компьютер. И вот наконец я выделил выходной на создание Standalone-термометра.
image


Попробуем создать простой цифровой термометр с использованием цифрового датчика температуры ds18b20 от фирмы DАLLAS, и микроконтроллера ATtiny2313. Характеристики цифрового термометра: пределы от -55 до +125*С; точность измерение от 0,1 до 0,5*С; максимальное количество датчиков — 8.

О принципе работы

Контроллер подает запрос на поиск и запись адресов датчиков ds18b20 подключенных по интерфейсу 1-Wire. Далее производится чтение температуры с датчиков, которые были найдены, после этого контроллер выводит температуру на 3-х символьный LED, при небольшой модификации прошивки можно подключать 4-х символьный LED, при этом будет температура выводится с точность до десятичных. Опрос датчика составляет где-то 750мс.

Вот принципиальная схема:
image

Сборка

Для сборки понадобятся следующие компоненты:
1) Контроллер ATtiny2313V-20PU — 1шт.
2) Трехсимвольный семисегментный дисплей BA56-12EWA (с общими анодами) — 1шт.
3) Стабилизатор напряжения КР1157ЕН502 (или 78L05) — 1шт.
4) Резистор 220 Ом, 0,125Вт — 3шт.
5) Резистор 4,7кОм, 0,125Вт — 1шт.
6) Электролитические конденсаторы на 10 и 100мкф, 16В — по 1 шт.
7) DIP-панелька на 20 контактов — 1шт.
8) Датчик DS18B20 — 1шт.
9) Текстолит, паяльник и более-менее трезвая после праздников голова.

image

Прошивки, плату в формате Sprint-Layout и в PDF выкладываю тут.

Плату делал Лазерно-утюжным методом, получилось вполне сносно:
image
image

Подробно описывать технологию не буду, про неё уже написано очень много, Гугл Вам в помощь…

После травления и сверления — паяем. Сначала напаиваем перемычки, потом компоненты. Желающие впихнуть конструкцию в минимально возможный объем могут поставить SMD-компоненты.

Прошивка

Перед установкой контроллера на плату нужно его прошить. Я предпочитаю прошивать программой CodeVisionAVR v1.25.9. А для подсоединения контроллера к LPT-порту я собрал простую схему:
image

Запускаем CodeVision потом переходим в меню Settings > Programmer в появившемся окошке выбираем программатор Kanda Systems STK200+/300 и номер LPT порта. Обычно это LPT1: 378 h. Также зачастую требуется снизить частоту порта, для этого увеличиваем Delay Multiplier до тех пор, пока контроллер не станет определяться программой (я выставил 10).

Потом идём в Tools > Chip Programmer. В появившемся окошке перейдите в меню File > Load FLASH. Выберите тип файла Intel HEX files (*.hex) потом укажите путь к файлу прошивки.
Для индикатора с общими анодами выбираем прошивку «termometr_x8dat_18b20_cA».

Также не забываем выбрать требуемый нам чип ATtiny2313.
После этого идём в Program > Erase Chip, потом Program > FLASH;
В этом же окне выставляем Fuse bits как на картинке:
image
После чего идем в Program > Fuse bit(s).
Если на каком-то этапе программа ругается — попробуйте перед каждым действием нажимать на Reset Chip.

Если все прошло нормально, то вставляем контроллер в спаянную плату, подаем питание, открываем предусмотрительно запасенную бутылочку темного пива и наслаждемся результатом.
image

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

P.S. Желающие видеть температуру с точностью до десятичных значений, должны использовать 4х символьный LED дисплей, анод лишнего сегмента подцепить к PORTD.3, а запятую к PORTB.7, и залить прошивку «termometr_des_x8dat_18b20_cA».

P.P.S. При разработке и сборке использовались материалы интернета.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.