Для электронщиков и радиолюбителей

Датчик температуры LM35 с Raspberry Pi Pico на MicroPython

Датчик температуры LM35 с Raspberry Pi Pico на MicroPython

В этом проекте мы подключим датчик температуры LM35 к Raspberry Pi Pico с помощью MicroPython, чтобы создать цифровой термометр.

Датчик температуры LM35 — это аналоговый сенсор, выходное напряжение которого пропорционально температуре в градусах Цельсия. Он обеспечивает диапазон измерения температуры от –55°C до +150°C с точностью ±0,75°C. Благодаря такому широкому диапазону и высокой точности LM35 отлично подходит для множества задач измерения температуры.

С помощью MicroPython можно точно считывать аналоговые значения с LM35 через АЦП (ADC). В этом проекте мы напишем скрипт на MicroPython, который будет выполняться на Raspberry Pi Pico. Этот скрипт будет считывать аналоговый сигнал с датчика LM35, преобразовывать его в температуру и выводить результат.

Серия датчиков LM35 отличается высокой точностью и линейным выходным напряжением, пропорциональным температуре в градусах Цельсия. В отличие от сенсоров, откалиброванных в Кельвинах, для LM35 не нужно вычитать постоянное напряжение для пересчёта в градусы Цельсия. LM35 обеспечивает типичную точность ±0,25°C при комнатной температуре и ±0,75°C в диапазоне от –55°C до +150°C без внешней калибровки.

Version 1.0.0

Экономичность устройства обеспечивается подстроечной калибровкой на уровне кристалла. Благодаря низкому выходному сопротивлению, линейности и встроенной калибровке LM35 легко подключается к различным схемам. Он работает от одного или двух источников питания и потребляет всего 60 мкА, что сводит саморазогрев к менее чем 0,1°C в неподвижном воздухе.


Подключение датчика LM35 к Raspberry Pi Pico

Процесс подключения LM35 к Raspberry Pi Pico довольно прост:

  • Подключите VCC LM35 к 3.3V (Vin) на Pico.
  • Подключите GND LM35 к GND на Pico.
  • Подключите Vout (выход) LM35 к одному из аналоговых входов Pico (например, GP26).

Для удобства можно использовать макетную плату (breadboard) и провода-перемычки, чтобы соединить LM35 с Raspberry Pi Pico без пайки.


Код на MicroPython

Теперь напишем код на MicroPython для подключения датчика LM35 к Raspberry Pi Pico и получения температурных показаний.

Следующий код инициализирует датчик LM35, подключённый к одному из аналоговых входов Pico. Он непрерывно считывает значения АЦП, усредняет их по десяти измерениям для уменьшения шума и вычисляет температуру в градусах Цельсия и Фаренгейта, корректируя возможную систематическую погрешность с помощью калибровочного смещения. Результаты выводятся каждые 1 секунду.

# Импорт необходимых библиотек
import machine  # Для взаимодействия с аппаратными компонентами, такими как ADC
import utime    # Для работы со временем, например, функция sleep

# Инициализация АЦП (Analog to Digital Converter) на выводе 26 для чтения с LM35
LM35 = machine.ADC(26)

# Определяем значение калибровочного смещения (устанавливается экспериментально)
Cal_Offset = -1650

# Функция вычисления температуры по среднему значению АЦП
def Compute_Temp(Avg_A):
    # Добавляем калибровочную поправку
    LM35_A = Avg_A + Cal_Offset
    # Преобразуем значение АЦП в напряжение (каждая единица АЦП = 0.00005 В)
    LM35_V = LM35_A * 0.00005
    # Преобразуем напряжение в температуру по шкале Цельсия (10 мВ = 1°C)
    Tmp_C = round((LM35_V * 100), 1)
    # Переводим температуру в градусы Фаренгейта
    Tmp_F = round((Tmp_C * 1.8 + 32), 1)
    # Возвращаем обе температуры
    return Tmp_C, Tmp_F

# Переменные для накопления измерений
Samples = 0
Num_Samples = 1

# Основной цикл чтения температуры
while True:
    if Num_Samples <= 10:
        # Считываем текущее значение АЦП
        LM35_A = LM35.read_u16()
        # Добавляем его в сумму измерений
        Samples += LM35_A
        # Увеличиваем счётчик измерений
        Num_Samples += 1
    else:
        # Вычисляем среднее значение из 10 измерений
        Avg_A = Samples / 10
        # Сбрасываем накопленные значения для следующего цикла
        Samples = 0
        Num_Samples = 1
        # Вычисляем температуру
        T_c, T_f = Compute_Temp(Avg_A)
        # Выводим результаты
        print("Celsius=", T_c, "  Fahrenheit=", T_f)
    
    # Задержка между измерениями (0.1 секунды)
    utime.sleep(0.1)

Сохраните этот код на плату Raspberry Pi Pico и запустите его.

В Python Shell вы увидите температуру в вашей комнате.
Для проверки точности можно сравнить показания с эталонным термометром. Чтобы наблюдать повышение температуры, аккуратно нагрейте датчик LM35, например, паяльником.