锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-09-19 20:00:00 r1216电位器r09n系列电位器r9011电位器

最近入手了pico学习。

目录

  • 〇、总的参考
  • 一、函数说明
  • 二、硬件准备
  • 三、程序-ADC模拟数字转换器(用电位器读取GPIO读取电压和板载温度传感器)
  • 四、可能出现的问题(尚未解决)

〇、总的参考

视频参考 【微雪课】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-655535555 

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

二、硬件准备

焊接排针pico,1个
2.面包板,一个
三、蓝白电位器,一个
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)又只有一个。。。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章