《计算机控制技术课程设计说明书二相步进电机控制系统设计.doc》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计说明书二相步进电机控制系统设计.doc(23页珍藏版)》请在三一办公上搜索。
1、二相步进电机控制系统设计1步进电机介绍1.1步进电机特点 步进电机(stepping motor)是将电脉冲信号转换成相应的角位移或线位移的一种特殊电机。电动机每输入一次电脉冲信号,电动机就转动一个角度,从而形成不仅是的运动,所以称为步进电动机;另外由于输入的是脉冲电流,故也称脉冲电动机。 随着科学技术的发展,步进电动机获得了广泛的应用。步进具有很多优点也有不少缺点,步进电机的特点主要由下面几点: 1 步进电机的输出脚与输入脉冲的个数成正比,控制输入的脉冲数就能控制位移量。 2 步进电机的转速与输入的脉冲频率成正比,改变通电相序即可改变电动机转向。步进电机启动、停止迅速,当停止脉冲输入时,若维
2、持绕组内电流不变,电动机转子会保持在停止时的位置上。 3 一般步进电机的精度为步进角的3-5%,且误差不会累积。 4 步进电机外表允许的温度高。步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 5 步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
3、 6 步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。 7 步进电机的确定是效率地,带负载能力低,调速范围小,最高输入脉冲频率一般不超过18KHZ,并且需要专用电源给电脉冲信号,在运行中会出现共振和震荡问题。1.2步进电机工作原理 步进电机是一种用电脉冲进行控制 ,将电脉冲
4、信号转换成相位移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比 ,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 对于反应式步进电机转速与脉冲频率的关系为: 式中:为脉冲频率,单位是HZ。N为电机运行拍数、z为转子齿数。 对于反应式步进电机的
5、步距角为: 式中:N为步进电机运行拍数,z为转子齿数。对于二四相电机齿数一般为50。1.3 二相步进电机 根据设计要求本设计设计对象是二相步进电机,有两组带中心抽头的线圈,因为设计要求采用双极性控制即H桥控制,绕组的中心抽头不接,使用四线工作。二相六线制步进电机如图:图1 二相六线制步进电机结构示意图 图中、为绕组的中心抽头,、为四个绕组出线端。对各绕组施加通电脉冲,转子会在电磁力的作用下向磁导率最大即趋于对齿的状态转动,由于各相是有选择性的通电且通电时间是有限的,对各绕组在各拍下按某种既定的通电顺序通电即可以使电机转动,调整对各绕组施加的脉冲频率可以调整电机转速大小,改变各绕组通电顺序即可以
6、调整其转动方向。通过改变绕组通电顺序组合可以改变电机运行拍数。 二相步进电机运行状态有二相四拍与二相八拍两种运行状态,其中四拍又分为单四拍与双四拍。本设计中四拍选择双四拍方式。 二相四拍正转各绕组通电顺序为: 单四拍: 双四拍:。 二相四拍反转各绕组通电顺序为: 单四拍: 双四拍: 二相八拍各绕组通电顺序为: 正转: 反转: 步进电机运行有半步与整步两种,对于二相步进电机四拍运行时为半步,步距角为1.8度,八拍运行时为半步运行方式,步距角为0.9度。步距角越小控制精度越高。2 题意分析与方案论证2.1 题意分析 设计题目要求采用双极性控制设计一个二相步进电机控制系统,要求具有对电机开关、正反向
7、控制、拍数控制以及速度控制,并且系统能够实时显示电机运行步数以及用发光二极管表征电机运行状态:正转、反转和停止。可以设计一个以单片机为核心的微型计算机系统实现设计。通过按键输入用户对电机的控制要求,单片机读取按键信息并进过处理调用相应的模块输出到驱动芯片完成对电机的控制,同时调用单片机内相应程序采用动态扫描的方式将运行步数通过四位数码管实时显示。单片机输出相应的量实现对发光二极管的控制,显示电机运行状态。2.2 设计方案的确定 2.2.1 控制部分 步进电机是将电脉冲信号转换成响应的角位移或者线位移的数字控制电机,按照输入脉冲指令旋转,脉冲数决定旋转位移的大小,脉冲频率决定旋转速度,并能在很宽
8、的范围内调速。其控制可以用硬件电路和以微型计算机为核心的控制系统两种方式实现。由于步进电机可以将输入的数字脉冲信号转换成相应的角位移,所以很适合采用计算机控制。而且硬件方式每种电路实现的控制功能较为单一,这会导致改变控制功能时还要重新设计硬件电路,灵活性较差,应用起来比较麻烦并且会增加成本。而微型计算机控制系统怎么属于软硬件结合的控制方式,少量的硬件连接和软件实现控制完成主要控制功能,灵活性很大,性价比高。所以本电路采用AT89C51单片机来实现电机的控制。 单片机通过数据线进行与驱动电路的数据传送,硬件连线只需连接信号传输线路即可,对电机的运行状态等各项控制要求通过软件实现。单片机通过按键接
9、受用户对电机的运行要求,后通过自身程序调用对驱动电路进行控制,使驱动电路进行相应的绕组通电操作以完成各种用户要求。 步进电机的控制是由单片机产生的脉冲频率实现的,可以调整单片机向发出的时钟脉冲来实现调速。根据这个原理可以采用延时和定时两种方法改变响应脉冲的方波,一到达调速的目的。不过由于延时方法一般通过软件实现占用CPU时间长,同时不能再在运行时处理其他工作,一般适合较简单的控制过程。所以一般采用定时方式产生脉冲,定时方式采用中断方式,只有特定时才占用CPU,可以明显提高系统响应速度。同样利用软件可以实现设计要求的功能。2.2.2 驱动电路部分 用于步进电机的驱动一般有两种方法,一种是通过CP
10、U直接来驱动,这种方法一般不宜采用,因为CPU的输出电流脉冲是特别小的它不能足以让步进电机的转动;别一种是通过CPU来间接驱动,就是把从CPU输出的信号进行放大,然后直接驱动或是再通过光电隔离间接来驱动步进电机,这种方法比较安全可靠。固本次设计应采用CPU间接驱动步进电机。 任务要求驱动采用双极性(H桥)控制(不适用电机绕组中心抽头),本设计采用芯片L298来控制电动机的驱动系统。L298是双H桥驱动器,此驱动系统需要的时间很少,降低装配成本。关于脉冲分配以及对步进电机的各种控制操作由软件控制完成,实现了对步进电机灵活均衡的控制。2.2.3 数码管部分 电路采用四位数码管显示步进电机实时运行步
11、数,电路采用共阴极四位数码管,数码管驱动采用CD4511驱动芯片,CD4511是专门驱动共阴极数码管的芯片,它接受BCD码的形式控制输入,输出驱动七段数码管。 系统原理框图如下:图2 系统原理框图3 硬件电路设计3.1 控制部分 3.1.1 芯片介绍 本次设计以CPU选用89C5l作为步进电机的控制芯片89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上使用方便等优点,而且完全兼容MCS5l系列单片机的所有功能。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFAlsh ProgrAmmABle And ErAsABle ReAd Only Memory)的
12、低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 下图为AT89C51管脚图: 图3 AT89C51管脚图 单片机基本组成:8位中央处理器CPU,进行运算和逻辑控制;共256个内部RAM单元,用于存放可读写数据;4K掩膜ROM,用于存放程序、原始数据和表格;两个16位定时/计数器,实现定时或计数功能;4个8位的I/O口P0、P1、P2、P3;含有2
13、个外部中断、2个定时器中断和一个串行中断的中断控制系统;可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ的时钟电路 引脚简介:XTAL1、XTAL2:晶振输入端。 RST: 复位引脚。 并行口:P0、P1、P2、P3。 :为1时,访问内部程序存储器。为0时,值访问外部程序存储器。 ALE:地址锁存控制信号。:外部ROM选通信号。3.1.2 原理分析 本设计以AT89C51为核心组成控制系统,单片机通过XTAL1、XTAL2外接12MHZ的晶振构成单片机的工作频率,由于系统不需外部ROM扩展,进行软件操作时只需要用到内部程序存储器,所以管脚接直流电源。复位键不使用通过电容接地。外部ROM读选
14、通信号引脚和地址锁存控制信号引脚用不到,悬空不接。五个引脚通过上拉电阻接按键开关,完成对用户控制要求的输入,与芯片L298的输入分别相接,完成单片机对步进电机各种控制的要求的实现。输出到四位数码管的位选引脚,完成对数码管位选的控制,输出到CD4511数码管驱动器的输入端,完成对数码管数字显示的控制。各并行口的输出与键位开关状态有关。AT89C51连线示意图如下:图4 AT89C51接线示意图 按键K0控制电机运行双四拍方式,按键K1控制电机运行为八拍方式,按键K2控制电机的启动与停止,按键K3控制电机的正反转,按键K4控制电机运行速度的快慢。单片机通过不断的检测口的电位判断按键是否被按下,检测
15、值为1表示按键没有被按下,检测值为0怎么表示按键被按下。当K2未按下前其他按键无效,K2按下后,其他几个键输入有效,若无K0和K1键按下,单片机输出低电平至P0.4,P0.5,绿灯亮表示此时电动机为不转状态。K0键被按下时,单片机调用单四拍工作程序,从输出对电机进行控制,K1按下时,单片机调用八拍工作程序,将控制字输出到。设定默认K3没有按下时电机运行正转,按下后反转;默认K4没有按下时表示电机运行速度慢,按下后电机转速变快。当K2按下并且K0或K1按下后,检测到K3按下,则P0.5输出高电平,触发三极管黄灯亮,表示电机反转,并调用反转子程序;若没有检测到K3被按下则P0.4输出高电平,触发三
16、极管红灯亮,表示电机正转;若检测到K4键被按下则调用高速运行程序,若没有检测到按键按下则不作操作。电动机运行过程中都要实时检测电机运行步数,并通过数码管显示出来。3.2 电机驱动部分3.2.1 L298芯片 L298为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相 和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准 TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可
17、以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。L298管脚图如图3。 管脚说明:VCC:逻辑电源电压,此引脚与地必须接100nF电容器。 VS:功率电源电压,此引脚与地必须就100nF电容器。IN1、IN2、IN3、IN4:输入端,TTL电平兼容。 OUT1、OUT2、OUT3、OUT4:输出端,TTL电平兼容。 ENA:使能端,ENA控制OUT1、OUT2,低电平禁止输出。 ENB:使能端,ENB控制OUT3、OUT4,低电平禁止输出。SENA、SENB:电流检测端,不用时可以直接接地。图5 L298管脚图3.2.2原理分析 电机驱动部分连接线路图为:图6
18、驱动部分连线图 检测管脚不用直接接地,对于电机的停止启动使用软件编程实现,所以使能端ENA、ENB直接接高电平。VCC为逻辑供电电源,选择+5V的直流电源,VS为功率电压源,按照步进电机的型号具体选择。接单片机的,接受单片发来的控制脉冲。分别接二相步进电机的四个绕组端子引线。L298接受来自单片机的脉冲,通过自身内部逻辑电路实现对电机绕组通断电选择的控制。二相步进电机的两队绕组通过与L298的端子相连接入L298内部的H桥中,实现了对二相步进电机的双极性控制即H桥控制。3.3数码管部分3.3.1 硬件介绍3.3.1.1 CD4511芯片 LED使用4511驱动,CD4511是一个用于驱动共阴极
19、 LED(数码管)显示器的 BCD码七段码译码器。具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。CD4511 是一片 CMOS BCD锁存/7 段译码/驱动器,引脚排列如图5 所示。其中A、B、C、D为 BCD 码输入,A为最低位。LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1端应加高电平。另外 CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。LE是锁存控
20、制端,高电平时锁存,低电平时传输数据。ag是 7 段输出,可驱动共阴LED数码管。另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观 。图7 CD4511管脚图3.3.1.2 共阴极数码管 所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地。限流电阻要根据电源电压来选取,电源电压5V时可使用300的限流电阻。 一位共阴极数码管如图6,四位共阴极数码管如图7所示,内部机构是将四个一位数码管的段码还有小数点位并起来,引出8跟线,四个数码管的阴极分别引出,共4跟线。图8 一位共阴极数码管接线示意图图9 四位数码管管脚图表1
21、共阴极数码管段位通电状态与显示字符关系显示管脚dpgfedcba16进制数0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH3.3.2 原理分析 数码管显示部分接线图:图10 数码管部分线路图 CD4511的分别接单片机的,单片机通过片内程序实时检测步数,并通过相应的处理得出要显示的各位数,并同时给出四位数码管的选择信号。单片机将得到要显示的BCD数发送给CD4511,然后CD4511将BCD数转化成七段数
22、码管管脚的七个电平的高低,同时单片机与四位数码管的位选连接,给出相应的位选信号,采用动态扫描的方式显示出当前运行步数。4 软件设计4.1 设计思路 设计要求对步进电机的正反转、启动停止、运行拍数和运行速度进行控制。这些控制主要通过软件进行实现。由按键输入控制信号,单片机收到系统信号后调用相关的模块实现按键对应的操作。对于运行拍数以及正反转的控制可以调用子程序模块实现这部分功能,实现这两个的控制操作只需要编写双四拍正转子程序,双四拍反转子程序,八拍正转子程序,八拍反转子程序。对于速度的控制通过改变脉冲频率即改变定时器初值实现。 对于数码管部分采用动态扫描的方式显示实时运行步数,需要设计数码管显示
23、子程序。再次,本设计还使用定时器对步进电机的走步进行精确地时间设设定,因此还需要编写一个定时器中断子程序。整个程序由主程序和若干子程序组成,具体程序详见附录。4.2 各子程序流程图 数码管显示流程图:图11 数码管显示步数流程图 步进电机四拍模块流程图: 图12 步进电机四拍模块流程图 步进电机八拍正转模块流程图:图13 步进电机八拍正转流程图 系统总流程图:图14 系统总流程图设计心得 我的任务是设计二相步进电机的控制系统,之前对于步进电机了解很少,通过这次的集中式学习,让我对步进电机有了基本的了解和简单的应用能力。同时本次课程设计是对这个学期学习的微机控制技术基础知识的进一步了解与巩固,通
24、过课程设计把所学的知识应用到实际。在这段时间里面我不仅巩固了微控的相关知识也对步进电机特别是二相步进电机有了较深的掌握,此外又进一步熟练了对PROTEUS的应用。特别是利用PROTUES进行单片机程序的仿真,这是之前较少接触的。PROTUES可以帮助我们解决很多繁复的问题,让设计、仿真更加简便。在做此设计时,我深深体会到做事与观看是完全不同的,没有付出努力,就什么也学不到,有时候我们听老师讲一些知识好像是懂了,在真正实践的时候才会明白,要想把知识融会贯通必须付诸于行动,否则一切都是枉然。可是,我们要是有一定的过程,一定的付出 ,自然就会受到一定的成效。 在学习过程中,我也发现自己去学习一门新的
25、知识也是一个很重要的能力,因为人总是要进步,不能总是拿着现有的资本固步自封,这就要求我们要好好的培养和锻炼自学能力,这种能力一定会在今后的工作中起到举足轻重的作用。我们应该全面发展,应该拓展自己的知识面,把所学的知识应用到实际,这将对我们的生活学习起到很好的帮助作用。对自己所学习的知识应该不断加深理解,将知识融会贯通,这样才能真正学习到知识,在今后的学习生活当中应该更注重实践能力。参考文献1 于海生等编著.计算机控制技术. 北京:机械工业出版社. 2007.2 陈立周.单片机原理及其应用.北京:机械工业出版社,2007.3 刘宝廷.步进电动机及其控制驱动系统.哈尔滨工业大学出版社,2006.4
26、 张义和、王敏男等编著.例说51单片机(C语言版). 北京:人民邮电出版社. 2008.5 王彤编著.C语言在测量与控制中的应用. 北京:机械工业出版社. 2009.附录一:二相步进电机控制系统总电路图附录二:程序清单#include#define motor P3#define deng P2#define led P0#define kongzhi P1 sbit led1=P20;sbit led2=P21;sbit led3=P22;sbit led4=P23;char table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67;
27、 /数码管编码b1=0xf3,0xf6,0xfc,0xf9; /双四拍正转b2=0xf9,0xfc,0xf6,0xf3; /双四拍反转c19=0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8; /八拍正转c2=0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9; /八拍反转unsigned char aa;int i=0,j,qian,bai,shi,ge,temp,key,si_ba=1,qt=1,fx=0;void chaxun(void);void delay(int x);void shumaguan(temp);void ss
28、pzheng(void);void sspfan(void);void bpfan(void);void bpzheng(void);void main(void) /主程序 i=0,j=0; temp=0;TMOD=0x11; /设置定时器工作方式TH0=(65536-50000)/256; /送初值TL0=(65536-50000)%256;ET0=1; /开定时/计数器0中断TR0=1; /定时/计数器开始工作TH1=(65536-500)/256; /送初值TL1=(65536-500)%256;ET1=1; /开定时/计数器0中断TR1=1; /定时/计数器开始工作EA=1; /开总
29、中断temp=0;aa=0;while(1)chaxun();if(aa=1)if(qt)if(si_ba=0)&(fx=0) sspzheng();P2=0x60; if(si_ba=0)&(fx=1) sspfan(); P2=0x30; if(si_ba=1)&(fx=0) bpzheng();P2=0x60; if(si_ba=1)&(fx=1) bpfan(); P2=0x30; else P2=0x50;/kongzhidengaa=0;void timer0() interrupt 1 /定时/计数器中断程序TH0=(65536-500)/256;TL0=(65536-500)%
30、256;aa+;void timer1() interrupt 3 /定时/计数器中断程序shumaguan(temp);TH0=(65536-200)/256;TL0=(65536-200)%256;void chaxun(void)key=P1&0x0f;switch(key)case 0x0e:si_ba=0;break; /四拍case 0x0d:si_ba=1;break; /八拍case 0x0b: if(qt=0) qt=1;else qt=0; break; /启动、停止case 0x07:if(fx=0) fx=1;else fx=0;break; /正反while(P1&0
31、x0f)!=0x0f);void delay(int x) /延时子程序延时约0.5Xms int i,j; for(i=0;ix;i+) for(j=1;j=40;j+); void shumaguan(temp) /数码管动态显示子程序led1=1;led2=1;led3=1;led4=1;qian=temp/1000; /取千位bai=temp%1000/100; /取百位shi=temp%100/10; /取十位ge=temp%10; /取个位led4=0; /个位数码管亮led=tablege;delay(40);led4=1; led3=0; /十位数码管亮led=tableshi
32、;delay(100);led3=1;led2=0; /百位数码管亮led=tablebai; delay(40);led2=1;led1=0; /千位数码管亮led=tableqian; delay(40);led1=1;void sspzheng(void) /双四拍正转子程序 temp+;motor=(b2i4)+0x0f;i+;if(i=4)i=0;void sspfan(void) /双四拍反转子程序 temp+;motor=(b1i4)+0x0f;i+;if(i=4)i=0;void bpzheng(void) /八拍正转子程序temp+;motor=(c2i4)+0x0f;i+;if(i=8)i=0;void bpfan(void) /八拍反转子程序 temp+;motor=(c1i4)+0x0f;i+;if(i=8)i=0;