Различные цифровые термометры — популярный вид радиолюбительских конструкций. Это объясняется тем, что они могут измерять температуру с довольно высокой точностью, что стало возможным благодаря дешёвым цифровым датчикам температуры, позволяют разнести индикатор и датчик на значительное расстояние. Тем не менее большая часть конструкций содержит много деталей, при этом в них остаются свободными немало выводов микроконтроллера, а значительная часть его программной памяти не используется.
Автор постарался разработать термометр, свободный от указанных недостатков. В нём небольшое число деталей, а возможности применённого микроконтроллера использованы практически полностью.
Основные технические характеристики
Измеряемая температура, °С …………. -55…+125
Число разрядов индикатора ………… 3
Дискретность отображения температуры, °С
- в интервале +100…+125 °С ……. 1
- в интервале -9,9…+99,9 °С ……. 0,1
- в интервале -55…-10 °С ……. 1
Напряжение питания, В …… 3…5,5
Потребляемый ток, мА ……. 12
Схема термометра изображена на рис. 1. Его основные компоненты — микроконтроллер ATtiny24-20SSU (DD1), датчик температуры DS18B20 (ВК1) и трёхразрядный светодиодный индикатор с общим анодом BT-M51DRD (HG1). В отличие от многих аналогов, в термометре применён не совсем обычный способ динамической индикации. Микроконтроллер одновременно переключает все одноимённые элементы индикатора, поочерёдно устанавливая низкий логический уровень на каждой линии порта А. В каждом такте индикации микроконтроллер устанавливает высокий уровень только на анодах тех разрядов, в которых соответствующие элементы должны быть включены. При «традиционной» динамической индикации разряды индикатора перебирают, включая в каждом из них одновременно все нужные элементы.
Применённый способ позволил перенести ограничивающие ток резисторы из цепей катодов элементов индикатора в цепи их общих анодов, сократив число таких резисторов с восьми до трёх. Разумеется, такой метод индикации выгоден только при числе разрядов индикатора, меньшем, чем число элементов в каждом разряде.
Небольшое число выводов использованного микроконтроллера заставило использовать один из них (РВ0) для выполнения двух функций. Он управляет старшим разрядом индикатора, а в паузах через него ведётся обмен информацией с датчиком температуры. Как показала практика, это допустимо. Датчик работает стабильно.
Так как интерфейс 1-Wire, по которому датчик температуры связан с микроконтроллером, требует, чтобы информационная линия была соединена с плюсом питания через нагрузочный резистор, схему подключения анодов старшего разряда индикатора к линии РВ0 пришлось изменить. Эта линия соединена с выводом индикатора непосредственно в отличие от линий РВ1 и РВ2, содержащих ограничительные резисторы R3 и R4. К ней также подключены информационный вход-выход датчика температуры и нагрузочный резистор R1. Он же ограничивает ток старшего разряда индикатора, если линия РВ0 переведена программой в высокоимпедансное состояние. Высокий уровень на этой линии программа не устанавливает никогда. Это привело бы не только к резкому росту тока старшего разряда индикатора, но и к нарушению работы датчика.
Термометр рассчитан на питание от батареи из трёх гальванических элементов общим напряжением 4,5 В. Разумеется, возможно использование других источников питания.
Термометр выполнен на печатной плате размерами 40×20 мм из односторонне фольгированного стеклотекстолита. Чертёж платы показан на рис. 2. Конденсатор С1 и провода, соединяющие термометр с датчиком и источником питания, изображены на стороне установки индикатора условно. Конденсатор расположен на стороне печатных проводников, с той же стороны к плате подведены провода.
Программа микроконтроллера написана на языке С в среде WinAVR. Чтобы загрузить программу в смонтированный на плате микроконтроллер, к его выводам припаивают провода от программатора. К выводу 1 — +5 В, к выводу 4 — RESET, к выводу 7 — MOSI, к выводу 8 — MISO, к выводу 9 — SCK, к выводу 14 — общий. Индикатор на время программирования можно не отключать от микроконтроллера.
Конфигурация микроконтроллера должна быть запрограммирована согласно таблице. Она отличается от устанавливаемой заводом-изготовителем только значением разряда CKDIV8. По завершении программирования провода, идущие к программатору, следует отпаять от платы.
Разряд | Знач. | Разряд | Знач. |
SELFPRGEN | 1 | ||
RSTDISBL | 1 | CKDIV8 | 1 |
DWEN | 1 | CKOUT | 1 |
SPIEN | SUT1 | 1 | |
WDTON | 1 | SUT0 | 0 |
EESAVE | 1 | CKSEL3 | 0 |
BODLEVEL2 | 1 | CKSEL2 | 0 |
BODLEVEL1 | 1 | CKSEL1 | 1 |
BODLEVEL0 | 1 | CKSEL0 | 0 |
Примечание. 1 — не запрограммировано; 0 — запрограммировано.
В заключение следует отметить, что датчик температуры не рекомендуется устанавливать непосредственно на плате, так как при работе она нагревается до температуры, превышающей температуру окружающей среды на 0,1 …0,2 °С.
Скачать архив (файл печатной платы в формате Sprint Layout 5.0 и программа микроконтроллера)
Автор: Ю. МАРТЫНЮК, п. Затобольск, Казахстан
Источник: Радио №4/2016