基于单片机的直流电机转速控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计目标和性能指标
设计任务
完成一个基于单片机的直流电机转速控制系统设计,要求设计的转速控制系统完成以下功能:
1)按键设定并显示转速,实时显示实际转速;
2)按键控制电机起停、正反转;
3)PWM转速闭环控制;
4)PID算法控制。
性能指标
1.转速调节范围:1500转/分--3000转/分
2.测速误差<10%
二、设计方案
本设计以STC12C5A16S2单片机为核心,完成转速控制的设计。硬件系统包括单片机控制模块、按键模块、传感器模块、驱动模块、显示模块;软件部分由主函数控制模块、定时中断和外部中断模块、键盘部分、PID控制转速模块、LCD初始化模块、LED 指示模块等组成,软件编写由Keil C51完成。设计原理是根据LCD显示原理、按键描显示原理、单片机的定时中断原理、外部中断将霍尔传感器所检测的脉冲进行计数原理。设计了一个可以控制电机的启动和停止,显示当前转速显示,设定转速,通过PID算法计算控制得道相应的PWM,然后改变PWM的值实现对电机的控制。
三个独立按键中Mode键进行模式切换,UP、DN键可以对速度、PID参数进行修改。此外,为方便显示还加了数码管和LED灯做指示。在“实时速度显示”模块中,利用外部中断0对霍尔元件脉冲记数,输出送到单片机,在定时器0下对信号进行周期刷新,调用计算公式算出转速,在LCD上显示实时速度;在转速控制中通过PID算法计算控制得道相应的PWM,然后改变PWM的值实现对电机的控制。
其系统组成结构图如1.1所示:
三、系统硬件设计
单片机的最小系统
单片机是一个复杂的同步时序电路。主要包含两部分:时钟电路和复位电路。时钟电路用于产生单片机工作所需要的时钟信号。复位电路是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态。
单片机最小系统为转速控制的控制中心,包括一块STC12C5A16S2芯片、复位部分、晶振时间频率控制部分和电源部分。复位部分采用外部复位电路,接在单片机的REST 引脚,晶振采用频率为11.0592MHZ和15pF电容,接18、19引脚。电路如图2.1所示:
按键电路设计
本系统采用独立键盘,实现模块切换和一些参数设置。其中MODE键进行模式选择,UP和DN键对参数进行加或者减,它们分别接P20—P22。电路如图2.2所示:
LED指示灯电路设计
设计中利用了四个发光二极管分别接接P34、P35、P36、P37。当有低电平0来时,相应的发光二极管亮,指示相应的模式。当D1指示灯亮时,表示电机正转;当指示灯熄灭时,表示电机反转。D2、D3、D4指示灯对应于LCD的使用。电路如图2.3所示:
LCD显示屏电路设计
JM12864M-2汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。在设计中,采用的是串行数据传送。串行连接时序图如图2.4所示。
串行数据传送共分三个字节完成:
第一字节:串口控制—格式11111ABC。A为数据传送方向控制:H表示数据从LCD
到MCU,L表示数据从MCU到LCD;B为数据类型选择:H表示数据是显示数据,L 表示数据是控制指令;C固定为0
第二字节:(并行)8位数据的高4位—格式DDDD0000
第三字节:(并行)8位数据的低4位—格式0000DDDD
数码管显示电路设计
数码管主要是用于数字的显示。数码管有共阴和共阳的区分。四位数码管循环电路是由1K的电阻、IN4148二极管和数码管组成,电源+5V通过560的电阻直接给数码管的7个段位供电,P0.0-P0.7对应了两个接数码管的A,B,C,D,E,F,G和小数点位,P2.4,P2.5,P2.6,P2.7接位选码。数码管电路图见图3.2。
电机驱动模块设计
电机驱动采用三极管构成的“桥式电机驱动”,将单片机端口输出的信号放大,用于驱动电机转动。当控制端1、2同为高电平或低电平时,电机两段电平一致,电机停止转动。当控制端1为高,2为低时,电机正转,反之电机反转。电机驱动电路图如图所示。
转速检测及控制模块设计
转速检测通过检测在电机转盘上的磁钢对霍尔传感器产生得脉冲计数,从而算出电机的转速。霍尔传感器的原理是当磁钢靠近霍尔传感器时引起磁场变换,利用磁场对垂直加载的电流产生的偏向作用(电磁感应),使正交方向的极板产生电势差,通过放大等处理得到开关量的信号变化。霍尔传感器测转速的电路图如图所示。
四、系统软件设计
为了增强程序的可读性,设计时选用得分模块编程。根据系统功能的描述,主要分为以下几个模块:主函数模块,系统参数初始化模块,LCD初始化、显示模块,按键识键和数据处理模块,中断模块和PWM控制模块。
主程序设计
主程序的设计主要是完成各种模块初始化以及函数的调用。如系统的初始化、LCD 初始化和定时器的初始化,然后根据按键判断,没有按键按下的时候,LCD显示初始设置值,当有按键按下的时候,则执行按键所对应的功能,然后进一步在LCD上显示出来,通过LED指示灯和数码管指示相应的模式。
LCD显示模块设计
为了节省I/O口的使用,选用串行数据传送的方式。在LCD显示字程序中,要先对其初始化,进行命令、数据发送和汉字、字母显示的设置,然后根据按键的输入,在LCD上输出相应内容。LCD显示流程图如图所示。
LED灯和数码管指示
程序中用了一个Led灯的亮灭指示电机的正转/反转。利用一位数码管的显示指示模式的切换,这样可以直观的观察工作状态。由于该程序简单,因此直接将该段程序嵌入按键程序中。
按键程序模块
接通电源,判断是否有按键,在Mode键下进行模式选择,模式1为“电机正反转设置”、模式2为“转速的设置”、模式3、4、5为“手动控制转速”、模式4为“PID 自动控制转速”;UP和DN进行参数修改。按键扫描的流程图如3.6所示:
PID计算程序
微机化控制系统当中控制算法的占有十分重要部分,整个控制系统的主要功能是由控制算法来实现的。目前世界上所应用控制算法有很多种。根据偏差的比例、微积分进行的系统控制,被称作PID控制。经过无数实践证明和理论分析都表明,PID控制能够满足绝大多数的工业对象的控制要求,目前PID控制仍是应用最广泛的控制算法之一。如下图4.3所示,该图是PID系统经典原理图,是一种典型的闭环控制。