普通的分压设计除非使用拨动开关将这部分电路完全断电,否则会导致锂电池通过分压电阻在持续耗电,当耗电量达到一定程度会导致锂电池损坏。
本例子采用航模电池2s电池为7.4V,分压最大为3.22V,符合单片机的3.3V电压。
在使用时候,在设备关机后,将引脚拉高,利用PMOS将电路断开,有效避免了分压电阻耗电。
1 | //ADC读取电压 |
经过这部分操作后得到的数据并不是电池电压值,这就需要了解 几位的ADC。在STM32中,ADC是12位的,另外,8、10、12位都有。
对于STM32,ADC的值是0~4095(十二位二进制数表示的最大数是4095).这样我们就可以利用一次函数的样子来求解任意X坐标下的Y值了。
1 | BatADCValue=Get_Adc_Average(10); // 获取ADC原始值0~4095 |
最终就得到我们需要的电池电压了!