单片机课程设计步进电机控制专业班级:姓名:学号:指导教师:目录一.课程设计要求二.课程设计目的三.所用仪器及相关说明1.57步进电机23HS66202.DM524型细分型两相混合式步进电机驱动器3.STC12C5A60S2系列单片机四.调试程序【程序一、二】五.程序功能【程序一、二】六.误差说明七.心得体会八.课设说明一.课程设计要求通过计算机对单片机芯片的编程,将单片机与驱动器相连,从而实现对步进电机的各种方式控制。二.课程设计目的1.根据所期望的结果编写程序,并在实验仪器上调试和验证。2.使用步近电机的工作原理与步进电机驱动器。3.学习控制步进电机转角、速度、方向的实时软件设计三.所用仪器及相关说明1.57步进电机23HS66202.DM524型细分型两相混合式步进电机驱动器,采用直流18~50V供电,适合驱动电压24V~50V,电流小于4.0V,外径42~86毫米的两相混合式步进电机。此驱动器采用交流伺服驱动器的电流环进行细分控制,电机的转矩波动很小,低速运行很平稳,几乎没有振动和噪音。高速时力矩也大大高于其它二相驱动器,定位精度高。广泛适用于雕刻机、数控机床、包装机械等分辩率要求较高的设备上。电气参数输入电压直流18~50V输入输入电流小于4安培输出电流1.0A~4.2A功耗功耗:80W;内部保险:6A温度工作温度-10~45℃;存放温度-40℃~70℃湿度不能结露,不能有水珠气体禁止有可燃气体和导电灰尘重量200克主要特点(1)平均电流控制,两相正弦电流驱动输出(2)直流24~50V供电(3)光电隔离信号输入/输出(4)有过压、欠压、过流、相间短路保护功能(5)十五档细分和自动半流功能(6)八档输出相电流设置(7)具有脱机命令输人端子(8)高启动转速(9)高速力矩大(10)电机的扭矩与它的转速有关,而与电机每转的步数无关控制信号接口控制信号定义PLS/CW+:步进脉冲信号输入正端或正向步进脉冲信号输入正端PLS/CW-:步进脉冲信号输入负端或正向步进脉冲信号输入负端DIR/CCW+:步进方向信号输入正端或反向步进脉冲信号输入正端DIR/CCW-:步进方向信号输入负端或反向步进脉冲信号输入负端ENA+:脱机使能复位信号输入正端ENA-:脱机使能复位信号输入负端脱机使能信号有效时复位驱动器故障,禁止任何有效的脉冲,驱动器的输出功率元件被关闭,电机无保持扭矩。控制信号连接上位机的控制信号可以高电平有效,也可以低电平有效。当高有效时,把所有控制信号的负端连在一起作为信号地,低有效时,把所有控制信号的正端连在一起作为信号公共端。现在以集电极开路和PNP输出为例,接口电路示意图如下:控制器集电极开路输出图2.输入接口电路(共阴极接法)控制器PNP输出注意:VCC值为5V时,R短接;VCC值为12V时,R为1K,大于1/8W电阻;VCC值为24V时,R为2K,大于1/8W电阻;R必须接在控制器信号端。功能选择(用驱动器面板上的DIP开关实现)设置电机每转步数驱动器可将电机每转的步数分别设置为400、500、800、1000、1250、1600、2000、2500、3200、4000、5000、6400、8000、10000、12800步。用户可以通过驱动器正面板上的拨码开关的SW5、SW6、SW7、SW8位来设置驱动器的步数(如表1):SW5状态OFFONOFFONOFFONOFFONOFFONOFFONOFFONOFFSW6状态ONOFFOFFONONOFFOFFONONOFFOFFONONOFFOFFSW7状ONONONOFOFOFOFONONONONOFOFOFOF态FFFFFFFFSW8状态ONONONONONONONOFFOFFOFFOFFOFFOFFOFFOFF步数400800160032006400128002560010002000400050008000100002000025000控制方式选择拨码开关SW4位可设置成两种控制方式:当设置成“OFF”时,为有半流功能。当设置成“ON”时,为无半流功能。设置输出相电流为了驱动不同扭矩的步进电机,用户可以通过驱动器面板上的拨码开关SW1、SW2、SW3位来设置驱动器的输出相电流(有效值)单位安培,各开关位置对应的输出电流,不同型号驱动器所对应的输出电流值不同。具体见表2。输出电流(A)SW1SW2SW3PEAKRMSONONON1.000.71OFFONON1.461.04ONOFFON1.911.36OFFOFFON2.371.69ONONOFF2.842.03OFFONOFF3.312.36ONOFFOFF3.762.69OFFOFFOFF4.203.00半流功能半流功能是指无步进脉冲500ms后,驱动器输出电流自动降为额定输出电流的70%,用来防止电机发热。功率接口+V、GND:连接驱动器电源+V:直流电源正级,电源电压直流16~50V。最大电流是5A。GND:直流电源负级。A+A-B+B-:连接两相混合式步进电机驱动器和两相混合式步进电机的连接采用四线制,电机绕组有并联和串联接法,并联接法,高速性能好,但驱动器电流大(为电机绕组电流的1.73倍),串联接法时驱动器电流等于电机绕组电流。安装周围要有20mm的空间,不能放在其它发热的设备旁,要避免粉尘、油雾、腐蚀性气体,湿度太大及强振动场所。故障诊断状态灯指示RUN:绿灯,正常工作时亮。ERR:红灯,故障时亮,电机相间短路、过压保护和欠压保护。故障及排除故障原因解决措施LED不亮电源接错检查电源连线电源电压低提高电源电压电机不转,且无保持扭矩电机连线不对改正电机连线脱机使能RESET信号有效使RESET无效电机不转,但有保持扭矩无脉冲信号输入调整脉冲宽度及信号的电平电机转动方向错误动力线相序接错互换任意两相连线方向信号输入不对改变方向设定电机扭矩太小相电流设置过小正确设置相电流加速度太快减小加速度值电机堵转排除机械故障驱动器与电机不匹配换合适的驱动器驱动器接线一个完整的步进电机控制系统应含有步进驱动器、直流电源以及控制器(脉冲源)。以下为典型系统接线图:3.单片机STC12C5A60S2系列PWMCCAPMn.1当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果TOG位(CCAPMn.2)置位,模块CEXn输出将发生翻转。当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果匹配位MATn(CCAPMn.3)置位,CCON寄存器的CCFn位将被置位。CAPNn(CCAPMn.4)和CAPPn(CCAPMn.5)用来设置捕获输入的有效沿。CAPNn位使能下降沿有效。CAPPn位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。通过置位CCAPMn寄存器的ECOMn位(CCAPMn.6)来使能比较器功能。每个PCACCAPnH和CCAPnL。当出现捕获或比较时,它们用来保存16位的计数值。当PCA模块用在PWM出的占空比。脉宽调节模式(PWM)脉宽调制(PWMPulseWidthModulation)是一种使用程序来控制波形占空比、PCA工作模式寄存器CMODCPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。当三者分别为0、1、0时,选择PCA/PWM时钟源输入为定时器0的溢出频率。由于定时器0可以工作在1T模式,所以可以达到计一个时钟就溢出,从而达到最高工作频率CPU时钟SYSclk。通过改变定时器0的溢出率,可以实现可调频率的PWM输出。四.调试程序【程序一】#includeREG51.H#includeintrins.h#defineU8unsignedchar#defineU16unsignedintsbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^5;sbitkey4=P1^6;U8table[4]={0xea,0xf2,0xfa,0xfc};U8table1[4]={0xfc,0xfa,0xf2,0xea};U16timer0=0;U16j=0;voidDelayMs(U8ms);voidPWM_clock(U8clock);voidPWM_start(U8module,U8mode);//////////////////////延时子程序/////////////////////////////voidDelayMs(U8ms)//在11.0592M晶振下,stc10f系列(单周期指令)的ms级延时{U16i;while(ms--){for(i=0;i850;i++);}}////////////////////主函数入口////////////////////////////sfrAUXR=0X8E;sfrCCON=0xD8;//PCA控制寄存器sfrCMOD=0xD9;//PCA模式寄存器sfrCCAPM0=0xDA;//PCA模块0模式寄存器//模块0对应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列)sfrCCAPM1=0xDB;//PCA模块1模式寄存器//模块1对应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)sfrCL=0xE9;//PCA定时寄存器低位sfrCH=0xF9;//PCA定时寄存器高位sfrCCAP0L=0xEA;//PCA模块0的捕获寄存器低位sfrCCAP0H=0xFA;//PCA模块0的捕获寄存器高位sfrCCAP1L=0xEB;//PCA模块1的捕获寄存器低位sfrCCAP1H=0xFB;//PCA模块1的捕获寄存器高位sfrPCA_PWM0=0xF2;//PCAPWM模式辅助寄存器0sfrPCA_PWM1=0xF3;//PCAPWM模式辅助寄存器1sbitCF=0xDF;//PCA计数溢出标志位sbitCR=0xDE;//PCA计数器运行控制位sbitCCF1=0xD9;//PCA模块1中断标志sbitCCF0=0xD8;//PCA模块0中断标志//*CCAPOH=CCAPOL=0XC0;//模块0输出占空因数为25%//*CCAPOH=CCAPOL=0X80;//模块0输出占空因数为50%//*CCAPOH=CCAPOL=0X40;//模块0输出占空因数为75%voidPWM_clock(U8clock);voidPWM_start(U8module,U8mode);/*****************************************************************************设置PWM时钟信号来源函数参数:Clock0:系统时钟/12(即12分频);1:系统时钟/2(即2分频);2:定时器0的溢出脉冲;3:ECI/P1.2(或P4.1)脚输入的外部时钟;4:系统时钟(即不分频);5:系统时钟/4(即4分频);6:系统时钟/6(即6分频);7:系统时钟/8(即8分频);/*****************************************************************************/voidPWM_Clock(unsignedcharclock){if(clock==2){AUXR|=0x80;//定时器0时钟为Fosc,即1TTMOD|=0x02;//8位自动重装载TH0=0xe1;//TR0=1;}CMOD|=(clock1);//CMOD=0x84;CL=0;CH=0;}voidPWM_Start(U8module,U8R0,U8R1){CCAP0L=0XFF-(R0*256/100);CCAP0H=0XFF-(R0*256/100);CCAP1L=0XFF-(R1*256/100);CCAP1H=0XFF-(R1*256/100);if(module==0)CCAPM0=0X42;//模块0设置为8位PWM输出,无中断elseif(module==1)CCAPM1=0X42;//模块1设置为8位PWM输出,无中断elsei