[KungFu8位 MCU]ADC采集电路中的串联分压


可以看到上面这是一个经典的ADC采集电路,细心的朋友一眼就可以看出,这个电路是错的,,,,,,
如果按照上面焊接板子,会造成什么后果呢,你猜猜看!!!
假如这个电压不是很高,只有5v的话,而刚好芯片可以接受5V,接上去也没问题,不会烧芯片,放心,
那么就有同学会问了,你咋知道的,(估计只有我会问了,,,)
其实很简单,上面用到的原理就是普通而且简单的串联分压电路,这个电路看上去普普通通,却是ADC采集的重要环节,
让我们看看是怎么算的,
ADC值=???
实际电压值V=???
单片机ADC几位????基准电压=???
好了好了,按照上图来说,
假如实际电压值V=  15V
单片机ADC12位 基准电压=5V

ADC值=???
ADC值 = 15*(R1/(R1+R2))=15*0.5=???不好意思,现在芯片炸了,哦豁我换一组数据
假如实际电压值V=  5V
单片机ADC12位 基准电压=5V

ADC值=???

ADC值 = (5*(R1/(R1+R2)) )* 2的12次方  /参考电压(参考电压一般为5v或3.3V,此处为5V)= 2.5 * 4096 / 5 = 2048;
刚好是一半呢,我们在上面的一张错误的图,计算了一个正确的值,说明现在这个电路还是可以过5v的,,,
假如我们要检测24V呢?这个电路通过上面的计算公式可以很快算出,最大电压只能10V了,再多就检测不到了,甚至芯片会炸,或者一定会烧

所以我们需要把R1改成100k试试,先来个10倍看看,通过上面的计算公式来看,直接将参数代入上式得,最大电压为。。。。。。55V,好像是的,最高可以到55V,符合咱们的24V了,怎么计算?自己算算???我给你答案看看吧。。。



这里的adc一般用作ADC比较嘛,假如你测到开关关闭的时候,adc值为50,然后你就这样写了,
if(adc<50)
{
    /*code*/
}
else
{
/*code*/
}
这里就得注意了,很关键,ADC值是会漂的,它要是一会50,一会51,一会49,那你怎么判断呢???

我是这样解决的,你有没有好办法分享一下吧~

我就是添加了一个反应区间,大概2V左右吧

if(adc<50)
{
开关关闭
}
else if(adc>100)
{
开关打开
}
else
{
什么都不做,等你开关关闭adc下降,或者开关打开adc上升
---------------------
作者:uuguoleilei
链接:https://bbs.21ic.com/icview-3239158-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值