diff --git a/bsp/inc/bsp_adc.h b/bsp/inc/bsp_adc.h index 34d2f6b..4bfa1d3 100644 --- a/bsp/inc/bsp_adc.h +++ b/bsp/inc/bsp_adc.h @@ -22,7 +22,7 @@ extern tmosTaskID adc_task_id; -#define VBAT_LOW_MV 3000 // 电池电压低阈值,单位mV +#define ADC_SAMPLING_TIME 20 void BSP_ADC_Init(void); diff --git a/bsp/src/bsp_adc.c b/bsp/src/bsp_adc.c index c5c9af7..d65d241 100644 --- a/bsp/src/bsp_adc.c +++ b/bsp/src/bsp_adc.c @@ -70,12 +70,12 @@ uint16_t BSP_ReadVbat(void) BSP_VBAT_AdcInit(); ADC_ExcutSingleConver(); // 时间足够时建议再次转换并丢弃首次ADC数据 - for (i = 0; i < 20; i++) + for (i = 0; i < ADC_SAMPLING_TIME; i++) { adcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value; // 连续采样20次 // DelayMs(1); } - for (i = 0; i < 20; i++) + for (i = 0; i < ADC_SAMPLING_TIME; i++) { countadc += ADC_VoltConverSignalPGA_0dB(adcBuff[i]); if (i == 0) @@ -87,7 +87,7 @@ uint16_t BSP_ReadVbat(void) max_number = ((max_number < ADC_VoltConverSignalPGA_0dB(adcBuff[i])) ? ADC_VoltConverSignalPGA_0dB(adcBuff[i]) : max_number); } logDebug("min=%d, max=%d, diff=%d", min_number, max_number, (max_number - min_number)); - countadc = (countadc - min_number - max_number) / 18; // 删除最小与最大值 + countadc = (countadc - min_number - max_number) / (ADC_SAMPLING_TIME - 2); // 删除最小与最大值 logDebug("countaveradc = %d", countadc); vbat_mv = countadc * 3; logDebug("VBAT = %d mV", vbat_mv); @@ -105,12 +105,12 @@ uint16_t BSP_ReadCoil(void) BSP_COIL_AdcInit(); ADC_ExcutSingleConver(); // 时间足够时建议再次转换并丢弃首次ADC数据 - for (i = 0; i < 20; i++) + for (i = 0; i < ADC_SAMPLING_TIME; i++) { adcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value; // 连续采样20次 // DelayMs(1); } - for (i = 0; i < 20; i++) + for (i = 0; i < ADC_SAMPLING_TIME; i++) { countadc += ADC_VoltConverSignalPGA_0dB(adcBuff[i]); if (i == 0) @@ -122,7 +122,7 @@ uint16_t BSP_ReadCoil(void) max_number = ((max_number < ADC_VoltConverSignalPGA_0dB(adcBuff[i])) ? ADC_VoltConverSignalPGA_0dB(adcBuff[i]) : max_number); } logDebug("min=%d, max=%d, diff=%d", min_number, max_number, (max_number - min_number)); - countadc = (countadc - min_number - max_number) / 18; // 删除最小与最大值 + countadc = (countadc - min_number - max_number) / (ADC_SAMPLING_TIME - 2); // 删除最小与最大值 logDebug("countaveradc = %d", countadc); vbat_mv = countadc * 3; logDebug("VBAT = %d mV", vbat_mv); diff --git a/bsp/src/bsp_ml307r.c b/bsp/src/bsp_ml307r.c index dd74dd3..1d6541d 100644 --- a/bsp/src/bsp_ml307r.c +++ b/bsp/src/bsp_ml307r.c @@ -265,7 +265,7 @@ static int parse_server_json_data(const char* json_str) token = lwjson_find(&lwjson, "data.bat"); if (token != NULL && token->type == LWJSON_TYPE_NUM_INT) { int battery = (int)token->u.num_int; - logDebug("Battery: %d%%\r\n", battery); + logDebug("Battery: %d%mv\r\n", battery); } // 湿度 @@ -732,7 +732,7 @@ static void BSP_Get_Module_Info(void) Module_Get_Imei(); Module_Get_Imsi(); Module_Get_Iccid(); - DelayMs(2000); + DelayMs(1000); Module_Timer(); // Module_NetWork_Info(); // 获取网络连接信息 } diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c index 6012472..f307b93 100644 --- a/bsp/src/bsp_valve.c +++ b/bsp/src/bsp_valve.c @@ -444,7 +444,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 闃 { logDebug("VAVLE_LOOP_DECT_EVT"); - gValveData.bat = BSP_ReadVbat(); + gValveData.bat = BSP_ReadVbat()/100; logDebug("BSP_ReadVbat %d",gValveData.bat); // 鐢靛帇杩囦綆灏卞叧闃 @@ -468,7 +468,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 闃 if (events & VAVLE_LOW_VBAT_ALARM_EVT) // 浣庣數鍘嬫姤璀︿簨浠 { - gValveData.bat = BSP_ReadVbat(); + gValveData.bat = BSP_ReadVbat()/100; if (gValveData.bat > 25) { return (events ^ VAVLE_LOW_VBAT_ALARM_EVT); @@ -541,7 +541,7 @@ void BSP_VAVLE_Init(void) // 闃闂ㄥ垵濮嬪寲鍑芥暟 gValveData.atm_pressure = 0; gValveData.type = kTyq; // 璁剧疆闃闂ㄧ被鍨 - gValveData.bat = BSP_ReadVbat(); // 璇诲彇鐢垫睜鐢靛帇 + gValveData.bat = BSP_ReadVbat()/100; // 璇诲彇鐢垫睜鐢靛帇 BSP_MOTOR_Init(); // 鍒濆鍖栫數鏈