找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5669|回复: 17
打印 上一主题 下一主题
收起左侧

STC8/15系列单片机ADC阻抗匹配问题

  [复制链接]
跳转到指定楼层
楼主
ID:612392 发表于 2021-2-16 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
大家新年好,请教各位一个问题。
我最近用STC15W408AS单片机,检测10-15V电压,利用电阻串联分压方式进行,采用4个68K电阻串联,ADC IO采最后一个电阻分压,理论上ADC采得电压应该是在2.5-3.75V 之间。
实际我在测试过程中发现,当被检电压在14V以上(检测值在3.55V以上)时,ADC检测到的电压非常接近万用测的真实值(误差小于1个字),当电压低于14V时,ADC检测到的电压会有明显偏离,电压越低时偏离越明显,电压<12.8V的时候,万用表检测电压已经是3.2V,但ADC检测到的电压还有3.45V。

已经排除68K电阻本身差异,方法是,我不接单片机IO,直接用万用表测量,10-15V范围内,最后一个电阻分压基本是总压的1/4,而且线性度非常好。

自己思考了一下,应该是ADC功能需将IO配置为高阻模式,与分压电阻并联后,影响了分压电阻的整体电阻?那么我应该选多少的阻值是合适的呢,同时要兼顾功耗,太小的阻值功耗太大。或者说STC系列的ADC内部阻抗是多少,外部输入阻抗怎么匹配?

采用电压跟随器的方案就不用说了,就谈电阻分压的方案。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2021-2-17 07:11 | 只看该作者
楼主遇到的这个问题与ADC端口的内部输入阻抗基本无关。ADC端口配置为高阻模式其输入阻抗不小于5M,其影响微乎其微。排除外界因素导致,最有可能是特殊功能寄存器设置不当或AD结果算法不当。当然VCC不稳也是重要因素。
以0通道ADC为例相关寄存器设置
P1M1 = 0x01;//设置P1.0高阻:0000 0001 ADC输入高阻
P1M0 = 0x00;//设置P1.0高阻:0000 0000 ADC输入高阻
P1ASF= 0x01;//设置P1的0通道端口作为模拟输入

十位ADC结果换算成10进制(4舍5入)
毫伏=(参考电压*十位ADC结果*10000/1024+5)/10
强制转换数据类型(32位)运算,得到(4舍5入)mV
ADC_V=(VCC_V*(long)ADC_RESX*10000/1024+5)/10;
因1/4分压,需放大4倍等于实际电压
ADC_V=(VCC_V*(long)ADC_RESX*10000/1024+5)/10*4;
回复

使用道具 举报

板凳
ID:213173 发表于 2021-2-17 10:25 | 只看该作者
还有一种算法:取4次ADC之和再按12位ADC4096计算,既相当于平均值滤波,也相当于12位ADC,结果直接代表实际电压,不必再*4。
回复

使用道具 举报

地板
ID:612392 发表于 2021-2-17 14:30 | 只看该作者
wulin 发表于 2021-2-17 07:11
楼主遇到的这个问题与ADC端口的内部输入阻抗基本无关。ADC端口配置为高阻模式其输入阻抗不小于5M,其影响微 ...

我压根就没在MCU里去做这个计算,我直接把ADC采到的数据用串口传出来,自己用公式算的。电压高的时候是对的,精度很好,低的时候就不对,越低偏离越大。
如果高阻状态是5M以上,那么确实跟外部输入阻抗不相关,我再看看是怎么回事。
回复

使用道具 举报

5#
ID:491577 发表于 2021-2-18 12:48 | 只看该作者
ADC对电源要求很高,你直接USB取电精度肯定是低呀。另外你的分压电阻4个68k太大,你换成5k试试效果应该好一点,至于功耗大就看你的取舍了,想要精度高用STC8单片机,ADC电源是独立的,12位,精度比STC15要高很多。
回复

使用道具 举报

6#
ID:298011 发表于 2022-11-25 09:15 | 只看该作者
学习下,我也是发现采样来的电压与实际偏差有点大,没打到原因
回复

使用道具 举报

7#
ID:619173 发表于 2023-2-7 00:18 | 只看该作者
macadam 发表于 2022-11-25 09:15
学习下,我也是发现采样来的电压与实际偏差有点大,没打到原因

我也遇到类似问题:单片机(STC8)AD 12位采样时,小于2.5v时,采样还算精准,当电压大于2.5后,AD误差比较大,大于30mv(在一段电压范围内,采样值大,在另一段范围内,采样值小),所以想问问,什么原因呀
回复

使用道具 举报

8#
ID:65956 发表于 2023-2-7 08:43 | 只看该作者
我建议你用900K+100K方式分压,这样大小电压都合适,这样配置可测到50V,我所有项目都是这样配置电阻的,大小电压都能测到,基准源也是用这个芯片的内部基准源计算的,很稳定的,如果可以也可以采用中值滤波法去计算会更稳定的
回复

使用道具 举报

9#
ID:1034262 发表于 2023-2-7 10:13 | 只看该作者
STC15W408AS的ADC整个量程范围精度大约0.5%,就是最大误差大约5个字,并且出现在中间以上部分。
楼主的测量范围是20V则在10V以上最大误差约0.1V,但是楼主数3.2V时还有0.25V的误差,我觉得要查一下应用电路。ADC输入口要对地接一个10nF~100nF电容。
回复

使用道具 举报

10#
ID:879348 发表于 2023-2-7 10:38 | 只看该作者
批量一般可以做到3%精度,大于这个就要检查硬件或软件,软件采样太快,频繁切换也可能有这个问题
回复

使用道具 举报

11#
ID:150722 发表于 2023-7-23 23:35 来自手机 | 只看该作者
STCAD迹513.6KС齵迹
回复

使用道具 举报

12#
ID:1085441 发表于 2023-7-24 01:47 | 只看该作者
https://blog.csdn.net/shawn_shao/article/details/108508131
推荐你看这篇文章,我想单片机的ADC的原理都是一样的,肯定要考虑ADC的输入阻抗问题,还是应该接一个跟随器,从根本上避免阻抗不匹配的影响。
回复

使用道具 举报

13#
ID:879348 发表于 2023-7-24 09:51 | 只看该作者
应该不会这么离谱,当在ADC端口并电容,就可以忽略ADC输入阻抗了,你的电路是不是没有电容
回复

使用道具 举报

14#
ID:150722 发表于 2023-7-24 10:06 | 只看该作者
输入阻抗513.6K
回复

使用道具 举报

15#
ID:150722 发表于 2023-7-24 10:06 | 只看该作者
有时候可能还要更小
回复

使用道具 举报

16#
ID:1088185 发表于 2023-7-24 16:20 | 只看该作者
有转换通道?还是只采样同一通道, 采样频率是多少?
如果说, 只采样一个通道, 采样频率很低, 在ADC口并个104电容可以解决你的问题。
回复

使用道具 举报

17#
ID:1087948 发表于 2023-8-2 14:56 | 只看该作者
根据您的描述,问题可能是由于单片机的IO配置为高阻模式时,与分压电阻并联导致整体电阻变化。这可能会影响到ADC的测量准确性。

针对这个问题,您可以尝试以下方法来改进:

选择合适的分压电阻值:选择较大的分压电阻值可以减少功耗,但同时也会增加电阻本身的误差。您可以尝试使用更小的电阻值,例如10K或20K,以减少电阻的影响。

使用运放进行缓冲:在ADC输入引脚之前添加一个运放作为缓冲,以提供更高的输入阻抗和稳定的信号。这样可以避免分压电阻对整体电阻产生影响,并提高测量准确性。

考虑ADC的参考电压:确保ADC的参考电压稳定且准确,以保证测量的准确性。您可以使用外部参考电压源,如稳压器或者精密参考电压芯片,来提供稳定的参考电压。

此外,建议您参考STC15W408AS的数据手册,查找关于ADC输入阻抗和工作范围的具体信息。如果问题仍然存在,您可以咨询STC15W408AS的技术支持或者其他专业人士,以获取更具体的帮助和建议
回复

使用道具 举报

18#
ID:236035 发表于 2023-8-2 15:07 | 只看该作者
先排除问题,把阻值降下来,看精度。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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