В этом термометре значения температуры отображаются с помощью матричных светодиодных модулей. Имеется возможность регулировки яркости индикатора и выбор дискретности показаний.
В термометре применён микроконтроллер PIC16F630-I/P Датчик температуры - DS18B20. Интервал измеряемой температуры от -55 оС до +125 оС. Погрешность её измерения - ±0,5 оС. Показания могут быть округлены до 1 оС.
На рис. 1 показан внешний вид термометра. Он закреплён на стене двусторонней липкой лентой, датчик установлен за окном в тени деревьев.
Рис. 1. Внешний вид термометра
Схема термометра изображена на рис. 2. Нажатиями на кнопку SB1 увеличивают яркость индикатора, а на кнопку SB2 - уменьшают её. Всего имеются 16 градаций. При изменении яркости микроконтроллер сохраняет новое значение в своей энергонезависимой памяти. Индикатор построен на трёх матричных модулях A1-A3 FZ0148 [1]. Каждый из них состоит из светодиодной матрицы 8x8 и микросхемы МАХ7219 [2], управляющей светодиодами по командам микроконтроллера. По линиям питания VCC и GND и сигналам управления CLK и CS модули включены параллельно (эти линии проходят от первого разъёма модуля ко второму "насквозь"), а по информационной линии - последовательно. Информация на выходе DOUT задержана относительно поступающей на вход DIN на 16 тактов, задаваемых импульсами CLK. Выход DOUT каждого модуля, кроме последнего, соединён с входом DIN следующего.
Рис. 2. Схема термометра
Последние 16 разрядов информации, переданной модулю, всегда находятся в сдвиговом регистре микросхемы МАХ7219. Перенос состояния входа DIN в младший разряд регистра происходит по нарастающему перепаду импульса CLK, но только при низком уровне на входе CS. При нарастающем перепаде на входе CS информация из сдвигового регистра отображается светодиодами и остаётся на них до следующего такого перепада.
В рассматриваемом устройстве низкий уровень сигнала CS устанавливается на время передачи 48 (16x3) двоичных разрядов информации, загружаемых последовательно в три модуля FZ0148. По её завершении нарастающий перепад этого сигнала разрешает вывод информации на светодиоды трём модулям одновременно. На рис. 3 представлено размещение выводимых символов на их матрицах. Установка перемычки S1 переводит устройство в режим округления показания до целого значения. В этом режиме нет необ-ходимости в модуле A3, отображавшем десятые доли градуса, и его можно исключить из устройства. Если же этот модуль оставить, он станет всегда показывать 0.
Рис. 3. Размещение выводимых символов на их матрицах
Номинальное напряжение питания термометра - 9 В, однако фактически оно может находиться в интервале от 7,5 В до 25 В. Необходимое для работы прибора напряжение 5 В обеспечивает интегральный стабилизатор положительного напряжения DA1.
На рис. 4 представлен чертёж печатной платы термометра и расположения деталей на ней. Для микроконтроллера DD1 должна быть предусмотрена панель, в которую его вставляют уже запрограммированным. Модули FZ0148 устанавливают в разъёмы X1, X2 (A1), X3, X4 (A2) и X5, X6 (A3).
Рис. 4. Чертёж печатной платы термометра и расположения деталей на ней
Отсутствующий на схеме разъём X6 на плате служит только для надёжной механической фиксации модуля A3.
Плата со снятыми модулями показана на рис. 5. Модули FZ0148 были приобретены в разобранном виде. Штыревые колодки устанавливаемых на них разъёмов в наборе были угловыми, но при сборке я заменил их прямыми. Образовавшийся за счёт высоты разъёмов зазор между основной платой и платами модулей позволяет лучше отводить тепло от интегрального стабилизатора DA1.
Рис. 5. Плата со снятыми модулями
Датчик температуры BK1 помещают в металлический защищённый от проникновения влаги корпус и жгутом из трёх проводов длиной до нескольких метров соединяют с платой. Размещать датчик нужно в месте, защищённом от прямого солнечного света и удалённом от нагревательных и других приборов, выделяющих при работе много тепла.
Полный набор отображаемых символов, включая знак минуса и пробел, представлен на рис. 6, а на рис. 7 показано содержимое хранящего изображения этих символов EEPROM микроконтроллера. На каждый символ в нём отведено по четыре байта памяти. Байт по адресу 30H служит для хранения установленного значения яркости.
Рис. 6. Полный набор отображаемых символов, включая знак минуса и пробел
Рис. 7. Содержимое хранящего изображения символов EEPROM микроконтроллера
Программа микроконтроллера создана в среде PIC Simulator IDE v7.21. Считываемые с датчика BK1 каждые 0,7 с значения температуры перед выводом на индикатор программно сглаживаются - каждое новое значение записывается в массив из четырёх двухбайтовых слов взамен самого старого. Таким образом, в этом массиве всегда находятся результаты последних четырёх измерений. Их среднее значение и выводится на индикатор.
В использованной версии среды разработки имеется возможность симулировать работу датчика DS18B20 (рис. 8), что заметно упростило отладку программы. Для организации связи микроконтроллера с устройствами с интерфейсом SPI, подобным использованному в светодиодных модулях, в среде есть набор стандартных процедур и функций.
Рис. 8. Программа микроконтроллера
Программу микроконтроллера можно скачать здесь.
Литература
1. MAX7219 Module Dot Matrix Modules for Arduino Control FZ0148. - URL: http://www. dhgate.com/store/product/5pcs-lot-max 7219-module-dot-matrix-modules/ 196738799.html (04/11/14).
2. Serially Interfaced, 8-Digit LED Display Drivers. - URL: http://www.adafruit.com/ datasheets/MAX7219.pdf (11/12/14).
Автор: К. Абдукаримов, г. Шымкент, Казахстан