1. 系统总体设计
点击链接下载protues仿真资料:https://download.csdn.net/download/m0_51061483/92081525
1.1 设计背景
在现代工业自动化生产中,压力机设备承担着重要的加工任务,其运行稳定性直接关系到生产效率与设备安全。在压力机运行过程中,润滑系统起着至关重要的作用。润滑油泵能够为关键传动部件提供必要的润滑,减少摩擦和磨损。如果主电机在润滑不足的情况下启动运行,将极易造成设备损坏甚至引发安全事故。
传统压力机控制系统多采用继电器逻辑控制方式,这种方式虽然结构简单,但在复杂逻辑控制、运行次数限制、时间控制以及安全保护方面存在明显不足。因此,采用单片机作为核心控制单元,通过软件实现复杂控制逻辑,可以显著提升系统的智能化水平与可靠性。
本设计基于单片机实现压力机润滑油泵与主电机的协调控制,通过合理的时序安排和保护机制,实现设备安全、高效运行。
1.2 系统功能设计
本系统主要实现以下功能:
- 启动控制:按下启动按钮后,润滑油泵优先运行10秒,为设备提供充分润滑;
- 主电机控制:润滑完成后,主电机按照方向选择开关运行(默认正转),运行20秒后自动停止;
- 重复启动:主电机停止后,可再次按下启动按钮重新运行;
- 次数限制:主电机连续运行5次后,系统自动进入冷却阶段;
- 冷却保护:润滑油泵和主电机停止运行10秒后方可重新启动;
- 方向控制:主电机支持正转与反转切换;
- 方向切换保护:在连续运行过程中切换方向需等待10秒后才能再次启动;
- 冷却阶段切换:在冷却状态下可直接切换电机方向;
- 指示灯显示:包括电源、启动、停止、润滑泵运行、主电机正转及反转状态。
2. 系统电路设计
2.1 单片机最小系统电路设计
本系统采用STC89C52单片机作为控制核心,其具备性能稳定、资源丰富、成本低廉等优点。
最小系统包括:
该模块为系统提供基础运行环境。
2.2 按键与方向输入电路设计
输入模块用于实现用户控制功能,包括:
- 启动按钮;
- 停止按钮;
- 电机方向选择开关。
设计要点:
- 采用上拉电阻防止输入端悬空;
- 输入信号连接至单片机IO口;
- 软件实现按键消抖,提高系统稳定性。
2.3 指示灯显示电路设计
系统通过多个LED指示灯反映运行状态:
- 电源指示灯:系统上电时点亮;
- 启动指示灯:系统运行时点亮;
- 停止指示灯:系统停止时点亮;
- 润滑泵指示灯:油泵运行时点亮;
- 主电机正转指示灯;
- 主电机反转指示灯。
LED通过限流电阻连接单片机IO口,实现状态显示。
2.4 润滑油泵控制电路设计
润滑油泵采用继电器进行控制。
设计方案:
2.5 主电机驱动电路设计
主电机需要实现正反转控制。
设计方法:
2.6 定时与保护电路设计
本系统采用单片机内部定时器实现时间控制,无需额外硬件定时电路。
关键时间参数:
- 润滑时间:10秒;
- 电机运行时间:20秒;
- 冷却时间:10秒;
- 方向切换延时:10秒。
通过软件定时实现精确控制。
3. 系统程序设计
3.1 程序总体结构设计
系统程序采用状态机控制方法,将系统分为多个状态:
- 空闲状态(IDLE);
- 润滑运行状态(OIL_RUN);
- 电机运行状态(MOTOR_RUN);
- 冷却状态(COOLING);
- 方向切换等待状态(WAIT_DIR)。
主程序如下:
void main()
{
System_Init();
while(1)
{
Key_Scan();
Direction_Handle();
State_Control();
LED_Update();
}
}
3.2 按键扫描程序设计
void Key_Scan()
{
if(Start_Key == 0)
{
delay_ms(10);
if(Start_Key == 0)
start_flag = 1;
}
if(Stop_Key == 0)
{
delay_ms(10);
if(Stop_Key == 0)
stop_flag = 1;
}
}
实现按键检测与消抖。
3.3 状态机控制程序设计
void State_Control()
{
switch(state)
{
case IDLE:
if(start_flag)
{
start_flag = 0;
state = OIL_RUN;
}
break;
case OIL_RUN:
OilPump_ON();
delay_s(10);
state = MOTOR_RUN;
break;
case MOTOR_RUN:
Motor_Run();
delay_s(20);
Motor_Stop();
run_count++;
if(run_count >= 5)
state = COOLING;
else
state = IDLE;
break;
case COOLING:
OilPump_OFF();
Motor_Stop();
delay_s(10);
run_count = 0;
state = IDLE;
break;
}
}
实现系统核心控制逻辑。
3.4 主电机控制程序设计
void Motor_Run()
{
if(direction == FORWARD)
Motor_Forward_ON();
else
Motor_Reverse_ON();
}
实现电机方向控制。
3.5 电机停止程序设计
void Motor_Stop()
{
Motor_Forward_OFF();
Motor_Reverse_OFF();
}
实现电机停止。
3.6 方向切换控制程序设计
void Direction_Handle()
{
if(direction_change_flag)
{
if(state == MOTOR_RUN)
{
Motor_Stop();
delay_s(10);
}
direction = !direction;
direction_change_flag = 0;
}
}
实现方向切换保护逻辑。
3.7 指示灯控制程序设计
void LED_Update()
{
LED_Power = 1;
LED_Run = (state == MOTOR_RUN);
LED_Oil = (state == OIL_RUN);
LED_Stop = (state == IDLE);
if(direction == FORWARD)
{
LED_F = 1;
LED_R = 0;
}
else
{
LED_F = 0;
LED_R = 1;
}
}
实现系统状态显示。
4. 系统总结
本系统基于单片机实现了压力机润滑油泵与主电机的智能控制,通过合理的时序控制与保护机制,确保设备在安全条件下运行。
在电路设计方面,各模块结构清晰,功能完善,具有较好的抗干扰能力;在程序设计方面,采用状态机控制方法,使系统逻辑严谨、运行可靠。
通过润滑预启动、运行次数限制、冷却保护及方向切换保护等机制,有效提升了设备的安全性与稳定性,具有较高的实际应用价值。
137