基于STC89C52单片机的直流电机角位移控制(自动控制课程设计)_第1页
基于STC89C52单片机的直流电机角位移控制(自动控制课程设计)_第2页
基于STC89C52单片机的直流电机角位移控制(自动控制课程设计)_第3页
基于STC89C52单片机的直流电机角位移控制(自动控制课程设计)_第4页
基于STC89C52单片机的直流电机角位移控制(自动控制课程设计)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、苏州大学电子信息学院 自动控制原理项目设计报告 项目名称:直流电机控制的角位移控制系统班级:姓名: 指导老师 : 学号:日期: 联系方式: 目录一、设计题目51.1 设计要求51.2 项目分析5二、系统方案62.1方案选择6三、系统硬件选择83.1 直流电机83.2主控制芯片方案的选择83.3显示模块的选择93.4电机的驱动模块的选择93.5稳压模块的选择93.6光栅103.7光电传感器10四、算法设计104.1 PID与PWM算法104.2 数字PID参数的确定13五、硬件电路设计与实现145.1单片机最小系统145.2系统显示模块155.3 直流电机驱动模块和稳压模块155.4 直流电机测

2、速模块165.5总体电路设计16六、系统软件设计166.1 软件流程图166.2 软件(见附录)18七、性能指标187.1误差分析18八、心得体会19九、附录19摘 要自动控制技术是20世纪发展最快、影响最大的技术之一,也是21世纪最重要的高技术之一。今天,技术、生产、军事、管理、生活等各个领域,都离不开自动控制技术。就定义而言,自动控制技术是控制论的技术实现应用,是通过具有一定控制功能的自动控制系统,来完成某种控制任务,保证某个过程按照预想进行,或者实现某个预设的目标。随着计算机技术的发展,控制技术走向了自动化的方向。随着计算机技术的日渐成熟,自动化控制技术与计算机的结合已经成为必然。本次实

3、验是基于STC89C52单片机的直流减速电机角度控制系统,运用PWM(脉冲宽度调制)方法控制电机,采用增量式光电编码器将转动角度转化为脉冲数进行角度测量,并反馈到单片机,单片机根据反馈信息利用PID算法发出控制命令。关键词:STC89C52、直流减速电机、光电编码器、PID算法、角位移AbstractAutomatic control technology is the fastest development in twentieth Century, one of the largest technologies, is the most important one of the high

4、technology in twenty-first Century. Today, all fields of technology, production, management, military and life, all cannot do without the automatic control technology. In terms of definition, the automatic control technology is the application of technology to realize the control theory, through a c

5、ertain control functions of automatic control system to complete a control task to ensure a process is carried out in accordance with the desired, or achieve a preset target. With the development of computer technology, control technology towards the direction of automation. With the development of

6、computer technology is becoming mature, combined with automatic control technology and computer has become inevitable.The experiment is based on STC89C52 MCU DC deceleration motor angle control system. The use of PWM (pulse width modulation) method is proposed to control motor. The incremental photo

7、electric encoder used the rotation angle is transformed into pulse number by the angle measurement and feedback to the MCU. MCU according to the feedback information using the PID algorithm to send control command.Keywords: STC89C52, dc gear motor, photoelectric encoder, PID algorithm, angular displ

8、acement一、设计题目1.1直流电机控制的角位移控制系统(Angle position control system with dc motor)设计一个角度控制系统,它能接受所期望的角度的输入指令,产生一个与输出要求完全一致的输出角度。1.2 项目分析根据设计要求可知,设计主要分为以下四部分:(1)输入角位移指令;(2)测量角位移;(3)闭环系统控制角位移;(4)显示角位移。二、系统方案2.1方案选择图1 系统框图具体方案:将减速直流电机的输出轴与光电编码器的轴连接,利用编码器进行角度测量,利用L293D驱动模块,采用PWM方法控制电压驱动电动机正反转,设计单片机控制板实现角度控制,控制

9、精度±1度,通过键盘进行角度设置,实际角度可以通过LCD1602实时显示。三、系统硬件选择3.1 直流电机直流电机是一种将电能转化为角位移或直线位移的执行机构。直流电动机包含三部分:固定的磁极、电枢、换向片和电刷。电流在通过电机转子上的线圈时产生洛伦磁力,当转子上的线圈与磁场平行时,线圈受到的磁场方向改变,而此时转子末端的电刷跟转换片交替接触,线圈上的电流方向改变,产生的洛伦磁力方向不变,电机能保持一个方向转动。改变电刷A、B上电源的极性,也就改变了电机转动的方向。这就是正转反转的原理。直流电动机利用电磁力定律产生力合转矩,利用电磁感应定律产生电势。我们通过PWM方法改变电压来调速,

10、从而达到位置控制的目的。在本次课程设计中所用是R140型直流电机。工作电压参数直流3V直流5V电机(不加齿轮箱)转速5000转/分电流80-100mA齿轮箱减速比256空载转速20转/分32转/分负载转速14转/分22转/分输出扭矩1kg·cm1.2kg·cm轮胎直径6.5cm6.5cm电流110-130mA120-140 mA重量50kg外形尺寸(mm)70*22*18噪音<65db表1 直流电机参数3.2主控制芯片方案的选择AT89C52 是美国ATMEL 公司生产的低电压,高性能CMOS8 位单片机,片内含4k bytes 的可反复擦写的只读程序存储器(PERO

11、M)和128 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产, 兼容标准MCS-51 指令系统,片内置通用8 位 央处理器(CPU)和Flash 存储单元,功能强大。 AT89C52 提供以下标准功能:4k 字节Flash 闪速存储器,128 字节内部RAM,32 个I O 口线,两个16 位定时计 数器,一个5 向量两级 断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作

12、。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。由于手头上有现成的52单片机开发板套件,所以本次设计中决定使用AT89C52作为主控制芯片。3.3显示模块的选择方案一:以4个8位LED数码管显示。使用该电路结构简单,程序较为简单;但是该电路显示内容有限,占用IO口资源较多。方案二:以LCD1602显示,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如

13、此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。本实验中我们选用LCD1602进行角度显示。3.4电机的驱动模块的选择用L293D进行驱动。L293D是ST公司生产的一种高电压,小电流电机驱动芯片。该芯片采用16引脚封装。主要特点是:工作电压可达36V:输出电流大,瞬间峰值可达2A,持续工作电流为1A。内含两个H桥高电压大电流全桥式驱动电路,可以用来驱动直流电动机和继电器线圈等感性负载;3.5稳压模块的选择LM7805是常用的三端稳压器,一般使用的是TO-220封装,能提供DC

14、5V的输出电压,应用范围广,内含过流和过载保护电路。带散热片时能持续提供1A的电流,如果使用外围器件,它还能提供不同的电压和电流。在这里我们用LM7805给驱动模块和光电编码器供电。3.6光栅光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。本实验选用360线光栅。系统精度能达到±1度。3.7光电传感器对射式光电开关由发射器和接收器组成,其工作原理是:通过发射器发出的光线直接进入接收器,当被检测物体经

15、过发射器和接收器之间阻断光线时,光电开关就产生开关信号。与反射式光电开关不同之处在于,前者是通过电-光-电的转换,而后者是通过介质完成。对射式光电开关的特点在于:可辨别不透明的反光物体,有效距离大,不易受干扰,高灵敏度,高解析,高亮度,低功耗,响应时间快,使用寿命长,无铅,广泛应用于:投币机,小家电,投币机,自动感应器,传真机,扫描仪等设备上面。四、算法设计4.1 PID算法根据设计要求本系统采用PID算法控制电机转动,以达到优化控制的效果。在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单

16、,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活P,I,D的参数,优化过程控制。以达到快速响应,精度要求。4.1.1 数字PID在DDC系统中,用计算机取代了模拟器件,控制规律的实现是由计算机软件来完成的。因此,系统中数字控制的设计,实际上是计算机算法的设计。由于计算机只能识别数字量,不能对连续的控制算式直接进行运算,故在计算机控制系统中,首先必须对控制规律进行离散化

17、的算法设计。为将模拟PID控制规律按式(1.2)离散化,我们把图1.1中、在第n次采样的数据分别用、表示,于是式(1.1)变为 : = (11)当采样周期T很小时可以用T近似代替,可用近似代替,“积分”用“求和”近似代替,即可作如下近似 (12) (13)这样,式(1.2)便可离散化以下差分方程 (14)上式中是偏差为零时的初值,上式中的第一项起比例控制作用,称为比例(P)项,即 (15)第二项起积分控制作用,称为积分(I)项即 (16)第三项起微分控制作用,称为微分(D)项即 (17)这三种作用可单独使用(微分作用一般不单独使用)或合并使用,常用的组合有:P控制: (18)PI控制: (19

18、) PD控制: (20)PID控制: (21)式(1.7)的输出量为全量输出,它对于被控对象的执行机构每次采样时刻应达到的位置。因此,式(1.7)又称为位置型PID算式。由(1.7)可看出,位置型控制算式不够方便,这是因为要累加偏差,不仅要占用较多的存储单元,而且不便于编写程序,为此对式(1.7)进行改进。根据式(1.7)不难看出u(n-1)的表达式,即 (22)将式(1.7)和式(1.15)相减,即得数字PID增量型控制算式为 (23) 从上式可得数字PID位置型控制算式为 (24)式中: 称为比例增益; 称为积分系数; 称为微分系数。数字PID位置型示意图和数字PID增量型示意图分别如图1

19、.2和1.3所示:图6 数字PID位置型控制示意图 图7 数字PID增量型控制示意图4.1.2 PWMPWM输出波形:电动机的电枢绕组两端的电压平均值U为:U =(t1×U)/(t1t2) =( t1×U)/T=D*U式中D为占空比,D= t/T。占空比D表示了在一个周期T里开关管导通的时间与周期的比值。D的变化范围为0D1。当电源电压U不变的情况下,输出电压的平均值U取决于占空比D的大小,改变D值也就改变了输出电压的平均值,从而达到控制电动机转速的目的,即实现PWM调速。在PWM调速时,占空比D是一个重要参数。改变占空比的方法有定宽调频法、调宽调频法和定频调宽法等。常用的

20、定频调宽法,同时改变t1和t2,但周期T(或频率)保持不变。4.2 数字PID参数的确定如何选择控制算法的参数,要根据具体过程的要求来考虑。一般来说,要求被控过程是稳定的,能迅速和准确地跟踪给定值的变化,超调量小,在不同干扰下系统输出应能保持在给定值,操作变量不宜过大,在系统和环境参数发生变化时控制应保持稳定。显然,要同时满足上述各项要求是很困难的,必须根据具体过程的要求,满足主要方面,并兼顾其它方面。PID调节器的参数整定方法有很多,但可归结为理论计算法和工程整定法两种。用理论计算法设计调节器的前提是能获得被控对象准确的数学模型,这在工业过程中一般较难做到。因此,实际用得较多的还是工程整定法

21、。这种方法最大优点就是整定参数时不依赖对象的数学模型,简单易行。当然,这是一种近似的方法,有时可能略嫌粗糙,但相当适用,可解决一般实际问题。五、硬件电路设计与实现5.1单片机最小系统单片机最小系统是整个系统的核心部分,它主要用于键盘输入控制、数据处理、实时采样分析系统参数及对各部分反馈环节进行调整。单片机最小系统包括电源电路、时钟电路等。在这次设计中采用了AT89C52芯片和12M高精度晶振,可以获得较为准确的时钟频率,如下图所示。图10 最小系统5.2系统显示模块图11 显示模块5.3 直流电机驱动模块和稳压模块L293D是专为驱动等感性负载继电器,电磁阀,直流双极步进和马达,也可以给其他高

22、电流/高电压提供电源负载,7805输出的5V电压给单片机最小系统供电并连接L293D的VCC端口。图12 驱动和稳压模块5.4 直流电机测速模块 图13 测速模块5.5总体电路设计图14 系统电路原理图六、系统软件设计6.1 软件流程图6.2 软件(见附录)七、性能指标实物图7.1误差分析目标值50100150200300500800100011001200实际值50100150201301500801100211021202目标值1300140015001600170018001900200030004000实际值130314031503160317041804190520043005400

23、5单位:°由数据可得:误差均值=2.4000°标准差=1.7592°误差原因分析:(1) 实验中使用光电编码器作为角度测量传感器,在电机转动过程中如果有抖动,可能会引起一些尖峰脉冲,导致单片机误计产生一定误差,这部分误差是会积累的,导致角位移增大时误差也在增大。(2) 电机在转动过程中存在一定惯性, PID参数设置的不是那么合理也会引起较大的误差,这就需要长时间的调整PID参数,尽可能减少误差。八、心得体会与建议 (1) 电子设计是一个相对比较枯燥的过程,需要很大耐心,要能够静下心来思考问题,这本身也是一个自我提升的过程。(2)在设计一个由多模块组成的系统时,必须

24、掌握每一个模块的工作原理与使用方法,尽可能避免由于操作失误造成器件损失。(3)在软件编程时需要注意引脚的调用,本实验中调用P3.4为光电编码器的脉冲输入引脚,但该引脚同时也是按键扫描时要用的引脚。(4)合理选择驱动模块,原本使用L296模块带动直流减速电机,实际搭建后发现L296模块输出仅0.5V,无法带动电机。(5)实验中选用了减速比为500:1的电机,实际操作时发现转动速度较慢,系统的执行时间较长,应选用转速较快的电机。(6)实验时应保持光栅盘水平或垂直,使之旋转稳定,防止产生毛刺,导致单片机误计产生误差。九、附录#include "reg52.h" #include

25、"intrins.h"#define uchar unsigned char#define uint unsigned intsbit en=P22; /电机使能管脚定义sbit in1=P21;sbit in2=P24;sbit k=P37; /确定键sbit jia5=P35;sbit jia10=P36;sbit rw = P11;sbit RS = P10; sbit LCDEN = P25;uint queding=1;int j=0;/ 附加的存储角度位,因为定时器只能记到65535int ct1=1;int ct2=0; int period=10; /存储方

26、波周期,单位为msuint key=10; /存储键值double t=1,kp=0.01,kt=0,kd=0; /PID调节参数double rate; /PWM占空比int curstate=1; /存储电机的工作状态 (=0表示不转,1表示正转,2表示反转)uint input=0; /预期输出int key15=0; /输入键值uint out=0; /实际输出int err3=0; /实际输出与预期输出的差值char outstr='0'char inputstr='0'void Int_To_Str(uint x,char *Str)int t;ch

27、ar *Ptr,Buf5;int i = 0;Ptr = Str;if(x < 10)/ 当整数小于10时,转化为"0x"的格式*Ptr + = '0'*Ptr + = x+0x30;while(x > 0)t = x % 10;x = x / 10;Bufi+ = t+0x30;/ 通过计算把数字转化成ASCII码形式i - ;for(;i >= 0;i -) / 将得到的字符串倒序*(Ptr+) = Bufi;*Ptr = '0'/基本延时函数void delayUs() _nop_();void delayxus(ui

28、nt x) uint i; for(i = x; i > 0; i-) _nop_(); void delayMs(int a) uint i, j; for(i = a; i > 0; i-) for(j = 100; j > 0; j-); /LCD相关函数void writeComm(uchar comm) RS = 0; P0 = comm; LCDEN = 1; delayUs(); LCDEN = 0; delayMs(1);/写数据:RS=1, RW=0;void writeData(uchar dat) RS = 1; P0 = dat; LCDEN = 1;

29、 delayUs(); LCDEN = 0; delayMs(1); void init() rw = 0; dula = wela = 0; writeComm(0x38); writeComm(0x0c); writeComm(0x06); writeComm(0x01); void writeString(uchar * str, uchar length) uchar i; for(i = 0; i < length; i+) writeData(stri); void writeString1(uchar * str) while(*str) writeData(*str);

30、str+; int state() /电机状态判断函数 if(ct1=1&&ct2=0) return 1; if(ct1=0&&ct2=1) return 2; if(ct1=0&&ct2=0) return 0; else return 3; /错误状态 void keyscan() while(queding) if(jia5=0) delayMs(100); if(jia5=0) input=input+5; if(jia10=0) delayMs(100); if(jia10=0) input=input+10; writeComm(0x80); writeString("aim : ", 10); Int_To_Str(input,inputstr); writeString1(inputstr); if(k=0) delayMs(10); if(k=0) queding=0; void timeropen() /开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论