Skip to main content

Raspberry Pi Pico 温度传感器教学教程


Raspberry Pi Pico 搭载了一个内建的 温度传感器,通过读取 ADC(模数转换器)值,我们可以轻松获取当前温度。

什么是ADC?


ADC 是 Analog-to-Digital Converter(模数转换器) 的缩写。Raspberry Pi Pico 本身是一个使用 RP2040 微控制器 的开发板,而这个微控制器集成了几个 ADC 通道。ADC 的作用是将模拟电压(比如一个传感器输出的连续电压信号)转换为数字信号,供 MCU(微控制器)进行处理。


Pico 中 ADC 的具体情况:

  • RP2040 提供 3 个用户可用的 ADC 通道(ADC0, ADC1, ADC2)。
  • 还有一个额外的 ADC4 通道,它内部连接到板载的温度传感器。
  • ADC 的分辨率是 12 位,即返回的数字范围是 0 到 4095。
  • 输入电压范围是 0V 到 3.3V(超过这个范围可能损坏芯片)。
ADC 通道对应 GPIO 引脚
ADC0GPIO26
ADC1GPIO27
ADC2GPIO28
ADC4(温度)内部连接


温度传感器连接在 ADC4,读取的是电压值,需要转换为温度。

Python
from machine import ADC
import time

# 连接 ADC4(温度传感器)
sensor_temp = ADC(4)

# Pico 使用 3.3V 参考电压
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16()
    voltage = reading * conversion_factor
    temperature_c = 27 - (voltage - 0.706) / 0.001721  # 根据官方公式计算温度(摄氏)
    
    print("当前温度:{:.2f} °C".format(temperature_c))
    time.sleep(1)


温度转换说明

温度传感器的输出电压与温度成线性关系:

温度(°C) = 27 - (Vout - 0.706) / 0.001721
  • Vout 是 ADC 转换得到的电压(单位 V)
  • 0.706 是 27°C 时的电压值
  • 每度温差大约等于 1.721 mV

到这里我们就可以在终端中看到每秒的温度变化,注意,由于Pico板载的传感器并非专业的温度传感器,所以会存在一些误差。

MPY: soft reboot
Temperature: 22 °C
Temperature: 20 °C
Temperature: 20 °C
Temperature: 20 °C
Temperature: 20 °C
Temperature: 20 °C

Happy coding!