微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 想做一个20v的电压表,但是串联电阻后,第一测量的值不对,第二,还是固定值

想做一个20v的电压表,但是串联电阻后,第一测量的值不对,第二,还是固定值

时间:10-02 整理:3721RD 点击:
我现在会用单片机采集5v以内的电压,我想通过串联电阻利用电阻分压来达到做一个20v电压的目的,但是,串联电阻之后,并不是想象中的结果,请问,我是不是忽略哪个小细节了?

最好上一下电路图

测量20V的电压如果采用上分压电阻15K下分压电阻5K,就用你原来单片机采集5V以内电压的方法,获取的结果左移2位就可以了。

这个是图


你的意思不用乘以4?

怎么左移呢

看看分压电路的地有没有和单片机连接,单片机做AD功能的部分有没有设置正确。
对于移位操作,左右移位分别是移一位是乘以或除以2,移两位则是乘以或除以4,移三位则是乘以或除以8,这是做5伏内电压值到20伏内电压值的转换。
这种移位计算对于汇编编程会显得比较方便,但是对于C语言编程的话,也就是一行语句的事。
电路中有一个电阻没写数值,从分压来算,就认为是1k的电阻,分压电路是3k和1k两个电阻分压,应该没问题。主要看看单片机做AD功能的部分有没有设置正确。

左移2位和乘以4是一回事,C语言:x=x<<2;  等同于  x=x*4;

五v时左移两位,20v还要左移吗?

五v时左移两位,20v还要左移吗?

你是用分压电路来测量20伏内的电压的,用的是3k和1k的电阻分压,电压是从1k电阻上取得的,所以取得的电压是20伏内电压的四分之一,这是电阻分压的原理和计算方法决定的。所以,AD转换所得到的电压需要乘以4,这样就是20伏内的电压值。
比如现在的电压是16伏,分压后在1k电阻上是4伏,扣除误差等因素,AD转换后就是4伏,那么就需要乘以4,就得到实际的电压值16伏

以一个最简单的8位AD转换测量范围0~5V电压为例:
ADC_RES=(IN/VCC)*256,  ADC_RES为转换结果寄存器,IN为被测电压,VCC为电源做参考电压。
ADC_RES=(2.5/5)*256,ADC_RES=128;或ADC_RES=0x80;用2进制表示1000 0000
这个结果是代表2.5V电压的数,如果直接用相同方法测量0~20V电压ADC_RES就会溢出,
所以才用电阻分压的方式来解决,如果按上电阻3K下电阻1K配置,还是测量2.5V,
那么ADC_RES得到的结果是32或0x20,用2进制表示0010 0000,这时左移2位才能得到正确结果:1000 0000
啰啰嗦嗦说了这么多,如还不能领会请自行补课。

谢谢分享 赞一个

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top