Подключение термометра LM35 к ESP32
Аналоговый термометр
LM35 к ESP32 — питание от VIN (5 В), земля и выход на вход АЦП. Напряжение на выходе не больше 1,5 В, поэтому делитель не нужен.
Схема подключения термометра LM35 к ESP32
| LM35 | ESP32 |
|---|---|
| VOUT | GPIO34 |
| VS | VIN |
| GND | GND |
Схема из примера «Термометр LM35: 10 мВ на градус».
Выводы LM35
| Вывод | Назначение |
|---|---|
| VOUT | аналоговый выход, 10 мВ на градус |
| VS | питание, от 4 В (на плату — 5 В) |
| GND | общий провод |
Код для ESP32
// Термометр LM35: на выходе 10 мВ на каждый градус Цельсия.
// 25 °C — 0,25 В, 100 °C — 1 В.
//
// Питание датчика — от 4 В, поэтому он стоит на VIN (5 В), а выход при
// этом остаётся в пределах 1,5 В и безопасен для входа ESP32.
//
// АЦП ESP32 шумит, поэтому берём среднее из шестнадцати замеров. На
// самых малых напряжениях (ниже 0,1 В, то есть ниже 10 °C) АЦП ESP32 ещё
// и нелинеен — для такого диапазона нужна калибровка.
const int LM35 = 34;
const float VREF = 3.3; // напряжение, которое АЦП считает полной шкалой
const int ADC_FULL = 4095;
void setup() {
Serial.begin(115200);
}
void loop() {
long sum = 0;
for (int i = 0; i < 16; i++) {
sum += analogRead(LM35);
delay(2);
}
float volts = (sum / 16.0) * VREF / ADC_FULL;
float celsius = volts * 100.0; // 10 мВ на градус
Serial.printf("%.3f В = %.1f °C\n", volts, celsius);
delay(1000);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Выходное напряжение — единицы десятых вольта, где АЦП ESP32 заметно нелинеен. Усредняйте измерения и при необходимости калибруйте.
- Используйте выводы АЦП1 (GPIO32–39): АЦП2 не работает при включённом Wi‑Fi.
В железе
При напряжении ниже 4 В показания LM35 неточны. Выход при этом остаётся в пределах 1,5 В, поэтому на вход ESP32 можно подавать напрямую даже при питании от 5 В. Длинный кабель к датчику может возбуждать выход — в даташите приведена цепочка из резистора и конденсатора для этого случая. Горячий корпус сразу после включения — признак обратной полярности.
Частые ошибки при подключении к ESP32
- Питание LM35 от 3V3: датчик не работает как термометр.
- Расчёт температуры по шкале 5 В: АЦП ESP32 считает шкалой 3,3 В.
- Питание от 3,3 В: на выходе непредсказуемые значения. Датчику нужны 5 В.
- Перепутаны выводы TO-92: при обратной полярности датчик нагревается и выходит из строя.
- Без усреднения показания «дрожат» на десятые доли градуса и больше: АЦП шумит, а на один градус приходится всего 10 мВ.
- Попытка измерить температуру ниже нуля в базовой схеме: выход LM35 не уходит в отрицательную область.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2Джойстик KY-023DHT11HTU21DSN65HVD230