摘要
本文介绍了一种基于AT89C51单片机的直流PWM调速控制系统。该系统通过三相桥式不可控整流电路提供直流电源,采用H桥驱动电路控制直流电机的运转。系统还集成了电压、电流、转速和温度检测功能,并通过AD0809模数转换器将转速信号显示在数码管上。此外,系统还设计了转速检测报警电路,可以设置报警上下限,以确保电机的安全运行。通过PWM技术实现对直流电机的调速控制,并通过示波器观察波形和转速变化,验证了系统的可行性和有效性。
关键词:AT89C51单片机;直流PWM调速;三相桥式整流;H桥驱动;转速检测报警
第一章 引言
随着工业自动化的快速发展,电机控制技术在各个领域得到了广泛应用。直流电机作为一种常见的电动机类型,具有调速性能好、控制简单等优点。然而,传统的直流电机调速方法往往存在效率低、能耗高等问题。因此,研究一种高效、可靠的直流电机调速控制系统具有重要意义。本文基于AT89C51单片机设计了一种直流PWM调速控制系统,旨在实现电机的高效调速和安全运行。
第二章 系统总体设计
本系统主要由AT89C51单片机、三相桥式不可控整流电路、H桥驱动电路、电压电流检测电路、转速和温度检测电路以及数码管显示和报警电路组成。单片机作为系统的核心控制器,负责处理各种输入信号并输出PWM控制信号。三相桥式不可控整流电路将交流电源转换为直流电源,为直流电机提供稳定的工作电压。H桥驱动电路根据单片机的控制信号驱动直流电机的正反转和调速。电压电流检测电路实时监测电机的电压和电流,确保电机的安全运行。转速和温度检测电路通过传感器采集电机的转速和温度信号,为单片机提供反馈信息。数码管显示和报警电路将转速信号显示在数码管上,并在转速超出设定范围时发出报警信号。
第三章 硬件设计
3.1 单片机最小系统电路
单片机最小系统电路包括AT89C51芯片、晶振电路、复位电路和电源电路。晶振电路为单片机提供稳定的时钟信号,复位电路用于单片机的复位操作,电源电路为单片机提供稳定的工作电压。
3.2 三相桥式不可控整流电路
三相桥式不可控整流电路由六个二极管组成,将三相交流电源转换为直流电源。为了滤除整流后产生的脉动直流电压中的交流成分,电路中还加入了电容滤波器。
3.3 H桥驱动电路
H桥驱动电路由四个功率开关管组成,根据单片机的控制信号实现直流电机的正反转和调速。通过改变PWM控制信号的占空比,可以实现对直流电机转速的连续调节。
3.4 电压电流检测电路
电压电流检测电路采用电阻分压和电流互感器的方式实时监测电机的电压和电流。检测信号经过放大和滤波后送入单片机进行处理。
3.5 转速和温度检测电路
转速检测采用光电编码器或霍尔传感器等装置将电机的转速信号转换为脉冲信号,通过计数脉冲的频率即可得到电机的转速。温度检测采用热敏电阻或温度传感器等装置将电机的温度信号转换为电压信号,经过放大和滤波后送入单片机进行处理。
3.6 数码管显示和报警电路
数码管显示电路采用共阳或共阴数码管显示转速信号。报警电路根据设定的转速上下限值与实际转速进行比较,当实际转速超出设定范围时触发报警装置发出声光报警信号。
第四章 软件设计
本系统的软件设计主要包括主程序、PWM控制子程序、转速检测子程序、电压电流检测子程序以及数码管显示和报警子程序等。主程序负责初始化系统并循环调用各个子程序实现系统的整体功能。PWM控制子程序根据设定的转速值计算PWM控制信号的占空比并输出给H桥驱动电路。转速检测子程序负责采集转速信号并进行处理得到实际转速值。电压电流检测子程序负责实时监测电机的电压和电流并确保其在安全范围内运行。数码管显示和报警子程序负责将转速信号显示在数码管上并在转速超出设定范围时触发报警装置。
第五章 实验结果与分析
通过对系统进行实验测试,验证了系统的各项功能均正常实现且性能稳定可靠。实验结果表明,通过调节PWM控制信号的占空比可以实现对直流电机转速的连续调节;数码管能够准确显示电机的转速值;当转速超出设定范围时报警装置能够及时发出声光报警信号提醒操作人员注意安全。此外,在实验过程中还观察了波形和转速变化的关系以及系统在不同负载条件下的性能表现等方面进行了深入分析。
结论与展望
本文设计了一种基于AT89C51单片机的直流PWM调速控制系统并进行了实验验证。实验结果表明该系统具有调速性能好、控制简单、安全可靠等优点且具有良好的应用前景和市场价值。未来可以进一步完善和优化系统设计如提高整流效率、优化PWM控制算法以提高调速精度和响应速度等方面进行研究和改进以满足更高性能的应用需求。
【资源下载】下载地址如下1546:https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
#define uint unsigned int
sbit key2=P2^0; //启动或者停止信号
sbit key1=P2^1; //调速信号
sbit CLOCK=P2^4; //时钟信号
sbit ST=P2^5; //start开始计数信号
sbit EOC=P2^6; //0809的EOC和单片机P2^6相连
sbit OE=P2^7; //0809的OE脚和单片机P2^7相连
sbit PWM=P2^3; //PWM输出且接示波器
uint temp; //定义无符号整形模拟量
uchar start; //定义指针指向start
void keyscan();
void delay(uint z);
void main()
{
P3=0;P0=0xff; //设置串口工作方式
TMOD=0x02; //设置定时器计数模式
TH0=0x01; //设置单片机高8位工作方式
TL0=0X00; //设置单片机低8位工作方式
IE=0x82; //单片机允许开中断
TR0=1; //定时器计数器启动
start=0; //指针
while(1)
{
keyscan();
while(start)
{
ST=0;ST=1;ST=0; //启动ADC0809
while(!EOC); //查询EOC是否为1;
OE=1;
temp=P1; //读取A/D转化的结果
OE=0;
PWM=1; //PWM输出高电平
keyscan();
delay(temp); //正脉冲宽度
PWM=0; //PWM输出低电平
keyscan();
delay(255-temp); //低脉冲宽度
}
}
}
void keyscan()
{
key2=1; //P3^2脚置1 启停
key1=1; //P3^1脚置1 调速