0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用ADC精确测量电阻阻值

硬件攻城狮 来源:硬件攻城狮 2023-07-29 15:10 次阅读

现在很多单片机都有ADC功能了,10位或者12位的,使用ADC测量电压是很方便的,测量电阻阻值的话可以使用欧姆定律进行分压然后测量分压后的电压即可计算出电阻阻值,最简单的电阻测量电路如下图:

d6c09894-2dc3-11ee-815d-dac502259ad0.png

这时候测量点的电压计算公式为:Vo=R2 / (R1 + R2) * Uref。

这是最简单的测量计算方法。但是因为简单也会导致不少小问题,比如如果R1取值为2K,Uref为5V,而R2的阻值范围在5到10欧姆左右,那么R2分得的电压Vo=0.01247到0.02488,电压变化的范围过小,如果ADC是12位的,ADC的参考电压为3.3V,这时候ADC的采集值的范围在15到30,也就是AD值的变化范围有30-15=15个,而电阻的变化范围为10-5=5欧姆,也就是5欧姆的变化范围用15个AD值的变化来计算,那么AD测量的精度就是:5欧姆 / 15个 = 0.33欧姆,也就是AD值加1,计算得到的电阻值就要加0.33欧姆,这精度着实让人接受不了。

再比如R1和Uref的值不变,而R2的阻值范围在1K到2K之间,同样的计算方法得到R2的分压值Vo=1.1到1.65伏,AD值的范围为1365到2048,AD的测量精度为:1K/(2048-1365)=1.46。奇怪的是为什么AD值的范围这么大了,精度反而更很差劲呢?因为电阻的取值范围很宽,导致精度降低了。

怎么办?我想要测量一个比较精密的电阻的阻值R2,该怎么办?下面的方法是网上的电桥测量电阻的方法,我为了测量方便有所修改。电阻网络电路如下图:

d6ee4b0e-2dc3-11ee-815d-dac502259ad0.png

d6ee4b0e-2dc3-11ee-815d-dac502259ad0.png

R2的电阻阻值大约在100到200欧姆,我们取一个参考电阻R3为100欧,R1和R3阻值相同为2K。这样得到了U1和U2两个分压值,U2为固定电压U2=100 / (100+2000) * Uref。U1的值根据R2的变化而改变:U1=R2 / (R2+2000) * ref。得到了U1和U2之后可以计算压差:

△U=U1-U2,将这两个电压输入到运算放大器中去进行合理放大,使得得到的输出电压范围在ADC参考电压范围内尽可能的宽,这样使用ADC就能更加精确地测量到电压值。使用运放进行放大的电路如下图:

d726439c-2dc3-11ee-815d-dac502259ad0.png

在R5=R6,R7=R8的情况下,运放的放大倍数m=R7 / R5。电路中的放大倍数为m=20。经运放放大后得到了Uo送到单片机系统的ADC中去进行AD采样。那么我们可以计算一下ADC测量得到的AD值和电阻R2之间的关系。

现在假定ADC系统的参考电压为Uadc,ADC采样位数为12位,ADC的测量值为A,那么Uo的计算公式如下:

Uo = A / 4096 * Uadc

而Uo也是运放的输出电压,根据电桥网络和运放进行计算可以得到:

Uo = (U1-U2) * m = ( (R2/(R1+R2) - R4/(R3+R4) ) * Uref * m

也就是说:

( (R2/(R1+R2) - R4/(R3+R4) ) * Uref * m = A / 4096 * Uadc ----------------------------①

上式中R1、R3、R4、m、Uref、Uadc都是已知的,那么根据ADC测量得到的值A’就可以轻松计算出来电阻R2的阻值。

上面说的是理论上的计算方式,的确是这样的,但是往往现实都比较残酷,由于电阻都有误差而且运放也不是绝对精密,那么已知的R1、R3、R4、m、Uref、Uadc几个参数都是和真实值有微小差别的,例如电阻R1的标称电阻为2K,误差为1%,万用表测量得到的阻值为1980欧姆,显然误差是有的,直接带入式子进行计算是不可行的。那怎么办呢?

解决办法总是有的。前面公式①中是根据ADC的测量值和几个已知参数来求电阻R2的阻值,那么我们就反过来,使用若干组已知的固定阻值的R2电阻接入电阻网络并测量出AD值A,来计算R1、R3、R4、m、Uref、Uadc几个参数,但是这几个参数有点多,6个未知参数需要6组式子才能解出来,非常的费劲,那么我们就简化一下计算方式。

我们将R4设为0欧姆,也就是U2接到GND,U2=0,这样式子①就能简化成:

R2/(R1+R2) * Uref * m = A / 4096 * Uadc ----------------------------②

这不简单多了!好,现在我们要求出式子中的R1的阻值和放大倍数m,两个未知数我们就需要两组已知的点(R2,A)来求出参数R1和m。这样取第一个点的测试电阻为R21,AD值为A1,第二个点的测试电阻为R22,AD值为A2,带入到式子②中去得到:

R21/(R1+R21) * Uref * m = A1 / 4096 * Uadc

R22/(R1+R22) * Uref * m = A2 / 4096 * Uadc

上面的式子除以下面的式子可以得到:

(R21/(R1+R21)) / (R22/(R1+R22)) = A1 / A2

进过整理之后得到:

R1=(R21 * R22) * (A2 - A1) / (R22A1 - R21 * A2)

这就求出来了R1的阻值了。

然后我们再求m的值,根据式子②可以得到m的计算公式为:

m = (A / 4096 * Uadc) / (R2/(R1+R2) * Uref)

我们将电阻网络的电源和ADC系统的参考电源连接到一起,也就是说Uref=Uadc,我们要保证电源的稳定性,可以使用TL431或者REF3030等高精度稳压芯片生产稳定电压源为电阻网络和ADC系统供电。由于Uref=Uadc,这样的话上面的式子得到了简化:

m = (A / 4096) / (R2/(R1+R2))

整理得到:

m = A(R1+R2) / (4096 * R2) ----------------------------③

式子③中R1在前面已经算出来了,那么m也求出来了。

到这里我们已经求出来了R1和m的值,后面就能根据这两个参数和测量出来的AD值求出来待测电阻R2的值了。由于Uref=Uadc,式子②变成:

R2/(R1+R2) * m = A / 4096

整理得到:

R2 = A * R1 / (4096*m - A) ----------------------------④

式子④已经简单到只需要A、R1、m就能计算出来R2的阻值了,并且使用的R1和m都是我们自己计算出来的值,而不是直接使用理论计算出来的值,精度提高了不少。同时我们可以发现由于Uref=Uadc,上面的式子②两端约分了,所有计算竟然和Uref、Uadc没有关系了,也就是说不管Uref、Uadc怎么变动,只要Uref和Uadc一直是相等的,所有参数和阻值的计算都不涉及到Uref和Uadc。但是我们最好要保证Uadc的稳定,不然测量出来的AD值会不准确的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电阻
    +关注

    关注

    85

    文章

    5037

    浏览量

    169637
  • adc
    adc
    +关注

    关注

    95

    文章

    5651

    浏览量

    539462
  • 测量
    +关注

    关注

    10

    文章

    4215

    浏览量

    109734

原文标题:使用ADC精确测量电阻阻值

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    阻值电阻辅助测量电路

    实际工作中受精度限制,往往无法精确测量出这些电阻的具体阻值,也无法判断出它们的一致性如何,常常为此感到困难。为此,试制辅助电路。
    发表于 11-15 10:51 7972次阅读
    小<b class='flag-5'>阻值</b><b class='flag-5'>电阻</b>辅助<b class='flag-5'>测量</b>电路

    使用ADC精准测量电阻阻值

      本篇文章介绍通过在提供的电路中接入一个待测电阻,通过ADC测量值A,求出其输出电压,再求出一系列参数,得出最终待测电阻的公式,达到精准测量
    发表于 03-10 11:33 4076次阅读
    使用<b class='flag-5'>ADC</b>精准<b class='flag-5'>测量</b><b class='flag-5'>电阻</b><b class='flag-5'>阻值</b>

    使用ADC精确测量电阻阻值

    现在很多单片机都有ADC功能了,10位或者12位的,使用ADC测量电压是很方便的,测量电阻阻值
    的头像 发表于 08-22 22:46 1848次阅读
    使用<b class='flag-5'>ADC</b><b class='flag-5'>精确</b><b class='flag-5'>测量</b><b class='flag-5'>电阻</b><b class='flag-5'>阻值</b>

    光敏电阻阻值转换为ADC

    基于STM8S单片机如何实现将光敏电阻阻值转换为ADC,通过光敏电阻的被遮挡实现灯闪烁,各位大神求程序
    发表于 12-27 08:43

    用数字万用表精确测量电阻

    如何用现有的数字万用表精确测量阻值很小的电阻是工程技术人员经常遇到的问题。万用表电阻Rx,电压测量
    发表于 12-11 09:21

    如何精确测量电阻值-电阻电桥

    利用电桥电路精确测量电阻及其它模拟量的历史已经很久远。本文讲述电桥电路的基础并演示如何在实际环境中利用电桥电路进行精确测量,文章详细介绍了电
    发表于 02-26 09:59

    如何去测量采样电阻阻值

    什么是采样电阻?什么是开尔文接法?如何去测量采样电阻阻值
    发表于 10-08 06:03

    压敏电阻阻值吗?如何测量其好坏?

    压敏电阻阻值吗?如何测量其好坏?用普通电阻可以替代吗?
    发表于 05-08 14:38

    用数字万用表精确测量电阻

    如何用现有的数字万用表精确测量阻值很小的电阻是工程技术人员经常遇到的问题。万用表电阻Rx,电压测量
    发表于 11-24 07:37

    一种热电阻阻值测量的新方法

    一种热电阻阻值测量的新方法     摘  要:在利用热电阻测量温度中,热
    发表于 05-26 16:34 2786次阅读
    一种热<b class='flag-5'>电阻</b><b class='flag-5'>阻值</b><b class='flag-5'>测量</b>的新方法

    电阻阻值的简易测量

    电阻阻值的简易测量 一般的电阻器的阻值可用万用表进行测量
    发表于 06-15 19:40 1356次阅读

    如何用万用表的电阻档来测量电阻值

    万用表上面有很多的功能,那今天就来说说如何用万用表的电阻档来测量电阻值吧!
    的头像 发表于 10-07 10:51 2.6w次阅读

    如何测量钢管的电阻值

    测量一根500米长的钢管的电阻值,最简单的方法就是用数字万用表的电阻档去测量阻值测量时,将
    的头像 发表于 10-30 17:48 4819次阅读
    如何<b class='flag-5'>测量</b>钢管的<b class='flag-5'>电阻值</b>

    终端电阻怎么测量?终端电阻怎么接线?为什么终端电阻阻值是120欧姆?

    终端电阻怎么测量?终端电阻怎么接线?为什么终端电阻阻值是120欧姆? 终端电阻是指
    的头像 发表于 11-23 09:53 4399次阅读

    电源模块电阻阻值如何测量?万用表有哪些测试方法?

    综上所述,万用表测量电阻可以分为三种:两线法、四线法、六线法。两线法适用于测量较大的电阻值,但容易受引线电阻和接触
    的头像 发表于 01-02 15:41 473次阅读