1. 系统功能概述
本设计题目为**《基于单片机的道岔转辙机智能润滑监测系统设计》**,系统以STM32单片机为核心控制单元,通过集成温湿度检测、粉尘检测、锁钩状态检测、自动润滑执行机构与远程通信模块,实现对道岔转辙机运行环境与润滑状态的智能化监测与控制。该系统的研发背景在于铁路运输系统中,道岔设备长期暴露在户外恶劣环境下,容易因湿度、粉尘及温度变化而出现锈蚀、磨损、动作不灵等问题,从而影响铁路运行的安全与效率。
系统通过温湿度传感器HS1101、温度传感器DS18B20和粉尘传感器MQ2对环境状态进行实时采集,利用单片机实现多参数融合判断。当监测值超过设定阈值时,系统会自动触发声光报警模块提醒维护人员,同时通过控制电磁阀或电机驱动润滑机构进行润滑操作。此外,系统配备ESP8266无线模块,实现远程监控与控制功能,运维人员可通过手机或上位机终端实时查看状态信息并进行远程启停操作。
整套系统不仅提高了道岔设备的自动化维护水平,也大大降低了人工巡检频率与安全隐患,具有较强的工程应用价值与推广意义。
点击链接下载资料:https://download.csdn.net/download/m0_51061483/91926443
2. 系统电路设计
系统电路以STM32F103C8T6单片机为核心,外围电路包括温度检测电路、湿度检测电路、粉尘检测电路、声光报警电路、润滑控制电路、通信电路以及电源电路等。各部分电路相互协作,实现系统的检测、判断与控制功能。
2.1 单片机最小系统电路
系统的核心控制部分采用STM32F103C8T6单片机,主要负责数据采集、逻辑判断与执行控制。最小系统包括晶振电路、复位电路、电源滤波电路和调试接口(SWD或UART)。
- 晶振电路:采用8MHz外部晶振,保证系统时钟的精确与稳定。
- 复位电路:使用按键复位与上电复位电路相结合,防止程序异常运行。
- 电源电路:提供稳定的3.3V电压,采用AMS1117稳压芯片,由外部12V或5V电源输入。
- 通信接口:PA9和PA10引脚用于UART通信,与ESP8266模块相连,实现无线数据交互。
2.2 温度检测电路(DS18B20)
DS18B20是一种高精度单总线数字温度传感器,测量范围为-55℃至+125℃,精度可达±0.5℃。其输出为数字信号,抗干扰能力强,适合铁路现场复杂环境下使用。
单片机通过单总线接口与DS18B20通信,定时读取温度数据。温度信息用于判断润滑装置的工作条件以及温度超限报警逻辑。当温度超过设定阈值(如60℃),系统触发报警并暂时停止润滑操作,以防止机械过热造成损伤。
2.3 湿度检测电路(HS1101)
HS1101是一种电容式湿度传感器,其电容值随环境湿度变化而改变。系统通过NE555构成振荡电路,将湿度信号转换为频率信号,再由STM32的定时器输入捕获模块测量频率变化,进而计算湿度值。
当检测到湿度过高(例如超过85%RH),系统会判断环境湿度异常,触发声光报警,提醒维护人员注意设备防水与防锈工作。湿度值还可作为自动润滑逻辑的参考参数,用于判断是否延长润滑周期。
2.4 粉尘检测电路(MQ2)
MQ2传感器对空气中粉尘及烟雾浓度极为敏感,其输出为模拟电压信号。系统通过STM32的ADC模块采集其输出电压,经过标定后可得到粉尘浓度估计值。
当粉尘浓度超过设定阈值时,系统自动报警,并在适当情况下启动润滑程序,以清洁粉尘积聚区域。同时通过WiFi模块将粉尘超限信息上传至远程监控端。
2.5 声光报警电路
报警部分由蜂鸣器与高亮LED灯组成,分别由单片机的GPIO控制。当温度、湿度或粉尘任一参数超过阈值时,蜂鸣器鸣叫、LED闪烁,起到现场警示作用。蜂鸣器采用有源蜂鸣器,驱动电路简单,使用NPN三极管进行放大驱动。
2.6 润滑控制电路
润滑执行装置由小型直流电机或电磁阀驱动,通过单片机的PWM输出控制。系统在检测到环境参数正常且锁钩传感器检测到列车经过后,自动启动润滑电机,持续一定时间后停止,以实现自动加油润滑。
电机驱动采用L298N模块,可实现正反转控制与电流保护。为防止误动作,系统增加反馈检测电路以判断润滑装置的工作状态。
2.7 远程通信电路(ESP8266)
ESP8266模块用于实现WiFi通信,连接至单片机UART接口。系统通过AT指令实现数据上传与控制命令接收,运维人员可通过手机APP或上位机实时查看温湿度、粉尘浓度及设备工作状态。
同时,系统支持远程启停润滑功能与报警阈值配置,增强了设备的智能化与可维护性。
2.8 电源电路
系统电源采用12V输入,通过DC-DC模块转换为5V与3.3V,分别为电机、单片机与传感器供电。电源部分增加滤波与防反接设计,以确保系统在铁路现场复杂电磁环境中稳定运行。
3. 程序设计
系统的软件部分采用模块化结构设计,主要包括主程序模块、温湿度检测模块、粉尘检测模块、报警与控制模块、润滑执行模块、通信模块以及系统初始化模块。各模块之间通过函数接口进行调用,实现逻辑清晰、结构合理的程序架构。
3.1 主程序设计
主程序负责系统初始化、传感器数据采集、逻辑判断与状态控制。系统通过循环结构不断采集传感器数据,并根据设定阈值判断是否需要报警或启动润滑装置。
#include "stm32f10x.h"
#include "ds18b20.h"
#include "hs1101.h"
#include "mq2.h"
#include "esp8266.h"
#include "control.h"
#include "buzzer_led.h"
float temperature = 0;
float humidity = 0;
float dust = 0;
int main(void)
{
System_Init(); // 系统初始化
DS18B20_Init();
HS1101_Init();
MQ2_Init();
ESP8266_Init();
Control_Init();
while(1)
{
temperature = DS18B20_ReadTemp();
humidity = HS1101_ReadHumidity();
dust = MQ2_ReadDust();
Display_Update(temperature, humidity, dust);
if(temperature > 60 || humidity > 85 || dust > 500)
{
Buzzer_AlarmOn();
LED_AlarmFlash();
ESP8266_SendAlert(temperature, humidity, dust);
}
else
{
Buzzer_AlarmOff();
LED_NormalOn();
}
if(LockSensor_Triggered())
{
Lubrication_Control();
}
delay_ms(500);
}
}
3.2 温度采集模块(DS18B20)
该模块负责温度数据读取与校准,利用单总线通信协议实现与单片机的交互。
float DS18B20_ReadTemp(void)
{
uint16_t temp;
DS18B20_Start();
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0x44);
delay_ms(750);
DS18B20_Start();
DS18B20_WriteByte(0xCC);
DS18B20_WriteByte(0xBE);
temp = DS18B20_ReadByte();
temp |= (DS18B20_ReadByte() << 8);
return (float)temp * 0.0625;
}
3.3 湿度采集模块(HS1101)
湿度信号通过频率测量实现,程序利用STM32的定时器捕获功能进行周期测量,并换算成相对湿度。
float HS1101_ReadHumidity(void)
{
uint32_t freq = TIM_GetCaptureFrequency(TIM2);
float humidity = (freq - 500) / 4.0;
return humidity;
}
3.4 粉尘检测模块(MQ2)
系统通过ADC读取MQ2模拟电压值,再经过线性标定转换为粉尘浓度。
float MQ2_ReadDust(void)
{
uint16_t value = ADC_GetConversionValue(ADC1);
float voltage = value * 3.3 / 4096;
float dust = voltage * 1000; // 近似换算
return dust;
}
3.5 报警与指示模块
该模块负责蜂鸣器与LED灯的控制,当任一传感器检测值超过阈值时启动报警。
void Buzzer_AlarmOn(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
}
void Buzzer_AlarmOff(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
}
3.6 润滑控制模块
润滑控制逻辑根据环境状态与锁钩检测信号判断是否执行润滑操作。
void Lubrication_Control(void)
{
Motor_Start();
delay_ms(3000);
Motor_Stop();
}
3.7 通信模块(ESP8266)
通信模块负责上传监测数据与接收远程控制命令。系统采用AT指令方式与ESP8266通信。
void ESP8266_SendAlert(float t, float h, float d)
{
char buf[64];
sprintf(buf, "ALERT:T=%.1f,H=%.1f,D=%.1frn", t, h, d);
UART_SendString(buf);
}
4. 系统运行与逻辑分析
系统通电后,单片机完成初始化并开始循环检测环境参数。若温度、湿度或粉尘浓度超出预设安全阈值,蜂鸣器立即鸣响、LED闪烁,并通过ESP8266上传告警数据。
当锁钩传感器检测到列车经过时,若环境条件正常,系统启动润滑装置运行预设时间,以保证转辙机构的灵活性。润滑结束后系统自动停止电机并恢复监测状态。
系统运行过程中,所有数据均可通过无线模块上传至远程监控终端,运维人员可以随时查看环境参数与润滑状态,并可发送控制命令实现远程启停与参数配置。
该系统实现了“检测—判断—执行—反馈”完整闭环控制流程,显著提升了铁路道岔设备的智能化维护水平,为铁路运输安全提供可靠保障。
627