Электронный термометр
Измерители температуры с датчиком DS18S20 рассчитаны на соединение с датчиком, имеющим «однопроводный» интерфейс, тремя проводами. Один из них общий, по второму происходит обмен информацией, а третий — питание. Именно на такое подключение и рассчитаны библиотечные подпрограммы.
Однако датчик DS18S20 обладает возможностью работать в режиме так называемого «паразитного» питания энергией, поступающей по информационной линии. Как показано на рис. 1, его вывод 3 в этом случае соединяют не с источником напряжения +5 В, ас общим проводом. Остаются всего два провода. Поскольку большую часть времени информационная линия находится в пассивном состоянии, внутренний конденсатор Срр датчика заряжается через резистор R1 и внутренний диод VD2 практически до пяти вольт. Этим напряжением питаются остальные узлы при бора. Накопленного конденсатором заряда достаточно для их питания и в те короткие интервалы времени, когда уровень напряжения на информационной линии становится низким. В большинстве режимов работы потребляемый датчиком DS18S20 ток не превышает десятков микроампер, и падением напряжения питания на резисторе R1 можно пренебречь. Однако при исполнении команд CONVERT Т (код 0x44) и COPY SCRATCHPAD (код 0x48) ток возрастает до 1,5 мА.
Во избежание недопустимой «просадки» напряжения на конденсаторе Срр необходимо не позже, чем через 10 мкс после подачи такой команды открыть транзистор VT1, который зашунтирует резистор, что обеспечит нужный ток. Пока этот транзистор открыт, с информационной линией нельзя производить никаких операций. Закрыть его можно только по завершении исполнения ранее поданной команды через 750 мс (CONVERT Т) или через 10 мс (СОРУ SCRATCHPAD). В большинстве случаев устанавливать отдельный полевой транзистор не требуется, он имеется внутри микроконтроллера. Например, у микроконтроллеров семейства AVR, чтобы открыть его, достаточно перевести линию порта, используемую как информационную, в режим выхода и установить на ней высокий уровень напряжения.
Признак наличия внешнего напряжения питания, формируемый внутри датчика, может быть по соответствующей команде прочитан микроконтроллером. Таким образом, программа всегда может узнать способ питания датчика. Верхний предел измеряемой температуры при «паразитном» питании — 100 °С. Подробнее о датчике DS18S20 и его «паразитном» питании.
Схема электронного термометра с описанным выше подключением датчика температуры DS18S20 к микроконтроллеру AT90S8535 показана на рис. 2. Тактовая частота микроконтроллера задана кварцевым резонатором ZQ1 на 8 МГц. Изменять ее нельзя, поскольку это приведет к изменению всех формируемых программно задержек, необходимых для правильного обмена информацией между датчиком ВК1 и микроконтроллером. Датчик соединен с разъемом Х2 двупроводным аудиокабелем длиной 7 м. Назначение резистора R2 такое же, как у резистора R1 на рис. 1.
В сдвиговые регистры DD2 и DD3 микроконтроллер записывает результаты измерения температуры в виде, необходимом для вывода на цифровой индикатор, собранный из светодиодов HL1— HL64. Каждый из шестнадцати разрядов выводимого на линию PD4 микроконтроллера кода сопровождается импульсом записи на линии PD2. По окончании загрузки регистров разрешается высоким уровнем на линии PD3 выдача кода на их выходы.
Поскольку выходы микросхем 74LS595N способны выдержать втекающий ток до 35 мА, имеется возможность подключить к ним светодиоды HL1—HL64 через ограничивающие ток резисторы R3—R18 без дополнительных усилителей.
Для получения максимальной яркости и размеров информационного табло применена статическая индикация, а в каждом из графических элементов индикатора установлено по четыре светодиода. На рис. 3 показано расположение светодиодов на табло. Цифрами в кружках обозначены их позиционные номера согласно схеме.
Для питания электронного термометра необходим источник постоянного напряжения 5 В с током нагрузки до 200 мА. Программа микроконтроллера написана и отлажена в среде AVRStudio4. Она работает следующим образом. Прежде всего конфигурируются внутренние устройства микроконтроллера. Далее проверяется наличие подключенного к разьему Х2 датчика температуры и выполняется чтение содержимого его постоянной памяти. Через 1 с (чтобы не запускать процесс измерения слишком часто) подается команда CONVERT Т. После этого на линии PD5 устанавливается необходимый для питания датчика высокий уровень.
Еще через 1 с, что более чем достаточно для завершения исполнения поданной команды, которое согласно документации занимает не более 750 мс, передается команда, по которой считывается измеренное значение температуры. Полученное значение преобразуется в двоично-десятичный формат. Если его абсолютное значение меньше десяти, то незначащий ноль не выводится, единицы градусов отображаются в разряде десятков индикатора, а разряд единиц остается погашенным. При нулевой температуре знак результата (плюс или минус) на индикатор не выводится. Подготовленная информация описанным выше способом передается в регистры DD2 и DD3. Далее цикл повторяется, начиная с секундной задержки.
Указанный на схеме микроконтроллер можно заменить любым другим из семейства AVR — особых требований к нему не предьявляется. Конечно же, это потребует незначительных изменений в программе и ее повторной компиляции. Вместо датчика температуры DS18S20 можно применить DS1820, но не DS18B20, поскольку последний представляет значение температуры в ином формате, на что предлагаемая программа не рассчитана.
Так как термометр относительно прост, он собран навесным монтажом без использования печатной платы. Датчик температуры при установке его на открытом воздухе следует герметизировать, чтобы исключить попадание влаги на выводы.
Метки: Аудиокабель, Датчик температуры, Заряд конденсатора, Статическая индикация.
Добавить комментарий