分享

MicroPython&PICO下的ADC

 新用户5228KeDY 2023-02-06 发布于北京

PICO5ADC通道。GP26GP27GP28GP29分别称为ADC0123。可以使用的,是前3个通道,也就是普通的测量模拟电压,分别是ADC012,而ADC3是用于测量板载VSYS电压的。另外,ADC4是内置的,无法在引脚处使用,用于测量板载的温度传感器。

PICOADC分辨率为12位,因此模拟输入电压应该是转换为212次方即04095,但是,MicroPython的输出转换,是16位的065535。也就是看着是16位,实际只有12位。即0.050mV/bit

关于PICOADC,网上有一些说法,说是不稳、浮动大。我尝试给引脚和GND之间并了一个10u的电容,把这个浮动降下去了。不并,大约0.04V,并上去大约0.01V。不知为何。

另外,PICO要比ESP32宽度小一些,小的面包板直接就可以插入,两侧仍然可以插线,还算方便,否则面对ESP32这东西就更加没意思了。当然,PICO另一个可取之处,是不像ESP32那么碎片化,只要找到资料,都比较规范和通用。

代码:

#--------------------------------------------------------# 原始代码参考# Raspberry Pi Pico Essentials# Program, Build, and Master Over 50 Projects# with MicroPython and the RP2040 Microprocessor# 一书#----------------------------------------------------------from machine import ADCimport utime#GP26,GP27,GP28,GP29分别定义为ADC通道0,1,2,3AnalogIn = ADC(0) # ADC channel 0-GP26#虽然是12位ADC,但是Mpython将其转化为16 bits计算Conv = 3.300 / 65535while True:    mV = AnalogIn.read_u16() #读出bits    V = mV * Conv # Input in mV    Vstr = "{:.3f}".format(V)#Mpython有些format不支持    print(Vstr)    print(f'{V:.3f}')#更方便的格式化    utime.sleep(1)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多