diff --git a/V1.5/STM32F103_App1/HardWare/HLW8032/hlw8032.c b/V1.5/STM32F103_App1/HardWare/HLW8032/hlw8032.c index c7dc462..2cb34bc 100644 --- a/V1.5/STM32F103_App1/HardWare/HLW8032/hlw8032.c +++ b/V1.5/STM32F103_App1/HardWare/HLW8032/hlw8032.c @@ -189,7 +189,9 @@ float hlw8032_get_current_a(void) float hlw8032_get_power_w(void) { if (!s_p_reg) return 0.0f; - return (float)((double)s_power_par / (double)s_p_reg * HLW_U_COEF * HLW_I_COEF); + float w = (float)((double)s_power_par / (double)s_p_reg * HLW_U_COEF * HLW_I_COEF); + if (w < HLW_P_DEAD_W) return 0.0f; /* 死区:空载噪声底显示 0 */ + return w - HLW_P_ZERO_W; } /*==== 在线判断:1s 内收到过有效帧 ====*/ diff --git a/V1.5/STM32F103_App1/Inc/main.h b/V1.5/STM32F103_App1/Inc/main.h index 8635c13..ada39da 100644 --- a/V1.5/STM32F103_App1/Inc/main.h +++ b/V1.5/STM32F103_App1/Inc/main.h @@ -72,6 +72,10 @@ extern UART_HandleTypeDef huart3; /* 电流零点偏移(A):空载时电流通道的零漂读数,显示时减去并钳位到 0。 * 换板子/换 CT 后空载看一下读数,按实际调整 */ #define HLW_I_ZERO_A 0.02f +/* 功率零漂处理:空载噪声底约 0.4~2W 且会跳动,单纯减偏移压不住尖峰。 + * 读数低于死区直接显示 0,高于死区再减去偏移 */ +#define HLW_P_DEAD_W 2.0f /* 功率死区(W):低于此值显示 0 */ +#define HLW_P_ZERO_W 0.5f /* 功率偏移(W):超过死区后减去 */ /*===== 蓝牙 GATT UUID 配置(透传服务)===== * BLE_UUID_CUSTOM = 1:上电把三个 UUID 设为下面的值(重启模块生效)。