这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 电源与模拟 » 单片机如何通过ADC检测电压来监控电池电量

共3条 1/1 1 跳转至

单片机如何通过ADC检测电压来监控电池电量

高工
2020-06-20 14:48:57     打赏

单片机可通过ADC检测电压来监控电池电量

  我们一般通过检测电压来判断锂电池的电量。单节锂电池标称电压为3.7V,充满电压为4.2V。电压大于等于4.2V我们认为电量为100%,电池电压等于3.82V时认为电量为50%,电池电压小于等于3.0V时认为电量为0%。当然不同的锂电池是有差异的,需要根据锂电池的规格来定。

  要监测电池电量就离不开ADC,如果单片机本身有ADC就简单了,没有ADC的话可以外置一个ADC芯片。

  锂电池电压测量电路设计

  首先,需要设计一个用于测量锂电池电压的分压电路,为了省电,我们可以设计一个带开关的电路,在需要测量电压的时候再给分压电阻供电,如下图,当EN_CHK_V为低电平时,Q3截止,关断分压电阻的供电;需要测量电池电压时,EN_CHK_V设置为高电平,Q3导通,单片机的ADC通道(CHK_V)就可以检测电压了。

  大家可能问,为什么要分压呢?为什么不直接测量电池的电压?这与单片机的参考电压有关系,不分压的话,电池电压高于参考电压就没法测量了,大家继续往下看就明白了。

  ADC检测电压,需要有一个参考电压基准或者参照电压

  任何测量,都需要有一个参照或者参考,ADC测量电压也不例外。假如参考电压为2.5V,那么ADC测出满量程就是2.5V了。因为锂电池的电压在3.0V~4.2V间变化的,所以比较适合用LDO或者TL431设计一个2.5V的参考电压。锂电池的电压经过上面的分压电路后,最大测量值就不会超过2.5V这个参考电压了。

  如果单片机的ADC是12bit,那么满量程为0xFFF(4095)=2.5V,电压计算如下:

  0xFFF / AD值 = 2.5/V

  V = (2.5 x AD值) / 0xFFF

  当然这个测量出来的电压值是经过电阻分压的,大家还需要按分压比例算出真正的电池电压值,得到锂电池的电压值,就可以按照电量与电压的对应关系,计算得到锂电池的电量。

  如果单片机内部有参照电压,就更为简单的。以STM32系列的单片机为例,STM32的内部有一个参照电压VREFINT,相当于一个标准电压测量点,它和ADCx_IN17连接,这个参考电照与参考电压是不一样的哦。有了这个参照电压,即使锂电池的电压发生变化,也可以通过参照电压计算出真实的电压值,在测量锂电池电压值之前,我们需要先读出参照电压的ADC测量数值,记为ADrefint,再去读出锂电池电压ADC数值,记为ADchx,则要测量的电压为:

  Vchx = Vrefint * (ADchx/ADrefint)

  其中ADrefint是固定值,需要查看对应单片机的规格书。

  如果你用的是STM32有单片机,可以去了解一下内部参照电压的使用哦。




工程师
2020-06-20 22:49:43     打赏
2楼

只能测量到电压吧? 电量估计测不准,影响因素较多。。


工程师
2020-06-20 22:58:10     打赏
3楼

电量大致判断可以~


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]