1.电池检测更新(该计算方式误差也大)
This commit is contained in:
parent
de86887968
commit
b3eeab62bb
|
@ -103,7 +103,30 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696;
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696;
|
||||||
|
volt = (27 * adcVal + 3097) / 531;
|
||||||
|
return volt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************
|
||||||
|
Function: sf_aa_battery_voltage_convert
|
||||||
|
Description: battery voltage convert
|
||||||
|
Input: resistanceGnd:Grounding terminal resistance,resistanceVin:Input resistance,adcVal:adc val
|
||||||
|
Output: N/A
|
||||||
|
Return: Volt * 10
|
||||||
|
Others: N/A
|
||||||
|
*************************************************/
|
||||||
|
UINT32 sf_aa_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 adcVal)
|
||||||
|
{
|
||||||
|
UINT32 volt = 0;
|
||||||
|
|
||||||
|
/*511 * (detected voltage) / (SARADC reference voltage)
|
||||||
|
DC input voltage x resistanceGnd/(resistanceGnd + resistanceVin) = detected voltage,
|
||||||
|
SARADC reference voltage:1.8V
|
||||||
|
*/
|
||||||
|
|
||||||
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
|
volt = (27 * adcVal + 554) / 539;
|
||||||
return volt;
|
return volt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,10 +135,20 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN
|
||||||
UINT32 adcVal = 0;
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
//adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
adcVal = (volt * 531 - 3097) / 27;
|
||||||
return adcVal;
|
return adcVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT32 sf_aa_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 volt)
|
||||||
|
{
|
||||||
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
|
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
//adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
adcVal = (volt * 539 - 554) / 27;
|
||||||
|
return adcVal;
|
||||||
|
}
|
||||||
UINT32 sf_get_max_value(UINT32 *_ValueList)
|
UINT32 sf_get_max_value(UINT32 *_ValueList)
|
||||||
{
|
{
|
||||||
UINT8 readBatCnt = 0;
|
UINT8 readBatCnt = 0;
|
||||||
|
@ -320,7 +353,7 @@ UINT32 sf_battery_adc_value_get_once(void)
|
||||||
|
|
||||||
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
|
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
|
||||||
{
|
{
|
||||||
batVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
|
batVoltageVal = sf_aa_battery_voltage_convert(24, 100, batAdc);
|
||||||
//batVoltageVal += 2;
|
//batVoltageVal += 2;
|
||||||
if(puiPara->BatteryLogSwitch)
|
if(puiPara->BatteryLogSwitch)
|
||||||
printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
|
printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
|
||||||
|
@ -638,7 +671,7 @@ signed int sf_battery_value_fast_get(void)
|
||||||
|
|
||||||
if(puiPara->BatteryLogSwitch)
|
if(puiPara->BatteryLogSwitch)
|
||||||
{
|
{
|
||||||
printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
|
printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_aa_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
|
||||||
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
|
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -844,7 +877,7 @@ void sf_battery_level_polling(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(24, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10);
|
printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_aa_battery_convert_to_adc(24, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,30 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696;
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696;
|
||||||
|
volt = (27 * adcVal + 3097) / 531;
|
||||||
|
return volt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************
|
||||||
|
Function: sf_aa_battery_voltage_convert
|
||||||
|
Description: battery voltage convert
|
||||||
|
Input: resistanceGnd:Grounding terminal resistance,resistanceVin:Input resistance,adcVal:adc val
|
||||||
|
Output: N/A
|
||||||
|
Return: Volt * 10
|
||||||
|
Others: N/A
|
||||||
|
*************************************************/
|
||||||
|
UINT32 sf_aa_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 adcVal)
|
||||||
|
{
|
||||||
|
UINT32 volt = 0;
|
||||||
|
|
||||||
|
/*511 * (detected voltage) / (SARADC reference voltage)
|
||||||
|
DC input voltage x resistanceGnd/(resistanceGnd + resistanceVin) = detected voltage,
|
||||||
|
SARADC reference voltage:1.8V
|
||||||
|
*/
|
||||||
|
|
||||||
|
//volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
|
volt = (27 * adcVal + 554) / 539;
|
||||||
return volt;
|
return volt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,10 +139,19 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN
|
||||||
UINT32 adcVal = 0;
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
//adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
adcVal = (volt * 531 - 3097) / 27;
|
||||||
return adcVal;
|
return adcVal;
|
||||||
}
|
}
|
||||||
|
UINT32 sf_aa_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 volt)
|
||||||
|
{
|
||||||
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
|
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
//adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
adcVal = (volt * 539 - 554) / 27;
|
||||||
|
return adcVal;
|
||||||
|
}
|
||||||
UINT32 sf_get_max_value(UINT32 *_ValueList)
|
UINT32 sf_get_max_value(UINT32 *_ValueList)
|
||||||
{
|
{
|
||||||
UINT8 readBatCnt = 0;
|
UINT8 readBatCnt = 0;
|
||||||
|
@ -349,7 +381,7 @@ UINT32 sf_battery_adc_value_get_once(void)
|
||||||
{
|
{
|
||||||
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
|
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
|
||||||
{
|
{
|
||||||
batVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
|
batVoltageVal = sf_aa_battery_voltage_convert(24, 100, batAdc);
|
||||||
//batVoltageVal += 4;
|
//batVoltageVal += 4;
|
||||||
if(puiPara->BatteryLogSwitch)
|
if(puiPara->BatteryLogSwitch)
|
||||||
printf("Bat ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
|
printf("Bat ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
|
||||||
|
@ -663,7 +695,7 @@ signed int sf_battery_value_fast_get(void)
|
||||||
|
|
||||||
if(puiPara->BatteryLogSwitch)
|
if(puiPara->BatteryLogSwitch)
|
||||||
{
|
{
|
||||||
printf("%s:%d [%d]Other Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
|
printf("%s:%d [%d]Other Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_aa_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
|
||||||
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
|
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1692,7 +1724,7 @@ void sf_battery_print(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Other ADC Value=%lu V:(%lu.%luV)\n", sf_battery_convert_to_adc(24, 100, BatVoltageVal), BatVoltageVal / 10, BatVoltageVal % 10);
|
printf("Other ADC Value=%lu V:(%lu.%luV)\n", sf_aa_battery_convert_to_adc(24, 100, BatVoltageVal), BatVoltageVal / 10, BatVoltageVal % 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user