資源簡(jiǎn)介
單節(jié)干電池剩余電量檢測(cè)百分比計(jì)算函數(shù)說(shuō)明(如果是多節(jié)干電池,計(jì)算一節(jié)干電池的平均電壓帶入公式即可):通過(guò)檢測(cè)電池兩端電壓,計(jì)算電池剩余電量百分比:

代碼片段和文件信息
/*********************************************************
?*文件名:??soc.c
?*日??期:??2018/7/24
?*描??述:??剩余電量百分比計(jì)算庫(kù)函數(shù)
?*備??注:??
?**********************************************************/
?
#include?“soc.h“
/***************************************************************
函數(shù)名:SOC_DryCell
描??述:剩余電量檢測(cè)百分比計(jì)算函數(shù)
輸入值:adc_value:ADC采集值
flag:?選擇電池實(shí)際剩余電量計(jì)算和根據(jù)芯片最低工作電壓計(jì)算剩余電量百分比,取值范圍:0~1
0:計(jì)算電池實(shí)際剩余電量百分比
1:根據(jù)芯片最低工作電壓計(jì)算剩余電量百分比(最低工作電壓2.5V)
輸出值:無(wú)
返回值: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;????//電壓計(jì)算
if(flag)
{
if(2844<=adc_value) //條件數(shù)字為ADC采集數(shù)據(jù)值,范圍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)?? // 條件數(shù)字為ADC采集數(shù)據(jù)值,范圍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)??// 條件數(shù)字為ADC采集數(shù)據(jù)值,范圍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) // 條件數(shù)字為ADC采集數(shù)據(jù)值,范圍>1.341V
{
num=53.763*sum+19.36;
num = (num>=100)?100:num; //?電池電壓高于1.5V時(shí),剩余電量100%???2844?-?4095?
}
}
return?num;
}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????1847??2018-08-29?14:26??soc.c
?????文件???????1225??2018-08-29?11:27??soc.h
?????文件??????16311??2018-08-29?14:10??剩余電量檢測(cè)百分比計(jì)算函數(shù)說(shuō)明.docx
-----------?---------??----------?-----??----
????????????????19383????????????????????3
評(píng)論
共有 條評(píng)論