STM32电能质量控制系统设计与实现

STM32电能质量控制系统设计与实现 基于STM32的电能质量控制系统设计与实现1. 项目概述1.1 系统架构本电能质量控制系统采用STM32F103RCT6作为主控芯片构建了一个集环境监测与电力参数采集于一体的综合监控平台。系统通过多种传感器实时采集环境参数温度、湿度、烟雾浓度、火焰状态和电力参数电压、电流、功率并通过ESP8266 WiFi模块实现数据远程传输。系统架构分为三个主要层次传感层包含火焰传感器、MQ2烟雾传感器、SHT30温湿度传感器、人体红外传感器及电力参数采集模块控制层STM32主控芯片负责数据处理和系统控制应用层包含本地LCD显示和远程APP监控1.2 设计目标系统主要实现以下技术指标环境温度测量范围-40℃~125℃精度±0.3℃环境湿度测量范围0~100%RH精度±2%RH电力参数测量精度±1%报警响应时间500ms无线传输距离室内环境下≥30米2. 硬件设计2.1 主控电路设计STM32F103RCT6微控制器作为系统核心具有以下关键设计考虑采用8MHz外部晶振提供系统时钟复位电路采用10kΩ上拉电阻和100nF电容构成RC复位调试接口采用标准的SWD四线连接方式电源部分使用AMS1117-3.3稳压芯片输入5V输出3.3V// 典型时钟配置代码 void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct {0}; RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL RCC_PLL_MUL9; HAL_RCC_OscConfig(RCC_OscInitStruct); RCC_ClkInitStruct.ClockType RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV1; HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_2); }2.2 传感器接口设计2.2.1 温湿度传感器电路SHT30数字温湿度传感器采用I2C接口连接设计要点使用4.7kΩ上拉电阻确保I2C信号完整性VDD引脚并联100nF去耦电容传感器地址引脚通过跳线可选(0x44或0x45)2.2.2 烟雾检测电路MQ2烟雾传感器接口设计采用LM393比较器进行模拟信号处理比较器参考电压通过10kΩ电位器可调数字输出端接10kΩ上拉电阻至3.3V模拟输出通过100nF电容滤波后接入STM32 ADC2.2.3 电力参数采集接口电力参数模块通过UART通信采用MAX3232芯片实现RS232电平转换通信波特率固定为9600bps硬件流控制引脚悬空采用软件流控制2.3 无线通信模块设计ESP8266 WiFi模块配置为APTCP模式使用CH340G实现USB转串口功能模块复位电路采用100kΩ下拉电阻和100nF电容GPIO0引脚通过10kΩ电阻上拉至3.3V天线区域保持净空避免高频干扰2.4 报警与显示电路报警电路采用有源蜂鸣器通过S8050三极管驱动基极串联1kΩ限流电阻集电极并联续流二极管1.44寸LCD显示屏接口SPI通信模式时钟频率8MHz背光通过200Ω限流电阻控制复位信号通过RC电路(10kΩ100nF)实现上电复位3. 软件设计3.1 主程序流程系统软件采用前后台架构上电初始化硬件外设建立WiFi连接进入主循环采集各传感器数据执行阈值判断更新本地显示打包发送数据处理接收指令int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); MX_I2C1_Init(); MX_SPI1_Init(); MX_ADC1_Init(); WiFi_Init(); LCD_Init(); Sensors_Init(); while (1) { Read_Sensors(); Check_Thresholds(); Update_Display(); Send_Data(); HAL_Delay(500); } }3.2 传感器驱动实现3.2.1 SHT30温湿度采集#define SHT30_ADDR 0x44 uint8_t SHT30_ReadTempHumidity(float *temp, float *hum) { uint8_t cmd[2] {0x2C, 0x06}; uint8_t data[6]; HAL_I2C_Master_Transmit(hi2c1, SHT30_ADDR1, cmd, 2, 100); HAL_Delay(15); if(HAL_I2C_Master_Receive(hi2c1, SHT30_ADDR1, data, 6, 100) ! HAL_OK) return 0; uint16_t temp_raw (data[0] 8) | data[1]; uint16_t hum_raw (data[3] 8) | data[4]; *temp -45 175 * (float)temp_raw / 65535; *hum 100 * (float)hum_raw / 65535; return 1; }3.2.2 电力参数采集电力参数模块采用Modbus RTU协议设备地址0x01功能码0x03(读保持寄存器)电压寄存器地址0x0000电流寄存器地址0x0008功率寄存器地址0x00103.3 无线通信协议ESP8266数据传输协议设计数据帧格式帧头(2B) 长度(1B) 命令(1B) 数据(NB) CRC(2B)帧头固定为0xAA55CRC采用CRC-16/MODBUS算法数据上传周期500ms典型数据包示例AA 55 10 01 00 12 00 64 01 F4 00 96 00 00 01 00 00 00 00 23 45解析帧头AA55长度16字节命令01(数据上报)数据温度(0x001218℃)、湿度(0x0064100%)、电压(0x01F4500V)...CRC23453.4 报警逻辑实现报警判断采用多级阈值机制初级判断单次采样值超过阈值中级判断连续3次采样超过阈值高级判断5秒内累计超过阈值次数50%void Check_Thresholds(void) { static uint8_t temp_alarm_cnt 0; if(current_temp temp_threshold) { temp_alarm_cnt; if(temp_alarm_cnt 3) { Set_Alarm(TEMP_ALARM); temp_alarm_cnt 0; } } else { temp_alarm_cnt 0; } // 其他参数类似判断... }4. 系统测试与验证4.1 功能测试项测试项目测试方法预期结果实际结果温度测量使用标准温度源对比±0.5℃精度符合湿度测量湿度盐箱校准±3%RH精度符合烟雾检测标准烟雾浓度测试检测灵敏度可调符合电力参数可调电源标准表对比±1%精度符合无线传输距离测试数据完整性30米无丢包符合4.2 性能优化通过测试发现以下改进点ADC采样增加软件滤波算法#define FILTER_LEN 5 uint16_t ADC_ReadWithFilter(ADC_HandleTypeDef* hadc) { uint16_t buf[FILTER_LEN]; uint32_t sum 0; for(int i0; iFILTER_LEN; i) { HAL_ADC_Start(hadc); HAL_ADC_PollForConversion(hadc, 10); buf[i] HAL_ADC_GetValue(hadc); sum buf[i]; } // 去掉最大最小值后取平均 uint16_t max buf[0], min buf[0]; for(int i1; iFILTER_LEN; i) { if(buf[i] max) max buf[i]; if(buf[i] min) min buf[i]; } return (sum - max - min) / (FILTER_LEN - 2); }WiFi通信增加重传机制发送失败后延迟100ms重试连续3次失败则重新初始化模块数据包增加序列号检测丢包5. BOM清单与成本分析5.1 关键器件清单器件名称型号数量单价(元)备注主控芯片STM32F103RCT6115.00LQFP64封装WiFi模块ESP8266-12F18.50含PCB天线温湿度传感器SHT30112.00I2C接口烟雾传感器MQ215.50含比较器板LCD显示屏1.44寸TFT19.80SPI接口电力采集模块-118.00定制方案蜂鸣器有源5V10.803kHz5.2 设计改进建议电源优化增加TVS二极管防护电源浪涌关键芯片电源引脚增加10μF钽电容采用隔离型DC-DC模块提高抗干扰能力扩展接口预留RS485接口支持工业现场总线增加TF卡槽用于本地数据存储设计JTAG接口方便调试结构设计传感器采用模块化插接设计外壳增加通风孔兼顾散热与防尘安装孔位符合DIN导轨标准