Датчик температуры TMP36 и Arduino

Содержание

Аналоговый датчик температуры простой в освоении, дешевый и при этом позволяет в режиме реального времени контролировать температуру окружающей среды!

Эти датчики используют технологии твердотельной электроники для для опредения температуры. То есть, в них нет ртути (как в старых термометрах) или биметаллических пластин. Вместо в них установлены термисторы (чувствительные к температур резисторы). В термисторах при повышении температуры, повышается напряжение в диоде (технически это разность напряжений между базой и эмиттером в транзисторе). Точный съем показаний напряжения дает возможность генерировать аналоговый сигнал, пропорциональный температуре. Конечно, технология не настолько линейна, но по сути именно так и меряется температура.

TMP36 в сравнении с монетой

В этих датчиках нет подвижных частей, они точные, практически не изнашиваются, не требуют калибровки, могут работать в различных окружающих средах. Кроме того, как уже упоминалось выше, эти датчики недорогие и легки в эксплуатации.

Датчик температуры TMP36

Технические характеристики

Эти технические характеристики относятся к аналоговым датчикам температуры TMP36 (-40 до 150 градусов по цельсию).

Технические характеристики очень схожи также с датчиками модели LM35/TMP35 (выходой сигнал в цельсиях) и LM34/TMP34 (в фаренгейтах). Основное преимущество модели ’36 перед ’35 или ’34 – этот датчик температуры имеет широкий диапазон чувствительности и не генерирует отрицательные значения напряжения при минусовой температуре. Во всем остальном функционал одинаковый.

  • Размер: корпус TO-92 (около 0.2" x 0.2" x 0.2") с тремя коннекторами
  • Цена: $2.00 в магазине Adafruit (Китай, конечно же предлагает дешевле)
  • Диапазон измеряемых температур: от — 40°C до 150°C / -40°F до 302°F
  • Диапазон сигнала на выходе: от 0.1В (-40°C) до 2.0В (150°C), но точность падает после 125°C
  • Питание: от 2.7 В до 5.5 В, сила тока — 0.05 мА
  • Даташит

Как измерить температуру

Для использования TMP36 достаточно подключить левый коннектор к источнику питания (2.7 — 5.5В), а правый – к земле. Со среднего коннектора мы будем снимать аналоговое значения напряжения, которое прямопропорционально (линейная зависимость) температуре. Значение аналогового напряжения не зависит от источника питания.

Для преобразования напряжения в температуру используется зависимость:

Temp in °C = [(Vout in mV) — 500] / 10

То есть, например, если напряжение на выходе равно 1 В, температура равна:

((1000 mV — 500) / 10) = 50 °C

Если вы используете датчик температуры LM35 или подобный ему, используйте линию “a” на рисунке выше и формулу:

Temp in °C = (Vout in mV) / 10

Проблемы, которые могут возникнуть при работе с несколькими датчиками

Если при добавлении в ваш проект нескольких датчиков вы замечаете, что данные температуры противоречивы, это означает, что сенсоры создают друг другу помехи при сцитывании аналоговых данных. Исправить это можно, добавив задержку между считываниями.

Проверка датчика температуры

Проверить эти датчики несложно. Для этого вам понадобятся батарейки или источник питания.

Подключите источник питания 2.7 – 5.5 В (отлично подходят также 2-4 батарейки АА) таким образом, что земля подключена к 3 пину (справа), а напряжение питания – к 1 пину (слева).

После этого выставьте на своем мультиметре режим DC (постоянный ток). Подключите его его к земле и свободному среднему (2) коннектору. Если у вас датчик температуры TMP36 и вокруг комнатная температура (около 25 °C), напряжение дожно быть около 0.75 В. Обратите внимание, что если вы используете LM35, напряжение составит 0.25 В.

Проверка датчика температуры

Датчик показывает температуру 26.3 °C, что равно 79.3 F

Напряжение на выходе можно легко изменить, зажав пластиковый корпус датчика пальцами. В результате вы увидите как напряжение/температура растут.

С пальцами на датчике температура поднялась до 29.7°C / 85.5°F:

Термодатчик нагретый пальцами

Или вы можете коснуться датчика кусочком льда (желательно так, чтобы влага с него не попала на ваше электрическую цепь). В результате температура уменьшится.

С кусочком льда на сенсоре температура опустилась до 18.6°C / 65.5°F.

Термодатчик с кусочком льда

Использование датчика температуры

Подключение датчика температуры

Внутри подобных датчиков находится маленький чип. Чип достаточно тонкий, так что устанавливать датчик надо осторожно. Будьте аккуратны со статическим электричеством при установке датчика. Убедитесь, что питание подключено правильно и находится в диапазоне от 2.7 до 5.5 В – постоянный ток. Не используйте батарейки на 9 В!

Чувствительный элемент датчика находится в пластиковом обрезанном по одной грани цилиндре с тремя «ногами». «Ноги» легко изгибаются для установки на монтажной плате. К ним можно припаять провода. Если вы хотите сделать ваш датчик водонепроницаемым – вот отличный проект с Instructables.

Считывание аналоговых значений температуры

В отличие от датчиков силы и фоторезисторов TMP36 и подобные датчики не работают как резистор. В связи с этим считывать данные температуры получится только с использованием аналогового пина на плате Arduino.

Подключение TMP36 к Arduino

Не забудьте, что для питания необходим диапазон от 2.7 до 5.5 вольт. В приведенной выше схеме подключения датчика температура к Arduino используется пин 5 вольт. Но можно использовать и пин 3.3 вольта. Вне зависимости от напряжения питания, считываемое аналоговое значение напряжения будет находится в диапахоне от 0 до 1.75 В.

Если вы используете 5 В Arduino и подключаете датчик напрямую к аналоговому пину, можно использовать следующие формулы для преобразования 10-битных аналоговых значений в температуру:

Напряжение на пине в миливольтах = (значения с аналогового пина ADC) * (5000/1024)

С помощью этой зависимости мы преобразуем числовое значение в диапазоне 0-1023 с аналогового пина в 0-5000 миливольт (= 5 вольт)

Если вы используете 3.3 Arduino, используйте следующую зависимость:

Напряжение на пине в миливольтах = (значения с аналогового пина ADC) * (3300/1024)

Эта зависимость преобразовывает числовое значение 0-1023 с аналогового пина в 0-3300 миливольт (= 3.3 вольт)

После этого, для преобразования милливольт в температуру, используйте формулу:

Температура в цельсиях = [(аналоговое напряжение в милливольт) — 500] / 10

Простой термометр на Arduino

В этом примере программы для Arduino показано как можно быстро создать термометр с использованием датчика температуры. Текущее значение температуры будет отображаться в серийном мониторе в градусах по Цельсию и по Фаренгейту.

int sensorPin = 0; //аналоговый пин, к которому подключен датчик температуры TMP36 //разрешающая способность равна 10 мВ/градус по Цельсию

//с отступом 500 мВ для отрицательных температур

* setup() – эта функция отрабатывает один раз при запуске Arduino

* Инициализация серийного протокола связи с компьютером

Serial.begin(9600); //Начало обмена данными с компьютером по серийному протоколу,

// чтобы отобразить результат измерений в серийном мониторе

void loop() // запускается вновь и вновь

//получаем значения напряжения с датчика температуры

int reading = analogRead(sensorPin);

// преобразовываем полученные данные в напряжение. Если используем Arduino 3.3 В, то меняем константу на 3.3

float voltage = reading * 5.0;

Serial.print(voltage); Serial.println(" volts");

// теперь отображаем температуру

float temperatureC = (voltage — 0.5) * 100 ; //конвертируем 10 мВ на градус с учетом отступа 500 мВ

//в градусы ((напряжение – 500 мВ) умноженное на 100)

Serial.print(temperatureC); Serial.println(" degrees C");

// преобразуем в градусы по Фаренгейту

float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;

Serial.print(temperatureF); Serial.println(" degrees F");

delay(1000); //ожидаем 1 секунду

Повышаем точность измерений датчиком температуры

Для более точных показаний с меньшими внешними шумами, можно использовать источник питания 3.3 В, который подключен к пину AREF вместо 5 В.

В примере дополнительно использован фоторезистор, но вы можете его спокойно проигнорировать.

Обратите внимание, что мы подключили датчик температуры TMP36 к пину A1.

Подключение датчика температуры к Arduino

При использовании пина 3.3 В для питания датчика не забудьте указать "analogReference(EXTERNAL)" в функции setup() как это сделано в коде ниже:

/* Пробный скетч для датчика температуры

#define aref_voltage 3.3// мы подключаем 3.3 В к AREF и проверяем напряжение мультиметром!

int tempPin = 1;//аналоговый пин, к которому подключен аналоговый датчик температуры TMP36

//разрешающая способность 10 мВ/градус по Цельсию

//с отступом 500 мВ для отрицательных температур

int tempReading;// считывание аналоговых значений с датчика

// подключаем серийный протокол для обмена данными с Arduino

// Если вы подключаете aref к источнику питания, который не равен 5 В

Serial.print(voltage); Serial.println(" volts");

// теперь отображаем температуру

float temperatureC = (voltage — 0.5) * 100 ; //преобразовываем 10 мВ на градус по цельсию с учетом поправки 500 мВ


Источник: arduino-diy.com