如果单片机的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)