СОДЕРЖАНИЕ ►
Датчик температуры lm35 может использоваться во многих простых проектах, например, метеостанция на Ардуино. Рассмотрим на данном занятии простой аналоговый термодатчик LM35: как работает радиоэлемент, схема его подключения к Arduino UNO. Рассмотрим простой скетч для датчика температуры, который будет выдавать показания температуры на монитор компьютера или LCD дисплей.
Характеристики датчика lm35, описание
— питание: 2,7-5,5 Вольт;
— потребляемый ток: 50 mkА;
— диапазон температур: 10°C — 125°C
— погрешность: 2 градуса.
Вместо lm35 можно использовать любой другой датчик температуры, например, TMP35, LM35, TMP37, LM335. Выглядит датчик как транзистор и поэтому его легко спутать, поэтому всегда внимательно читайте маркировку на радиоэлементах. Часто на основе данного датчика производители делают модули температуры для Ардуино (смотри фото выше). Если у вас только сам датчик lm35, то он имеет три вывода.

Если посмотреть на температурный сенсор lm35 со стороны контактов и срезом вверх (как на рисунке), то слева будет положительный контакт для питания 2,7-5,5 Вольт, контакт по центру — это выход, а справа — отрицательный контакт питания (GND).
Как подключить датчик lm35 к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- Макетная плата;
- температурный датчик LM35;
- светодиод и резистор на 220 Ом;
- провода «папа-папа».

Данный датчик аналоговый, поэтому на выходе мы имеем значения не 0 или 1, а непрерывное изменение напряжения в диапазоне от 0 до 5 вольт. Следовательно, мы должны подключить датчик lm35 к Arduino к аналоговым портам A0-A5 по схеме, изображенной далее. После сборки схемы загрузите скетч для снятия значений с аналоговых датчиков и вывода данных в аппаратный последовательный порт.
Скетч для термодатчика lm35 Ардуино
int temp; // освобождаем память для переменной "temp" void setup() { pinMode(A0, INPUT); // сенсор LM35 подключим к аналоговому входу A0 Serial.begin(9600); // подключаем монитор порта } void loop() { temp = analogRead(A0); // переменная находится в интервале 0 - 1023 Serial.println(temp); // выводим значение датчика на монитор delay(100); // ставим небольшую задержку }
Пояснения к коду:
- в первой строчке мы зарезервировали память для переменой
temp; - оператор
intуказывает, что значенияtempмогут принимать только целое число.
Калибровка температурного датчика lm35
Калибровка аналогового датчика нужна, для того чтобы получать показания с lm35 температурного датчика в градусах Цельсия, как это сделано на цифровом датчике температуры и влажности DHT11. Для этого в скетч следует добавить еще одну переменную и вставить формулу, которая преобразует аналоговый сигнал с датчика в градусы Цельсия. Для калибровки lm35 следует изменить формулу в программе.
Скетч для калибровки датчика lm35
int temp; // освобождаем память для переменной "temp" float grad; // освобождаем память для переменной "grad" void setup() { pinMode(A0, INPUT); // сенсор LM35 подключим к аналоговому входу A0 Serial.begin(9600); // подключаем монитор порта } void loop() { temp = analogRead(A0); // переменная находится в интервале 0 - 1023 grad = ( temp/1023.0 )*5.0*1000/10; // формулу можно изменять Serial.println(grad); // выводим температуру на монитор delay(100); // ставим небольшую задержку }
Пояснения к коду:
- переменная
float— это число с плавающей точкой, используется для аналоговых величин, т.к. позволяют описать их более точно, чем целые числа; - в формуле
grad = ( temp / 1023.0 ) * 5.0 * 1000 / 10;можно менять значения чисел, чтобы точнее откалибровать температурный датчик;










Не нужно калибровать датчик. Нужно внимательно читать литературу. Надо просто при загрузке поменять опорное напряжение на 1,1 В analogReference(INTERNAL); и будет Вам счастье. reading = analogRead(A0); // получаем значение с аналогового входа A0
tempC = reading / 9.31; // переводим в цельсии .
Без танцев с бубном.
Как подключить модуль с lm35 к Ардуино? Программа будет та же самая? Спасибо
Здравствуйте всем!
Подключил модуль LM35 к Ардуино и в мониторе порта побежали цифры, однако при поднесении горящей спички к датчику, значения бегущих цифр начали уменьшаться, хотя по логике вещей значения должны увеличиваться! Не могу понять в чем дело.
Пожалуйста, растолкуйте коротко, где зарыта собака. Спасибо.
Попробуйте изменить полярность подключения датчика LM35 к Arduino.
Поменял полярность — сработала защита Ардуино (он отключился)
Поставьте в программе условие на уменьшение данных — принцип работы от этого не изменится. Хотя так работать датчик LM35 не должен.