本研究设计并实现了基于51单片机的直流电机PWM控制系统。通过硬件设计和嵌入式软件开发,实现了对直流电机的精确控制,包括速度的调节、正反转和急停功能。系统主要由AT89C52单片机控制模块、L298电机驱动模块、LED数码管显示模块和独立键盘控制模块组成。通过调节AT89C52单片机输出的PWM信号的占空比,实现了对电机转速的精确控制,提高了能效和响应速度。研究结果表明,该系统在小型电机控制方面具有良好的可行性和可靠性,为工业自动化和家用电器等领域提供了一种低成本、高性能的解决方案。
关键词:AT89C52单片机,PWM控制,直流电机,电机驱动
目录
随着现代工业的快速发展,直流电机因其调速性能好、控制方便、启动力矩大等优点在工业自动化、家用电器、汽车电子和机器人等领域得到广泛应用。传统的直流电机控制方法包括电阻调速、电压调速和串联/并联电阻调速等,虽然这些方法简单易行,但难以实现精确的调速和高效的能量利用。
为了解决传统方法的局限性,PWM(脉冲宽度调制)技术应运而生。PWM技术通过控制脉冲信号的占空比,实现对电机的精确控制,可以调节电机的转速和方向,同时有效地减少了能量损耗。基于51单片机的PWM控制系统由于其低成本、易实现和高可靠性,在小型和中型电机控制应用中具有广泛的应用前景。
在这样的控制系统中,通常使用基于51单片机的PWM生成器模块,结合外部电路驱动电机。通过调节PWM的占空比,可以实现对电机速度的精确控制,从而满足不同工业和家用电器应用的需求。此外,基于51单片机的PWM控制系统通常还具有较高的抗干扰能力和稳定性,适合应对工业环境中的各种电磁干扰和振动
近年来,国内外关于基于51单片机的PWM控制技术和直流电机控制的研究成果丰硕。国外在这方面起步较早,技术相对成熟,主要集中在提高PWM信号的精度和响应速度方面。
国内的研究则更多侧重于应用层面的创新,特别是在工业自动化和智能家居领域,取得了一系列突破性进展。例如,来自江苏苏州市电子信息技师学院尹冬梅教授,设计并实现了基于单片机控制的PWM直流电机调速系统。该系统利用MCS-51系列89C51单片机,通过软件实现PWM波形输出,实现了电机的精确速度控制和正反转功能。通过继电器和9012型三极管驱动电路,系统不仅实现了启停功能,尹冬梅在硬件和软件设计上的工作,为解决工业控制和家用电机精确控制需求提供了一种成本效益高、操作简便的解决方案[1];同时,广东省清远市技师学院的陈永峰在其关于基于单片机的直流电机控制系统的研究中,展示了先进技术在工业应用中的重要性。通过结合霍尔传感器和单片机,实现了对直流电机转速的精确测量和自动化控制。该系统利用霍尔传感器测量电机的转速,并通过单片机实时处理数据,调节D/A转换器输出的电压,从而精确控制电机的转速和运行方向[2]。
本次课程设计旨在设计和实现基于AT89C52单片机的直流电机PWM控制系统。该系统结合硬件设计和软件开发,利用AT89C52单片机的定时器、I/O端口和外部中断功能,实现对直流电机的精确控制。硬件部分包括电机驱动电路(使用L298驱动芯片)、键盘输入模块(用于控制电机的启停、正反转和急停)、以及LED数码显示模块(显示PWM脉冲宽度调制的占空比)。软件方面,通过嵌入式C语言编程实现PWM信号的生成和调节,处理电机的加速、减速逻辑,以及响应用户输入的中断控制指令。整个系统设计旨在实现电机运行的智能化控制,提升系统的稳定性和响应速度,以满足工业自动化等领域对高效电机控制的需求。
这项研究旨在设计和实现一个基于51单片机的PWM控制直流电机正反转系统,主要目标是验证其在控制小型电机中的可行性和可靠性。通过实验和测试,希望证明该系统能够提供低成本、高性能的解决方案,适用于各种小型电机控制需求。此外,研究还将探索如何将该系统扩展到相关领域的应用,为未来的研究和工程应用提供实用的参考和指导。
①采用51单片机实现PWM控制,简化硬件电路设计。
②引入L298电机驱动芯片,实现电机的高效驱动和精确控制。
③设计人机交互界面,通过按键实现PWM值和电机方向的实时控制。
④使用四位七段数码管显示当前PWM值和电机状态,提高系统的可操作性和用户体验。
直流电机PWM控制系统的主要功能包括:实现对直流电机的加速、减速以及电机的正转、反转和急停,并且可以调整电机的转速,能够很方便的实现电机的智能控制。
主体电路:即直流电机PWM控制模块。这部分电路主要由AT89C52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。其间是通过AT89C52单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。该直流电机PWM控制系统由以下电路模块组成:
设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速以及电机的正转、反转和急停控制。
设计控制部分:主要由AT89C52单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。
设计显示部分: LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。
载两端的电压,从而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,比如:电机调PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负速、温度控制、压力控制等等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”[3]。
如下图所示:
图2.1 PWM信号的占空比
设电机始终接通电源时,电机转速最大为Vmax,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D,其中Va指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。
2.2.2PWM调速方法
基于单片机类由软件来实现PWM:在PWM调速系统中占空比D是一个重要参数在电源电压Ud不变的情况下,电枢端电压的平均值取决于占空比D的大小,改变D的值可以改变电枢端电压的平均值从而达到调速的目的。
2.2.3PWM实现方式
采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us,并且它得设计非常简洁。
第三章 系统硬件设计
3.1硬件模块组成
(1)单片机控制模块
(2)L298电机驱动模块
(3)LED显示模块
(4)独立键盘控制模块
3.2 单片机整个控制模块
图3.1 单片机整个控制模块
这里利用定时计数器让单片机P2口的P2.6、P2.7引脚输出占空比不同的方波,然后经驱动芯片L298放大后控制直流电机。驱动芯片的输入电压是两引脚的电压差,在调速时一根引脚线为低电平,另一个引脚产生调速方波,这样两个引脚的电压差就可通过控制其中一个引脚来控制。当需要改变电机转动方向时,两个引脚的输出相反。
定时计数器若干时间(1us)中断一次,就使P2.6或P2.7产生一个高电平或低电平。直流电机的速度分成100个等级,因此一个周期就有100个脉冲,周期为一百个脉冲的时间,速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大,加在电机两端的电压越大,电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比[4]。
3.3AT89C52模块
3.3.1AT89C52主要性能
AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案[5]。
3.3.2AT89C52各引脚功能介绍
图3.2 AT89C52
· VCC:接+5V电源正端。
· VSS:接地端。
· XTAL1:连接到系统时钟的反相放大器输入端。
· XTAL2:连接到系统时钟的反相放大器输出端。
· RESET:重置引脚,高电平动作,用于复位芯片。
· EA/Vpp:当接低电平时,表示使用外部程序存储器;接高电平时,使用内部程序存储器。
· ALE/PROG:地址锁存使能信号,用于地址锁存器的控制,也可用于外部编程。
· PSEN:程序存储器使能信号,用于选择外部程序存储器。
· PORT0、PORT1、PORT2、PORT3:分别为四个I/O端口,用于数据输入输出和其他功能。
· RST:复位输入,用于将芯片复位到已知状态。
· XTAL1和XTAL2:连接外部晶振以提供系统时钟。
3.4L298电机驱动模块
3.4.1L298电机驱动简介
L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。
图3.3 L298内部的原理图
3.4.2 L298引脚符号及功能
引 脚 | 功 能 |
SENSA、SENSB | 分别为两个H桥的电流反馈脚,不用时可以直接接地 |
ENA 、ENB | 使能端,输入PWM信号 |
IN1、IN2、IN3、IN4 | 输入端,TTL逻辑电平信号 |
OUT1、OUT2、OUT3、OUT4 | 输出端,与对应输入端同逻辑 |
VCC | 逻辑控制电源,4.5~7V |
VSS | 电机驱动电源,最小值需比输入的低电平电压高 |
GND | 接地 |
表3.1 L298引脚符号及功能
3.4.3L298的逻辑功能
IN1 | IN2 | ENA | 电机状态 |
X | X | 0 | 停止 |
1 | 0 | 1 | 顺时针 |
0 | 1 | 1 | 逆时针 |
0 | 0 | 0 | 停止 |
1 | 1 | 0 | 停止 |
表3.2 L298的逻辑功能
当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相 同时,电机快速停止。当使能端为低电平时,电动机停止转动。
3.5LED数码管显示
3.5.1LED七段数码管的结构
共阴极 共阳极 管脚图
图3.3 LED七段数码管
其中:图(a)为共阴极结构,8断发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管,则对应的阳极端接高电平。图(b)为共阳极结构,8端发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源。要使哪根发光二极管,则对应的阴极端接地。其中7段发光二极管构成7笔的字形“8”,1根发光二极管构成小数点。图“c”为引脚图,从a-g引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的7(或8)位二极管编制称为字段码。不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码。
3.5.2LED数码管和单片机的连接
图3.4 LED数码管的连接
系统通过段选口向特定LED发送字型码,随后选通该LED并维持一段延时时间。随后,系统继续选通下一位LED,直至所有位均完成扫描。
显示模块由一个四位七段数码管构成,其主要功能在于实时显示当前的PWM值以及电机的正反转状态。在硬件连接上,数码管的段选引脚(包括A、B、C、D、E、F、G、DP)与单片机的P0口相连,而位选引脚则与单片机的P2口相连。
数码管显示器采用动态扫描的方式实现信息的展示。在此过程中,P0口负责控制段选操作,而P2口则负责控制位选操作。单片机通过快速轮询各个位选引脚,依次点亮每一位数码管,从而成功展示四位数的PWM值。这种显示方式不仅高效,而且能够确保信息的准确性与实时性。
图3.5 LED工作的流程图
3.6独立式键盘控制模块
独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下
图3.6 独立式键盘控制模块
3.6.1独立式键盘与单片机的链接
按键输入模块用于用户输入,控制PWM值的增加、减少,以及电机的正转、反转和停止:
PWM增1:连接到P1.0引脚,用于增加PWM值。
PWM减1:连接到P1.1引脚,用于减少PWM值。
正反转:连接到P1.2引脚,用于控制电机的正反转。
停止:连接到P1.3引脚,用于停止电机。
按键通过上拉电阻连接到单片机的P3口,引脚状态变化时,单片机检测到按键按下,执行相应的控制逻辑。
图3.7 独立式键盘
第四章 系统软件设计
采用软件方式直接对AT89C52单片机进行编程以实现PWM信号的输出,相较于硬件实现PWM信号的生成,这种方法的显著优势在于其成本更为低廉,对硬件设备的依赖性更低,且在应用过程中所受到的限制条件相对较少[6]。此外,这种方法在实施起来也更为便捷,不需要复杂的硬件电路支持,只需通过编写合理的程序即可实现。其具体的流程图设计如下所示,该流程图详细描绘了从初始化设置到PWM信号输出的整个过程,每一步骤都清晰可见,确保了操作的准确性和稳定性。
图4.1 流程图
void init(void)
功能:初始化系统的硬件和软件环境。
包括配置定时器、使能中断、初始化数码管和电机控制引脚等。
图4.2 初始化模块
void disp(void)
功能:更新数码管显示当前设定的转速和方向。
根据全局变量 W(转速)和 A(方向)更新数码管的显示内容。
图4.3 数码管显示模块
void timer0() interrupt 1
功能:定时器0中断处理函数,用于更新数码管显示和控制电机状态。
每隔一定时间(约1ms)触发一次,更新时间计数器 T,并根据 W 和 A 控制电机引脚输出状态。
图4.4 定时器中断处理模块
void key(void)
功能:检测按键状态并执行相应操作。
监测按键 k1、k2、k3、k4 的状态,根据按键操作更新全局变量 W 和 A。
每次按键操作结束后等待按键释放,避免连续触发问题。
图4.5 按键检测模块
void main(void)
功能:主函数,控制整体流程。
在 main 函数中初始化系统、进入主循环,不断检测按键状态并调用相应的功能模块。
根据 k 控制电机的工作状态(正向或反向)。
图4.6 主控制模块
void delayms(uint t)
功能:提供毫秒级延时功能。
在按键处理和数码管刷新时使用,确保稳定的按键检测和数码管显示效果。
图4.7 延时模块
①初始化模块在系统启动时调用,配置硬件环境。
②定时器中断处理模块周期性地触发,更新数码管显示和电机状态。
③按键检测模块由主循环 main 调用,根据按键状态更新全局变量。
④数码管显示模块在定时器中断和按键操作时调用,更新数码管显示内容。
⑤主控制模块负责整体流程的控制和调度,确保各个模块协调工作。
第五章 实验结果与分析
5.1实验结果
经过实验验证,本设计的直流电机PWM控制系统表现良好,实现了以下功能:
- PWM控制精度:通过调节独立键盘输入模块控制的PWM值,成功实现了电机转速的精确调节。
图5.1 电机反转脉宽
- 电机正反转控制:根据独立键盘控制模块输入的指令,实现了电机的正反转功能。
图5.2 电机正反转控制
- 急停功能:按下停止键,电机能够迅速停止转动,确保了操作的安全性。
图5.3 电机急停功能
- 数码管显示功能:LED数码管能够实时显示当前的PWM值和电机的运行状态,用户可以清晰地了解系统工作状态。
5.2 实验分析
根据实验结果分析,本设计的直流电机PWM控制系统具有以下优点:
- 精确性高:PWM控制精度高,能够满足工业自动化和家用电器领域对电机精确控制的需求。
- 可靠性强:系统稳定性好,电机启动和停止响应迅速,操作安全可靠。
- 操作简便:通过独立键盘控制模块,用户操作方便,能够实时调节和控制电机运行状态。
综上所述,该直流电机PWM控制系统在小型电机控制方面表现出良好的可行性和实用性,为工业自动化和家用电器领域提供了一种低成本、高性能的解决方案。
时光飞逝,大学生活过得比我想象中要快得多,转眼间我的大学的三年级的学习生涯已近尾声。这一年的时光非常短暂而充实,有过困境低谷,有过沮丧灰心,然而,所有的艰难困苦都在柳暗花明、船到桥头时破茧成蝶,因为有艰难坎坷,才有成长和收获,这一切都是有意义的。在本次设计的最后,我想对给予我帮助的老师、同学及母校表示感谢。
首先,感谢我的授课教师。。教师。在我的大三的一整个学年中,无论是。。教师的《单片机与接口技术》课程,还是《计算机系统结构》课程,课堂氛围都是轻松愉快的。我令影响最深刻的是,何勇教师总是会在授课的同时普及当下流行的技术,并不会让课程停留在过时的内容上,这对我对单片机技术的理解起了很大帮助。在整个课程设计过程中,何勇教师在课题的选定和研究方向上提供了耐心细致的帮助。在我的设计方向出现了错误时,何老师给予了耐心的解释与指导,使本次课程设计得以顺利完成,再次感谢,祝身体健康,工作顺利!
其次,感谢我的同窗同学们。在整个学习和设计过程中,我们相互交流,分享经验和心得,提供了许多有益的意见和建议。
再次,感谢母校贵州大学提供的实验设备和良好的学习环境,为我的学习和研究提供了强有力的支持。
- 尹冬梅. 基于单片机控制的PWM直流电机调速系统设计[J]. 苏州市电子信息技师学院, 江苏苏州, 215008, 2015
- 陈永峰. 利用单片机来控制直流电机正反转系统的探讨[J].广东省清远市技师学院 广东省清远市 511517
[3]田云,史洁,基于51单片机的直流电机调速的方法[J],鸡西大学学报,2010(04)。
[4]杨春旭, 林若波, 彭燕标. 基于单片机控制的直流电机调速系统的设计. 齐齐哈尔大学学报(自然科学版), 2011, (03)
[5]唐娣. 基于单片机的直流电机PWM控制系统改进. 珠海市技师学院, 2024.
[6]高志伟. 基于单片机的直流电机PWM控制系统改进[J]. 电子技术应用, 2021, (1): 70-74. DOI: 10.19850/j.cnki.2096-4706.2021.01.012.