《直流电机转速闭环控制课程设计(共19页).doc》由会员分享,可在线阅读,更多相关《直流电机转速闭环控制课程设计(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机控制技术课程设计报告设计课题: 直流电机转速闭环控制 (采用单片机教学实验系统) 班 级: 报 告 人: 指导教师: 完成日期: 2011 年 9 月 22 日重庆大学本科学生计算机控制技术基础课程设计任务书课程设计题目直流电机转速闭环控制(采用单片机教学实验系统)学院自动化学院专业自动化专业年级(1)已知参数和设计要求1)用单片机产生PWM方波调制直流电机以一定速率旋转,人为给一个速度漂移,霍尔元件测出速度并根据PID算法跟踪校正速度漂移。2)要求用LED或LCD时实显示电机速度。3)要求在10秒内PID算法纠正速率漂移。(2)实现方法采用单片机教学实验系统实
2、现 (限4人选做)学生应完成的工作:1)硬件设计:要求完成控制系统框图;绘制完整的控制系统电原理图;说明各功能模块的具体功能和参数;结合实验室现有的单片机教学实验系统进行系统组成,对整个系统的工作原理进行全面分析,论述其结构特点、工作原理、优、缺点和使用场合。分析和论述系统采用的主要单元的工作原理和特性。2)软件设计:要求合理分配系统资源,完成直流电机转速闭环控制的程序设计(如:系统初始化;主程序;A/D转换;D/A转换;标度变换;显示与键盘管理;控制算法处理;输出等)。3)对设计控制系统进行系统联调。4)编写课程设计报告:按统一论文格式、统一报告纸和报告的各要素【封面、任务书、目录、摘要、序
3、言、主要内容(包括设计总体思路、设计步骤、原理分析和相关知识的引用等)、总结、各组员心得体会、参考书及附录(包括系统框图、程序流程图、电原理图和程序原代码)】进行编写,字数要求不少于4000字,要求设计报告论理正确,逻辑性强,文理通顺,层次分明,表达确切。目前资料收集情况(含指定参考资料):计算机硬件技术基础实验教程 黄勤等编著 重庆大学出版社单片微型计算机机与接口技术 李群芳等编著 电子工业出版社计算机控制技术王建华等编著 高等教育出版社课程设计的工作计划:(1)2011年9月19日熟悉设计任务和要求。(2)2011年9月20日确定设计方案。(3)2011年9月21日硬件调试。(4)2011
4、年9月22日软件及系统调试。(5)2011年9月23日设计答辩。任务下达日期 2011年 9月 19 日完成日期 2011年 9 月 24日指导教师 (签名)学 生 (签名)说明:1、学院、专业、年级均填全称,如:光电工程学院、测控技术、2003。2、本表除签名外均可采用计算机打印。本表不够,可另附页,但应在页脚添加页码。摘要在运动控制系统中,电机转速控制占有至关重要的作用,其控制算法和手段有很多,模拟PID控制是最早发展起来的控制策略之一,长期以来形成了典型的结构,并且参数整定方便,能够满足一般控制的要求,但由于在模拟PID控制系统中,参数一旦整定好后,在整个控制过程中都是固定不变的,而在实
5、际中,由于现场的系统参数、温度等条件发生变化,使系统很难达到最佳的控制效果,因此采用模拟PID控制器难以获得满意的控制效果。随着计算机技术与智能控制理论的发展,数字PID技术渐渐发展起来,它不仅能够实现模拟PID所完成的控制任务,而且具备控制算法灵活、可靠性高等优点,应用面越来越广。本设计以上面提到的数字PID为基本控制算法,以SST89EE554RC单片机为控制核心,产生占空比受数字PID算法控制的PWM脉冲实现对直流电机转速的控制。同时利用霍尔传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。在系统中采数码管和44键盘作为人机交互界面,启动后可以通过
6、显示部件了解电机当前的转速。该系统控制简单,反应灵敏,具有很强的抗干扰能力。专心-专注-专业目 录前言一.总体设计方案二.硬件单元模块设计(1)单片机控制单元(2)直流电机驱动单元(3)基于霍尔传感器的测速模块(4)LED显示模块三.软件功能调试(1)主程序设计(2)PWM波软件软件设计(3)显示子程序(4)键盘处理子程序(5)定时处理程序(6)测速软件设计四.设计总结17五.参考文献17附录 17前言 在工业控制领域中,直流电机是常见的机电装置,以单片机为控制器对电机进行控制,运用串口通信技术实现电机的远程测控。通过采用周期测量法测量电机的转速,运用PWM技术实现对电机的驱动控制,为直流电机
7、的控制提供了一种低成本高精度的测控方案。在工业自动控制系统和各种智能产品中常常会用用电动机进行驱动、传动和控制,而现代智能控制系统中,对电机的控制要求越来越精确和迅速,对环境的适应要求越来越高。随着科技的发展,通过对电机的改造,出现了一些针对各种应用要求的电机,如伺服电机、步进电机、开关磁阻电机等非传统电机。但是在一些对位置控制要求不高的电机控制系统如传动控制系统中,传统电机如直流电机乃有很大的优势,而要对其进行精确而又迅速的控制,就需要复杂的控制系统。随着微电子和计算机的发展,数字控制系统应用越来越广泛,数字控制系统有控制精确,硬件实现简单,受环境影响小,功能复杂,系统修改简单,有很好的人机
8、交换界面等特点。总体设计概述单片机直流电机调速简介:单片机直流调速系统可实现对直流电动机的平滑调速。PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。本系统以SST89E554RC单片机为核心,通过单片机控制,C语言编程实现对直流电机的调速。系统控制方案的分析:本直流电机调速系统以单片机系统为依托,根据PW
9、M调速的基本原理,通过PI控制以直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速为依据,实现对直流电动机的平滑调速,并通过单片机控制速度的变化。本文所研究的直流电机调速系统主要是由硬件和软件两大部分组成。硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动对电机速度的有效控制。硬件部分硬件部分由电源模块、单片机控制单元、电机驱动电路、LED显示电路、霍尔传感器电路构成。键盘向单片机输入相应控制指令,由单片机通过P2.0与P2.1其中一口输出与转速相应
10、的PWM脉冲,另一口输出方波,根据方波测出转速,比较给定转速与实际转速得到差值再通过P控制来实现电动机转速的控制。电动机的运转状态通过LED显示出来。电动机所处速度显示。每次电动机启动后开始计时,停止时LED显示出本次运转所用时间,时间精确到0.1s。总体设计方案的硬件部分详细框图如图一所示数码管显示小键盘单片机直流电机及驱动单片机本次实验采用的是SST89E554RC单片机,键盘扫描及显示直流电机驱动电路基于霍尔传感器的测速电路 工作原理:霍尔开关集成电路中的信号放大器将霍尔元件产生的幅值随磁场强度变化的霍尔电压UH放大后再经信号变换器、驱动器进行整形、放大后输出幅值相等、频率变化的方波信号
11、。信号输出端每输出一个周期的方波,代表转过了一个齿。单位时间内输出的脉冲数N,因此可求出单位时间内的速度VNT。软件设计主程序设计主程序主程序是一个循环程序,其主要思路是,先设定好速度初始值,这个初始值与测速电路送来的值相比较得到一个误差值,然后用P算法输出控制系数给PWM发生电路改变波形的占空比,进而控制电机的转速。主程序流程图如下:开始结束调用控制算法子程序调用键盘处理子程序调用转速显示子程序调用pwm波调制子程序延时开定时器0初始化PWM波软件软件设计SST89E554RC提供了一个特殊的16位定时器,该定时器具有5个16位捕捉/比较模块。每个模块都可被编程工作于以下四种模式:上升和/或
12、下降沿捕捉,软件定时器,高输出(HSO)和脉冲宽度调制(PWM)。第五个模块除上述四种模块外还可以编程为看门狗定时器。 每个模块都有一个外部引脚,与P1口复用:模块0连接至P1.3(CEX0),模块1连接至P1.4(CEX1),模块0连接至P1.5(CEX2),模块1连接至P1.6(CEX3),模块1连接至P1.7(CEX4).其结构框图如下:PCA定时/计数器P1.5/CEX2P1.3/CEX0P1.4/CEX1P1.6/CEX3P1.7/CEX4模块1模块2模块3模块4模块0在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长
13、短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。设电机始终接通电源时,电机转速最大为Vmax,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D,其中Va指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。由上面的公式可见,当我们改变占空比D = t1 / T时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。本设计中采用软件延时方式对脉冲宽度进行控制 ,PWM模式被用于产生一个连续的占空比可调的方波信号。脉冲宽度调制通过比较PCA定时器的低字节(CL)和比较寄存器的低字节(
14、CCAPnL)产生8位PWM脉冲。当CL CCAPnL时,输出高电平。输出频率取决于PCA定时器的信号源。占空比由写入比较寄存器的高字节(CCAPnH)控制,计算如下:CCAPnH=256(1Duty cycle)其中CCAPnH为8位整型数,Duty cycle为百分数。键盘查询处理子程序: 由于只用到了三个按键,所以按键查询比较简单,只需要行信号一位送零即可,然后列信号读进来,与键值进行比较,即可知道是哪个键按下。延时延时否否关闭PWM输出PWM否延时是开始否否是是是是否是是Key自加1转速增大60判断2键是否按下判断2键是否按下转速减小60判断1键是否松开判断1键是否按下判断key是否为
15、奇判断0键是否松开判断0键是否按下显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i8;i+)方式对每位加上位选码,送到P0口并进行延时。送转速的十位数段选送十位数对应的位选送百位数对应的位选送转速的百位数段选送千位数对应的位选开始送转速的千位数段选送转速的个位数段选送个位数对应的位选测速软件设计 测速子程序:开始结束开定时器T0定时器T0初始化关定时器T0输出转速计算转速控制算法子程序:PI控制输出控制量否求得控制量是如果偏差为0对偏差进行累加求得转速偏差开始参考文献、单片机原理及应用
16、(清华大学出版社,黄勤主编,李楠副主编)、计算机硬件技术基础实验教程(重庆大学出版社,黄勤主编,高富强副主编)、微型计算机控制技术(机械工业出版社,黄勤主编,李楠副主编)、附录程序清单#include SST89x5x4.h #define uchar unsigned char#define uint unsigned int Ucharcode LK10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,; /段选码uchar LK14=0xfe,0xfd,0xfb,0xf7;/位选码sbit p1_0=P10;sbit p1_1=P11;
17、sbit p1_2=P12;sbit p1_5=P15;uchar key,V=0,pid;uchar pid_P=17;/比例系数uchar pid_I=13; /积分系数 int data z,counter;int data n,t;int speed=0;int set_speed=3000;/设定值int temp=128;sfr CCAPM4=0xde;sfr CCAP4H=0xFe;sfr CCON=0xD8;void delay(int k)/延时子程序1 int data i,j; for(i=0;ik;i+) for(;j121;j+) ; void delay2()/延时
18、子程序2 unsigned char i,j; for(i=0;i20;i+) for(j=0;j2;j+) ; void display(int num) /显示当前速度 p1_5=1; P0=LKnum/1000;P2=LK10;delay(10); P0=LK(num/100)%10;P2=LK11;delay(10); P0=LK(num%100)/10;P2=LK12;delay(10); P0=LKnum%10;P2=LK13;delay(10); void display0() /显示设定速度 uint i, num; p1_5=1;num=set_speed;for(i=0;i
19、100;i+) P0=LKnum/1000;P2=LK10;delay(100); P0=LK(num/100)%10;P2=LK11;delay(100); P0=LK(num%100)/10;P2=LK12;delay(100); P0=LKnum%10;P2=LK13;delay(100); void int0() interrupt 0 using 1/断INT1子程序t+;/脉冲加1void key_scan()/键盘扫描 p1_5=0; if(p1_0=0) delay(2); if(p1_0=0) while(p1_0=0); key+; if(key%2=0) CCON=0x0
20、0; else CCON=0x40; if(key%2=1) if(p1_1=0) delay(2); if(p1_1=0) while(p1_1=0); set_speed=set_speed+60;display0(); if(p1_2=0) delay(2); if(p1_2=0) while(p1_2=0); set_speed=set_speed-60; display0(); void pwm_out(unsigned char duty)/PWM输出 CCAP4H=duty;void PI_control( int set_s, int S)/PI控制子程序 int i; i=s
21、et_s-S; V=V+i; if(i=0) ; else temp=(S+i)/pid_P+V/pid_I; pwm_out(temp); void timer0(void) interrupt 1 using 2 /定时中断服务程序n+;TR0=0;/关定时器T0 TF0=0;TMOD=0x01;/T0定时,工作方式1TH0=0x3C; TL0=0xB0;TR0=1;/开定时器T0ET0=1;if(n=20)z=60*t;/计算每分钟的转速speed=z;t=0;n=0;pid=1; void main(void) CCAPM4=0x42; CCAP4H=0; CCON=0x00; EA=1;EX0=1;/开外部中断INT0IT0=1;TMOD=0x1;/T0定时,工作方式1TL0=0xB0;/高低位赋初值DTH0=0x3C;/定时50msTF0=0;/溢出标志位,为1溢出TR0=1;/开定时器T0ET0=1;display0(); while(1) pwm_out(temp);display(speed);key_scan();if(pid=1) pid=0; PI_control( set_speed, speed);
限制150内