[树莓派 PICO(基于MicroPython)]基础教程04-ADC模拟数字转换器(使用电位器读取GPIO电压、板载温度传感器读取)

最近入手了pico学习。

〇、总的参考

视频参考微雪课堂】PICO系列教程4——ADC(模拟数字转换器)
另附其github,课程中所用代码皆在其中。
博文参考树莓派 PICO基础教程(基于MicroPython)

下面让我们开始ADC的学习吧!ε≡٩(๑>₃<)۶

一、函数说明

machine.ADC(id):
	#ADC对象构造函数
	#其作用为初始化对应的ADC通道
	#参数id为使用的ADC通道,可以使用Pin对象,也可直接指定为ADC通道
	#使用Pin对象时,指定的GPIO需要支持ADC功能,即GPIO26-29
	#使用指定ADC通道时,通道0-3对应GPIO26-29,通道4则对应内部温度传感器
ADC.read_u16():
	#其作用为读取对应通道ADC数值,并返回读数值
	#注意!函数返回数值并非直接返回ADC读取的数值,而是经过处理的数值,数值范围为0-65535

ADC电压公式(单位为V):
在这里插入图片描述
ADC温度公式:
在这里插入图片描述

二、硬件准备

1、焊接排针的pico,1个
2、面包板,1个
3、蓝白电位器,1个
4、杜邦线(若用面包板,选用公公线),若干

三、程序-ADC模拟数字转换器(使用电位器读取GPIO电压、板载温度传感器读取)

ADC模拟数字转换器主要参考
①【微雪课堂】PICO系列教程4——ADC(模拟数字转换器)
Micropython——关于PICO中ADC和PWM结合起来的使用
代码:

#每秒读取一次GPIO26上的电压,并使用片内温度传感器采集温度20
from machine import Pin, ADC
	#从machine中引入Pin,ADC
import utime
	#引入utime

#使用两种方式初始化ADC通道
ADC0= ADC(Pin(26))
	#通过指定GPIO26初始化ADC通道0
sensor_temp = ADC(4)
	#指定初始化ADC通道4,其对应片内温度传感器

while True:

    reading = ADC0.read_u16()*3.3/65535
	#读取ADC通道0的数值
	#并根据ADC电压计算公式得到GPIO26引脚上的电压
    print("ADC0 voltage = {0:.3f}V \r\n".format(reading))
    
    reading = sensor_temp.read_u16()*3.3/65535
	#读取ADC通道4的电压
    temperature = 27 - (reading - 0.706)/0.001721
	#代入官方给出的温度计算公式
    #print("temperature = {0:.3f}℃ \r\n".format(temperature))
    
    utime.sleep_ms(1000)

实验现象:
Thonny输出ADC电压、板载温度传感器数值。
调节电位器,ADC电压变化;用手触碰RP2040芯片,可发现温度变高,也可用低温物体触碰,发现温度变低。
想看实验现象的,可以看我上面附的视频或博文。

四、可能出现的问题(尚未解决)

之所以上面没有附上实验现象,是因为我的ADC电压结果有问题(温度测量没问题)。
①尝试更换ADC端口
ADC0、ADC1、ADC2这三个端口(更换端口的同时,程序也做了变动)我测出的结果都在0.5 - 0.9之间,而且不使用电位器,这个数值自己就会变动。即使使用电位器,仍是没有任何改变。
②尝试测量电位器、导线是否有问题
使用万用表,并未发现电位器、连接到pico的导线有问题。
③或许供电不足?
我测量了GPIO29(pico上未引出该引脚,用于检测VSYS电压),具体可参考这一博文树莓派Pico开发板硬件扩展接口及电源模块解析,可以知道VSYS电压应在2-5V:
在这里插入图片描述
但我测得的结果仅有1.5V左右。
而且又参考了这一问题AVR单片机ADC检测电压最大只能检测0.5V的现象

个人感觉,是使用笔记本供电不足导致的测量不足(别人使用的也是笔记本吧?为何没有这种问题),我更换成电脑USB其他接口,问题并未解决。
由于实验条件所限,暂时未能尝试给pico外接其他电源。
④或许面包板有问题?
⑤或许GPIO有问题?
可是更换了GND仍无改变,3V3(OUT)又只有一个。。。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值