今天尝试使用ESP32的ADC做电压采样实验,跟之前一样,使用SDK里面提供的例程。一开始,我使用的是SDK里面的ADC2的例程,因为我的最小系统板上,把光敏电阻和电阻分压接到了GPIO0上,所以,我想用GPIO0来做AD采样。
所以对原程序进行了修改!原程序里有DA输出部分,我全部注释掉,只保留AD采样部分,通道改为通道1(对应GPIO0)。
但实际输出结果不对:
输出结果一直是4095,也就是满电压。使用万用表测量GPIO0引脚处的电压,发现在1.9V左右,超出了AD的采集上限:950mv。
现在使用SDK程序,不做修改。它使用的DA通道是1,对应GPIO25,AD通道是7,对应GPIO27.
#define DAC_EXAMPLE_CHANNEL CONFIG_EXAMPLE_DAC_CHANNEL
#define ADC2_EXAMPLE_CHANNEL CONFIG_EXAMPLE_ADC2_CHANNEL
然后通过杜邦线连接这两个IO。程序编译、下载、上电,串口接到串口助手上,可以看到打印信息:
前面是DA输出的值,后面是AD采集到的值。
DA输出1到255,对应0~3.3V。
AD采集的值从0~4095,对应0~950mv。这个范围是比较小的,电路设计的时候要注意安全。
我是起航,更多精彩内容,欢迎关注公众号:单片机爱好者。