收藏

ESP32(MicroPython) 两个ADC程序

分类: 基础知识篇 >> ESP32基础知识 发布于 2024-05-16 390次阅读0点赞0收藏

最近对ESP32的ADC功能进行了详细测试,下面提一下具体结果,并给出相应的两个程序。

先提一下更早得出的一个结论:ADC通过定时器中断检测更准确。具体原理尚不明确。

通过串口输出ADC检测结果速度较快。经测试,3ms输出一次可以正常输出而不会出现明显延时。要注意的是,输出速度快可能导致程序不能正常停止,因此尽量直接运行,不要烧录。

代码1:

程序如下(为了提高速度,电压没有进行换算,也未对换算电压对输出速度的影响进行测试)


'''
接线: ADC-->(34)  
'''

#导入Pin模块
from machine import Pin
from machine import ADC
from machine import Timer

#定义ADC控制对象
adc=ADC(Pin(34))
adc.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

#定时器0中断函数
def time0_irq(time0):
    print(adc.read())

#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=3,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass

代码2:

之前提到过4路ADC不能正常运行的情况,经过详细测试,实际上是36引脚的ADC不能正常运行,可能是硬件故障或MicroPython库bug。33、32、35、34、39引脚可用。使用以上5路ADC每10ms输出一次可以正常输出。

程序如下(电压未换算)

#导入Pin模块
from machine import Pin
from machine import ADC
from machine import Timer

#定义ADC控制对象
adc1=ADC(Pin(32))
adc1.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc2=ADC(Pin(33))
adc2.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc3=ADC(Pin(34))
adc3.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc4=ADC(Pin(35))
adc4.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V
adc5=ADC(Pin(39))
adc5.atten(ADC.ATTN_11DB)  #开启衰减,量程增大到3.3V

#定时器0中断函数
def time0_irq(time0):
    print(adc1.read(),adc2.read(),adc3.read(),adc4.read(),adc5.read())

#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=10,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass
VIP
购买
建议
意见
联系
客服
在线咨询

您可以与在线客服进行沟通获得帮助

工作日:8:00~22:00节假日:9:00~20:00

微信号: mpyos01

Q Q号: 1401211620

免费
福利
0.031293s