《步进电机课程设计实验报告.doc》由会员分享,可在线阅读,更多相关《步进电机课程设计实验报告.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流步进电机课程设计实验报告.精品文档.指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学自 动 化 学 院计算机控制技术课程设计报告设计题目:步进电动机调速控制单位(二级学院): 自 动 化 学 院 学 生 姓 名: 林 参 专 业: 自动化 班 级: 0810903 学 号: 2009212466 指 导 教 师: 陈 勇 设计时间: 2012 年 6 月目录摘要1设计题目1一、 平台1二、 设计目的:1三、 设计要求:1设计内容2一、 计算机控制系统的总体规划与设计思路:2二、 硬件综合设计31. 总体原理电路图:32. 实物图:3三、
2、 软件综合设计101. 设计流程图:102. PID两种基本算法:位置算法和增量算法,采用变频调速113. 实现以上要求的控制算法(已调试正确):12设计总结21参考文献22摘要步进电动机是将电脉冲信号转变为角位移的开环控制元件。通过单片机AT89C52控制的脉冲信号的频率和脉冲数控制电机的转速、停止的位置,而不受负载的影响,即给电机加一个脉冲信号,电机则转过一个步距角。采用对射式光电传感器H92B4为步进电机的测速原件,它利用码盘对光速的遮挡,由同步回路选通电路,从而检测码盘有无遮挡。光电式旋转编码器是转速或转角的检测元件,旋转编码器与电机相连,当电机转动时,带动增量式码盘旋转,便发出转速或
3、转角信号。L297步进电机专用控制器,芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流,用于计算机控制的两相双极和四相单相步进电机,能够用于控制此步进电机,并与L298双全桥步进电机专用芯片等共同组成驱动电路。控制算法上,利用增量式PID算法,从测试传感器采样的信号经PID控制和所测试相结合消除减少误差,编出满足要求的程序。由以上几个主要部分共同构成步进电机闭环控制系统,驱动电路驱动电机,测速提供为反馈,AT89C52控制步进电机的正反转、和转速增减,实现对步进电机的控制,并由显示器显示出正反转方向和转速。关键词:步进电动机 PID AT89C52 L297 L298
4、H92B4设计题目步进电动机调速控制一、 平台1、二相四线制步进电动机;2、以单片机作为控制器。二、 设计目的:1、设计步进电机控制电路;2、设计步进电机调速控制电路,要求采用变频调速;3、采用PID两种基本算法:位置算法和增量算法,并要求知道这两种算法的特点;(1)位置算法:(2)增量算法:4、步进电动机旋转误差小于1%;5、实现正反转;6、速度检测与显示及控制。三、 设计要求:1、整个课程设计的各个环节都要求学生自己动手。2、提供相应的算法分析与计算。3、自己选择计算机控制设备,构建一个简单的计算机控制系统。4、对课程设计进行总结,撰写课程设计报告。5、课程设计时间1.5周。设计内容一、
5、计算机控制系统的总体规划与设计思路:此步进电机调速计算机控制系统主要由以下4部分组成1、单片机AT89C52的控制电路2、L297和L298组成驱动电路3、对射式光传感器为测速元件测速(用的是T法测速)组成的反馈回路4、二相四线制步进电机由以上4部分组成步进电机调速计算机控制闭环控制系统。在AT89C52中载入增量式PID控制算法的程序,通过对按键的操作,控制步进电机的转速(加速、减速、正反转),并在显示器上显示出转速。最终实现完整的二相四线步进电机调速的计算机控制系统。设计基本框图如下:二、 硬件综合设计1. 总体原理电路图:2. 实物图:1、控制电路AT89C52实体图:AT89C52是一
6、个低电压,高性能CMOS的 8位单片机 ,片内含8k bytes的可反复擦写的FLASH只读程序存储器和256 bytes的随机存取数据存储器(RAM)采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和
7、VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。主要工作特性是:片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32
8、根可编程I/O口线;具有3个可编程定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz2、驱动电路L297和L298实体图:L297是步进电机专用控制器,它能产生4相控制信号,可用于计算机控制的两相双极和四相单相步进电机,能够用单四拍、双四拍、四相八拍方式控制步进电机。芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。该
9、集成电路采用了SGS公司的模拟/数字兼容的I2L技术,使用5V的电源电压,全部信号的连接都与TFL/CMOS或集电极开路的晶体管兼容。L297的芯片引脚特别紧凑,采用双列直插20脚塑封封装,其引脚见图1,内部方框见图2。 内部电路图 2在图2所示的L297的内部方框图中。变换器是一个重要组成部分。变换器由一个三倍计算器加某些组合逻辑组成,产生一个基本的八格雷码(顺序如图3所示)。由变换器产生4个输出信号送给后面的输出逻辑部分,输出逻辑提供禁止和斩波器功能所需的相序。为了获得电动机良好的速度和转矩特性,相序信号是通过2个PWM斩波器控制电动波器包含有一个比较器、一个触发器和一个外部检测电阻,如图
10、4所示,晶片内部的通用振荡器提供斩波频率脉冲。每个斩波器的触发器由振荡器的脉冲调节,当负载电流提高时检测电阻上的电压相对提高,当电压达到Uref时(Uref是根据峰值负载电流而定的),将触发器重置,切断输出,直至第二个振荡脉冲到来、此线路的输出(即触发器Q输出)是一恒定速率的PWM信号,L297的CONTROL端的输入决定斩波器对相位线A,B,C,D或抑制线INH1和INH2起作用。CONTROL为高电平时,对A,B,C,D有抑制作用;为低电平时,则对抑制线INH1和INH2有抑制作用,从而可对电动机和转矩进行控制。L298内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进
11、电机。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298可接受标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压范围VIH为2546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。En
12、A,EnB接控制使能端,控制电机的停转。表1是L298功能逻辑图。In3,In4的逻辑图与表1相同。由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。3、步进电机及对射式光电传感器H92B4步进电动是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行。随着数字控制系统的发展,步进电动机的应用将逐渐扩大。 H92B4是有高发射功率的砷化镓红外发射
13、管和高灵敏度的光敏管组成。她是利用被检测物对光束的遮挡,由同步回路选通电路,从而检测物体有无。特点:易安装、高可靠性:响应速度快,光缝0.8mm;槽宽4mm,脚距8.8mmm。T法测速:记录编码器两个相邻输出脉冲的间的高频脉冲个数M2,f0为高频脉冲频率,电机转速T法测速的分辨率:或法测速误差率:T法测速适用于低速段。三、 软件综合设计1. 设计流程图: 总体流程图测速流程图2. PID两种基本算法:位置算法和增量算法,采用变频调速(1)位置算法:(2)增量算法:3. 实现以上要求的控制算法(已调试正确):#include #include #define uchar unsigned cha
14、r#define uint unsigned int#define F 6 /表示光电码盘一圈的齿数 #define T 40 /采样周期10ms,250us为单位#define PID_K 2#define PID_I 0.1 #define PID_D 0.1#define ST_cishu 50 /更新显示频率设为0.5s,10ms为单位sbit clk=P10; /脉冲sbit cw=P11; /转向sbit full=P12; /半步、全步sbit reset=P13;sbit duanen=P26; /段选锁存sbit weien=P27; /位选锁存sbit fuhao=P22;
15、 /正负符号位sbit dirKey = P34; /设置位移sbit plusKey = P35;sbit subKey = P36;sbit revKey = P37; /反转int Uk_1 = 0;int Uk = 0;uchar posKey = 0;/屏幕显示位置标志int speed3 = 0, 0 ,0;/存速度差值int Si,n=0,m=0; /n为转速,m为T法高速脉冲个数,Si为m记数允许标志位uchar time_n1=500;uchar time_n2;int speedSet,speed_set; /定时器1首先就输出一个电平变化,再根据PID输出设置z=spee
16、d_setint speed_n=0;/用于显示的测试的速度 int outallow=1;/输出允许,第一次设置完生效,开始输出int ST_allow;/速度测试允许位int ST_counter=0;/计数变量,用于计显示更新频率int fankui=0;void display(int);void delay(int);void LED(int,int);void xiaoying(void);void readKey();void initial();void pid();void pid_f_to_time_n1();void ST_get();/*初始化*/void initia
17、l()IE=0x80; /开总中断TCON=0x01;/IT0=1时外部中断0为下跳沿触发TMOD=0x21;/定时器0工作方式1,定时器1工作方式2,自动重载TH0=0xec; /定时5ms,初值为60536,产生高速脉冲TL0=0x78;TH1=0x06; /定时250us,输出脉冲精度TL1=0x06;Si=0; time_n2=1;clk = 1;/*显示函数*/ void delay(int i)int x,y;for(x=i;x0;x-)for(y=1;y333;y+);void xiaoying()weien=1;P0=0xff;weien=0;void LED(int shu,
18、int wei)uchar code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/最后为负号 uchar code DSY_WEI=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;duanen=1;P0=DSY_CODEshu;duanen=0;weien=1;P0=DSY_WEIwei;weien=0;delay(2); void display(int a)/a 为测得转速int qian;int bai;int shi;int ge;if (a150) /越界处理Uk=Uk_1;void p
19、id_f_to_time_n1()if(time_n14) /频率最高不能超过1500Hz,设定最高为1000Hz 250us*4=1ms time_n1 = 600 / Uk; / 步距角为1.8 估 T=1/f=0.3*n. T=250us*2*time_n1(us) Ukfelse time_n1=6;/*速度差值计算*/void delta_n()speed0 = speed1;speed1 = speed2;speed2 = speed_set-n;/*速度检测*/void ST_time() interrupt 0 /外部中断0if (Si=0)/Si为测试速度而设,Si=0,则记
20、第一次,Si=1,则应关闭TR0TR0=1;Si=1; /关闭标志,表明测量一个周期内波形完成else TR0=0;IE=IE&0xfc;/关定时中断0和外部中断0Si=0;(int)n=60000/(m*F*5);/计算转速 F为放大系数,表示转一圈输出多少脉冲if (!fuhao) n=-n;m=0; void ST_count() interrupt 1 /定时中断0,产生高速脉冲,10ms一次m+;if(m10000) /若转速低至10s一个信号,则认为转速为0,防止m越界n=0;TH0=0xec;TL0=0x78;void ST_get() /获取速度函数,供外部调用IE=IE|0x
21、03; /开定时器0和外部中断0 定时器IE设置位,EA, , ,ES,ET1,EX1,ET0,EX0/*速度输出*/void SO_time() interrupt 3 /定时中断1,用于定时输出脉冲 time_n2-; /250us一次 if (!time_n2) time_n2=time_n1;/上个脉冲完后再取新设置的值 clk=clk; fankui+;if (fankui=33)clkf=clkf;fankui=0; ST_allow+; /定时采样允许,采样周期 40*250us=10ms if (ST_allow=T) ST_allow=0;ST_get(); /开中断,不会影
22、响时间/*键盘设置函数*/ void readKey()int temp = 0;if(dirKey = 0)delay(30);while(!dirKey); /放开生效,不影响中断posKey = posKey + 1;if(posKey = 4)posKey = 0;speed_set=speedSet; /设置完四个数,使设置生效 if(outallow) /初始为1ET1=1; /定时1中断允许,开始输出脉冲TR1=1; /输出允许outallow=0;/显示if(posKey)/在设置时才能按加减if(posKey = 1)(int)temp = speedSet/100;xiao
23、ying();LED(temp, 2);else if(posKey = 2)(int)temp = speedSet % 100 / 10;xiaoying();LED(temp, 1);else if(posKey = 3)(int)temp = speedSet % 10;xiaoying();LED(temp, 0);if(plusKey = 0)delay(30);while(!plusKey);if(speedSet999)if(posKey = 1)if (speedSet/1000)if(posKey = 1)if (speedSet/1000)speedSet -= 100;
24、else if(posKey = 2)speedSet -= 10;else if(posKey = 3)speedSet -= 1;if(revKey = 0)delay(30);while(!revKey);cw= cw;fuhao=fuhao;/*主函数*/void main()initial(); /初始化while(1)readKey();if(!posKey) /没有设置转速时显示实时速度display(n);if(!outallow) /第一次设置完成可以输出if(!ST_allow) /定时采样允许,采样周期delta_n(); /采集速度后再计算速度差pid();pid_f_
25、to_time_n1();设计总结 通过这次课程设计实验,我对步进电机调速控制系统有了实际的了解和认识,提高了动手能力。本次实验把书本上、课堂上学到的知识灵活地运用到实际的实物上,感觉是对学以致用的一种锻炼和考验,提高了用所学知识解决实际问题的能力,加深和巩固的对知识的理解和掌握。控制电路、驱动电路、测速反馈电路、步进电机几个模块的整合,也实际中提高了自己对系统的认识,有了些整体的概念和思维观。实验是团队合作完成的,从设计电路到设计软件,然后仿真,到做硬件做出符合要求的控制系统,不仅从实际中锻炼了动手能力,而且学会了团队合作,互相学习,提高自己。在做课程设计过程中碰到了些困难,陈老师的悉心指导,指点迷津,使我们受益匪浅,为实验的完成帮助甚大。最后的做实验视频,是组员对最终成果的展示,拍摄过程也为辛苦的实验增添了些乐趣。感谢陈老师的悉心指导,指点迷津。参考文献电力拖动与控制 陈勇 等 人民邮电出版社C程序设计 谭浩强 等 清华大学出版社自动控制原理 孙亮 等 北京工业大学出版社单片机原理及应用 张毅刚 等 高等教育出版社电力拖动自动控制系统 陈伯时 等 机械工业出版社
限制150内