课程设计(论文)-二相步进电机控制系统的设计.docx

上传人:韩长文 文档编号:3972074 上传时间:2019-10-11 格式:DOCX 页数:21 大小:653.30KB
返回 下载 相关 举报
课程设计(论文)-二相步进电机控制系统的设计.docx_第1页
第1页 / 共21页
课程设计(论文)-二相步进电机控制系统的设计.docx_第2页
第2页 / 共21页
课程设计(论文)-二相步进电机控制系统的设计.docx_第3页
第3页 / 共21页
课程设计(论文)-二相步进电机控制系统的设计.docx_第4页
第4页 / 共21页
课程设计(论文)-二相步进电机控制系统的设计.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《课程设计(论文)-二相步进电机控制系统的设计.docx》由会员分享,可在线阅读,更多相关《课程设计(论文)-二相步进电机控制系统的设计.docx(21页珍藏版)》请在三一文库上搜索。

1、二相步进电机控制系统的设计1设计要求设计一个二相步进电机控制系统,电机有两组带中心抽头的线圈,要求系统具有如下功能:采用单极性控制(使用线圈的中心抽头),用K0-K2做为通电方式选择键,K0为四相单四拍,K1为四相双四拍,K2为四相八拍;K3为启动/停止控制;K4方向控制(正反转);K5速度控制(快慢两档);用4位LED数码管显示工作步数。用3个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮;2步进电机介绍本设计的核心是要用到步进机,所以要对步进机的原理,使用有很深的了解,这样才能在对步进机驱动的设计得心应手。当前,随着知识的进步和科技的不断发展,各种各样工作的执行由原来的人工操

2、作慢慢的过度到机械自动化操作,而机械自动化操作则需要大量的机械和与之相对的控制系统,这一要求下,微型计算机控制技术的学习和应用的重要性就显而易见了。微型计算机控制技术的数控技术,特别是数字程序对步进机的控制,在社会的各种工作,项目中广泛应用,达到提高效率,解放劳动力的效果。现实中步进电机作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,以及其能快速起动,制动,反转和自锁等优点,广泛应用于数字控制系统,如数控机床,绘图机,自动记录仪表和数-模转换等装置。实际中通过结合单片机的控制编程,应用软件可以使原理复杂难度大的硬件控制线路得到更好跟快的解决。在这里,提出通过软件定时中断方

3、式实现步进机的运行状态的控制方案。2.1二相步进机工作原理 二相步进机是本次设计中试关键的一部分。二相步进机的型号有很多,按接线来分,大体上,有五线和六线的。设计用的是六线的。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。2.2步进电机的一些基本参数 电机固有步距角: 它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出

4、厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9/1.8(表示半步工作时为0.9、整步工作时为1.8),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9/1.8、三相的为0.75/1.5、五相的为0.36/0.72 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则相数将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步

5、距角。 保持转矩(HOLDING TORQUE): 是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 DETENT TORQUE: 是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETE

6、NT TORQUE。 3设计总方案分析本设计包括硬件和软件两部分,设计思想是化整为零和化零为整,即电路模块化,然后再整合模块功能作用,达到要求的目的。把原来复杂的电路分成一个个简单的模块,这样化繁为简,可以逐个击破,便于设计编程;当把分开的每一个模块都搞定,设计出来时,再通过单片机这个核心部分,将每个模块糅合在一起。例如本设计中,可以把步进机的控制化成功能键输入部分,显示部分和二相步进机驱动电路部分。3.1系统总框图图1系统总框图3. 2总原理图和最终效果设计的最终效果通过硬件仿真图可以看到,以单片机ATmega128为核心的控制系统,由PE口与PG口进行开关按键的设置,具体为:PG0接K2启

7、动/停止开关,低电平为停止状态,高电平为启动状态;PE4接K3正/反转开关,高电平为正转,低电平为反转;PE0接K0四拍通电方式,PE1接K1双四拍通电方式,;PE2接K1八拍通电方式,按任一键可以使电机进行转换到相应的工作方式。PF口与PD口外接4位LED数码管,显示步进步数进而实现4位数值的显示。PB口作为输出口外接负载,具体由PB7接绿色发光二极管,使其在电机停转时亮;PB5接红色放光二极管,使其在电机正转时亮;PB4接黄色发光二极管,使其在电机发转时亮。PB0-PB3外接驱动电路ULN2003A的B端4个输入端,路ULN2003A的B端4个输出端外接二相步进电机,这样即可通过控制单片机

8、的PB口输出电平来实现二相步进电机的启动,停止,正反转以及四拍,八拍运转。具体工作过程需通过对单片机编程来实现。总原理效果图如图2。图2系统总电路图4硬件电路设计4. 1二相步进机驱动电路的设计方案本方案用到二相六线式的步进电机和ULN2003A集成电路由于采用采用单极性控制,即线圈电流方向固定,只按一个方向流动,而要求四相单拍,双拍和八拍,所以所设计的驱动电路将电机两组带中心抽头的线圈的接线柱接高电平,其余四线按顺序依次接在ULN2003A的输出侧,当ULN2003A的输出端依次给低电平时,这样就可以保证步进机中线圈的电流方向一致。4.1.1单极性二相步进机接法二相步进机定子上有4个极,转子

9、是两个相背的齿。二相六线步进电机的结构如图3电机转动是通过控制绕组和电源接通或开断的变化频率呈步进状态,系统每发一个步进脉冲信号,电机则步进一步。其转向取决与通电相序,电机相数不同,其步距角也不同,一般二相电机的步距角为0.9/1.8,在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。电机有两组带中心抽头的线圈,要求单极性,所以两组带中心抽头接高电平,其余丝线A、B、C、D依次接入低电平时可以保持电流方向一致。 图3二相六线步进电机的结构图4.1.2ULN2003A集成电路应用原理:ULN2003A也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电

10、平,当输入端为低电平时ULN2003输出端为高电平,继电器得电吸合。运用ULN2003A可以连接要求的单极性控制控制电路。ULN2003A原理图如图4图所示,管脚图如图5所示。 图4ULN2003A原理图图5ULN2003A管脚图4.1.3驱动效果图要实现四相单四拍,四相双四拍,四相八拍,则要把两组带中心抽头接高电压,其它四线按要求依次接入脉冲信号转换成低电平接入到输入接口A,B,C,D。如图6所示。四相单四拍输入的脉冲信号依次是ABCDA或DCBAD;四相双四拍为ABBCCDDAAB或DACDBCABDA;四相八拍为ABBBCCCDDDAAAB或ABADADCDCBCBAB。图6驱动效果图4

11、.2LED数码管显示器设计中用到四个LED数码管显示器, LED有共阴共阳数码管两种, 使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。本实验用共阴LED显示器,根据电路连接图显示16进制数的编码已列在表7。表7编码表本部分用到LED显示器,其工作方式有两种:静态显示方式和动态显示方式。LED数码管,其原理和数字表扫描显示的原理一致即采用动态显示,动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显

12、示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。设计图中 四个数码管进行显示时,PD是位的扫描输出,本部分通过单片机的PD口和PF口的输出,PF为字形码扫描。如图8步数显示电路 图8步数显示电路4.3功能按键控制电路用K0-K2做为通电方式选择键,K0为四相单四拍,K1为四相双四拍,K2为四相八拍;K3为启动/停止控制、K4方向控制。设计中把按键接入单片机,通过按键扫描功能输入的情况来达到控制步进机的目的。其图如图9功能键电路图,接线接到单片机的

13、输入口,作输入信号。图9功能键电路图4.4步进电机状态的显示本部分需要3个发光二极管来显示步进电机状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮。方案一:软件设计完成,通过输入口的指令查询,然后把信息通过输出口接在3个发光二极管上,这样来完成。把红绿黄三个发光二极管分别接在PF高四位的PF4,PF5,PF6,当PG0=0,时,PF4=0,PF5=0,PF6=1,绿灯亮;当PF0=1而且 PE4=1时, PF4=1,PF5=0,PF6=0,红灯亮;当PG0=1而且 PE4=0时, PG4=0,PG5=1,PG6=0,黄灯亮;其软件设计的控制字如表10PG0(起动)PE4(方向)PF4(红灯接口)

14、PF5(黄灯接口)PF6(绿灯接口)亮灯0-001绿灯亮11100红灯亮10010黄灯亮表10方案二:硬件接法,只需要把这3个发光二极管接在通过硬件与门和非门来连接来控制3个发光二极管来显示步进电。其控制如表11,硬件设计图如下图图12起动/方向状态图。起动接口方向接口状态的显示低电平绿灯亮高电平低电平黄灯亮高电平高电平红灯亮表11图12起动/方向状态图5软件设计 软件设计包括流程图和程序编写,这是实现控制的关键。流程图如下,程序在附录5.1总流程图 图13系统总流程图5.2步进机工作方式流程图 步进电机四相单四拍,四相双四拍,四相八拍各模块流程图分别如下图14四相单四拍流程图,图15四相双四

15、拍流程图,图16四相八拍流程图 。其设计时通过time0定时器开控制的。 5.3步数显示部分流程图步数显示部分流程图如图17。其显示是通过time2定时器来计算步数,数码管来显示的。6设计总结和体会本次设计,设计涉及的内容比较广,如数字电路技术部分,微形计算机控制技术尤其得数字控制技术部分和步进机结构原理工作方式以及数控中等部分,也有学过的AVR单片机系列中的ATmega128单片机。这些内容,不是单一存在,而是互相渗透牵连万千的。在了解每部分内容的同时,还要思考它们的联系。这样才能收到效果。如步进机,我们了解它的工作原理,知道它是是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉

16、冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的,而它需要的脉冲从哪来呢,这就涉及单片机了,可以通过单片机设定脉冲输给,单片机还可以通过脉冲频率设定来控制步进机的转动频率即可以控制转速。还有LED的工作,我们可以再数字电路技术里学习到它显示的原理等等,这些知识单一存在时没意义的,所以 我们学习应该会联系。通过本次设计令我在回忆复习老师课堂讲的理论知识的同时,也进一步达到了学以致用的目的,将课本所学的知识用到了实践上,结合软件和硬件进行,充分锻炼了自己的理论能力和动手能力。总的来说,设计过程也遇到了种种困难,但在对硬件原理结构的学习中

17、,通过找资料,思考锻炼了自学的能力;在编程时遇到困难以也学会了如何利用编译软件进行调试,达到最终期望的结果,得到编程训练;不懂时,通过同学间的讨论交流,学习借鉴也达到了相互合作的目的,完成任务,增进了同学间的合作友谊。有遇到了种种困难的苦闷,也有遇难而上,解决困难时的喜悦。 参考文献1于海生. 微型计算机控制技术.北京:清华大学出版社,2004.2陈立周.单片机原理及其应用.北京:机械工业出版社,2007.3陈东云.ATmega128单片机原理与开发指南.北京:机械工业出版社,2006.4张克彦.AVR单片机实用程序设计.北京:北京航空航天大学出版社,2004.5 刘宝廷.步进电动机及其控制驱

18、动系统.哈尔滨工业大学出版社,2006.附录程序/ICC-AVR application builder : 2009/6/30 14:09:19/ Target : M128/ Crystal: 4.0000Mhz#include #include unsigned char d48=0x21,0x22,0x24,0x28,0x23,0x26,0x2c,0x29,0x21,0x23,0x22,0x26,0x24,0x2c,0x28,0x29, 0x18,0x14,0x12,0x11,0x19,0x1c,0x16,0x13,0x19,0x18,0x1c,0x14,0x16,0x12,0x13,

19、0x11;unsigned char scan4=0Xf7,0Xfb,0Xfd,0Xfe;/*选择扫描显示数码管,送PF口选数码管*/unsigned char seven_seg10=0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f;/*0-9的字符表,送PD口显示*/unsigned char flag,pai,tt,i,key,k=0;typedef struct char minute;char second; time; /定义时钟变量time now;void port_init(void) PORTA = 0x00; DDRA =

20、 0x00; PORTB = 0x00; DDRB = 0xFF; PORTC = 0x00; /m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0xFF; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0xFF; PORTG = 0x00; DDRG = 0x00;/TIMER0 initialize - prescale:256/ WGM: CTC/ desired value: 100Hz/ actual value: 99.522Hz (-0.5%)void timer0_init(

21、void) TCCR0 = 0x00; /stop ASSR = 0x00; /set async mode TCNT0 = 0x64; /set count OCR0 = 0x9C; /start timerunsigned char timer0=0;#pragma interrupt_handler timer0_comp_isr:16void timer0_comp_isr(void) /compare occured TCNT0=OCR0 TCNT0 = 0x64; OCR0 = 0x9C; timer0+; if(timer0=50) timer0=0; i+; PORTB=d4f

22、lag+paii%tt; if(i=100) i=0; /TIMER2 initialize - prescale:256/ WGM: Normal/ desired value: 100Hz/ actual value: 100.160Hz (0.2%)void timer2_init(void) TCCR2 = 0x00; /stop TCNT2 = 0x64; /setup OCR2 = 0x9C; /startunsigned char timer2=0;#pragma interrupt_handler timer2_comp_isr:10void timer2_comp_isr(v

23、oid) /compare occured TCNT2=OCR2 TCNT2 = 0x64; /setup OCR2 = 0x9C; timer2+; if(timer2=100) timer2=0; now.second+; if(now.second=99) now.second=0; now.minute+; if(now.minute=99) now.minute=0; /call this routine to initialize all peripheralsvoid init_devices(void) /stop errant interrupts until set up

24、CLI(); /disable all interrupts XDIV = 0x00; /xtal divider XMCRA = 0x00; /external memory port_init(); timer0_init(); timer2_init(); MCUCR = 0x00; EICRA = 0x00; /extended ext ints EICRB = 0x00; /extended ext ints EIMSK = 0x00; TIMSK = 0x82; /timer interrupt sources ETIMSK = 0x00; /extended timer inte

25、rrupt sources SEI(); /re-enable interrupts /all peripherals are now initializedvoid display(void) start(); PORTF=scank; switch(k) case 0 : PORTD=seven_segnow.second%10; break; case 1 : PORTD=seven_segnow.second/10; break; case 2 : PORTD=seven_segnow.minute%10; break; case 3 : PORTD=seven_segnow.minu

26、te/10; break; k+;if(k=4) k=0;delay();key=PING; if(key=0x00) TCCR2 = 0x00;void delay()/*延时子函数*/ int i,j; for(i=0;i20;i+) for(j=0;j20;j+);unsigned char j;start()key=PING;if(key=0x01)j=PINE;if(j=0x08)flag=0;else if(j=0x00) flag=3; if(j=0x02| j=0x0A) TCCR0 = 0x0E;pai=1;tt=4;TCCR2 = 0x04;now.second=00,now.minute=00;else if(j=0x01| j=0x09) TCCR0 = 0x0E;pai=0;tt=4;TCCR2 = 0x04;now.second=00,now.minute=00; else if(j=0x04 | j=0x0c) TCCR0 = 0x0E;pai=2;tt=8;TCCR2 = 0x04;now.second=00,now.minute=00; else PORTB=0x80; void main(void) now.second=00,now.minute=00;init_devices();while(1)display();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1