資源簡介
單節干電池剩余電量檢測百分比計算函數說明(如果是多節干電池,計算一節干電池的平均電壓帶入公式即可):通過檢測電池兩端電壓,計算電池剩余電量百分比:

代碼片段和文件信息
/*********************************************************
?*文件名:??soc.c
?*日??期:??2018/7/24
?*描??述:??剩余電量百分比計算庫函數
?*備??注:??
?**********************************************************/
?
#include?“soc.h“
/***************************************************************
函數名:SOC_DryCell
描??述:剩余電量檢測百分比計算函數
輸入值:adc_value:ADC采集值
flag:?選擇電池實際剩余電量計算和根據芯片最低工作電壓計算剩余電量百分比,取值范圍:0~1
0:計算電池實際剩余電量百分比
1:根據芯片最低工作電壓計算剩余電量百分比(最低工作電壓2.5V)
輸出值:無
返回值:num:剩余電量百分比
?***************************************************************/
?
unsigned?short?int?SOC_DryCell(unsigned?short?int?adc_valueunsigned?char?flag) //ADC采集值?adc_value??返回剩余電量百分比
{
??float?sum?=?0;
????unsigned?char?num=0;
sum?=?ADC_REFER_VOL/ADC_BIT_VALUE*adc_value;????//電壓計算
if(flag)
{
if(2844<=adc_value) //條件數字為ADC采集數據值,范圍1.25~~~1.5v
{
num = 392.16*sum -?488.24; //公式?y?=?392.16x?-?488.24
num = (num>=100)?100:num;
}
}
else
{????
if(1595<=adc_value&&adc_value<2297)?? // 條件數字為ADC采集數據值,范圍0.7~~~1.008v
{
num=44.286*sum*sum-10.706*sum-14.206; //???公式?y?=?44.286x2-10.706x-14.206
}
else?if(2297<=adc_value&&adc_value<2994)??// 條件數字為ADC采集數據值,范圍1.008~~1.314v
{
num=13141*sum*sum-3752.7*sum*sum*sum-15022*sum+5653.6; //???公式?y?=?13141x2-3752.7x3-15022x+5653.6
}
else?if(2994<=adc_value&&adc_value<4096) // 條件數字為ADC采集數據值,范圍>1.341V
{
num=53.763*sum+19.36;
num = (num>=100)?100:num; //?電池電壓高于1.5V時,剩余電量100%???2844?-?4095?
}
}
return?num;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1847??2018-08-29?14:26??soc.c
?????文件???????1225??2018-08-29?11:27??soc.h
?????文件??????16311??2018-08-29?14:10??剩余電量檢測百分比計算函數說明.docx
-----------?---------??----------?-----??----
????????????????19383????????????????????3
評論
共有 條評論