一、学习目标
1. 学习树莓派Pico主板的引脚ADC引脚基本使用。
2. 了解如何通过读取板载温度传感器的温度。
二、硬件使用
本次课程无需额外的硬件,直接利用树莓派Pico主板上的温度传感器。
Raspberry Pi Pico的RP2040微控制器是一种数字设备,就像所有主流微控制器一样:它由数千个晶体管组成,这些微小的开关式设备要么打开,要么关闭。 因此,你的PICO无法真正理解一个模拟信号-它可以是完全关闭和完全打开之间的频谱上的任何东西-而不依赖额外的硬件:模拟数字转换器(ADC)。
一个ADC有两个关键的特点:它的分辨率,以数字位测量,它的通道,或它可以接受和转换多少模拟信号一次。 您的PICO中的ADC的分辨率为12位,这意味着它可以将模拟信号转换为数字信号,其数字从0到4095不等-尽管这是在MicroPython中处理的,转换为从0到65,535的16位数字,因此它的行为与其他MicroPython微控制器上的ADC相同。 它有三个通道被带到GPIO引脚:GP26、GP27和GP28,它们也被称为模拟通道0、1和2的GP26_ADC0、GP27_ADC1和GP28_ADC2。 还有第四个ADC通道,它连接到一个内置在RP2040中的温度传感器。
三、程序分析
完整程序位置:Pico Robot配套资料 -> 附件 -> 课程程序源码 -> 1.基础课程 -> 2.板载温度传感器.py
import machine
import time
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
time.sleep(2)
import machine
机器库包含MicroPython需要与Pico和其他MicroPython兼容的设备通信的所有指令,扩展了物理计算的语言。
import time
“time”库。 这个库处理所有与时间有关的事情,从测量它到将延迟插入到程序中。单位为秒。
sensor_temp = machine.ADC(4)
使用ADC通道4,它连接到一个内置在RP2040中的温度传感器。
conversion_factor = 3.3 / (65535)
这引脚电平为3.3V,转换值上限为65535,所以根据此公式计算得电压和数字的比。
reading = sensor_temp.read_u16() * conversion_factor
计算ADC读取到的电压值。
temperature = 27 - (reading - 0.706)/0.001721
根据电压值计算出内置温度传感器的温度值。
time.sleep(2)
这会从utime库调用sleep函数,这会使程序暂停您键入的任何秒数——在本例中为2秒。
四、实验现象
程序下载完成之后,通过Thony的Shell窗口观察到温度值。