由于单片机ADC口有输入阻抗的要求,在精度较高的场合下最好加一级跟随器,使前后隔离。 |
ADC对输入阻抗有要求的,电阻不合适,会导致采集到的电压值与实际值有误差。。。 |
电阻分压后,加一个rail to rail 运放射谁放大器。 |
有没有超过那个单片机采集口的上限电压啊 |
dzbj 发表于 2020-11-11 18:40 关键不是这个,这个其实大家都懂的,采样端口有输入阻抗,大家都懂,关键是为什么不同的阻值会有不同的误差 |
liujianzhi_1992 发表于 2020-11-11 15:44 好久之前我发的了 感谢兄弟回复 你说的这个解释我认为最接近 也合理 |
这个跟ADC的采样精度有关系,不过还可以通过多次采样取平均值来降低误差 |
电阻分压之后进8位的AD,AD里面有输入阻抗的,比如100K,实际AD输入阻抗与电阻分压的下端电阻进行并联,输入电压越大,测量误差越大!!!!!!!!!!!!!!! |
与你的电阻功率有关,功率小了,电压高,发热就越大,阻值会随着温度变化而变化。那就不会线性变化,而是非线性变化 |
学习一下 |
zl2168 发表于 2017-4-7 09:42 感谢前辈回帖 我试试更大的然后来汇报 |
在上楼提醒下,我看了一下楼主贴出的分压电路,上楼说得很有道理,该分压电阻取值太小,造成电阻中电流过大,电阻发热,阻值随之变化。建议将R103改为R104~R204. |
使用精密电阻 |
有可能是电流增大之后电阻随着温度增加改变了,所以15V之后电流超过了电阻恒定值区间,所以往后电阻成指数级改变 |
zl2168 发表于 2017-4-6 18:07 感谢前辈回复 我再试试然后来报告 下次附上目前的电路图 实在太小白了 不太会画还 |
本帖最后由 zl2168 于 2017-4-6 18:08 编辑 实例86 ADC0832串行A-D(虚拟CLK) 先Proteus仿真一下,确认有效。 ![]() ![]() 以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版.。书中电路和程序设计有详细说明,程序语句条条有注解 |
本帖最后由 zl2168 于 2017-4-6 18:06 编辑 实例85 ADC0832串行A-D(TXD输出CLK) 先Proteus仿真一下,确认有效。 ![]() ![]() 以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版.。书中电路和程序设计有详细说明,程序语句条条有注解 |
过来学习一下 |
本帖最后由 zl2168 于 2017-4-6 18:01 编辑 我给你提供一个案例,供你参考辨析。AD信号源都是电阻分压 并行ADC0809及其接口电路 实例81 ADC0808中断方式A-D(ALE输出CLK) 实例82 ADC0808查询方式A-D(ALE输出CLK) 实例83 ADC0808延时方式A-D(ALE输出CLK) 实例84 ADC0808并行A-D(虚拟CLK) 先Proteus仿真一下,确认有效。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。 |
电源波动是会产生AD误差的,鉴别方法是在同一电源电压下多次重复AD,若误差不大,说明不是电源电压;若误差较大,则证明电源电压波动较大,应检查电源问题,或三端稳压,或其他稳压电源。但我提醒你,稳压电源输出端的滤波电容用0.1uf是大大不够的应用100uf +0.1uf。 |
zl2168 发表于 2017-4-5 23:28 感谢前辈再次提醒 是因为我小白 绞尽脑汁想不出原因了 所以来求助 按说电路挺简单啊 就是分个压然后AD采集一下 而且8~13v的AD都还可以 晕 晕 晕 滤波电容用的0.1uf 前辈觉得滤波电容会对电压有影响吗 我用可调三端稳压做输出时遇到过类似问题 可调三端稳压不也是个分压的道理么 加个小电容在分压上输出就不对 前辈觉得呢 |
你表格中出现的误差,与分压电阻精度无关,因为是在同一分压电阻下产生的误差。另外该误差ad精度也关系不大,8位AD分辨率为1/255,即0.00392,你的误差大大超出。此前我已提醒你另有原因。 |
dzbj 发表于 2017-4-5 21:44 这个我也不是很清楚哈 |
dzbj 发表于 2017-4-5 21:35 ![]() |
imxuheng 发表于 2017-4-5 14:26 感谢前辈 请教前辈 同样0603封装的电阻 1%精度和0.1%精度的耐压会不一样吗 我百度查的pdf资料说0603耐压是50v 功率是1/16w |
0755雅俗共赏 发表于 2017-4-5 10:05 感谢前辈回复 关于AD 采集 首先要做好两个问题。 第一个就是基准电压。 你的基准电压怎么样,准不准 稳定不。 要求不高 可用电源的5V 。 。。我用的是经过稳压后的系统供电 我只有万用表 没有更好的设备 两个万用表测都是5v电压 700mA输出能力 模块用了30mA 我觉得这点消耗应该不会引起压降 第二, 你分压部分 的电路稳定不, 建议你在输出做成稳压源。 。。这个我比较小白 整个电路就是从电源输入端分压后用一个0.1uf电容滤波然后到单片机的AD口 AD口设置成高阻模式 从测试数据看 14v以前比较准确 主要是14~15v误差突然增加 有点莫名其妙了 我不怀疑单片机AD口的能力 因为同一个片子的其它AD通道也在采集电压 没有出现无法理解的误差 最后一个关系不是特别的就是 温飘和热量。 你要求精度不高 可以不考虑。 建议用水泥电阻 或者 一些低温漂的电阻来做分压 。。感谢前辈建议 我那板子很小 实在放不下 现在用的0604封装 想用0402可我只是业余爱好不是干这个的 没有设备可以焊接 我个人手工的极限也就到0603了 |
感谢前辈回复 按你给的公式做excel计算了 在14v和15v之前和采样的测试值很接近 |
g753388438 发表于 2017-4-5 08:51 感谢前辈 1、 5/255*DEC 公式中 应该除以255 , 8位ad测的电压最大数字量是0xff,0xff 的十进制数是255 。。收到 用255计算了 0.0196 比原来大0.0001 我重新计算了 整体数值没什么改变 2、计算过程中注意一下浮点型和整型的运算 可以试一下 5/21 和 5.0/21 和1.0*5/21 这几个是的运算结果 。。我求倍率的目的是为了尽量不进行浮点运算 用DEC×倍率得整数 反推的公式是 (DEC×倍率-10)×2 比如10:3.32K时12v对应的DEC是153 反推后结果是1204 然后用这个取余和求模得到每一个位去显示 -10是为了弥补把0.0196变成0.02(×2)的误差 无论用-10还是用196计算 12v时误差都可以接受 我不明白的是到15v为什么误差那么大 我小白 见笑 3、采样电阻最好用高精低温漂的 。。谢谢提醒 这个我注意了一下 环境温度24℃ 持续 没有其它温度影响 4、分压电阻选择的尽可能大一点,不然当你的输入电压大的时候,采样电阻可能会发烫,导致阻值发生变化,这样就测的不准了 。。谢谢提醒 我用的0603封装0.1%电阻 极限电压是20v 用单片机自带的AD 端口设置为高阻 我计算看 20v/13320Ω是0.0015A 是这么算电流么 如果是 我觉得这个电流不会影响吧 查了一下0603的电阻 耐压是50v 1/16W 那么0603电阻理论上可以忍受0.0625A电流 两个差距很大 应该不会引起电阻升温 5、关于第4,你可以找两个500Ω(只要小阻值就行)的电阻分压测试,仿真的话测得电压应该没问题,但是实际测试的时候电阻会发烫的,阻值会变化,分压也会不准确 。。我把对这点的回复合并在“4”里回复了 麻烦前辈再给分析分析 |
dzbj 发表于 2017-4-5 01:14 说不定是你的精密电阻耐压能力不够强,你用高倍率的采集方式试试,让精密电阻分得的电压更小, |
有点误差是正常的,但你的误差太大,不正常,必定另有原因。 |
dzbj 发表于 2017-4-4 20:39 1、 5/255*DEC 公式中 应该除以255 , 8位ad测的电压最大数字量是0xff,0xff 的十进制数是255 2、计算过程中注意一下浮点型和整型的运算 可以试一下 5/21 和 5.0/21 和1.0*5/21 这几个是的运算结果 3、采样电阻最好用高精低温漂的 4、分压电阻选择的尽可能大一点,不然当你的输入电压大的时候,采样电阻可能会发烫,导致阻值发生变化,这样就测的不准了 5、关于第4,你可以找两个500Ω(只要小阻值就行)的电阻分压测试,仿真的话测得电压应该没问题,但是实际测试的时候电阻会发烫的,阻值会变化,分压也会不准确 |
反推是怎么做的 |
g753388438 发表于 2017-4-4 19:10 谢谢回复 为什么到15v时误差突然变的很大 从8~13还在可接受范围 到14就有点不对劲了 每种搭配都是到15很大 |