本帖最后由 fxyc87 于 2021-2-4 13:37 编辑
关于AD采集官方文档里边已经有很详细的例子了,
版主 dcexpert 也发布过这样的贴子 【RPi PICO】读取内部温度传感器
我这里也玩一波
首先官方手册中的信息,AD共有5个通道,其中4个通道0-3是外部的,通道4是内部芯片温度,
转换方法见代码,具体请参见图:
图1,AD参数:
图2,官方示例
图3,图4,引脚链接
图5,分享一下芯片内部温度,其实差不多就是环境温度,10摄氏度左右,我手按上去,5秒钟马上升到12度以上
利用Thonny软件还能显示曲线,在视图中勾上曲线,就行,见图
Thonny曲线也能显示多条,打印时用空格隔开,如下图
以上曲线感觉太小儿科了,来个专业的曲线工具,软件名称叫Serial Studio
GIT及下载地址见此处:
https://github.com/Serial-Studio/Serial-Studio/blob/master/README_ZH.md
https://github.com/Serial-Studio/Serial-Studio/releases/download/v1.0.13/SerialStudio-1.0.13-Windows.exe
如果要用外部曲线显示那这时就需要用到Uart模块了,
上图中用的print语句是不能通过外部PIN输出数据的,只能在Thonny环境中显示
import machine
import utime
from machine import UART
from machine import Pin
#分配串口编号及波特率和引脚
uart = UART(0,baudrate=9600,bits=8,parity=None,stop=1,tx=Pin(0),rx=Pin(1))
sensor_temp = machine.ADC(4)
ad0=machine.ADC(0)
ad1=machine.ADC(1)
ad2=machine.ADC(2)
conversion_factor = 3.3 / (65535)
while True:
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print(temperature,ad0.read_u16(),ad1.read_u16(),ad2.read_u16())
uart.write("/*temp,%3.2f,%4d*/"%(temperature,ad0.read_u16()))
utime.sleep(1)
可以使用 uart.write来对外输出串口数据
贴个曲线图
Serial Studio软件需要用JSON进行配置,可以配置为曲线图,仪表图等等,我还不是很会玩。
{
"t":"RT2040",
"g":[
{
"t":"AD曲线测试",
"w":"map",
"d":[
{
"t":"%1",
"v":"%2",
"u":"℃",
"g":true
}
]
},
{
"t":"通道1-测试空",
"d":[
{
"t":"曲线",
"v":"%3",
"g":true,
"u":"*"
}
]
}
]
}
再补一张硬件链接图: