2176| 0
|
[ESP8266/ESP32] Arduino ESP32 C6 ADC功能介绍以及模拟量信号读取 |
本帖最后由 tiger_zc 于 2024-4-14 23:49 编辑 拿到DF公司的FireBeetle 2 ESP32-C6测试板已经后,就开始各种学习,为后面的项目做铺垫,毕竟ESP32好多强大的功能必须由浅入深来学习,和以前自己比较熟练的Arduino有很多不同之处。这里我就用实验和例程来介绍一下ESP32 模数转换器(ADC)功能以及模拟信号的读取。 ADC(模数转换器)是一种非常常见的外设,用于转换电压等模拟信号 转换为数字形式,以便可以由微控制器读取和处理。ADC在控制和监控应用中非常有用,因为大多数传感器 (例如,温度、压力、力)产生模拟输出电压。 ESP32芯片中集成了2个ADC单元,支持测量特定模拟IO管脚的模拟信号。其具有两个ADC单元,可以在生成ADC单次转换结果和ADC连续转换结果。此外,ADC还支持直接内存访问(DMA)功能,可以高速获取ADC转换结果。 关于ESP32 ADC的更多知识,可以去这里查看官方文档https://docs.espressif.com/proje ... ipherals/index.html 关于FireBeetle 2 ESP32-C6介绍请参看这里https://wiki.dfrobot.com.cn/_SKU ... le_2_Board_ESP32_C6 FireBeetle 2 ESP32-C6的接口引脚如下: · 数字I/O x19 · LED PWM 控制器6个通道 · SPI x1 · UART x3((LP UART x1)) · I2C x2(LP I2Cx1) · I2S x1 · 红外收发器:发送通道 x5、接收通道 x5 · 1 × 12 位 SAR ADC, 7个通道 · DMA 控制器,3个接收通道和 3个发送通道 ADC使用注意事项: 从引脚示意图可以看出,C6上共有6个ADC引脚可以供我们使用,在使用的时候应该注意有没有端口被占用的情况。比如使用WIFI时候,就会占用ADC1_2,这个使用再使用ADC2就会出数据出错;使用GDI接口可能会占用ACD1_1。 ADC库函数的使用: Arduino IDE已经提供了 ESP32 核心库有关ADC库函数,可供我们调用,ESP32模拟输入(ADC) 用ESP32读取模拟值意味着可以测量0 V到3.3 V之间的变化电压等级。然后将测量的电压赋给0到4095之间的一个值,其中0 V对应0,3.3 V对应4095。0 V到3.3 V之间的任何电压都将给出两者之间的相应值。 有了库函数,我们在使用Arduino IDE读取ESP32的模拟输入就像使用analogRead()函数一样简单。 当我们在ESP32的ADC引脚中接入模拟输入量,就能方便地读出对应的数据。 模拟输入测试: 接入一个10K电位器,接线图如下 接线示意图 测试代码:
代码写入后,当旋转电位器时候,串口监视器的读数就会在0~3296之间连续变化。 土壤湿度传感器测试: 为了更能说明问题,用DF号称“大宝剑”的土壤湿度传感器来替换电位器,该产品链接_SKU_SEN0308_Gravity_模拟防水土壤湿度传感器-DFRobot 这是DFRobot新推出的一款防水式土壤湿度传感器,与老款的土壤湿度传感器相比,增加了防水性能,优化了防腐蚀性能,增加了极板长度并优化了电路性能。 电容式的土壤湿度传感器,相比电阻式传感器,解决了电阻式传感器易被腐蚀的问题,能够长时间插入泥土不被腐蚀。该款传感器增加了防水性能,传感器全部浸泡在水中仍能正常使用;增长了电容极板的长度,可以更精确的测量土壤湿度信息。该款传感器具有较宽的输入电压,能够在3.3V-5.5V宽电压下工作。兼容Arduino、ESP32、micro:bit、掌控板、树莓派等常见控制板。标准设计的DFRobot-Gravity接口可以直接与Gavity IO扩展板相连接。而树莓派之类的微型PC,则需要外接一个ADC(模拟信号转数字信号)模块就可以工作。 参数规格 l 工作电压: 3.3 ~ 5.5 VDC l 工作电流: 7mA l 输出电压: 0 ~ 2.9 VDC l 接口型号: 2.54-3Pin l 电缆线长: 1.5m l 尺寸(LxW): 175 x 30mm 这款传感器可以工作在3.3~5.5V电压下,所以可以直接用在ESP32中。用该传感器替换10K电位器,这时,会看到串口监视器中的数据有了新的变化。当把传感器插入水中,读数在545左右;当把传感器擦干后,读数在2930左右。湿度越大,读数越小,数值和湿度值成反比。 本案例中使用ESP32主控板,对比Arduino主板的读数会偏大,这是因为UNO上的ADC是10位的,读取数值区间在0-1023。而ESP32主控的供电电压为3.3V,其ADC为12位,读取数值区间是0-4095。所以使用ESP32主控时,传感器的读数变大了。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed