设计直流伺服电机控制系统。控制功能需要实现电机的启动、停止控制、正转、反转、加速、减速六种功能。为了实现人机交互,需要按钮和数码管。
具体要求如下:K0为启停控制,K1为正转,K2为反转; K3加速,K4减速,用三个LED显示状态:正转时红灯亮,后退时黄灯亮,不旋转时绿灯亮。明亮的。并采用4位LED数码管显示电机转速。
需求分析:
按钮K1用于控制电机反转。如果电机处于停止或正转状态,按下k1,电机开始反转;如果电机处于反转状态,则电机不响应按键命令。
按钮K2用于控制电机正转。如果电机处于停止或反转状态,按下k2,电机开始正转;如果电机正转,则电机不响应按键命令。
按钮K3用于控制电机的加速度。电机运行时,如果电机尚未达到最大速度,按下按钮K3,电机将加速。每按下一次,电机就会加速一拍。如果需要继续加速,则需要再按一下按钮K3,当电机达到最高速度时,电机将保持最高速度运行,不再响应按键指令。
按钮K4用于控制电机的减速度。当电机处于运行状态时,如果电机未达到最低转速,则处于停止状态。当按下按钮K4 时,电机将减速。每按一次,电机就会减速一拍。如果需要继续减速,则需要多次按下按钮K4。当电机达到最低速度,即电机处于停止状态时,电机将保持停止状态,不再响应按键命令。
为了知道电机是否按照控制要求工作,需要知道电机的转速。采用4位数码管来显示。最高位显示旋转方向。正转时显示“0”,反转时显示“-”。最后三位数字用于显示速度的数值。
另外还设置了三个发光二极管来显示电机的运行状态。电机停止时绿灯亮,电机正转时红灯亮,电机反转时黄灯亮。
2、控制方案设计
由于直流电机的工作电压和电流与控制电路的电压和电流不匹配,因此需要设计接口电路,将控制电路的指令转换为电机的工作信号。该接口电路称为直流电机驱动电路。直流电机驱动电路有多种不同的设计方案。这里重点讨论由分立元件组成的驱动电路和由集成芯片组成的驱动电路。
2.1 使用分立元件构成直流电机驱动电路
晶体管和电阻器等分立元件用于构成直流电机的全桥驱动电路。由于电机的工作电流较大,三极管的电流放大能力有限,因此采用达林顿全桥(H桥)驱动电路来控制电机,以满足电机运行的需要。如图1所示。图中Q1Q4为功率晶体管,其中Q1和Q2构成桥臂,Q3和Q4构成桥臂。每个功率晶体管旁边都有一个续流二极管。当Q1、Q4导通时,直流电机的控制电流从A流向B,直流电机正转。当Q2、Q3导通时,直流电机的控制电流从B流向A,直流电机反向旋转。这样就可以通过Q1~Q4的控制来控制直流电机的转向。
图1 直流电机全桥控制原理图
这里使用的驱动芯片是L298,L298起到大电流的作用。 L298 有4 个输入、4 个输出和2 个使能端子。 L298组成的驱动电路如图2所示。
其工作原理为:L298芯片中IN1对应OU1,IN2对应OUT2,IN3对应OU3,IN4对应OUT4,使能端ENA对应IN1和IN2,使能端ENB对应IN3和IN4 。当使能端为高电平时,当IN1输入高电平、IN2输入低电平时,电机正转。当IN1输入低电平、IN2输入高电平时,电机反转。当IN1 和IN2 输入电压相等时,电机不旋转。如果使能端为低电平,则电机不受控制,处于停止状态。
图2 直流电机驱动电路图
L298的工作电压范围在7V50V之间,输出电流可达2A,可以满足直流电机的控制需要。
2.3.方案选择
上面给出的两种直流电机驱动方案都可以满足要求。现在让我们对它们进行分析和比较,以选择合适的解决方案。
由分立元件组成的直流电机驱动电路的优点是电路由分立元件组成。通过分析电路,可以直观地了解驱动电路的工作原理,对理论学习很有帮助。其缺点是:电路过于复杂,制作实物时容易出错。另一方面,分立元件过多,其可靠性难以保证。
采用集成芯片组成的直流电机驱动电路的优点是电路简单、元件减少、电路可靠性高、较容易生产实际产品。缺点是初学者很难了解该期的工作原理,只能简单使用。
通过以上分析,我决定采用集成芯片L298来构成直流电机驱动电路,实现起来比较容易。
2.4.总体方案设计
控制系统的核心控制芯片是AT89C51单片机。微控制器作为整个系统的大脑,协调各个部件的工作。首先,当按钮发出控制指令时,微控制器利用外部中断来采集控制指令,处理控制指令,然后输出信号来控制直流电机的驱动电路。同时,单片机需要计算直流电机的转速,并将电机的转速显示在数码管上。直流电机的调速是通过单片机控制输出PWM的占空比来实现的。为了提高单片机的工作效率,采用中断方式进行按键扫描。其原理框图如图3所示:
图3 控制系统原理框图
3.硬件电路设计
3.1 单片机最低工作系统
单片机的最小工作系统是指单片机正常工作的最低配置,包括电源、时钟电路、复位电路和51单片机。
(1)89C51
AT89C51是一款低电压、高性能的CMOS 8位微处理器,具有4K字节的FLASH字节存储器(FPEROM——Flash Programmable and Erasable Read Only Memory),俗称单片机。如图4所示。
图4AT89C51
(2)时钟电路
MCS-51单片机的时钟有两种工作模式:一种是内部振荡模式,利用单片机内部的振荡电路产生时钟信号。这样,单片机的时钟引脚就连接了石英晶体和振荡电容;另一种是第一种是外部振荡方式,将外部已有的时钟引入到单片机中。下面介绍一下比较常用的内振荡方式:
如图5所示,单片机内部有一个高增益反相放大器,构成振荡器。其输入端为XTAL1引脚,输出端为XTAL2引脚。它们分别是8051微控制器的引脚19和18。它们的频率范围为fOSC=0~12MHZ。
图5 内部振荡模式时钟电路图
(3) 复位电路
向单片机的复位引脚输入24个时钟周期以上的高电平,进行复位操作。在本次课程设计中,我使用了按钮重置。电路如图6所示。系统运行时,按下复位按钮,RST引脚会产生一段时间的高电平,使系统复位。这里使用了12MHZ的晶振和30pF的电容。
图6 按钮复位电路
3.2 数码管显示电路
LED数码管是由8段发光二极管a、b、c、d、e、f、g、h组成的“8”字型显示器件。 LED数码管分为共阳极和共阴极。如图7所示,如果每段的阳极连接在一起,就是共阳极LED。如果每段的阴极连接在一起,就是共阴极LED。在本课程中,我使用的数码管是共阴极的。
图7 LED数码管
这里使用了4位数码管,如图8所示。段选择端连接到单片机的P0口。由于P0口内部没有上拉电阻,处于高阻状态,无法正常输出高/低电平,所以这里需要上拉电阻。为了简化电路,这里使用了排阻电阻。数码管的位选择端连接单片机的P1.0~P1.3。当输出为低电平时,表示数码管被选中。
图8 数码管电路
3.3 直流电机驱动电路
直流电机的驱动电路由L298组成。 51单片机通过P1.5~P1.7端口控制L298的使能端口和输入端口,驱动芯片输出放大后的控制信号来控制电机运行。驱动电路如图9所示,图中添加的四个二极管是起保护作用的。
图9 直流电机驱动电路
3.4 按钮控制电路
单片机检测按钮的原理是:单片机的I/O口既可以作为输出,也可以作为输入。当检测按钮时,使用其输入功能。我们将按钮的一端接地,另一端连接到微控制器的I。 /O口连接时,一开始先给I/O口分配一个高电平,然后让单片机不断检测I/O口是否变成低电平。当按钮闭合时,相当于I/O端口通过按钮接地,变为低电平。程序一旦检测到I/O变为低电平,就表示按钮被按下,然后执行相应的指令。
这种按钮在按下和释放时会出现抖动。可以使用硬件或软件来消除抖动。为了节省成本,采用软件延迟的方法来消除抖动的影响。
为了提高单片机的工作效率,本设计通过与门将5个按钮连接到单片机的外部中断输入端口。当按下按钮时,微控制器停止正在执行的工作,转而执行按钮扫描程序,然后执行相应的指令。关键控制电路如图10所示:
图10 按钮控制电路
4.软件设计
4.1 主程序设计
当程序开始运行时,不断采集并显示直流电机的转速。流程图如图11所示:
图11 主程序流程图
4.2 定时器0控制PWM波形的产生
直流电机调速一般是利用PWM原理进行的。对于直流电机来说,如果加在电枢两端的电压是脉动电压,可以看出,当T不变时,改变t1和t2的宽度就会引起电压的变化。
但
式中, 为常数。
采用PWM调速原理,即通过改变占空比来改变施加在电机两端的电压,从而改变电机的转速。流程图如图12所示。
图12 PWM波形控制流程图
直流电机调节转速时,是通过改变变量num的值来实现的。加速时,num的值增大,TH0的初始值相应减小。即在一个周期内,高电平对应的时间延长,低电平的时间相应减少,速度提高。减速时,num的值减小,即TH0的初始值增大。一个周期内,高电平时间减少,低电平时间增加,速度降低。
4.3 按键扫描程序
当外部中断发生时,单片机进入外部中断程序,开始扫描按键。首先扫描KEY0键看是否按下了开始/停止键。如果按下该键,则执行启动/停止程序;如果不是,则判断KEY1。键来查看该键是否被按下。按下则执行正转程序;按下则执行正转程序。如果不判断KEY2键,则按下该键则执行相反的程序;如果没有,则检测KEY3键是否被按下。按下则执行加速程序;如果没有,则会检测到KEY4 键。若按下该键则执行减速程序,否则退出中断程序。按键显示程序流程图如图13所示。在该中断程序中,扫描按键并执行相应的指令。由于按键扫描程序放在外部中断程序中,单片机只有在收到外部中断请求时才会扫描按键。当没有按键按下时,无需浪费时间扫描按键,提高了CPU的效率。
图13 外部中断按键扫描程序
5. 仿真分析
5.1Proteus介绍
Proteus开发平台不仅能够进行PCB电路板的设计和生产,还具有交互式仿真测试的功能。 Proteus软件是目前最受用户欢迎的仿真软件。不仅可以完成单电路和混合电路的仿真和设计,而且与市场上常见的单片机系统良好兼容。完美完成了从设计原理图仿真分析代码调试功能测试PCB形成的完整流程。经过多年的发展和完善,现在在性能和功能上越来越值得用户的信赖。
5.2 软件模拟
这部分模拟主要是解决程序中的语法错误。由于程序代码较长,在编写过程中难免出现语法错误和函数参数类型错误。我选择使用keil4软件来编写程序。通过这个程序的仿真,我基本上可以解决这方面的错误,为下一步应用proteus做准备。软件模拟已准备就绪。仿真结果如图14所示:
图14 源程序仿真结果
从图中可以看出,程序没有语法错误,编译成功,并生成hex文件。该文件可以与proteus软件联合仿真,进一步检查程序的语法错误。
5.3 使用proteus软件联合仿真
首先在proteus软件中画出硬件电路,检查硬件电路是否满足要求。确认硬件功能正常后,加载编译源程序生成的hex文件,并在proteus软件中进行仿真。通过电路中各元件引脚显示的电平状态来检查软件逻辑是否存在问题。确认没有问题后,开始模拟过程。
点击左下角运行后,电机显示0速度,数码管也显示速度为0000,右下角显示电机状态的LED灯全部熄灭。如图15所示:
图15 开始运行
点击启停按钮,电机开始正转并保持一定的速度。数码管上显示速度为0209,右下角红灯亮,表示电机正转,如图16:
图16 点击启动停止按钮后的界面
点击反转按钮,电机开始反转并保持一定的速度。速度在数码管上显示为-209。右下角黄灯亮,表示电机反转,如图17:
图17 点击反向按钮后的界面
点击正转按钮,电机开始正转并保持一定的速度。数码管上显示速度为0209,右下角红灯亮,表示电机正转,如图18:
图18:单击前进按钮后的屏幕
点击加速按钮,电机开始正转并加速。数码管上显示速度为0220,右下角红灯亮,表示速度为0220。
机器处于正转状态,如图19所示:
图19 点击加速后的界面
按两次减速按钮,电机开始正转并减速。数码管上显示速度为0199,右下角红灯亮,表示电机正转,如图20:
图20:单击减速按钮两次后的屏幕
点击启停按钮,电机停止转动,数码管上显示转速为0000,右下角绿灯亮,表示电机处于停止状态,如图21所示:
图21 点击启动停止按钮后的界面
审稿编辑:唐子红