STC12系列PWM方式控制两相步进电机

上传人:卷*** 文档编号:120773266 上传时间:2022-07-18 格式:DOC 页数:22 大小:451.50KB
返回 下载 相关 举报
STC12系列PWM方式控制两相步进电机_第1页
第1页 / 共22页
STC12系列PWM方式控制两相步进电机_第2页
第2页 / 共22页
STC12系列PWM方式控制两相步进电机_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单片机课程设计 步进电机控制专业班级: 姓 名: 学 号: 指引教师: 目录一 课程设计规定二 课程设计目的三 所用仪器及有关阐明 1.57步进电机23HS6620 2.DM524型细分型两相混合式步进电机驱动器 3.STC12C5A60S2系列单片机四 调试程序 【程序一、二】五 程序功能 【程序一、二】六误差阐明七心得体会八课设阐明一课程设计规定通过计算机对单片机芯片的编程,将单片机与驱动器相连,从而实现对步进电机的多种方式控制。二 课程设计目的1.根据所盼望的成果编写程序,并在实验仪器上调试和验证。2.使用步近电机的工作原理与步进电机驱动器。3.学习控制步进电机转角、速度、方向的实时软件设计三 所用仪器及有关阐明1. 57步进电机23HS6620 2. DM524型细分型两相混合式步进电机驱动器,采用直流1850V供电,适合驱 动电压24V50V,电流不不小于4.0V,外径4286毫米的两相混合式步进电机。此驱 动器采用交流伺服驱动器的电流环进行细分控制,电机的转矩波动很小,低速 运营很平稳,几乎没有振动和噪音。高速时力矩也大大高于其他二相驱动器, 定位精度高。广泛合用于雕刻机、数控机床、包装机械等分辩率规定较高的设 备上。电气参数输入电压直流1850V输入输入电流不不小于4安培输出电流1.0A4.2A功 耗功耗:80W; 内部保险:6A温 度工作温度-1045;寄存温度-4070湿 度不能结露,不能有水珠气 体严禁有可燃气体和导电灰尘重 量200克 重要特点(1)平均电流控制,两相正弦电流驱动输出(2)直流2450V供电(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、2500、3200、4000、5000、6400、8000、10000、12800步。顾客可以通过驱动器正面板上的拨码开关的SW5、SW6、SW7、SW8位来设立驱动器的步数(如表1): SW5状态OFFONOFFONOFFONOFFONOFFONOFFONOFFONOFFSW6状态ONOFFOFFONONOFFOFFONONOFFOFFONONOFFOFFSW7状态ONONONOFFOFFOFFOFFONONONONOFFOFFOFFOFFSW8状态ONONONONONONONOFFOFFOFFOFFOFFOFFOFFOFF步数4008001600320064001280025600100040005000800010000025000控制方式选择拨码开关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:直流电源正级,电源电压直流1650V。最大电流是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)来使能比较器功能。每个PCA模块还相应此外两个寄存器CCAPnH和CCAPnL。当浮现捕获或比较时,它们用来保存16位的计数值。当PCA模块用在PWM模式中时它们用来控制输出的占空比。脉宽调节模式(PWM)脉宽调制(PWMPulse Width Modulation)是一种使用程序来控制波形占空比、周期、相位波形的技术。PCA工作模式寄存器CMODCPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。当三者分别为0、1、0时,选择PCA/PWM时钟源输入为定期器0的溢出频率。由于定期器0可以工作在1T模式,因此可以达到计一种时钟就溢出,从而达到最高工作频率CPU时钟SYSclk。通过变化定期器0的溢出率,可以实现可调频率的PWM输出。四调试程序【程序一】#include #include #define U8 unsigned char#define U16 unsigned intsbit key1=P10;sbit key2=P11;sbit key3=P15;sbit key4=P16;U8 table4=0xea,0xf2,0xfa,0xfc;U8 table14=0xfc,0xfa,0xf2,0xea;U16 timer0=0;U16 j=0;void DelayMs(U8 ms);void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);/ 延时子程序/void DelayMs(U8 ms) /在11.0592M晶振下,stc10f系列(单周期指令)的ms级延时 U16 i;while(ms-) for(i = 0; i 850; i+); /主函数入口/sfr AUXR = 0X8E;sfr CCON = 0xD8; /PCA控制寄存器sfr CMOD = 0xD9; /PCA模式寄存器sfr CCAPM0 = 0xDA; /PCA模块0模式寄存器 /模块0相应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列) sfr CCAPM1 = 0xDB; /PCA模块1模式寄存器 /模块1相应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)sfr CL = 0xE9; /PCA 定期寄存器 低位sfr CH = 0xF9; /PCA 定期寄存器 高位sfr CCAP0L = 0xEA; /PCA模块0的 捕获寄存器 低位sfr CCAP0H = 0xFA; /PCA模块0的 捕获寄存器 高位sfr CCAP1L = 0xEB; /PCA模块1的 捕获寄存器 低位sfr CCAP1H = 0xFB; /PCA模块1的 捕获寄存器 高位sfr PCA_PWM0 = 0xF2; /PCA PWM 模式辅助寄存器0sfr PCA_PWM1 = 0xF3; /PCA PWM 模式辅助寄存器1sbit CF = 0xDF; /PCA计数溢出标志位sbit CR = 0xDE; /PCA计数器 运营控制位sbit CCF1 = 0xD9; /PCA模块1中断标志sbit CCF0 = 0xD8; /PCA模块0中断标志/* CCAPOH = CCAPOL = 0XC0; /模块0输出 占空因数为25%/* CCAPOH = CCAPOL = 0X80; /模块0输出 占空因数为50%/* CCAPOH = CCAPOL = 0X40; /模块0输出 占空因数为75%void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);/*设立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分频); /*/void PWM_Clock(unsigned char clock) if(clock=2)AUXR |= 0x80;/定期器0时钟为Fosc,即1TTMOD|=0x02; /8位自动重装载TH0=0xe1; /TR0=1; CMOD |= (clock1);/CMOD=0x84;CL = 0;CH = 0; void PWM_Start(U8 module,U8 R0,U8 R1) 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输出,无中断 else if(module=1) CCAPM1 = 0X42; /模块1设立为8位PWM输出,无中断 else if(module=2) CCAPM0 = CCAPM1 = 0X42; /模块0和1设立为8位PWM输出,无中断 CR=1; /PCA计数器开始计数 void main() U8 keycode=0;U8 keycode1=0; PWM_Clock(2); / PCA/PWM时钟源为 定期器0的溢出PWM_Start(0,20,0);/ 模块0,设立为PWM输出,无中断,初始占空因素为25%while(1)if(key1=0) while(key1=0); EA=0; TR0=1; TH0=tablekeycode; keycode+; if(keycode=4) keycode=0; DelayMs(100); if(key3=0) while(key3=0); TR0=1; EA=0; TH0=table1keycode1; keycode1+; if(keycode1=4) keycode1=0; DelayMs(100); if(key2=0) while(key2=0); EA=1; ET0=1; TR0=1; TH0=0xD1; void timer() interrupt 1 +timer0; if(timer0=256) +j;timer0=0; if(j=3032) j=0;TR0=0; 【程序二】#include #include #define U8 unsigned char#define U16 unsigned intsbit DIR=P15;sbit key1=P30;sbit key2=P31;sbit key3=P32;sbit key4=P33;U16 i=0;U8 keycode=0;U8 table4=0xea,0xf7,0xfa,0xfe;/ 调频void DelayMs(U8 ms);void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);/ 延时子程序/void DelayMs(U8 ms) /在11.0592M晶振下,stc10f系列(单周期指令)的ms级延时 U16 i;while(ms-) for(i = 0; i 850; i+); /主函数入口/sfr AUXR = 0X8E;sfr CCON = 0xD8; /PCA控制寄存器sfr CMOD = 0xD9; /PCA模式寄存器sfr CCAPM0 = 0xDA; /PCA模块0模式寄存器 /模块0相应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列) sfr CCAPM1 = 0xDB; /PCA模块1模式寄存器 /模块1相应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)sfr CL = 0xE9; /PCA 定期寄存器 低位sfr CH = 0xF9; /PCA 定期寄存器 高位sfr CCAP0L = 0xEA; /PCA模块0的 捕获寄存器 低位sfr CCAP0H = 0xFA; /PCA模块0的 捕获寄存器 高位sfr CCAP1L = 0xEB; /PCA模块1的 捕获寄存器 低位sfr CCAP1H = 0xFB; /PCA模块1的 捕获寄存器 高位sfr PCA_PWM0 = 0xF2; /PCA PWM 模式辅助寄存器0sfr PCA_PWM1 = 0xF3; /PCA PWM 模式辅助寄存器1sbit CF = 0xDF; /PCA计数溢出标志位sbit CR = 0xDE; /PCA计数器 运营控制位sbit CCF1 = 0xD9; /PCA模块1中断标志sbit CCF0 = 0xD8; /PCA模块0中断标志sbit ECCF0 = 0xDA;sbit ECF = 0xD9;sbit PWM0 = 0xD8;/* CCAPOH = CCAPOL = 0XC0; /模块0输出 占空因数为25%/* CCAPOH = CCAPOL = 0X80; /模块0输出 占空因数为50%/* CCAPOH = CCAPOL = 0X40; /模块0输出 占空因数为75%void PWM_clock(U8 clock);void PWM_start(U8 module,U8 mode);void PWM_Clock(unsigned char clock) if(clock=2)AUXR |= 0x80;/定期器0时钟为Fosc,即1TTMOD|=0x02; /8位自动重装载TH0=0xe1; /设定频率CMOD |= 0x05;/(clock1);CL = 0;CH = 0; /EA=1;void PWM_Start(U8 module,U8 R0,U8 R1) 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输出,无中断 else if(module=1) CCAPM1 = 0X42; /模块1设立为8位PWM输出,无中断 else if(module=2) CCAPM0 = CCAPM1 = 0X42; /模块0和1设立为8位PWM输出,无中断 void main() PWM_Clock(2); / PCA/PWM时钟源为 定期器0的溢出PWM_Start(0,20,0); / 模块0,设立为PWM输出,无中断,初始占空因素为25%TR0=0;EA=1;while(1) if(key1=0)while(!key1)TR0=1;CR=1;i=0; CH =0x9c; / 0x9c 100 步数 / 0x38200 if(key2=0) EA=0; TR0=1; CR=1; while(key2=0); TH0=tablekeycode; /调频 keycode+; if(keycode=4) keycode=0; if(key3=0) /方向while(!key3)DIR=0;DelayMs(100);void PCA_isr() interrupt 7 i=i+1;CH=0x9c; / 0x9c 100 步数 / 0x37200CF=0;if(i=100)/100*4 200*125 CR=0; i=0; 五 程序功能 一方面对各寄存器设定初值,选择工作模式,使PCA计数频率为定期器0的溢出率,实现可调频率的PWM输出。设定CCAP0H和CCAP0L及CL和CH的初值,当PCA计数器的低位CL从0xFF递减到0x00过程中,若值不小于CCAP0L,则输出高电平,否则为低电平,从而调节占空比。 采用定期器0的八位自动装载,通过给TH0赋初值,变化PWM的输出频率,从而控制电机的转速。在同一细分的条件下,频率越大,转速越快。将各初值相应的频率制成数表,通过按键1、3调用数表,选择相应的频率,从而实现步进电机的加减速。 步进电机的转向则是通过驱动器的DIR/CCW+(步进方向信号输入正端或反向步进脉冲信号输入正端)和DIR/CCW-(步进方向信号输入负端或反向步进脉冲信号输入负端)来控制。 【程序一】 通过按键2启动定期器0的中断,在中断中对中断次数进行控制,实现PCA的计数功能,通过PCA的计数值,控制步进电机的转角。在同一频率下,对不同细分进行操作。例如,在400细分下,设立379个脉冲使步进电机转一圈。在800细分下,则设立2*379=758个脉冲实现转一圈。以此类推,所有的实验成果均满足之前的假设。 【程序二】 通过按键1调用PCA中断,通过设立CH0的初值,来变化PCA的溢出率,在中断中记录PCA的中断次数,从而进行对转角的调节。变化初值,来实现单步、多步的控制。通过按键2使电机进行4个不同频率的调速,频率的设立通过软件设定,变频的次数也可通过软件调节。通过按键3使电机的方向变化。 程序可在40025000细分下进行电机的单步,多步控制。六 误差阐明 在实验过程中,我们发现了某些数据与理论值有出入,故在此进行阐明。1. 歩距角:理论值是1.8度/步,但是实际实验中单步进行时,与理论值有偏差。2. 令步进电机转一圈的精确度:这一现象取决于步进电机的歩距角、程序中按键 的响应时间、步进电机自身启动等因素。七心得体会通过本次课程设计,对步进电机的使用有了更深刻的理解。理清了PWM输出频率与步进电机转速,驱动器细分与电机转角等的关系。实现了对步进电机的单步、多步、加速、减速、正转、反转的控制。通过自己编程,实验了诸多种也许的方式,保存了有用的方案,最后实现了对步进电机的控制。在找到最后可用方案之前,我们不仅要找出步进电机、编写的程序自身的规律,更要找出它们的内在联系。在这个过程中,我们不仅锻炼了自身读资料、整合知识和想法、编写程序的能力,更锻炼了团队协作的能力。八课设阐明根据电子设计大赛的训练题目学习步进电机的控制。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!