Подключение термометра LM35 к ESP32

Аналоговый термометр

LM35 к ESP32 — питание от VIN (5 В), земля и выход на вход АЦП. Напряжение на выходе не больше 1,5 В, поэтому делитель не нужен.

Схема подключения термометра LM35 к ESP32

LM35ESP32
VOUTGPIO34
VSVIN
GNDGND

Схема из примера «Термометр LM35: 10 мВ на градус».

Термометр 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

В железе

При напряжении ниже 4 В показания LM35 неточны. Выход при этом остаётся в пределах 1,5 В, поэтому на вход ESP32 можно подавать напрямую даже при питании от 5 В. Длинный кабель к датчику может возбуждать выход — в даташите приведена цепочка из резистора и конденсатора для этого случая. Горячий корпус сразу после включения — признак обратной полярности.

Частые ошибки при подключении к ESP32

Другие детали для ESP32