图4 驱动部分硬件电路
L298n的输入输出关系如表1所示,使能控制端ENA接AT89S52的P3.2口,当该端口为高电平时,通过PWM信号输入端IN1和IN2能够实现对电机顺时针与逆时针的控制。L298n的输入输出关系如表1所示。
表1 L298n的输入输出关系
ENA IN1 IN2 电机运行情况
H H L 顺时针
H L H 逆时针
H IN1 IN2 快速停止
L X X 停止
现在对其基本工作原理做简单的介绍:上面已经说过IN1和IN2高低电平配合来控制电机大的顺时针及逆时针的转向。对IN1和IN2进行高频PWM调制输入。不同的占空比下的PWM信号使得电机得到不同的供电电压,相应的得到不同的电机转速。得到不同占空比的PWM信号需要通过软件设计得到。下面在软件部分作具体介绍 。
2.4 显示模块
显示模块选用的是LCD1602液晶显示器。在Proteus中的元器件如图5所示。
图5 LCD1602实物图
在protel99se中制作的封装图如图6所示。
图6 显示模块硬件电路
2.5 测速模块
如图7所示为测速模块硬件电路图。无法直接得到电机的转速。理论上是先将电机的转速转化为一种电量来进行测量,如电压、电流等。可以使用一对霍尔传感器测量 。具体方法是,将霍尔传感器的一只固定在转轮的一侧,另一只粘在转轮上。电机每转动一圈,霍尔传感器会发出一个脉冲信号。信号进入单片机外部中断0,单片机工作在内部定时器工作方式0对周期信号进行内部记数。通过单片机来测量其频率,来计算出转速 。调用显示函数在显示器上显示。霍尔传感器A1104接上拉电阻产生的信号可直接送入单片机。适合本设计的需要。测速模块的电路图如下:
图7 测速模块硬件电路图
2.6 输入模块
本系统的输入模块如图8所示。这五个按钮分别控制着电机的启动、关闭、转动方向、减速、加速。当按键按下时,单片机接收到的电平信号是0。然后读取行引脚的电平信号,由此判断哪一个键被按下 。电机运动做相应的变化。
图8 键盘输入硬件电路图
2.7 系统整体硬件电路图
系统整体硬件电路图如图9所示。该硬件电路图根据硬件原理框图将各个模块的硬件电路连接到一起组成能够实现预想功能的整体硬件电路图,配合下面的软件设计将使得对电机的控制得到实现 。
图9 系统整体硬件电路图
3. 系统软件设计
3.1 单片机端口
该系统采用C语言编程,通过KEIL软件生成HEX文件加载到AT89S52,通过AT89S52来控制各个模块实现驱动模块、键盘输入模块、显示模块的相关功能 。各个模块与AT89S52单片机的端口连接情况如表2所示。
表2 单片机资源
端口 功能 端口 功能
P3.0/P3.1/P3.2 驱动模块 TO(P3.4) 接脉冲信号
P2.0-p2.4 输入模块 T1(P3.5) RS
P1.0-p1.7/p3.5-3.7 显示模块
3.2 系统软件主函数
系统主函数流程图如图10所示。在这个设计中采用的是5个按钮的输入模块。这5个按键依次控制着直流电机的启动、关闭、转向、加速和减速。
图10 系统主函数流程图
3.3 LCD显示子函数
程序显示子函数流程图如图11所示。本设计使用的LCD1602.下面对于显示子函数做出大致流程图。当此函数被调用时,首先清除显示RAM。显示指针指向第一行,等待着数据的传递。不同的信息通过调整指针的指向在不同的显示区域显示,这在程序中会定义。显示结束,则程序停止。显示不结束则循环上面显示流程。 AT89S52单片机直流电机控制系统设计+仿真图(4):http://www.751com.cn/zidonghua/lunwen_501.html