1. 系统功能介绍
在工业自动化、智能控制以及小型机械设备中,电机的精确控制和实时监测具有重要意义。本设计提出了一种 基于51单片机的霍尔转速测量温度PWM调速系统,通过单片机实现电机的启动、停止、正反转控制、PWM调速以及温度监测,能够保证系统在安全和高效状态下运行。
该系统采用 STC89C52 单片机 为核心控制器,集成 霍尔传感器、DS18B20温度传感器、LCD1602显示模块、L298N电机驱动模块、按键控制模块、蜂鸣器报警模块 和 电源模块。系统主要功能如下:
电机控制功能:通过按键控制电机启动、停止、正转、反转,同时可调节电机 PWM 占空比实现加速或减速。
温度监测功能:DS18B20 温度传感器实时检测电机或环境温度,当温度超过 50℃ 时,蜂鸣器报警。
速度测量功能:通过霍尔传感器检测电机转速,将转速转换为 RPM 并在 LCD1602 显示。
数据显示功能:LCD1602 实时显示电机当前 PWM 档位值、温度和转速信息。
安全保护功能:温度超过阈值自动报警,保护电机和控制系统安全。
通过以上功能,系统实现了电机控制、温度监测和实时数据反馈的综合控制,适用于实验室、小型自动化设备及教学实验。
2. 系统电路设计
系统电路由 单片机最小系统、LCD1602显示模块、L298N电机驱动模块、霍尔传感器电路、DS18B20温度传感器、按键控制电路、蜂鸣器报警电路、电源电路 等模块组成。
2.1 STC89C52单片机最小系统
STC89C52 单片机作为核心控制单元,负责所有模块的协调和数据处理。
配合晶振电路提供稳定时钟信号,复位电路保证系统上电或异常情况能够正常启动。
单片机拥有丰富的 I/O 口资源,可以同时驱动 LCD 显示、按键输入、霍尔传感器采集以及 PWM 输出控制电机。
2.2 LCD1602液晶显示电路
LCD1602 用于显示系统参数,包括 电机当前 PWM 档位、温度值、转速信息。
通过 4 位或 8 位数据总线与单片机连接,由程序控制显示内容。
提供实时反馈,使操作人员可以随时掌握系统状态。
2.3 L298N电机驱动模块
L298N 是双 H 桥电机驱动芯片,可实现直流电机正转、反转以及 PWM 调速。
单片机通过两个控制端口控制电机方向,并通过 PWM 端口调节电机转速。
模块还提供过流保护,可避免电机损坏。
2.4 霍尔传感器电路
霍尔传感器用于检测电机转轴上安装的磁铁的通过次数,转换为脉冲信号。
单片机通过计数脉冲数计算转速,转速值实时显示在 LCD 上。
霍尔传感器的高灵敏度和快速响应保证测量精度。
2.5 DS18B20温度传感器电路
DS18B20 采用数字接口,单线通信方式与单片机连接。
实时检测电机或环境温度,当温度超过 50℃,蜂鸣器触发报警。
支持掉电保持温度设置,可保证温度数据稳定性。
2.6 按键控制模块
系统按键包括六个功能:启动、停止、正转、反转、加速、减速。
按键通过下拉电阻接入单片机 I/O 端口,单片机通过轮询扫描检测按键状态。
用户可通过按键实现电机的实时控制和速度调节。
2.7 蜂鸣器报警模块
蜂鸣器用于提示温度超过安全阈值(50℃)。
当 DS18B20 检测到温度异常时,单片机输出高电平触发蜂鸣器报警。
提供安全保护功能,避免设备过热损坏。
2.8 电源模块
系统由 5V 或 12V 电源供电,保证单片机、传感器和驱动模块正常工作。
为 L298N 提供独立电源以满足电机驱动所需大电流。
电源部分加入滤波电容,保证系统稳定性。
3. 程序设计
系统程序由 主程序、按键处理模块、霍尔传感器转速计算模块、DS18B20温度读取模块、PWM调速控制模块、LCD显示模块、蜂鸣器报警模块 组成。
3.1 主程序框架
#include <reg52.h>
#include "lcd1602.h"
#include "ds18b20.h"
#include "motor.h"
#include "hall.h"
#include "key.h"
#include "buzzer.h"
#include "pwm.h"
unsigned int speed = 0;
unsigned char temperature = 0;
unsigned char pwm_level = 0;
void main()
{
LCD_Init();
DS18B20_Init();
Motor_Init();
Hall_Init();
PWM_Init();
Buzzer_Init();
while(1)
{
Key_Scan(); // 扫描按键处理
speed = Hall_GetSpeed(); // 读取霍尔转速
temperature = DS18B20_ReadTemp(); // 读取温度
PWM_Control(pwm_level); // 控制电机PWM
Display_Status(); // LCD显示状态
Check_Temperature(); // 温度报警
}
}
3.2 按键处理模块
void Key_Scan()
{
if(Key_Pressed(KEY_START)) Motor_Start();
if(Key_Pressed(KEY_STOP)) Motor_Stop();
if(Key_Pressed(KEY_FORWARD)) Motor_Forward();
if(Key_Pressed(KEY_REVERSE)) Motor_Reverse();
if(Key_Pressed(KEY_SPEED_UP))
{
if(pwm_level < 10) pwm_level++;
}
if(Key_Pressed(KEY_SPEED_DOWN))
{
if(pwm_level > 0) pwm_level--;
}
}
3.3 霍尔传感器转速计算模块
unsigned int Hall_GetSpeed()
{
unsigned int pulse_count = 0;
pulse_count = Count_HallPulse(1000); // 1秒计数
return pulse_count * 60; // 转换为RPM
}
3.4 DS18B20温度读取模块
unsigned char DS18B20_ReadTemp()
{
unsigned char temp = 0;
temp = DS18B20_GetTemperature();
return temp;
}
3.5 PWM调速控制模块
void PWM_Control(unsigned char level)
{
unsigned int duty = level * 10; // PWM占空比 0~100%
PWM_SetDuty(duty);
}
3.6 LCD显示模块
void Display_Status()
{
LCD_SetCursor(0,0);
LCD_Printf("Temp:%2dC PWM:%d", temperature, pwm_level);
LCD_SetCursor(0,1);
LCD_Printf("Speed:%4d RPM", speed);
}
3.7 温度报警模块
void Check_Temperature()
{
if(temperature > 50)
Buzzer_On();
else
Buzzer_Off();
}
4. 总结
本设计实现了 基于51单片机的霍尔转速测量温度PWM调速系统,实现了电机控制、温度监测、转速显示、PWM调速及安全报警功能,具有以下特点:
多功能控制:按键可实现电机启动、停止、正反转及加减速,操作直观。
温度安全保护:DS18B20监测温度,超过50℃触发蜂鸣器报警。
精准转速测量:霍尔传感器检测电机转速,显示在 LCD 上,方便观察。
PWM调速控制:单片机通过 PWM 调节电机速度,实现灵活控制。
实时数据显示:LCD1602 显示温度、PWM档位及速度,反馈信息全面。
该系统设计合理、功能齐全,适用于教学实验、智能控制以及小型自动化设备,能够提供精确、实时和安全的电机控制方案。
————————————————
版权声明:本文为CSDN博主「点灯小铭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/diandengxiaoming/article/details/151038733
|
|