课程设计报告课程名称单片机原理及应用课题名称基于51单片机的步进电机的控制设计专业电子信息科学与技术年班级07级电科一班学号07417121姓名谭成指导教师朱高峰2010年6月25日目录1、设计任务1.1步进电机工作原理1.2步进电机的主要特性2、设计思路与总体框图2.1建立相序表2.2硬件框图3、系统主程序3.1运行方式与方向的控制——循环查表法3.2步进电机运行速度的控制——软件延时法3.3源程序流程图4、系统硬件电路的设计4.1控制器芯片的选择4.2步进电机驱动器构成与特点4.3硬件电路的设计5、系统的设计仿真5.1仿真原理图5.2源程序代码5、总结与体会6、参考文献课程设计论文11、设计任务本次课程设计要求按键控制二相四线步机电机的工作状态,包括:正转、反转、加速、减速。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。1.1步进电机工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。1.2步进电机的主要特性1、步进电机必须加驱动才可以运转,驱动型号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动。转动的速度和脉冲的频率成正比。2、型号20BY20L010步进电机的步进角度为18度,一圈360度,需要20个脉冲完成。3、步进电机具有瞬间启动和急速停止的优越特性。4、改变脉冲的顺序,可以方便的改变转动的方向。2、设计思路与总体框图电机的运转一般由脉冲和方向信号来控制的,脉冲的频率控制电机的转速,脉冲的个数控制电机的转角;方向信号的高、低电平控制着电机的正、反转。用单片机控制步进电机,可以用一个输出口发送脉冲:高电平-延时-低电平-延时……延时的长短控制脉冲的频率,电平的转换次数就是脉冲个数;另外用AT89C51的输出作为方向信号。2.1建立相序表实现步进电机运行方式、方向和速度以及启/停的控制,是接口软件设计的课程设计论文2主要任务。为此,在编写程序之前,要建立一个相序表,相序表的建立应根据步进电机运行方式的要求。表1:正转环形脉冲分配表步数P0.0P0.1P0.2P0.3AB/A/B11100201103001141001表2:反转环形脉冲分配表步数P0.0P0.1P0.2P0.3AB/A/B111002100130011401102.2硬件框图单片机课程设计论文3按键驱动步进电机3、系统主程序3.1运行方式与方向的控制——循环查表法步进电机的运行方式是指各相绕组循环轮流通电的方式。为了实现对各绕组按一定方式轮流加电,需要一个脉冲循环分配器。循环分配器可用硬件电路来实现,也可用软件来实现。采用软件来设计脉冲循环分配器,又有两种方法:课程设计论文4控制字法和循环查表法。而本课程设计用到的是循环查表法。循环查表法是将各相绕组加电顺序的控制代码制成一张表——步进电机相序表,存放在内存区,再设置一个地址指针。当地址指针依次加1(或减1)时,即可从表中取出加电的代码,然后输出到步进电机,产生按一定运行方式的走步操作。若改变相序表内的加电代码和地址指针的指向,则可改变步进电机的运行方式和方向。步进电机的运行方向是采用设置相序表的指针进行控制的。如果把指针设在指向正相序表的第一个元素,依次加1,取出加电代码去控制步进电机的运行方向叫做正方向,那么,再把指针改设在指向反相序表的第一个元素,依次加1的方向就是反方向。3.2步进电机运行速度的控制——软件延时法控制步进电机速度有两个途径:一是硬件改变输入脉冲的频率,通过对定时器定时常数的设定,使其升频、降频或恒频。二是软件延时,或调用子程序。采用软件延时方法来改变步进电机速度。本次课程设计用到的是软件延时法。3.3源程序流程图开始Ysw1?电机正转端口初始化NYY(有键按下)sw2?电机反转键扫描NYNsw3?电机加速课程设计论文5NY调用延时程序sw4?电机减速N4、系统硬件电路的设计4.1控制器芯片的选择控制器采用MCS-51单片机。其引脚功能如下:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51?指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。4.2步进电机驱动器构成与特点1)步进电机不能直接接到交、直流电源上工作,而必须使用专用设备——步进电机驱动器。步进电机驱动系统的性能,除与电机的自身性能有关外,在很大程度上也取决于驱动器的优劣。步进电机驱动器一般由环形分配器、信号处理级、推动级、驱动级等各部分组成,用于功率步进电机的驱动器还有多种分配分配保护。环形分配器用来接受来自控制器的CP脉冲,并提供步进电机状态转换表的状态顺序产生各相导通或截止的信号。每来一个CP脉冲,环形分配器的输出就转换一次。因此,步进电机的转速的高低、升速或降速、启动或停止都完全取决于CP脉冲的有无或频率。同时,环形分配器还必须接受控制器的方向信号,从而决定其输出的状态转换是按正序转换还是反序转换,于是就决定了步进电机的转向。接受CP脉冲和方向电平是环形分配器的最基本功能。课程设计论文6从环形分配器输出的各相导通或者截止的信号送入信号放大或处理级。信号放大的作用是将环形分配器输出的信号加以放大,变成足够大的信号送入推动级,这中间一般放大既需电压放大,也需电流放大。信号处理是实现信号的某些转换、合成等功能,产生斩波、抑波等特殊功能的信号,从而产生特殊功能的驱动,本级还经常与各种保护电路、控制电路组合在一起,形成较高性能的驱动输出。2)驱动级的作用是将较小的信号加以放大,变成足以驱动级输入的较大信号。有时,推动级还承担电平转换作用。驱动级直接与步进电机各绕组相连接,它接受来自推动级的输入信号,控制步进电机各绕组的导通与截止,同时也对绕组承受的电压和电流进行控制。各种电子设备的末级一般需要功率放大,步进电机驱动也是这样。为使步进电机满足各种专有权的输出,驱动级必须对电机的绕组提供足够的电压和电流。但步进电机驱动与一般电子设备的驱动有不同的特点,主要体现在:a各相绕组都是开关工作,多数电动机的绕组都是连续的交流或者直流,而步进电机的各相绕组都是脉冲式供电,所以绕组电流不是连续的而是离散的。b电动机的各相绕组是绕在铁心上的线圈,所以都有比较大的电感。绕组通电时电流上升率受到限制,因而影响电动机绕组电流的大小。c绕组断电时,电感中磁场的储能将维持绕组中已有的电流不能突变,结果使应该截止的相不能立即截止。为使电流尽快衰减,必须设计适当的续流回路。绕组导通和截止过程中都会产生较大的反向电动势,而截止时的反电动势将对驱动级器件的安全产生十分有害的影响。d电动机运转时在各相绕组中将产生旋转电动势,这些电动势的大小和方向将对绕组电流产生很大的影响。由于旋转电动势基本上与电动机转速成正比,转速越高,电动势越大,绕组电流越小,从而使电动机输出转矩也随着转速升高而下降。e电动机绕组中有电感电动势、互感电动势、旋转电动势。这些电动势与外加电共同作用于功率器件,当其叠加结果使电动机绕组两端电压大大超过电源电压时,使驱动级的工作条件更为恶化。课程设计论文7根据以上的功率放大级的设计要点、组成和特点,结合本课程设计的设计要求,此设计选用单片机控制可以省去环形分配器,节约成本,电路系统结构简单,维护方便,灵活性好等特点。4.3硬件电路的设计按钮接P2.0~P2.3作为触发输入单片机P1.0~P1.3作为O口输出控制脉冲由三极管、二极管、电阻搭建2个H桥作为驱动电路驱动步进电机。图1单片机控制二相步进电机电路图图2AT89S51引脚课程设计论文8图3二相步进电机的驱动电路5、系统设计仿真5.1Proteus仿真电路具体操作:启动系统,默认步进电机正转。此时按下sw2,切换到反转;按下sw1可切换回正转;每按一次sw3,就加速一次,直至上限速度;按一次sw4,就减速一次,直到下限速度。5.2源程序代码运行Keil中文版,参照电路图和流程图编写程序#includeAT89X51.hstaticunsignedintcount;//计数staticintstep_index;//步进索引数,值为0-7staticbitturn;//步进电机转动方向staticbitstop_flag;//步进电机停止标志staticintspeedlevel;//步进电机转速参数,数值越大速度越慢,最小值为1,速度最快staticintspcount;//步进电机转速参数计数课程设计论文9voiddelay(unsignedintendcount);//延时函数,延时为endcount*0.5毫秒voidgorun();//步进电机控制步进函数voidmain(void){count=0;step_index=0;spcount=0;stop_flag=0;P1_0=0;P1_1=0;P1_2=0;P1_3=0;EA=1;//允许CPU中断TMOD=0x11;//设定时器0和1为16位模式1ET0=1;//定时器0中断允许TH0=0xFE;TL0=0x0C;//设定时每隔0.5ms中断一次TR0=1;//开始计数turn=0;speedlevel=2;delay(10000);speedlevel=1;do{speedlevel=2;delay(10000);speedlevel=1;delay(10000);stop_flag=1;课程设计论文10delay(10000);stop_flag=0;Turn=!turn;}while(1);}//定时器0中断处理voidtimeint(void)interrupt1{TH0=0xFE;TL0=0x0C;//设定时每隔0.5ms中断一次count++;spcount--;if(spcount=0){spcount=speedlevel;gorun();}}voiddelay(unsignedintendcount){count=0;do{}while(countendcount);}voidgorun(){if(stop_flag==1){P1_0=0;课程设计论文11P1_1=0;P1_2=0;P1_3=0;return;}switch(step_index){case0://0P1_0=1;P1_1=0;P1_2=0;P1_3=0;break;case1://0、1P1_0=1;P1_1=1;P1_2=0;P1_3=0;break;case2://1P1_0=0;P1_1=1;P1_2=0;P1_3=0;break;case3://1、2P1_0=0;课程设计论文12P1_1=1;P1_2=1;P1_3=0;break;case4://2P1_0=0;P1_1=0;P1_2=1;P1_3=0;break;case5://2、3P1_0=0;P1_1=0;P1_2=1;P1_3=1;break;case6://3P1_0=0;P1_1=0;P1_2=0;P1_3=1;break;case7://3、0P1_0=1;P1_1=0;P1_2=0;P1_3=1;}课程设计论文13if(turn==0){step_index++;if(step_index7)step_i