![点击分享此内容可以赚币 分享](/master/images/share_but.png)
基于系列单片机控制步进电机调速闭环系统设计样本.doc
《基于系列单片机控制步进电机调速闭环系统设计样本.doc》由会员分享,可在线阅读,更多相关《基于系列单片机控制步进电机调速闭环系统设计样本.doc(26页珍藏版)》请在咨信网上搜索。
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 摘要: 步进电动机是一种将脉冲信号变换成相应的角位移(或线位移)的电磁装置, 是一种特殊的电动机。由于其精确性以及其良好的性能在实际当中得到了广泛的应用。本文介绍了以51系列单片机AT89S52为控制核心所设计的步进电机( 型号42BYG016) 控制系统, 从系统的硬件电路以及软件的设计方面实现了对步进电机的控制。而且由传感器EE-EX672采集转速数据进而进行关于速度的闭环控制, 经过实际应用电路证明, 该仿真控制系统的随动性能好, 抗干扰能力强, 稳定性好。 关键词: 单片机、 步进电机、 光电开关、 PID算法、 闭环控制 一、 步进电机 1.1 步进电机的工作原理 步进电机是将电脉冲信号转变为角位移或线位移的执行机构。在非超载的情况下, 电机的转速、 停止的位置只取决于脉冲信号的频率和脉冲数, 而不受负载变化的影响, 即给电机加一个脉冲信号, 电机则转过一个步距角。这一线性关系的存在, 加上步进电机只有周期性的误差而无累积误差等特点, 使得在速度、 位置等控制领域用步进电机来控制变的非常的简单。 1.2 步进电机的特点 本实验所用的步进电机为感应子式步进电机( 型号为42BYG016) 。感应子式步进电机与传统的反应式步进电机相比, 结构上转子加有永磁体, 以提供软磁材料的工作点, 而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能, 因此该电机效率高, 电流小, 发热低。因永磁体的存在, 该电机具有较强的反电势, 其自身阻尼作用比较好, 使其在运转过程中比较平稳、 噪音低、 低频振动小。 感应子式步进电机某种程度上能够看作是低速同步电机。一个四相电机能够作四相运行, 也能够作二相运行。( 必须采用双极电压驱动) , 而反应式电机则不能如此。例如: 四相八拍运行( A-AB-B-BC-C-CD-D-DA-A) 完全能够采用二相八拍运行方式.不难发现其条件为C=,D=. 一个二相电机的内部绕组与四相电机完全一致, 小功率电机一般直接接为二相, 而功率大一点的电机, 为了方便使用, 灵活改变电机的动态特点, 往往将其外部接线为八根引线( 四相) , 这样使用时, 既能够作四相电机使用, 能够作二相电机绕组串联或并联使用。( 本实验采用两相四拍) 1.3 步进电机的静态指标 相数: 产生不同对极N、 S磁场的激磁线圈对数。常见m表示。 拍数: 完成一个磁场周期性变化所需脉冲数或导电状态用n表示, 或指电机转过一个齿距角所需脉冲数, 以四相电机为例, 有四相四拍运行方式即AB-BC-CD-DA-AB, 四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A. 步距角: 对应一个脉冲信号, 电机转子转过的角位移用θ表示。θ=360度( 转子齿数J*运行拍数) , 以常规二、 四相, 转子齿为50齿电机为例。四拍运行时步距角为θ=360度/( 50*4) =1.8度( 俗称整步) , 八拍运行时步距角为θ=360度/( 50*8) =0.9度( 俗称半步) 。 1.4 步进电机的动态指标 1) 步距角精度: 步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示: 误差步距角*100%。不同运行拍数其值不同, 四拍运行时应在5%之内, 八拍运行时应在15%以内。 2) 失步: 电机运转时运转的步数, 不等于理论上的步数。称之为失步。 3) 失调角: 转子齿轴线偏移定子齿轴线的角度, 电机运转必存在失调角, 由失调角产生的误差, 采用细分驱动是不能解决的。 4) 最大空载起动频率: 电机在某种驱动形式、 电压及额定电流下, 在不加负载的情况下, 能够直接起动的最大频率。 5) 最大空载的运行频率: 电机在某种驱动形式, 电压及额定电流下, 电机不带负载的最高转速频率。 6) 运行矩频特性: 电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性, 这是电机诸多动态曲线中最重要的, 也是电机选择的根本依据。 1.5 步进电机的驱动控制系统 控制系统的组成方框图如下: 1) 脉冲信号的产生 脉冲信号由单片机AT89S52的I/O口产生, 一般的脉冲信号的占空比为0.3-0.4左右, 电机转速越高, 占空比则越大。本实验采用的占空比为0.5。 2) 信号分配 感应子式不但以二、 四相电机为主, 二相电机工作方式有二相四拍和二相八拍两种, 具体分配如下: 二相四拍为,步距角为1.8度; 二相八拍为,步距角为0.9度。本设计采用步距角为1.8度。 3) 功率放大 功率放大是驱动系统最为重要的部分。步进电机在一定转速下的转矩取决于它的动态平均电流而非静态电流( 而样本上的电流均为静态电流) 。平均电流越大电机力矩越大, 要达到平均电流大这就需要驱动系统尽量克服电机的反电势。因而不同的场合采取不同的的驱动方式, 到当前为止, 驱动方式一般有以下几种: 恒压、 恒压串电阻、 高低压驱动、 恒流、 细分数等。 步进电机一经定型, 其性能取决于电机的驱动电源。步进电机转速越高, 力距越大则要求电机的电流越大, 驱动电源的电压越高。电压对力矩影响如下: 4) 功率放大细分驱动器 在步进电机步距角不能满足使用的条件下, 可采用细分驱动器来驱动步进电机, 细分驱动器的原理是经过改变相邻( A, B) 电流的大小, 以改变合成磁场的夹角来控制步进电机运转的。 二、 驱动器 由于单片机的I/O不具有直接驱动步进电机的能力, 故在本系统中需要步进电机驱动器, 我们选择驱动器为KD-221, 该驱动器具有输入电压范围广, 控制信号输入方式多样等特点。其具体接法如下: 2.1、 电源接线: ①、 E高: 当驱动电压大于10V时, 正极接此座, 使用时最大不能大于40V, 以防损坏模块。 ②、 E低: 当驱动电压小于10V时, 正极接此座。 ③、 地: 驱动电压E高、 E低的的负极接此座。 ④、 A ,:接电机A相线圈的二根引线。 ⑤、 B, :接电机B相线圈的二根引线。 2.2、 控制信号接线: ①、 CP:接控制器发给步进电机的走步脉冲信号线。 ②、 CW:接控制器发给步进电机的走步方向信号线。 ③、 VP:接CP和CW信号的负极, 即逻辑电路电源的负极。 ④、 本驱动器内部设计接收信号为RTTL电平, 即5V电平, 如其它逻辑电平信号需要接限流电阻, 否则可能损坏光耦元件。 三、 光电开关 本系统中所用传感器为EE-EX672关电开关, 该传感器为开关型传感器, 四个接线脚分别为”+, L,OUT,-”其输入电压范围广为直流5-24V,L为控制指示端, 当”L”与”+”相连时, 传感器未检测到物体时LED灯发光, 当”L”悬空时则相反, 其特点为: 1. 动作模式备有遮光时ON/入光时ON(可切换型) 2. 应答频率为1KHZ的高速响应 3. 入光显示灯明显,容易进行动作确认. 4. 电源电压为DC-24V的广范围 5. 备有遮光时入光显示灯灯亮型 其连接电路如下图所示: ”L”与”+”相连时, 传感器未检测到物体时LED灯发光。 ”L”悬空传感器检测到物体时LED灯发光。 四、 硬件设计电路图 下图中为单片机的最小系统,其P0.0-P0.7口分别连接到LCD1602的D0-D7引脚,与P2.5,P2.6, P2.7相连的按键开关分别控制步进电机的正反转,加速,减速,P2.0,P2.1,P2.2分别接 LCD1602的RS,RW,E引脚。 下图中为电机驱动部分。驱动电压为+12V,用单片机的P1.0与电机驱动器的CW相连控制单片机的转向,P1.1与电机驱动器的CP相连,给驱动器输入脉冲。a,b,c,d分别接入步进电机。SX-672为检测转速的传感器外接+5V驱动电压,输出接入单片机的T1脚。 五、 软件设计 5.1 控制算法比较: PID控制原理PID调节器由比例调节器(P), 积分调节器(I)和微分调节器(D) 构成, 它经过对偏差值的比例积分和微分运算后, 用计算所得的控制量来控制被控对象.图1所示为PID控制系统框图。 图1 PID控制系统框图 5.1.1 比例调节( P) 比例调节是数字控制中最简单的一种调节方法。其特点是调节器的输出与控制偏差e成线性比例关系, 控制规律为: (1) 式中: -比例系数, -偏差e为零时调节器的输出值. 当输出值S与设定的期望值R间产生偏差时, 比例调节器会自动调节控制变量y(如为控制阀门的开度)的大小。控制变量y的大小会朝着减小偏差e的方向变化.比例系数的大小决定了比例调节器调节的快慢程度,大调节器调节的速度快, 但过大会使控制系统出现超调或振荡现象。小调节器调节的速度慢, 但过小又起不到调节作用。另外, 虽然比例调节器控制规律简单, 控制参数易于整定, 但缺点是它只能在一种负载情况下实现无静差值的调节, 当负载变化时, 除非重新调整相应的), 值的大小, 否则控制系统将会产生无法消除的静差值。 5.1.2 比例微分调节( PI) 比例调节器的主要缺点是存在无法消除的静差值, 影响了调节精度.为了消除静差值, 在比例调节器的基础上并人一个积分调节器构成比例积分调节器, 其调节规律可用下列(2)式表示. ( 2) 式中: 为积分常数, 它的物理意义是当调节器积分调节作用与比例调节作用的输出相等时所需的调节时间称为积分常数。积分常数的大小决定了积分作用强弱程度, 选择的越小, 积分的调节作用越强, 但系统振荡的衰减速度越慢。当 过小时, 甚至会造成系统的持续振荡, 使调节器的输出波动不定, 给生产过程带来严重的危害。相反地当选择的越大, 积分的调节作用越弱, 虽然过渡过程中不容易出现振荡现象, 但消除偏差e的时间却很长。积分调节对偏差有累积作 用, 因此, 只要有偏差e存在积分的调节作用就会不断地增强, 直至消除比例调节器无法消除的静差值。 5.1.3 比例积分微分调节( PID) 加入积分调节后, 虽可消除静差, 使控制系统静态特性得以改进, 但由于积分调节器输出值的大小是与偏差值e的持续时间成正比的, 这样就会使系统消除静差的调节过程变慢, 由此带来的是系统的动态性能变差.特别是当积分常数很大时, 情况更为严重。另外, 当系统受到冲激式偏差冲击时, 由于偏差的变化率很大, 而PI调节器的调节速度又很慢, 这样势必会造成系统的振荡, 给生产过程带来很大的危害.改进的方法是在比例积分调节的基础上再加人微分调节, 构成比例积分微分调节器(PID)。其调节规律可用(3)式表示。 ( 3) 式中: 为微分常数, 它的物理意义是当调节器微分调节作用与比例调节作用的输出相等时所需的调节时间称为微分常数. 5.2 PID控制算法 单片机控制系统经过A/D电路检测输出值s, 并计算偏差e和控制变量y, 再经D/A转换后输出给执行机构, 从而实现缩小或消除输出偏差的目的, 使系统输出值s稳定在给定值区域内。在计算机控制过程中, 整个计算过程采用的是数值计算方法, 当采样周期足够小时, 这种数值近似计算相当谁确, 使离散的被控过程与连续过程相当接近。图2为单片机闭环控制系统框图 J。PID算法是将描述连续过程的微分方程转化为差分方程, 然后, 根据差分方程编制计算程序来进行控制计算的。另外在PID控制中, 由于PID算式选择的不同, 最终所得到的控制效果是不同的。下面进行PID控制算法的研究。 图5 单片机闭环控制系统框图 5.2.1 位置式PID的控制算法 如前所述PID调节的微分方程为: 将此微分方程写成对应的差分方程形式. ( 4) 式中: -第n次采样周期内所获得的偏差信号; -第n-1次采样周期内所获得的偏差信号; T-采样周期; -调节器第rt次控制变量的输出; 为了编写计算机程序的方便, 现将算式(4)写成下列形式 ( 5) 式中: , 因为采样周期T, 积分常数和微分常数选定后皆为常数, 因此及必为常。当调整参数改进控制性能时, 也只须调整、 和的大小即可。 5.2.2 增量式PID的控制算法 在位置式PID控制算法中, 每次的输出与控制偏差e过去整个变化过程相关, 这样由于偏差的累加作用很容易产生较大的累积偏差, 使控制系统出现不良的超调现象。 由算式(4)可得: ( 6) 用(4)式减去(6)式, 可得增量式PID的算式: ( 7) 其中, 为了编写程序方便, 将(7)式改写成下列形式: ( 8) 式中: , , 从增量式PID的算式中可知, 只要知道了现时以前的三次采样周期内的偏差信号, , 即可计算出本次采样周期内的控制变量y的增量。 综合以上分析, 我们采用增量式PID算法, 本系统的软件控制算法主要采用了增量式PID 控制算法。其控制算法的流程图为: 5.3 步进电机控制流程图如下: 六、 数据处理和分析 1、 PWM的设定 我们经过设定PWM来控制步进电机的转速。当T=6S时, 我们经过试凑的方法了解到, 当PWM=1/300时, 所给步进电机刚好启动, 当PWM=1/17时, 步进电机速度达到最大。 2、 步进电机的测速 我们经过用软件设定一个转速, 然后与用光电开关采集回来的速度相比较, 采用闭环的PID控制来达到步进电机稳定调速的目的。我们在程序中设定转速为72 rpm, 经过与P3.2采集回来的数据相比较, 当采集回来的数据小于72rpm时, 我们经过改变PID的相应的参数( =1.2, =1.1 , =0.9) 来调节电机的转速, 让步进电机的转速加起来, 使之与72 rpm相吻合。同样, 当采集回来的数据大于72rpm时, 也改变PID的相应的参数来调节电机的转速, 让步进电机的转速加起来, 使之与72 rpm相吻合。 七、 实验心得及体会 经过本次课程设计我们学习到了许多书本上没有的知识, 经过自己查资料和互相讨论, 对系统进行整体设计后基本达到了要求, 实现步进电机速度闭环控制 并经过对系统控制算法的比较, 综合考虑, 选用了闭环的PID控制, 使我们对PID的控制有了更深刻的认识, 使自己将理论与实际相结合起来同时对51系列的单片机的设计及编程有了更深的了解, 学会了很多。同时衷心感谢老师的指导。 附录 1.显示及测速程序 #include < reg51.h > #include < intrins.h > #define uchar unsigned char #define uint unsigned int float f=0; bit F_in=0,truer; sbit P10=P3^0 ; sbit P12=P3^2; //sbit P14=P1^4; sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; //sbit BEEP = P3^7; uchar code cdis1[ ] = {"motorspeed: "}; uchar code cdis2[ ] = {" number: "}; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; uchar key_buf; //显示缓存 uchar temp; uchar key,key_num=0; uchar LCD0_data,LCD1_data,LCD2_data,LCD3_data; //键顺序吗 uchar data testdata[] = {0x00,0x00,0x00,0x00}; uchar data in_data[] = {0x01,0x02}; uchar shift ; uint i; uint q; uint j; /********************************************************/ void initime() { TMOD=0x51; //T1计数器, T0定时器, 方式1 TL0=(65536-10000)%256; TH0=(65536-10000)/256; //定时10000us 0.01s TL1=0; TH1=0; ET0=1; EA=1; } void delay(uint ms) { uchar t; while(ms--) { for(t = 0; t < 120; t++); } } void mydelay() { for(i=0;i<100;i++) for(j=0;j<1000;j++); } /*************************************************************/ /* */ /* 延时 x*0.14ms */ /* */ /*************************************************************/ void delay0(uchar x) { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); } void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80); //数据指针=80+地址变量 } void dectobit(int dec) { LCD3_data=dec/1000+0x30; dec=dec % 1000; LCD2_data=dec/100; dec=dec % 100; LCD1_data=dec/10+0x30; dec=dec % 10+0x30; LCD0_data=dec; } void display1() { lcd_pos(0x0b); lcd_wdat(LCD3_data); lcd_pos(0x0c); lcd_wdat(LCD2_data); lcd_pos(0x0d); lcd_wdat(LCD1_data); lcd_pos(0x0e); lcd_wdat(LCD0_data); lcd_pos(0x4b); lcd_wdat(0x31); } void lcd_init() { delay(15); lcd_wcmd(0x38); //16*2显示, 5*7点阵, 8位数据 delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); //显示开, 关光标 delay(5); lcd_wcmd(0x06); //移动光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); } /*************************************************************/ Void main() { uchar m; lcd_init(); initime(); TR0=1; TR1=1; //初始化LCD P10=1; P12=0; lcd_pos(0x00); //设置显示位置为第一行 for(m=0;m<16;m++) lcd_wdat(cdis1[m]); lcd_pos(0x40); //设置显示位置为第二行 for(m=0;m<16;m++) lcd_wdat(cdis2[m]); //TMOD=0x21; //将T1设置为8位自动重装工作方式。 // TH1=175; //对T1定时常数进行预置。 //TL1=175; // TR1=1; //启动T1。 while(1) { dectobit(f); // key_buf=key_buf+0x30; } } timer()interrupt 1 using 2 { i=i+1; if(i==600) { i=0; f=TH1*256+TL1; TL1=0; TH1=0; } TL0=(65536-10000)%256; TH0=(65536-10000)/256; } 2.电机驱动程序 #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //#define k sbit cp=P1^0; sbit cw=P1^1; sbit key2=P1^5; sbit key=P1^6; sbit key1=P1^7; uint i; uint K; void key_scan()//键盘扫描函数 { if(add==0) //加速 { flag=1; Delay(100); if(add==0) { while(!add); k=k-5; if(k<32) k=32; } } if(sub==0) //减速 { flag=1; Delay(100); if(sub==0) { while(!sub); k=k+5; if(k>620) k=620; } } if(fx==0) //反向 { flag=0; Delay(100); if(fx==0) { while(!fx); cw=~cw; } } } /******************************************/ /******************************************/ void PID()//PID算法 { x= 0/80; //频率 y=x*3/60; //理想转速 if((speed<y)) k--; if((speed>y)) k++; } void delay(unsigned int t ); void Delay(unsigned int z) { unsigned int i,j; for(i=0;i<z;i++) for(j=0;j<125;j++); } void main() { key=1; key1=1; key2=1; TMOD=0x01; K=2500; TH0=(65536-K)/256; TL0=(65536-K)%256; EA=1; ET0=1; TR0=1; cp=1; cw=1; while(1) { //TH0=0xf6; //TL0=0xfd; if(key==0) { Delay(100); while(!key); K=K-50; } if(key1==0) { Delay(100); while(!key1); K=K+50; } if(key2==0) { Delay(100); while(!key2); cw=~cw; } } } void timer0() interrupt 1 { i=i+1; if(i==400) {//cw=~cw; i=0; //EA=0; } cp=~cp; TH0=(65536-K)/256; TL0=(65536-K)%256; //TH0=0xf6; // TL0=0xfd;}- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 系列 单片机 控制 步进 电机 调速 闭环 系统 设计 样本
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文