3.2 板载温度传感器

一、学习目标

1. 学习树莓派Pico主板的引脚ADC引脚基本使用。

2. 了解如何通过读取板载温度传感器的温度。

二、硬件使用

本次课程无需额外的硬件,直接利用树莓派Pico主板上的温度传感器。

image-20220209094626831

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

机器库包含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窗口观察到温度值。

image-20220208170012550