找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18435|回复: 1
收起左侧

单片机ADC检测实际电压值方法

[复制链接]
ID:505284 发表于 2020-9-26 23:36 | 显示全部楼层 |阅读模式
ADC检测实际电压值方法
最近学习STM32单片机的基础部分,之前一直用的是STC系列的8位单片机,比如STC8A8K64S4A12,一款STC公司高性能单片机,可以满足跑个小型RTOSSmall RTOS)。于是学习之余,在B站看到一位大佬用STC8芯片加0.96oled屏幕制作一款简易的示波器,突然心中一动,正好手中缺一款对精度和功能都要求不高的检测装置(其实是囊中羞涩,好的示波器一款的上千,现实面前不得不低头啊),正好可以设计出来用于简单的为后续实验检测设计提供保障,果断买原件来制作。
在制作期间,研究了大佬的电压演算过程,发现很是奇怪,不知道其中奥妙,具体列举下:Vx = (uint32)BGV_ADR * ADCx * lsb / ADCbg / 100,其中BGV_ADR定值为65015lsb是浮动校准值,范围0-600ADCx为实际STC8单片机的AD采样值,基于12bit,所以范围是0-4095ADCbg是单片机第十六通道,也就是内部基准电压值(VREF非常重要)的采样值。就是这样一个奇葩的公式,Vx为采集到的当前电池电压。其中电池接入电压为3.7v左右,外部串联了2个电阻分压用。
                                                                                           7c16e0b652300007cb6fce42f1ad7374.png
1.1 简单分压电路图
下面我们就用初中学过的分压公式:Vc=VCC*(R4/(R4+R3)),大致计算一下值因该为0.617v,如果此时我们的输入电压利用3.3v(单片机电源输入电压),则计算值为0.55v左右。那么接下来,把它接到单片机的一路12bitADC采样端,基准电压值VREF2.5v,为此我们来采用通常的电池电压采样方式计算一下:Vc=VREF*(采样值/4096)[此处特别强调:ADC采样时数字量的大小取决于基准电压,而不是输入的VCC,这是个重大误区,此处经统计采样值为1600-1800之间,那么Vc取中点值1700计算为1.0375v,咦,咋和0.55v不等呢,说明此时有问题,这样的方式计算的结果是不对的。
                                     c6175c484d206d7e83dea5c28f12f22c.png
1.2  proteus仿真结果

那么,这个时候疑问就来了,为什么会出现这样的结果呢?难道说是公式不对吗?这样的计算方式不是在很多例子中最常用的吗?比如说之前的PCF8591STM32ADC检测电压值等等。我要说的是这样的计算公式使用范围是有限制的,重点突出的是ADC的采样功能,而对采集计算的到的电压值是存在误差的,当然有些简易电路也是适用的,不如说可调电位器,简单的2分压电路,所以到这里你就会发现,1.0375v/2=0.5187是接近0.55v的,但是也仅仅是接近而已,误差很明显的。为此我通过以上几种方式总结出一种比较精准的方法,那就是如果我们在接了外部电阻,且采样端电阻值已知的情况下,我们可以得到公式:Vc=VREF*(ADC采样值/(4096*R4)),也就是在原来的基础上加入了一个分压电阻值2K,为了使得到的电压值更加精准,在VREF的定值上在加入浮动校准值最好是按照每1000.02V增长规律即可(此处电压校准值仅限于上述电路,不同分压电路,请以实际计算值为准)。到这里我们比较精准的电压计算公式就有了。这里还是要特别提醒,ADC采样值在多次求取平均值时会有100-300的误差,比如开路时单次值为4095,而去多次平均值后变为了43xx(这个本人估计是在采样期间受到单片机供电电流、电压影响,对此采样在延时和程序语句执行中时间长短可能会影响),可见误差显现,这个是在STC8中发现的问题,在STM32上没有试过。

以上图文word格式: 关于ADC检测实际电压值.docx (31.47 KB, 下载次数: 109)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:65759 发表于 2020-9-27 10:06 | 显示全部楼层
先顶一个,好资料,51黑有你更精彩!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表