В этом проекте мы подключим датчик температуры 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 без внешней калибровки.

Экономичность устройства обеспечивается подстроечной калибровкой на уровне кристалла. Благодаря низкому выходному сопротивлению, линейности и встроенной калибровке 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, например, паяльником.