打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于ESP32测模拟电压的错误的改正

1

如图1,很简单的一个分压电路,给两个等值电阻两端加5V电压,然后从中间即Pot位置测量分出来的电压。应该测量出来2.5V才对,但是用万用表实测,显示出来却是3.37V

问题出在哪里呢?

开始的时候以为是ESP32ADC引脚非线性造成的,但是想想不可能有这么巨大的差别。于是利用一点点零碎的时间,重新测量了一下。琢磨来琢磨去的,每当操作,都用万用表同时也进行测量,后来发现,问题出现在我对ESP32开发板的ADC理解上了。

ESP32自带ADC引脚,即直接测量模拟电压。由于ADC12位的,因此4095就对应着可测量的最大电压。

2

问题是,这个4095对应着什么呢?对应3.3V

我先前一直错误地认为,4095是开发板上能输出的最大电压,即5V,所以一直在错误地使用它。于是,在ESP32Phyphox互连时,使用了

float fV = iV * 5.0 /1024.0 / 4.0;

事实上,ESP32虽然有输出5V的本领,但是它可测量的最大电压,就是3.3V。亦即,要把ESP32测电压的代码改写成

float fV = iV * 3.3 /1024.0 / 4.0;

才是正确的。

我手上有34ESP32正规或不正规的开发板,有约60元一块的,也有约10一块的,我专门测量了一下ESP32的引脚输出:

第一种:5VVIN引脚,实际输出4.48V,并非5V;而3V3引脚,输出较准确的3.3V

第二种:5V引脚,无VIN引脚,实际输出4.50V;而3V3引脚,输出较准确的3.3V

另两种:5V引脚,无VIN引脚,实际输出4.50V;而3V3引脚,输出4.50V

如果在5V输出的情况下,在图1两电阻两端加5V电压,测得电压不为2.5V,用万用表测VINGND5VGND之间电压,从电脑USB口供电,测得电压约4.50V,并不等于5.0V;同时测量Pot点输出电压,大约2.22V,说明float fV = iV * 3.3 / 1024.0 /4.0;的计算方法正确。使Pot点输出电压高于3.3VESP32测得的电压总为3.3V。说明什么?说明一旦ESP32测量得4095以上的输入,全部作为4095来对待。也就是,3.3V它会测得3.3V;而当引脚输入电压超过3.3V时,没有其它运算,全部认为是3.3V,此时ESP32虽然没有烧坏!

总结经验:

(1)编写实际显示电压代码时,最好还是用万用表打一下,校准一下显示数据与真实数据;

(2)各种复制版ESP32的标注数据最好还是实测一下好,不能完全按照标注进行;

(3)ESP32引脚输出电压是可以超过3.3V的,但是测量时只能显示到3.3V,超过3.3V的全被视为3.3V了;似乎超过3.3V的输入电压,在短时间内不会烧芯片,但是没试过长时间能不能烧,估计会烧了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
可控硅检测方法
简要介绍电源效率测试
再谈数字万用表的调校
9位100 MSPS流水线结构A/D转换器的设计
adc0804[模拟数字转换器]
ESP32开源示波器.综述
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服