Pull to refresh

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

С месяц назад я наткнулся на топик о простом термометре. Но моим нуждам не удовлетворяла система, в которой есть такое громоздкое и прожорливое устройство, как компьютер. И вот наконец я выделил выходной на создание 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. При разработке и сборке использовались материалы интернета.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.