Три варианта USB-термометра
П. БАРАНОВ, г. Лабытнанги, ЯНАО
В этой статье предлагаются три варианта простого малогабаритного электронного термометра, подключаемого к USB-порту компьютера и питаемого от него. Первый вариант не содержит собственного индикатора, информацию о температуре получает лишь компьютер. Второй вариант дополнен собственным индикатором. В третьем имеется не только индикатор, но и предусмотрена возможность подключения дополнительного выносного датчика температуры.
Отличительные особенности первого варианта предлагаемого прибора — передача информации о температуре в компьютер, отсутствие индикатора и компактные размеры, сопоставимые с размерами USB накопителя. Текстовый формат сообщений термометра открывает большие возможности для их дальнейшей компьютерной обработки. При наличии соответствующего программного обеспечения возможно не только отображение температуры на экране компьютера, но и анализ динамики ее изменения, управление системами кондиционирования и отопления, а также передача информации по сети для дистанционного контроля.
Схема термометра показана на рис. 1. Прибором управляет микроконтроллер PIC18F14K50 (DD1), имеющий встроенный модуль USB. Тактовая частота микроконтроллера задана кварцевым резонатором ZQ1. Температуру измеряет цифровой датчик LM75AD (ВК1). Он связан с микроконтроллером шиной I2C и имеет на ней адрес ведомого 1001111, причем старшие четыре разряда адреса (1001) установлены жестко внутри датчика, три младших разряда заданы подключением выводов А0—А2. В данном случае все они соединены с плюсом питания.
В датчике имеется регистр-указатель, код в котором адресует один из четырех информационных регистров. По нулевому адресу находится двухбайтный регистр температуры Temp_data, хранящий ее текущее значение, измеренное датчиком. Этот регистр работает только на чтение. В таблице показано, как в нем размещены двоичные разряды значения температуры. Если разряд D10 равен 0, то температура выше
нуля и ее значение вычисляют по формуле
Т = (Temp_data) x 0,125.
При D10=1 температура ниже нуля и равна
Т = -(Temp_data +1) х 0,125.
Черта над именем регистра означает поразрядную инверсию его содержимого.
В компьютере для работы с термометром необходимо установить программный драйвер, который можно скачать по адресу <http://kvorb.ru/soft/usb_driver.zip>. Он создаст виртуальный СОМ-порт. Режим работы порта: восемь информационных разрядов без контроля четности и один столовый, скорость обмена информацией определяется автоматически.
По умолчанию опрос микроконтроллером датчика температуры происходит каждые 5 с. Полученное значение в градусах Цельсия передается по интерфейсу USB строкой из пяти символов: десятки, единицы, точка, десятые доли, пробел. Например, "25.3".
Есть возможность переключиться в "ручной" режим, в котором температура сообщается только по запросу компьютера. Для переключения достаточно передать термометру из компьютера символ М. В ответ будет возвращена строка Manual. После этого температура станет передаваться только в ответ на получение термометром символа R. Не рекомендуется запрашивать ее чаще одного раза в секунду.
Старший байт: | D0 | D9 | D8 | D7 | D6 | D5 | D4 | D3 |
Младший байт: | D2 | D1 | D0 | 0 | 0 | 0 | 0 | 0 |
Для возврата из ручного в автоматический режим посылают символ А. Ответом будет строка Auto.
При каждой передаче значения температуры включается на 1 с свето-диод HL1. Желаемой яркости его свечения можно добиться подборкой резистора R4.
При эксплуатации была замечена разница в показаниях нескольких экземпляров датчиков LM75AD, доходящая до 3 °С. В целом это соответствует их допустимой погрешности, указанной в документации. Чтобы скомпенсировать систематическую погрешность, в программу была добавлена возможность ввода и изменения поправки Посылая символы U и D, соответственно увеличивают и уменьшают показания термометра шагами по 0.1 °С. Чтобы сохранить введенную поправку в энергонезависимой памяти микроконтроллера, необходимо отправить символ S. В ответ будет возвращена строка Calibrated.
Термометр питается напряжением 5 В от линии Vbus интерфейса USB, потребляя ток не более 18 мА. Прибор собран на печатной плате, чертеж которой и расположение деталей изображены на рис. 2. Конденсаторы, резисторы и светодиод — типоразмера 0805 для поверхностного монтажа. Кварцевый
резонатор в корпусе HC-49US установлен со стороны, обратной печатным проводникам. Разъем ХР1 — USB-AM для поверхностного монтажа, его стыкуют непосредственно с разъемом USB компьютера. Внешний вид собранного термометра показан на рис. 3. После проверки в работе его желательно защитить от повреждений, надев термо-усаживаемую трубку.
Запрограммировать микроконтроллер можно заранее, до монтажа на плату термометра либо уже на ней. В последнем случае провода от программатора временно припаивают прямо к выводам микроконтроллера.
Во втором варианте, схема которого изображена на рис. 4, термометр дополнен ЖКИ TIC5234 (HG1). Такой индикатор очень удобен для подобных устройств, так как имеет пять больших семиэлементных знакомест и дополнительные значки (рис. 5).
Временные диаграммы подаваемых на ЖКИ сигналов показаны на рис. 6. Установив на линии LOAD высокий логический уровень, первым по линии DIN передают двоичный разряд, управляющий элементом изображения S49 (1 — включен, 0 — выключен). Затем следует разряд элемента S48 и так далее, пока не будут переданы все разряды. Каждый из них сопровождают синхроимпульсом по линии DCLK. Передав последний разряд, соответствующий элементу S1, следует "защелкнуть" регистр, временно установив на выводе LOAD низкий уровень. Все элементы ЖКИ перейдут в заданные состояния.
Светодиод в этом варианте термометра отсутствует. Взамен него при передаче температуры в компьютер мигает в течение 1 с значок градуса на ЖКИ.
Чертеж печатной платы второго варианта термометра и расположение деталей на ней представлены на рис. 7. Разъем XS1 (USB-miniBF) соединяют с разъемом USB компьютера стандартным USB-mini кабелем. Корректировку погрешности и переключение режимов выполняют так же, как в первом варианте.
Третий вариант термометра, схема которого показана на рис. 8, имеет ЖКИ АСМ0802С (HG1), способный отображать две строки по восемь симво-
лов. Оптимальной контрастности изображения на ЖКИ при необходимости добиваются, подбирая резисторы R4 и R5. К разъему ХР1 можно подключить кабелем длиной до нескольких метров второй, однотипный первому датчик температуры (рис. 9). Разъем XS1 — USB-BF обычного размера.
В отличие от первых двух вариантов, передаваемая в компьютер строка с информацией о температуре дополнена показаниями второго датчика, а перед каждым значением температуры ниже нуля передается знак минус. Корректируют показания второго датчика так же, как и первого, но пользуются для этого символами и (увеличить) и d (уменьшить).
Чертеж основной платы третьего варианта термометра изображен на рис. 10, а платы второго датчика — на рис. 11. Индикатор HG1 соединяют с основной платой плоским кабелем, причем номера контактных площадок для подключения ЖКИ, указанные на плате, соответствуют номерам его выводов.
От редакции. Программы микроконтроллера для трех вариантов термометра имеются на нашем FTP-cepвере по адресу <ftp://ftp.radio.ru/pub/2011/02/ThermUSB.zip>.