STM32负载平衡监控系统设计与实现
基于STM32的负载重量平衡监控系统设计1. 项目概述1.1 系统架构本系统采用STM32F103RCT6作为主控芯片构建了一套完整的船舶负载平衡监控解决方案。系统通过双通道称重传感器实时监测船体两侧负载重量配合水位传感器检测吃水深度当检测到不平衡状态时触发声光报警。系统架构如图1所示[系统架构框图] STM32F103RCT6主控 ├─ 称重检测模块(左/右) ├─ 水位检测模块(左/右) ├─ LCD显示模块 ├─ 声光报警模块 └─ 电源模块1.2 设计背景在大型渡轮运营中负载平衡直接影响航行安全。传统的人工检查方式存在响应延迟和精度不足的问题。本系统通过嵌入式技术实现实时监控当两侧水位差超过3cm时立即报警有效预防因负载不均导致的安全事故。2. 硬件设计2.1 主控模块选用STM32F103RCT6作为核心控制器主要基于以下考虑72MHz主频满足实时数据处理需求内置12位ADC用于水位传感器信号采集丰富的外设接口(SPI、GPIO等)支持多模块连接256KB Flash存储空间可容纳复杂控制逻辑2.2 传感器模块2.2.1 称重检测采用双通道HX711模块实现重量测量24位高精度ADC可编程增益(32/64/128)典型采样率10/80Hz工作电压2.6-5.5V硬件连接HX711 -- STM32 DOUT -- PB12 PD_SCK-- PB13 VCC -- 5V GND -- GND2.2.2 水位检测使用模拟量输出水位传感器检测范围0-5cm输出信号0-3.3V精度±1mm工作电流20mA连接至STM32的ADC1通道0和通道1左传感器 -- PA0(ADC1_IN0) 右传感器 -- PA1(ADC1_IN1)2.3 显示与报警模块2.3.1 LCD显示采用1.44寸SPI接口LCD分辨率128×128驱动芯片ST7735S16位色深硬件连接LCD -- STM32 SCL -- PA5(SPI1_SCK) SDA -- PA7(SPI1_MOSI) RES -- PB0 DC -- PB1 CS -- PA4 BL -- 5V2.3.2 声光报警报警电路设计红色LED串联220Ω电阻接PB8有源蜂鸣器(5V)通过NPN三极管驱动基极接PB92.4 电源设计系统供电方案输入DC 7-12V稳压AMS1117-5.0各模块供电STM32: 3.3V(内置LDO)传感器: 5VLCD: 5V蜂鸣器: 5V3. 软件设计3.1 系统初始化void System_Init(void) { RCC_Configuration(); // 时钟配置 GPIO_Configuration(); // GPIO初始化 SPI_Configuration(); // SPI初始化 ADC_Configuration(); // ADC初始化 LCD_Init(); // LCD初始化 HX711_Init(); // 称重传感器初始化 }3.2 数据采集流程3.2.1 重量测量float Get_Weight(uint8_t channel) { uint32_t adc_value HX711_Read(channel); float weight (adc_value - OFFSET) / SCALE; return weight; }3.2.2 水位测量float Get_WaterLevel(uint8_t channel) { uint16_t adc_value ADC_Read(channel); float voltage adc_value * 3.3 / 4095; float level voltage * 5.0 / 3.3; // 0-5cm对应0-3.3V return level; }3.3 主控制逻辑void Main_Process(void) { float left_weight Get_Weight(LEFT_CH); float right_weight Get_Weight(RIGHT_CH); float left_level Get_WaterLevel(ADC_CH0); float right_level Get_WaterLevel(ADC_CH1); float diff fabs(left_level - right_level); LCD_Display(left_weight, right_weight, left_level, right_level); if(diff 3.0) // 3cm阈值 { Alarm_On(); } else { Alarm_Off(); } }3.4 报警处理void Alarm_On(void) { GPIO_SetBits(GPIOB, GPIO_Pin_8); // LED亮 GPIO_SetBits(GPIOB, GPIO_Pin_9); // 蜂鸣器响 } void Alarm_Off(void) { GPIO_ResetBits(GPIOB, GPIO_Pin_8); GPIO_ResetBits(GPIOB, GPIO_Pin_9); }4. 系统调试4.1 称重传感器校准空载时读取HX711原始值作为零点(OFFSET)放置已知重量砝码记录原始值计算SCALE系数SCALE (有载值 - 空载值)/实际重量4.2 水位传感器校准传感器置于0cm水位记录ADC值传感器置于5cm水位记录ADC值建立线性关系level (adc - adc0) * 5.0 / (adc5 - adc0)4.3 阈值测试模拟两侧水位差达到3cm验证声光报警是否正常触发调整报警响应时间(软件消抖)5. BOM清单器件名称型号/参数数量备注主控芯片STM32F103RCT61LQFP64封装称重模块HX711224位ADC水位传感器模拟量输出20-5cm量程LCD屏幕1.44寸SPI1ST7735S驱动有源蜂鸣器5V1声压≥85dBLED红色5mm120mA稳压芯片AMS1117-5.01SOT-223洞洞板5×7cm1环氧树脂电阻220Ω51/4W电容10μF2电解电容6. 系统优化建议增加数据存储功能记录历史负载数据添加无线传输模块实现远程监控采用防水设计提升传感器环境适应性优化机械结构增强称重平台稳定性实现多级报警区分预警和紧急状态