Датчик температуры TMP36 — это простой способ измерить температуру с помощью Arduino! Датчик может измерять довольно широкий диапазон температур (от -50°C до 125°C), обладает достаточной точностью (разрешение 0.1°C) и имеет очень низкую стоимость, что делает его популярным выбором. В этом уроке мы рассмотрим основы подключения TMP36 и напишем базовый код для чтения аналогового входа, к которому он подключен.
Несколько соображений:
Прежде чем мы перейдем к подключению этого датчика температуры TMP36, необходимо рассмотреть несколько моментов:
• Этот датчик не защищен от атмосферных воздействий, поэтому его необходимо защитить от прямого воздействия погодных условий.
Как это работает:
В отличие от термистора, TMP36 не имеет резистора, чувствительного к температуре. Вместо этого этот датчик использует свойство диодов; когда диод изменяет температуру, напряжение изменяется вместе с ним с известной скоростью. Датчик измеряет небольшое изменение и выдает на его основе аналоговое напряжение от 0 до 1.75 В постоянного тока. Чтобы получить температуру, нам просто нужно измерить выходное напряжение и немного математики!
Необходимые детали:
Для этого урока потребуется несколько общих частей:
- 1 х датчик температуры TMP36
- 1 х Arduino Uno или совместимый микроконтроллер
- Соединительные провода — мы рекомендуем соединительный провод «папа/папа» премиум-класса
- Монтажная пластина (дополнительно)
Схема
Эта удобная маленькая диаграмма показывает, как мы будем все соединять. Не волнуйтесь, если это выглядит немного ошеломляющим, мы будем делать это шаг за шагом!
Шаг 1. Датчик температуры TMP36.
Поскольку этот датчик очень прост и не требует каких-либо вспомогательных компонентов, мы будем напрямую подключать датчик к Arduino. Начните с сгибания ножек датчика TMP36, чтобы они поместились на макетной плате.
Шаг 2 – Включение датчика
Этот датчик имеет довольно широкое входное напряжение, а это означает, что он не очень требователен к требуемому напряжению (где-то между 2.7 В постоянного тока и 5.5 В постоянного тока). В этом уроке мы будем использовать питание Arduino 5VDC. Начните с подключения перемычки от контакта 5VDC Arduino к «контакту 1» датчика. Затем подключите другую перемычку от одного из контактов заземления Arduino к «контакту 3» датчика.
Шаг 3 – Подключение выхода
В этом уроке мы будем использовать один из аналоговых входных контактов Arduino. Проложите перемычку от «контакта 2» датчика (средний контакт) к аналоговому входу. В этом уроке мы будем использовать аналоговый вход 0.
Шаг 4 – Дважды проверьте и подключите!
Прежде чем подать питание на Arduino, всегда полезно проверить все соединения, чтобы убедиться, что нет проводов в неправильном месте — иногда это может привести к очень дорогостоящей ошибке!
Шаг 5 — Запуск кода
Теперь, когда мы закончили с подключением, нам нужно начать писать код. Мы будем использовать Arduino IDE, она доступна по адресу https://www.arduino.cc/en/Main/Software.
Мы начнем со скетча «BareMinimum», который можно найти, нажав «Файл» и выбрав «Примеры» / «Основные» / «BareMinimum». Этот скетч — отличная отправная точка, так как он включает в себя функции Setup и Loop — остальное мы напишем!
Шаг 6 – Понимание того, как читать датчик
Этот датчик очень легко читается — датчик выполняет всю тяжелую работу, поэтому все, что нам нужно сделать, это прочитать выходные данные. Поскольку выходное напряжение является аналоговым напряжением, пропорциональным температуре, мы можем сделать некоторые очень простые математические действия, чтобы взять напряжение и преобразовать его в число, которое имеет больше смысла.
Шаг 7 – Написание кода
Мы начинаем с эскиза BareMinimum, найденного в IDE, он должен выглядеть примерно так:
Итак, сначала нам понадобятся некоторые переменные для использования:
Мы подключили датчик к аналоговому входу 0, поэтому мы объявим его как переменную — это значительно облегчит изменение в будущем, если мы когда-нибудь решим изменить, к какому контакту подключен датчик. Нам также нужны две переменные для данных; 1 будет хранить начальный ввод с аналогового входа, а другой будет хранить температуру после того, как мы преобразовали ее в десятичные градусы.
Аналоговые входы Arduino не нужно настраивать в цикле настройки, поэтому мы просто добавим некоторый код для запуска последовательного соединения, которое мы будем использовать для вывода данных.
Хорошо, теперь мы можем прочитать датчик, это будет сделано в цикле.
С Arduino очень легко считывать аналоговые входы — всего одна строка кода!
Теперь мы используем немного математики, чтобы преобразовать эти данные во что-то более знакомое:
Аналоговый вход дает нам значение от 0 до 1023, где 0 означает отсутствие напряжения, а 1023 — 5 В. Чтобы выяснить, во что преобразуется это напряжение в градусах Цельсия, нам нужно сначала найти процент 5 В на входе. Это можно сделать, разделив вход датчика на 1024.
Как мы знаем из таблицы данных, датчик будет выдавать 0-1.75 В в диапазоне 175 градусов (от -50 ° до 125 °), так что это означает, что каждые 0.01 В равны 1 градусу. Нам нужно будет преобразовать процент входного сигнала в напряжение, умножив его на 5В.
Поскольку мы не измеряем 0–175°, нам нужно сдвинуть выходное значение так, чтобы минимальное значение -50° равнялось значению напряжения, равному 0. Мы делаем это, вычитая 0.5 из выходного напряжения. Наше новое значение теперь находится в диапазоне от -0.5 до 1.25 (что очень похоже на наш температурный диапазон!)
Чтобы перевести милливольты в градусы Цельсия, нам нужно умножить на 100.
Теперь, когда у нас есть степени, давайте выведем их через последовательный порт, чтобы их можно было увидеть в последовательном мониторе Arduino.
Вот и все – мы закончили.
Шаг 8 — Загрузите код и протестируйте
Теперь, когда весь код написан, его можно загрузить в Arduino! Нажмите кнопку «Загрузить» в верхнем левом углу Arduino IDE, и он должен загрузиться без проблем. Затем нажмите кнопку «Последовательный монитор» в правом верхнем углу (она выглядит как увеличительное стекло). Через несколько секунд вы должны увидеть в окне поток данных — это ваша температура в градусах Цельсия.
31 мысль о «Использование датчика температуры TMP36 с Arduino»
Karthik
aurdino из-за преобразования напряжения в температуру от ad8495 16 бит и выхода 5 мВ / градус C. Может ли кто-нибудь прислать мне код для этого.
int смыслPin = A0; //Это контакт Arduino, который будет управлять реле №1
Я не думаю, что есть реле в этом проекте
Крис @ BCR
Хороший улов – Копирование/Вставка снова наносит удар!
Джеймс Хадсон
Большое спасибо за ваши превосходные иллюстрации, изображения очень четкие, без «размытости». У меня не было никаких проблем с пониманием того, как именно использовать TMP36 для работы с Ardunio, используя ваши САМЫЕ ОТЛИЧНЫЕ диаграммы. Большое спасибо за все время, которое вы потратили на это.
МайкХ
Я использую одну плату Arduino для подключения датчика температуры и вентилятора с питанием от транзистора от одного из цифровых входов/выходов. При подаче питания на вентилятор датчик температуры фиксирует скачок температуры (скачок напряжения). Почему это происходит и как решить проблему? Спасибо!
Похоже, показания довольно произвольны. У кого-нибудь есть такая же проблема?
Я нашел в Интернете, что резистор (41.7 кОм) должен быть подключен к аналоговому выходному контакту TMP36.
Крис @ BCR
Лично я бы не стал полагаться на TMP36 как на что-то большее, чем на грубое приближение. Людям легко научиться с этим датчиком, но если вас беспокоит, какая на самом деле температура, есть гораздо лучшие варианты. Я поклонник использования термисторов и термопар — все эти датчики температуры на основе интегральных схем имеют тенденцию показывать тепло из-за внутреннего нагрева бортовой схемы.
Лукас
ЗДРАВСТВУЙ! У меня проблемы каждый раз, когда я запускаю программу, она показывает минусовую температуру, помогите, пожалуйста.
Анонимный
У меня такая же проблема
Крис @ BCR
Вероятно, это связано с тем, что датчик неправильно подключен или работает неправильно. Ваше значение по умолчанию, если датчик отключен, будет -50. Дважды проверьте соединения и попробуйте другой датчик, если можете.
Анонимный
int смыслPin = A0;
внутренний вход датчика;
двойная температура;
недействительная установка () Serial.begin (9600);
>
void loop() sensorInput = AnalogRead(A0);
temp = (двойной) вход датчика / 1024;
темп = темп * 5;
темп = темп – 0.5;
темп = темп * 100;
Serial.print(“Текущая температура: “);
Серийный .println (темп);
если (temp > 15) digitalWrite (2, LOW);
>
if(temp < 15)digitalWrite(2, HIGH);
>
>
Я пытаюсь заставить двигатель вращаться, когда он превышает определенную температуру для вентилятора, но я не могу заставить его работать
Дипак Раджендра Вагмаре
можем ли мы подключить выход датчика к входу цифрового контакта вместо аналогового
mike87
нет… это аналоговые датчики
Скелдер
Я работаю с TMP с диапазоном от -40 до 125. Как мне найти новое число для деления вместо 1024
Джессика
1024 остается прежним, измените эту строку:
темп = темп – 0.5; //Вычесть смещение
темп = темп – 0.4; //Вычесть смещение
Карл Саммерс
Когда я запустил его в первый раз, я получил примерно правильную температуру, но по мере того, как я продолжал использовать Uno с датчиком, TMP36 начал считывать чрезмерно высокие температуры до 100, прежде чем сама плата отключилась, и ее нельзя было использовать в течение нескольких часов. . Вы бы рекомендовали использовать что-то вроде конденсатора, чтобы предотвратить это? И если да, то где на схеме стоит конденсатор?
Хэлли Ганадо
Если, например, датчик достиг температуры 50 градусов по Цельсию, можем ли мы использовать код, полученный от датчика, чтобы заставить двигатель вращаться?
Serega74
Нашел этот кусок, если код работает намного лучше:
temp = (двойной) вход датчика / 1024; // находим процент чтения ввода
темп = темп * 5; //умножаем на 5В, чтобы получить напряжение
темп = темп – 0.5; //Вычесть смещение
темп = темп * 100; // Преобразовать в градусы
tempAve=tempAve+temp;
>
tempAve=tempAve / 1000;
// Распечатать результат
Serial.print(“Текущая температура: “);
Serial.println(tempAve); // снова
mike87
да, это плохо – поэтому, если среднее значение температуры превышает (+/-) 32.7 по Цельсию, ваш код зависает
GioWisely
temp повторяется, логика запутается. Я не профи, пожалуйста, прокомментируйте эти настройки.
# определить зуммер 2
int смыслPin=A0;
внутренний вход датчика;
двойная температура;
внутреннее временное напряжение;
интервал температуры в процентах;
интервал времени;
недействительная установка () Serial.begin (9600);
pinMode (зуммер, ВЫХОД);
>
void loop() sensorInput=analogRead(A0);
темп=сенсорввод/1024;
временное напряжение=темп*5;
temppercent=tempvoltage*0.95;
tempcelcius=temppercent*100;
если (tempcelcius>37.5) digitalWrite(buzzer, HIGH);
>
еще digitalWrite(зуммер, НИЗКИЙ);
>
>
Крис @ BCR
Переменная temp просто используется повторно. Сначала выполняется все, что находится справа от знака равенства, а затем переменная «temp» приравнивается к этим результатам и переносится в следующую операцию. Спасает от объявления множества переменных для одноразового использования.
афггфхгн
ваши утверждения if неверны
неизвестный
как значение от датчика находится между 20 и 358
что это за значения?
Я не знаю, поняли ли вы это сейчас, но ваше утверждение «если» задом наперед. Я предполагаю, что вы хотите, чтобы вентилятор включался при температуре выше 15 градусов. Это должно быть так:
если (темп > 15) digitalWrite (2, ВЫСОКИЙ);
> еще digitalWrite(2, LOW);
>
Jacker
Во всех таблицах данных для TMP36 указано от -40 C до 125 C. Так что да, я думаю, что вычитание должно быть temp = temp -0.4, а не как показано здесь как temp = temp – 0.5.
Но есть еще одна вещь. Данные мне кажутся противоречивыми, но когда вы смотрите на раздел диаграмм, кажется, что при -40 градусах C напряжение НЕ 0, оно (трудно увидеть, потому что это не достаточное разрешение, но приблизительно) 150 мВ. При -40 С.
Так что не нужно ли нам приспосабливаться и к этому, поскольку 150 мВ — это базовое напряжение… самое низкое.
Крис @ BCR
Здесь мы не вычитаем отрицательную часть температурного диапазона, мы вычитаем смещение между калиброванным напряжением и калиброванной температурой.
– Мы знаем, что это 10 мВ / градус, а максимальное значение датчика составляет 1.75 В.
– Мы также знаем, что оно скорректировано до 750 мВ (0.75 В) = 25 градусов Цельсия (согласно техническому описанию) 0.01 * 25 = 0.25, 0.75 – 0.25 = 0.5
Таким образом, смещение составляет 0.5 В (или 50 градусов), поэтому вы должны взять показания напряжения и вычесть 0.5 В, чтобы выровнять его с калиброванной точкой 0.75 В = 25 градусов Цельсия.
Крис @ BCR
Без проблем! TMP36 — старый датчик — очень старый по стандартам электроники, поэтому было несколько итераций и разных производителей, поэтому с годами все изменилось. Ранее, когда было написано руководство для TMP36, у нас был TMP50 от -125 до 36C, который работал (хотя казалось, что он никогда не мог достигать 0 В/-50 из-за внутреннего нагрева). К счастью, с тех пор в каждой версии чипа они никогда не отклонялись от 0.75 В = 25 ° C, и уравнение всегда оставалось неизменным (хотя, я думаю, нам следует вернуться и немного обновить логику).
Примечание об измерении температуры: когда вы приближаетесь к пределам на каждом конце диапазона, вы также склонны достигать максимумов точности +/- и смещения самонагрева, которые могут достигать +/- 5 градусов с этим датчиком, поэтому любой небольшое изменение их графиков также может быть отражением этого. В этом ценовом диапазоне нет датчика температуры, который не нуждался бы в серьезном уровне калибровки, если вы хотите получить такую точность во всем диапазоне, поэтому возьмите информацию, которую они дают вам в таблицах данных и показаниях. от любого датчика температуры с недоверием. Этот метод, который мы используем, на самом деле является просто быстрым и грязным способом получения температуры — любая разумная потребность в точности должна учитывать другой датчик или гораздо более сложный откалиброванный метод коррекции входных данных.
Что касается аспекта 3.3 В: правильно, но также дважды проверьте, что у него такой же разрядный АЦП, как и у Uno. Если это не 10 бит (0-1023), вам придется изменить «1024», чтобы соответствовать разрядности любой платы, которую вы используете.
Температурные продукты
Серия HR — это линейка высоконадежных криогенных датчиков температуры для критически важных приложений. Это семейство готовых датчиков уже прошло экстремальные испытания, чтобы гарантировать вам дополнительную надежность.
Криогенные датчики температуры, заключенные в защитные гильзы из нержавеющей стали, для работы в ограниченном пространстве или при погружении в жидкости. Датчики не подвержены воздействию высокого давления и герметизированы для защиты электрических компонентов и проводки от жидкостей и других элементов.
Предназначен для точных, точных измерений сопротивления переменному току с низким уровнем шума и низкой мощностью возбуждения. Измерение сопротивления материалов в криогенных средах от
Контролируйте температуру от 1.4 К до более 800 К. Выберите один или восемь стандартных входов. Доступны интерфейсы USB, IEEE-488 и RS-232C, реле и аналоговые выходы.
Передавайте данные о температуре на большие расстояния в места сбора данных в исследовательских и промышленных условиях. Внешний интерфейс от 4 мА до 20 мА.
Программируемые источники переменного и постоянного тока, обеспечивающие точные, стабильные токи с низким уровнем шума для ряда приложений.
Криогенные принадлежности и принадлежности для измерения температуры включают кабели, провода, припой, нагреватели, изоляционные и проводящие материалы и многое другое.
Окружающая среда Янис
В наших криогенных криостатах используются криоохладители как на 10 K, так и на 4 K, охватывающие температурный диапазон от 1.5 K до 800 K. Выберите конструкцию с верхней или нижней загрузкой, подходящую для широкого спектра применений.
У нас есть полная линейка криостатов с охлаждением жидким гелием и жидким азотом. Выбирайте из криостатов непрерывного потока или резервуарных криостатов с множеством доступных конструкций для конкретных приложений.
Охладите криостат SuperTran без использования жидких криогенов.
Полностью интегрированные безкриогенные магнитные системы. Выбирайте из различных вариантов, от автономных до полных измерительных систем «под ключ». Также доступны системы с гелиевым охлаждением.
У нас есть полный спектр принадлежностей, вспомогательного оборудования и запасных частей для всех ваших криогенных потребностей.
Благодаря собственным возможностям проектирования и производства наши опытные физики и инженеры готовы обсудить ваши требования для любого типа криогенного применения.
Продукция Lake Shore используется в самых разных областях. Найдите свое приложение здесь, чтобы увидеть рекомендуемые продукты.
Магнитные изделия
Измерение магнитных полей постоянного и переменного тока, а также управление постоянными полями. Идеально подходит как для промышленных, так и для научных исследований. Ручные и настольные устройства.
Осевые, поперечные, многоосевые и тангенциальные преобразователи Холла для измерения плотности магнитного потока. Выбирайте из широкого диапазона длин и толщин. Зонды также доступны для криогенных применений.
Небольшие, компактные осевые и поперечные генераторы Холла для измерения плотности потока. Возможно использование при криогенных температурах.
Измерение общего потока в промышленных и измерительных системах. Идеально подходит для тестирования и сортировки магнитов, а также в качестве основного компонента в приложениях для измерения петли BH или гистерезисграфа.
Имеются стандартные катушки Гельмгольца, катушки Гельмгольца для измерения магнитного момента и поисковые катушки.
Продукты для характеристики материалов
Уникальная архитектура прибора, оптимизированная для обеспечения синхронного источника постоянного, переменного и смешанного постоянного и переменного тока и измерения до 100 кГц для низкоуровневых измерений
Масштабируемые исследовательские платформы, которые быстро адаптируются к широкому спектру приложений для определения характеристик материалов.
Программное обеспечение для своевременной координации температурных, полевых и электрических измерений для исследования характеристик материалов.
Продукты для характеризации материалов, которые так же просты в использовании, как ваш смартфон.
Измеряйте петли гистерезиса M(H), кривые крутящего момента и зависящие от температуры магнитные свойства широкого спектра образцов, включая объемные, порошковые, тонкопленочные, жидкие и магнитные структуры.
Зондовые станции с микроманипуляциями, используемые для неразрушающего контроля устройств на полных и частичных пластинах. Идеально подходит для измерения магнитотранспортных, электрических, электрооптических, параметрических, высоких Z, постоянного тока, радиочастотных и микроволновых свойств.
Измеряйте переменный/постоянный эффект Холла и АЭХ в спинтронике, прозрачных оксидах, DMS и составных полупроводниках. Определите мобильность и плотность отдельных носителей с помощью нашего программного пакета QMSA.
Электромагниты серии EM-V создают переменные магнитные поля с различными конфигурациями воздушного зазора и полюсной крышки. Они идеально подходят для различных применений.
Линейные биполярные источники питания постоянного тока с магнитом обеспечивают настоящий 4-квадрантный выход, устраняя необходимость во внешнем переключении или вмешательстве оператора для изменения полярности тока.
Настоящий 4-квадрантный, малошумящий, стабильный источник питания со сверхпроводящим магнитом. Идеально подходит для малых и средних сверхпроводящих магнитов.
Водяные чиллеры для работы с частотой 50 или 60 Гц, различных размеров и холодопроизводительности.
Свяжитесь с нами | 614-891-2243 | Политика конфиденциальности | Юридический | © 2022 Lake Shore Cryotronics, Inc. | Lake Shore стремится к тому, чтобы наши клиенты стремились к науке, которая приносит пользу человечеству.