Урок 12: Датчик Температуры LM35

1. Цель эксперимента

В этом уроке вы познакомитесь с LM35 — популярным аналоговым датчиком температуры, который не требует калибровки и выдаёт напряжение, пропорциональное температуре: 10 мВ на каждый °C. Вы научитесь:

  • правильно подключать датчик к Arduino;

  • преобразовывать показания АЦП в градусы Цельсия;

  • выводить температуру в Serial-монитор и наносить улучшения в код.

2. Компоненты

Кол-во

Деталь

1

Плата Arduino UNO

1

Аналоговый датчик температуры LM35

1

Макетная плата (breadboard)

5

Перемычки «папа–папа»

1

USB-кабель A-B

3. Немного знаний

Датчик температуры LM35
  • LM35 выдаёт 0 мВ при 0 °C и +1000 мВ при 100 °C.

  • Чувствительность фиксирована: 10 мВ / °C.

  • Напряжение питания — 4–30 В, поэтому 5 В от Arduino достаточно.

  • Формула для пересчёта АЦП (0–1023) в °C при опорных 5 В:

    Temp = ADC * 5.0 * 100 / 1023

4. Схема подключения

Подключение датчика LM35 к Arduino
  • VCC (1-я ножка, слева) → 5 V

  • OUT (средняя ножка) → A0 (аналоговый вход)

  • GND (3-я ножка) → GND

5. Пример кода

lm35_temperature_sensor.ino
// ────────────────────────────────────────────────
//  Урок 12 — Чтение температуры с датчика LM35
// ────────────────────────────────────────────────

const byte sensorPin = A0;   // аналоговый вход A0 ← вывод «OUT» LM35

void setup() {
  Serial.begin(9600);        // открываем Serial-монитор на 9600 бод
}

void loop() {
  int raw = analogRead(sensorPin);      // сырые данные 0-1023

  // Переводим в напряжение (0-5 В) и затем в °C.
  float voltage = raw * (5.0 / 1023.0); // шаг ≈4.88 мВ
  float temperatureC = voltage * 100.0; // 10 мВ ⇒ 1 °C ⇒ ×100

  // Выводим красиво отформатированную строку
  Serial.print("Temp: ");
  Serial.print(temperatureC, 1);        // 1 знак после запятой
  Serial.println(" °C");

  delay(500);                           // обновляем каждые 0.5 с
}

6. Результат теста

После прошивки скетча откройте Serial Monitor (скорость 9600 бод). Каждые пол-секунды появится строка вида Temp: 30.0 °C — это текущая температура, рассчитанная по напряжению с LM35. Попробуйте нагреть датчик пальцами или охладить его — значения начнут изменяться в реальном времени.

Окно Serial Monitor с выводом температуры

7. Как работает код

  • analogRead() преобразует аналоговый сигнал 0–5 В в число 0–1023.

  • Шаг АЦП при 5 В опорного напряжения: 5 В / 1023 ≈ 4.88 мВ.

  • Умножая результат на 5/1023 получаем напряжение, а умножив на 100 — итоговую температуру в °C (10 мВ → 1 °C).

  • Функция Serial.print(value, 1) выводит число с одним знаком после запятой, что более чем достаточно для LM35.

8. Пошаговый запуск

  1. Соберите схему как на рисунке выше, обращая внимание на ориентацию корпуса TO-92 (плоская сторона спереди).

  2. Подключите Arduino к ПК, выберите плату UNO и нужный COM-порт.

  3. Скопируйте скетч и нажмите Upload.

  4. Откройте Serial Monitor (9600 baud) — увидите текущую температуру.

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

9. Что может пойти не так

Симптом

Причина

Решение

Показывает 0 °C или «мусор»

Неправильное подключение выводов

Проверьте распиновку LM35 и направление корпуса

Температура «скачет»

Длинные провода, наводки

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

Значение выше/ниже реального

Опорное напряжение не 5 В

Уточните реальное Vcc мультиметром и корректируйте формулу

10. Эксперименты

  • Измените опорное напряжение на 1.1 В (analogReference(INTERNAL)) — получите шаг 1 мВ и более точное измерение в диапазоне 0–110 °C.

  • Отправляйте температуру в Serial Plotter и наблюдайте график.

  • Управляйте вентилятором через транзистор: включайте, если температура превышает заданный порог.