
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 引脚 |
ADC0 | GPIO26 |
ADC1 | GPIO27 |
ADC2 | GPIO28 |
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!