步进电机相关说明
(1) 作为一种数字伺服执行元件,步进电机具有结构简单、运行可靠、控制方便、控制性能好等优点,广泛应用在数控机床、机器人、自动化仪表等领域。为了实现步进电机的简易运动控制,一般以单片机作为控制系统的微处理器,通过步进电机专用驱动芯片实现步进电机的速度和位置定位控制。 (2) 圆弧插补改进算法
逐点比较插补算法因其算法简单、易实现且最大误差不超过一个脉冲当量,在步进电机的位置控制中应用的相当广泛[1>。圆弧插补中,为了确定一条圆弧的轨迹,可采用:给出圆心坐标、起点坐标和终点坐标;给出半径、起点和终点坐标;给出圆弧的三点坐标等。在算法实现时这些参数若要存放在单片机内部资源有限的数据存储器(RAM)中,如果要经过复杂的运算才能确定一段圆弧,不但给微处理器带来负担,而且要经过多步运算,往往会影响到算法的精确度。因此选取一种简单且精确度高的插补算法是非常必要的。本文提出了一种改进算法:在圆弧插补中,无论圆弧在任何位置,是顺圆或是逆圆,都以此圆弧的圆心作为原点来确定其他坐标。因此只须给出圆弧的起点坐标和圆弧角度就可以确定该圆弧。如果一个轴坐标用4个字节存储(如12.36),而角度用2个字节存储(如45°),则只需要10个字节即可确定一段二维的圆弧。较之起其他方法,最多可节省14个存储单元。现以第I象限逆圆弧为例,计算其终点坐标。如图1所示,(X0,Y0)为圆弧的起点坐标,(Xe,Ye)为圆弧的终点坐标,θ为圆弧的角度。
圆弧半径: 终点坐标:
终点坐标相对X轴的角度:
(3) 步进电机的变频调速 虽然步进电机具有快速启停能力强、精度高、转速容易控制的特点,但是在实际运行过程中由于启动和停止控制不当,步进电机仍会出现启动时抖动和停止时过冲的现象,从面影响系统的控制精度。尤其是步进电机工作在频繁启动和停止时,这种现象就更为明显[2>。为此本文提出了一种基于单片机控制的步进电机加减速离散控制方法。加减速曲线如图2 所示,纵坐标是频率 f,单位为脉冲/秒或步/秒。横坐标时间 t,单位为秒。步进电机以 f0 启动后加速至 t1 时刻达到最高运行频率 f,然后匀速运行,至 t2
1文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
时刻开始减速,在 t5 时刻电机停转,总的步数为 N。其中电机从静止加速至最高运行频率和从最高运行频率至停止至是步进电机控制的关键,通常采用匀加速和匀减速方式。
图2 时间与频率的函数图
图3 离散化的时间变频图
采用单片机对步进电机进行加减速控制,实际上就是改变输出脉冲的时间间隔,可采用软件和硬件两种方法。软件方法依靠延时程序来改变脉冲输出的频率,其中延时的长短是动态的,该方法因为要不停地产生控制脉冲,占用了大量的CPU时间;硬件方法是依靠单片机内部的定时器来实现的,在每次进入定时中断后,改变定时常数(定时器装载值),从而升速时使脉冲频率逐渐增大,减速时使脉冲频率逐渐减小。这种方法占用CPU时间较少,是一种效率比较高的步进电机调速方法。考虑到单片机资源(字长)和编程的方便,不需要每步都计算定时器装载值。如图3所示,采用离散方法将加减速曲线离散化。离散化后速度是分台阶上升的,而且每上升一个台阶都要在该台阶保持一段时间,以克服由于步进电机转子转动惯量所引起的速度滞后。只有当实际运行速度达到预设值后才能急速加速,实际上也是局部速度误差的自动纠正。
单片机最小系统设计
采用AT89S51单片机构成了控制系统的核心,其基本模块就主要包括复位电路和晶体震荡电路。在本设计当中,单片机的P 0口、P 1口、P 2口、P 3口全部参与系统工作,单片机最小系统的接线如图3.3所示:
图3.3 单片机最小系统图
3.2.3 单片机端口分配及功能
1、其中P 0口用于控制数码管的具体显示功能,既是数码管的段选。 2、P 1口主要用于控制电机驱动芯片L298的工作,以及ADC0804芯片的编程的读写控制。
3、P 2口主要用于控制数码管的公共端,既是数码管的位选。与此同时还处理键盘扫描电路的。
4、P 3口主要用于负责处理ADC0804的模数转化芯片的工作。
L298N为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用
2文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
驱动芯片,内部包含4 信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准:TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
L298N 之接脚如图 3.7所示,Pin1 和Pin15 可与电流侦测用电阻连接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1~input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。
图3.7 L298管脚图
引脚功能介绍:
1、1;15脚(Sense A;Sense B):电流检测端,分别为两个H桥的电流反馈脚,不用时可以直接接地;
2、2;3脚(Output1;Output2):1Y1、1Y2输出端;
3、4脚(VS):功率电源电压,此引脚与地必须连接 100nF电容器; 4、5;7脚(Input 1; Input):1A1、1A2输入端,TTL 电平兼容; 5、6;11脚(Enable A;Enable B):TTL 电平兼容输入 1EN、2EN 使能端,低电平禁止输出;
6、8脚(GND):GND接地端;
7、9脚(VSS):逻辑电源电压。此引脚必须与地连接100nF电容器; 8、10;12脚(Input3;Input4):2A1,2A2输入端,TTL电平兼容; 9、13;14脚(Out3;Out4):2Y1、2Y2 输出端,监测引脚15; 3.5.2 电机驱动电路设计
如图2.8所示,本设计的电机驱动部分是由驱动芯片L298及其外围电路构成,其中从L298的2、3脚和13、14脚(即芯片的输出端)依次按顺序连成一个插座,分别与步进电机的四根线相连。而5、6、7、10、11、12脚就依次与单片机的P1口的六个管脚相连。通过这一连接实现了单片机与L298以及步进电机的串联控制。
图中很重要的部分是由四个二极管连成的保护电路,其作用是防止由于步进电机的转速提高而产生的自感电动势损坏芯片。由于本设计使用的电机驱动电压是使用了9V (也可以使用12V),所以二极管的负端接9V的参考电压。如果驱动芯片的电压改变,那么这个参考电压也随之一起改变。
3文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
图2.8 电机驱动电路图
软件设计
该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:
方式1 中断方式:P3.5(INT1)为步进脉冲输入端,P3.7为正反转脉冲输入端。上位机(PC机或单片机)与驱动器仅以2条线相连。
方式2 串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。
方式3 拨码开关控制方式:通过K1~K5的不同组合,直接控制步进电机。
当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。
在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步。
图4 方式1程序框图
方式1源程序:
MOV 20H,#00H ;20H单元置初值,电机正转位置指针 MOV 21H,#00H ;21H单元置初值,电机反转位置指针 MOV P1,#0C0H ;P1口置初值,防止电机上电短路 MOV TMOD,#60H ;T1计数器置初值,开中断 MOV TL1,#0FFH MOV TH1,#0FFH SETB ET1 SETB EA SETB TR1
4文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
SJMP $
;***********计数器1中断程序************ IT1P: JB P3.7,FAN ;电机正、反转指针 ;*************电机正转***************** JB 00H,LOOP0 JB 01H,LOOP1 JB 02H,LOOP2 JB 03H,LOOP3 JB 04H,LOOP4 JB 05H,LOOP5 JB 06H,LOOP6 JB 07H,LOOP7
LOOP0: MOV P1,#0D0H MOV 20H,#02H MOV 21H,#40H AJMP QUIT
LOOP1: MOV P1,#090H MOV 20H,#04H MOV 21H,#20H AJMP QUIT
LOOP2: MOV P1,#0B0H MOV 20H,#08H MOV 21H,#10H AJMP QUIT
5文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
LOOP3: MOV P1,#030H MOV 20H,#10H MOV 21H,#08H AJMP QUIT LOOP4: MOV P1
,#070H MOV 20H,#20H MOV 21H,#04H AJMP QUIT
LOOP5: MOV P1,#060H MOV 20H,#40H MOV 21H,#02H AJMP QUIT
LOOP6: MOV P1,#0E0H MOV 20H,#80H MOV 21H,#01H AJMP QUIT
LOOP7: MOV P1,#0C0H MOV 20H,#01H MOV 21H,#80H AJMP QUIT
;***************电机反转***************** FAN: JB 08H,LOOQ0 JB 09H,LOOQ1
6文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
JB 0AH,LOOQ2 JB 0BH,LOOQ3 JB 0CH,LOOQ4 JB 0DH,LOOQ5 JB 0EH,LOOQ6 JB 0FH,LOOQ7
LOOQ0: MOV P1,#0A0H MOV 21H,#02H MOV 20H,#40H AJMP QUIT
LOOQ1: MOV P1,#0E0H MOV 21H,#04H MOV 20H,#20H AJMP QUIT
LOOQ2: MOV P1,#0C0H MOV 21H,#08H MOV 20H,#10H AJMP QUIT
LOOQ3: MOV P1,#0D0H MOV 21H,#10H MOV 20H,#08H AJMP QUIT
LOOQ4: MOV P1,#050H MOV 21H,#20H
7文档来源为:从网络收集整理.word版本可编辑.
文档收集于互联网,已重新整理排版.word版本可编辑,有帮助欢迎下载支持.
MOV 20H,#04H AJMP QUIT
LOOQ5: MOV P1,#070H MOV 21H,#40H MOV 20H,#02H AJMP QUIT
LOOQ6: MOV P1,#030H MOV 21H,#80H MOV 20H,#01H AJMP QUIT
LOOQ7: MOV P1,#0B0H MOV 21H,#01H MOV 20H,#80H QUIT: RETI END
8文档来源为:从网络收集整理.word版本可编辑.
因篇幅问题不能全部显示,请点此查看更多更全内容