新手,请教单片机ADC采样电池电压 10
如图,ADC送单片机AD口,电池电压范围是3V----4.2V,那么单片机采集到数值是多少呢?是不是就是1.5V--2.1V?在程序中应该怎么利用?单片机电压是5V,单片...
如图,ADC送单片机AD口,电池电压范围是3V----4.2V,那么单片机采集到数值是多少呢?是不是就是1.5V--2.1V?在程序中应该怎么利用?单片机电压是5V,单片机ADC是10位的。比如我写了个AD子函数,这个AD子函数里return一个value数值,然后另一个子函数调用这个value值,判断value这个数值大小,这个数值送2位数码管显示,那么这个数值应该怎么处理?有人教我这样,AD_return=value*99/1024,是这样子吗?还是这样AD_return=value*5/1024?
展开
9个回答
艾普斯
2024-07-18 广告
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产...
点击进入详情页
本回答由艾普斯提供
展开全部
问题比较含混不清,以下仅就单片机ADC转换方面的入门问题闲说几句,帮到你更好帮不到你就没办法了。
对应单片机ADC端口输入的模拟电压,在单片机采样后就变成了数字量,对于10位ADC而言,模拟电压应对的数字量数据是date=1024*(Vin/Vcc),这个算法对应的是以单片机的电源电压Vcc为基准参照电压的计算,例如:对应1.5V采样值,其数据计算后为date=0x0133或十进制的307;如果需要输出真实的十进制电压数据,就要变换一下计算公式,此时:Vin=((date*Vcc)/1024)*2(降压倍数);对应1.5V的采样值,程序采样后的数据date=307,带入变换后的公式计算的结果即为实际电压值3V,编程时各个转换数据用的变量应该设置为16位以上的变量或浮点变量,并且采用浮点运算,可以得到比较精确的数据。
对应单片机ADC端口输入的模拟电压,在单片机采样后就变成了数字量,对于10位ADC而言,模拟电压应对的数字量数据是date=1024*(Vin/Vcc),这个算法对应的是以单片机的电源电压Vcc为基准参照电压的计算,例如:对应1.5V采样值,其数据计算后为date=0x0133或十进制的307;如果需要输出真实的十进制电压数据,就要变换一下计算公式,此时:Vin=((date*Vcc)/1024)*2(降压倍数);对应1.5V的采样值,程序采样后的数据date=307,带入变换后的公式计算的结果即为实际电压值3V,编程时各个转换数据用的变量应该设置为16位以上的变量或浮点变量,并且采用浮点运算,可以得到比较精确的数据。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你前面的回答都是对的。
返回值是一个数字量,需要转变成十进制
所以应该是AD_return=value*5/1024
5是你的参考电压。
返回值是一个数字量,需要转变成十进制
所以应该是AD_return=value*5/1024
5是你的参考电压。
更多追问追答
追问
谢谢,还有我要判断AD_return的大小,如图的电阻分压,ADC的电压范围是1.5V--2.1V。那么AD_return范围是多少?
追答
AD_return=value*5/1024之后就是你的输入信号的电压范围了
还有什么其他范围吗、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STC单片机的AD引脚,可以输入的模拟电压最大可以是5V的,转换后的结果是10位的。你可以直接把电源的电压加到AD引脚上的进行采样的,为什么要用电阻分压呢?这种,加了电阻,会降低电池的实际电压的。
另外,既然用电阻分压了,那两种计算都 不对的。而只有直接测量时
AD_return=value*5/1023,这才是对的。
另外,既然用电阻分压了,那两种计算都 不对的。而只有直接测量时
AD_return=value*5/1023,这才是对的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
R38 与 R39 串联分压, ADC读取的是R39两端的电压,也即是1/2电池的电压。所以单片机在计算的时候需要把采样的电压乘以2,才是实际的电压值。之所以分压,是因为单片机采样的最大电压有限制,不会超过供电电压。所有才需要分压。这里是不考虑电阻的公差情况下的值,如果考虑公差还需要进行校准。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询