步进电机程序设计与实现 (步进电机程序控制主要控制参数是)

步进电机程序设计与实现:主要控制参数详解 步进电机程序控制主要控制参数是

一、引言

步进电机是一种广泛应用于工业领域的精密运动控制设备,其精准的定位和稳定的运行特性使得步进电机在许多应用中成为首选。
步进电机的程序设计与实现,涉及到一系列的控制参数,这些参数的设置直接影响到电机的运行性能。
本文将详细介绍步进电机程序控制中的主要控制参数,以及其设计实现的过程。

二、步进电机简介

步进电机是一种将电脉冲信号转换为角位移的电机。
其运行原理是通过电子控制系统发送脉冲信号给电机驱动器,驱动器带动电机按照设定的步距角转动。
步进电机的特点是可以精确控制转动角度和速度,且具有良好的稳定性和可控性。

三、步进电机程序控制的主要参数

在步进电机的程序设计中,主要的控制参数包括脉冲信号、方向信号、转速或频率、转动模式等。
这些参数的选择与设置,将直接影响到电机的运行效果。

1. 脉冲信号

脉冲信号是驱动步进电机运转的基本信号。
脉冲的数量决定了电机的转动角度,脉冲的频率决定了电机的转速。
在编程时,需要根据应用需求设定合适的脉冲数量和频率。

2. 方向信号

方向信号用于控制电机的转动方向。
通过设定方向信号的逻辑关系(如高电平或低电平表示正向转动,反之为反向转动),可以控制电机的正反转。

3. 转速或频率

转速是步进电机的一个重要参数,它决定了电机的运动速度。
在程序中,可以通过调整脉冲信号的频率来控制电机的转速。
一般来说,脉冲频率越高,电机转速越快。
需要注意的是,不同型号的电机有其最大转速限制,超过此限制可能导致电机损坏。

4. 转动模式

步进电机的转动模式包括全步、半步、微步等。
在程序设计中,需要根据应用需求选择合适的转动模式。
全步模式精度较低,半步和微步模式可以提供更高的精度。
转动模式的选择与电机的驱动器、控制器性能有关。

四、步进电机程序设计实现过程

步进电机的程序设计实现主要包括以下几个步骤:初始化硬件、配置参数、发送脉冲和控制信号、监控运行状态、错误处理等。

1. 初始化硬件

需要对步进电机及其驱动器进行初始化设置,包括电源供电、接线等。
还需要配置相应的控制器硬件,如PLC、单片机等。

2. 配置参数

根据应用需求,配置脉冲信号、方向信号、转速或频率等参数。
这些参数的设置需要根据电机的规格书进行,以确保电机正常运行。

3. 发送脉冲和控制信号

通过控制器发送脉冲信号和方向信号给驱动器,驱动器根据接收到的信号驱动电机运转。
在发送脉冲信号时,需要注意信号的频率和数量,以确保电机的转速和转动角度符合要求。

4. 监控运行状态

在电机运行过程中,需要实时监控电机的运行状态,包括转速、温度等。
如果发现异常,需要及时处理。

5. 错误处理

在电机运行过程中,可能会遇到各种错误,如过载、堵转等。
在程序设计中,需要设定相应的错误处理机制,以确保电机在出现故障时能够得到有效处理。

五、总结

步进电机的程序设计与实现是一项复杂的任务,涉及到许多参数的设置与调整。
本文详细介绍了步进电机程序控制的主要参数及其设计实现过程。
在实际应用中,需要根据具体需求进行参数设置和程序编写,以确保电机的正常运行。


讨个步进电机的程序

转载 用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。 通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 一、步进电机常识 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。 在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。 它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。 这种步进电机的应用最为广泛。 二、永磁式步进电机的控制 下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。 图1是35BY型永磁步进电机的外形图,图2是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。 要使用步进电机转动,只要轮流给各引出端通电即可。 将COM端标识为C,只要AC、C、BC、C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、B、 轮流接地。 下表列出了该电机的一些典型参数: 表1 35BY48S03型步机电机参数型号 步距角 相数 电压 电流 电阻 最大静转距 定位转距 转动惯量35BY48S03 7.5 4 12 0.26 47 180 65 2.5 有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,因此用一块开路输出达林顿驱动器(ULN2003)来作为驱动,通过P1.4~P1.7来控制各线圈的接通与切断,电路如图3所示。 开机时,P1.4~P1.7均为高电平,依次将P1.4~P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。 如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的转动方向,只要改变各线圈接通的顺序。 图1 35BY48S03型步进电机外形图 图2 35BY48S03型步进电机的接线图 图3 单片机控制35BY48S03型步进电机的电路原理图 三、步进电机的驱动实例 要求:控制电路如图3所示,开机后,电机不转,按下启动键,电机旋转,速度为25转/分,按下加1键,速度增加,按下减1键,速度降低,最高速度为100转/分,最低转带为25转/分,按下停止键,电机停转。 速度值要求在数码管上显示出来。 1.要求分析 按上面的分析,改变转速,只要改变P1.0~P1.3轮流变低电平的时间即可达到要求,这个时间不应采用延时来实现,因为会影响到其他功能的实现。 这里以定时的方式来实现。 下面首先计算一下定时时间。 按要求,最低转速为25转/分,而上述步进电机的步距角为7.5,即每48个脉冲为1周,即在最低转速时,要求为1200脉冲/分,相当于50ms/脉冲。 而在最高转速时,要求为100转/分,即脉冲/分,相当于12.5ms/脉冲。 可以列出下表 表1 步进电机转速与定时器定时常数关系 速度 单步时间(us) TH1 TL1 实际定时(us) 25 76 0 .8 26 82 236 .18 27 89 86 .61 28 95 73 .155 ⋯ … … … … 100 211 0 .2 表中不仅计算出了TH1和TL1,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这个计算值来估算真实速度与理论速度的误差值。 表中TH1和TL1是根据定时时间算出来的定时初值,这里用到的晶振是11.0592M。 有了上述表格,程序就不难实现了,使用定时/计数器T1为定时器,定时时间到后切换输出脚即可。 2.程序实现 定义DSB-1A实验板的S1为启动键,S2为停止键,S3为加1键,S4为减1键,程序如下: StartEnd bit 01H ;起动及停止标志 MinSpd EQU 25 ;起始转动速度 MaxSpd EQU 100 ;最高转动速度 Speed DATA 23H ;流动速度计数 DjCount DATA 24H ;控制电机输出的一个值,初始为 111 Hidden EQU 10H ;消隐码 Counter DATA 57H ;显示计数器 DISPBUF DATA 58H ;显示缓冲区 ORG 0000H AJMP MAIN ORG 000BH JMP DISP ORG 001BH JMP DJZD ORG 30H MAIN: MOV SP,#5FH MOV P1,#0FFH MOV A,#Hidden MOV DispBuf,A MOV DispBuf+1,A MOV DispBuf+2,A MOV DjCount,#B MOV SPEED,#MinSpd;起始转动速度送入计数器 CLR StartEnd;停转状态 MOV TMOD,#B ; MOV TH0,#HIGH(-3000) MOV TL0,#LOW(-3000) MOV TH1,#0FFH; MOV TL1,#0FFH SETB TR0 SETB EA SETB ET0 SETB ET1 LOOP: ACALL KEY ;键盘程序 JNB F0,m_NEXT1 ;无键继续 ACALL KEYPROC ;否则调用键盘处理程序 m_NEXT1: MOV A,Speed MOV B,#10 DIV AB MOV DispBuf+5,B ;最低位 MOV B,#10 DIV AB MOV DispBuf+4,B MOV DispBuf+3,A JB StartEnd,m_Next2 CLR TR1 ;关闭电机 JMP LOOP ORL P1,#B m_Next2: SETB TR1 ;启动电机 AJMP LOOP ;主程序结束 ;--------------------------------------- D10ms: ⋯⋯ ;---------延时程序,键盘处理中调用 KEYPROC: MOV A,B ;获取键值 JB ACC.2,StartStop ;分析键的代码,某位被按下,则该位为1 JB ACC.3,KeySty JB ACC.4,UpSpd JB ACC.5,DowSpd AJMP KEY_RET StartStop: SETB StartEnd 启动 AJMP KEY_RET KeySty: CLR StartEnd; ;停止 AJMP KEY_RET UpSpd: INC SPEED; MOV A,SPEED CJNE A,#MaxSpd,K1 ;到了最多的次数 DEC SPEED ;是则减去1,保证下次仍为该值 K1: AJMP KEY_RET DowSpd: DEC SPEED MOV A,SPEED CJNE A,#MAXSPD,KEY_RET;不等(未到最大值),返回 MOV SPEED,#MinSpd; KEY_RET: RET KEY: ⋯⋯获取键值的程序 RET DjZd: ;定时器T1用于电机转速控制 PUSH ACC PUSH PSW MOV A,Speed SUBB A,#MinSpd ;减基准数 MOV DPTR,#DjH MOVC A,@A+DPTR MOV TH1,A MOV A,Speed SUBB A,#MinSpd MOV DPTR,#DjL MOVC A,@A+DPTR MOV TL1,A MOV A,DjCount CPL A ORL P1,A MOV A,DjCount JNB ACC.7,d_Next1 JMP d_Next2 d_Next1: MOV DjCount,#B d_Next2: MOV A,DjCount RL A MOV DjCount,A ;回存 ANL P1,A POP PSW POP ACC RETI DjH: DB 76,82,89,95,100,106,110,115,119,123,12…… DjL: DB 0,236,86,73,212,0,214,96,163,165 ⋯⋯ DISP: ;显示程序 POP PSW POP ACC ⋯⋯ RETI BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH END 3.程序分析 本程序主要由键盘程序、显示器程序、步进电机驱动程序三部份组成,主程序首先初始化各变量,将显示器的高3位消隐,步进电机驱动的各引脚均输出高电平,然后调用键盘程序,并作判断,如果有键按下,则调用键盘处理程序,否则直接转下一步。 下一步是将当前的转速值转换为BCD码,送入显示缓冲区;接着判断StartEnd这个位变量,是“1”还是“0”,如果是“1”,则开启定时器T1,否则关闭定时器T1,为防止关闭时某一相线圈长期通电,因此,在关闭定时器T1时,将P1.0~P1.3均置高。 至此,主程序的工作即结束。 这里为简便起见,这里没有做高位“0”消隐的工作,即如果速度为10转/分,则显示值“010”,读者可以自行加入相关的代码来处理这一工作。 步进电机的驱动工作是在定时器T1的中断服务程序中实现的,由前述分析,每次的定时时间到达以后,需要将P1.0~P1.3依次接通,程度中用了一个变量DjCntr来实现这一功能,在主程序初始化时,该变量被赋予初值B,进入到定时中断以后,将该变量取出送ACC累加器,并在累加器中进行左移,这样,该数值就变为,然后将该数与P1相“与”,此时,P1.4即输出低电平,第二次进入中断时,先将该数取反,成为0001 0000,然后将该数与P1相“或”,这样,P1.4即输出高电平,关断了相应的线圈,然后将该数重新取出,并作左移,即 1110,1111右移成为1101 1111,将该数与P1相“与”,这样P1.5即输出低电平,依次类推,P1.7~P1.4即循环输出低电平。 当这一数据变为后,需要作适当的改动,将数据重新变回 1111 0111,进行第二次循环,相关代码,请读者自行分析。 定时时间又是如何确定的呢?这里用的是查表的方法,首先用Excel计算得出在每一种转速下的TH值和TL值,然后,分别放入DjH和DjL表中,在进入T1中断程序之后,将速度值变量Speed送入累加器ACC,然后减去基数25,使其基数从0开始计数,然后分别查表,送入TH1和TL1,实现重置定时初值的目的。 看完这一部份内容以后,请读者自行完成以下工作: 1. 更改程序,将S1定义为“启动/停止”,而S2定义为“方向”,按下S2,切换电机旋转方向。 2. 更改程序,要求转速从1到100。 3. 更改程序,实现首位无效零消隐。 ;步进电机正转 loop:mov R3,#0FFh ;30h送ff即-1 main:INC R3 mov a,R3 tt: MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A ;送显示 mov r7,#5 dec r7 lcall delay ;延时一段时间 cjne a,#06H,main ;如果是最后一个数据重新开始 ljmp loop ; 否则R3 清除 ret TAB: DB 03H,09H,0CH,06H ;步进电机正转表 DELAY: ; 延时程序 MOV R5,#255 D3:MOV R2,#25 D4: DJNZ R2,D4 DJNZ R5,D3 RET ;步进电机控制程序p3.2正转,p3.3反转,p3.4停止 步进电机接p1.0p1.1p1.2p1.3 org 00h stop: orl p1,#0ffh ; 步进电机停止 loop:jnb p3.2,for2 ; 如果p3.2按下正转 jnb p3.3,rev2 ; 如果p3.3按下反转 jnb p3.4,stop1 ; 如果p3.4按下停止 jmp loop ;反复监测键盘 for: mov r0,#00h ;正转到tab取码指针初值 for1:mov a,r0 ;取码 mov dptr,#table ; movc a,@a+dptr jz for ;是否到了结束码00h cpl a ;把acc反向 mov p1,a ;输出到p1开始正转 jnb p3.4,stop1 ; 如果p3.4按下停止 jnb p3.3,rev2 ; 如果p3.3按下反转 call delay ;转动的速度 inc r0 ;取下一个码 jmp for1 ;继续正转 rev:mov r0,#05h ;反转到tab取码指针初值 rev1:mov a,r0 mov dptr,#table ;取码 movc a,@a+table jz rev ;是否到了结束码00h cpl a ;把acc反向 mov p1,a ;输出到p1开始反转 jnb p3.4,stop1 ; 如果p3.4按下停止 jnb p3.3,rev2 ; 如果p3.3按下反转 call delay ;转动的速度 inc r0 ;取下一个码 jmp rev1 ;继续反转 stop1:call delay ; 按p3.4的消除抖动 jnb p3.4,$ ; p3.4放开否? call delay ;放开消除抖动 jmp stop for2:call delay ; 按p3.2的消除抖动 jnb p3.2,$ ; p3.2放开否? call delay ;放开消除抖动 jmp for rev2:call delay ; 按p3.3的消除抖动 jnb p3.3,$ ; p3.3放开否? call delay ;放开消除抖动 jmp rev delay:mov r1,#40 ;步进电机的转速20ms d1:mov r2,#248 djnz r2,$ djnz r1,d1 ret table: db 03h,09h,0ch,06h ;正转表 db 00 ;正转结束 db 03h,06h,0ch,09h ;反转 db 00 ;反转结束 end ;步进电机正转,反转各3圈 org 00h x1:mov r3,#250 start:mov r0,#00h start1: mov p1,#0ffh mov a,r0 mov dptr,#table movc a,@a+dptr jz start cpl a mov p1,a call delay inc r0 djnz r3,start1 mov r3,#250 start2: mov p1,#0ffh mov r0,#05 start3:mov a,r0 mov dptr,#table movc a,@a+dptr jz start2 cpl a mov p1,a call delay inc r0 djnz r3,start3 jmp x1 delay: mov r5,#40;延时。 d1: mov r6,#10 d2: mov r7,#18 djnz r7,$ djnz r6,d2 djnz r5,d1 ret table: db 03h,09h,0ch,06h db 00 db 06h,0ch,09h,03h db 00 end ;步进电机正反快慢程序 org 00h x1:mov r3,#48 ;一圈48步 start:mov r0,#00h ;正转取码初值 start1: mov p1,#0ffh ;先停止 mov a,r0 mov dptr,#table movc a,@a+dptr jz start ;是否到了结束码00? cpl a mov p1,a ;输出运转 call delay ;调用慢速的延时转动 inc r0 ;取码指针加1取下一个码 djnz r3,start1 ;是否走了48步? mov r3,#48 ;是则重新设定48步 start2: mov p1,#0ffh mov r0,#05 ;逆转的取码初值 start3:mov a,r0 mov dptr,#table movc a,@a+dptr jz start2 cpl a mov p1,a call delay2 inc r0 djnz r3,start3 jmp x1 ; 重复开始 DELAY: ; 延时程序 (慢速) MOV R7,#255 D1:MOV R6,#50 D2: DJNZ R6,D2 DJNZ R7,D1 RET DELAY2: ; 延时程序 (快速) MOV R5,#255 D3:MOV R2,#25 D4: DJNZ R2,D4 DJNZ R5,D3 RET table: db 03h,09h,0ch,06h ;正转表 db 00 db 06h,0ch,09h,03h ;反转表 db 00 end ;遥控电机程序, 按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转 ;0-9步,同时数码管分别显示当前的数字! org 00h JMP MAIN ORG 30H MAIN: MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH START: JB P3.7,$ ;等待遥控信号出现 SB: MOV R4,#8 ;8毫秒为高电平错误 SBA: MOV R5,#250 SBB: JB P3.7,SXB1 DJNZ R5,SBB DJNZ R4,SBA MOV R4,#2 JMP SBC SXB1: MOV R5,#5 SXB2: ;去掉20US的尖峰干扰信号 JNB P3.7,SBB DJNZ R5,SXB2 JMP START SBC: MOV R5,#250 SB1: JB P3.7,SB2 ;2MS内不为高电平错误(监测9MS的低电平引导码) DJNZ R5,SB1 DJNZ R4,SBC JMP START SB2: ;去掉20US的尖峰干扰信号 MOV R5,#5 SB2_A: JNB P3.7,SB1 DJNZ R5,SB2_A MOV R4,#3 SB2_1: MOV R5,#250 SB3: ;监测4.5MS高电平,如3MS内出现低电平错误 JNB P3.7,SXC DJNZ R5,SB3 DJNZ R4,SB2_1 MOV R4,#2 JMP SB3_1 SXC: ;去掉20US的尖峰干扰信号 MOV R5,#5 SXC1: JB P3.7,SB3 DJNZ R5,SXC1 JMP START SB3_1: ;监测4.5MS高电平,如5MS内不为低电平错误 MOV R5,#250 SB3_2: JNB P3.7,SB4 DJNZ R5,SB3_2 DJNZ R4,SB3_1 JMP START SB4: ;去掉20US的尖峰干扰信号 MOV R5,#5 SB4_1: JB P3.7,SB3_2 DJNZ R5,SB4_1 MOV R1,#1AH ;设定1AH为起始RAM区 MOV R2,#4 PP: MOV R3,#8 JJJJ: MOV R5,#250 JJJJ2: ;1MS内不为低电平错误 JB P3.7,JJJJ3 DJNZ R5,JJJJ2 JMP START JJJJ3: LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态 MOV C,P3.7 ;将P3.7引脚此时的电平状态0或1存入C中 JNC UUU ;如果为0就跳转到UUU MOV R5,#250 JJJJ4: JNB P3.7,UUU NOP DJNZ R5,JJJJ4 JMP START UUU: MOV A,@R1 ;将R1中地址的给A RRC A ;将C中的值0或1移入A中的最低位 MOV @R1,A ;将A中的数暂时存放在R1中 DJNZ R3,JJJJ ;接收地址码的高8位 INC R1 ;对R1中的值加1,换成下一个RAM DJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中 ;以下对代码是否正确和定义进行识别 MOV A,1AH ;比较高8位地址码 XRL A,#B ;判断1AH的值是否等于,相等的话A为0 JNZ EXIT ;如果不相等说明解码失败退出解码程序 MOV A,1BH ;比较低8位地址 XRL A,#B ;再判断高8位地址是否正确 JNZ EXIT ;如果不相等说明解码失败退出解码程序 LCALL YS3 MOV A,1CH ;比较数据码和数据反码是否正确? CPL A XRL A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确 JNZ EXIT ;如果不相等说明解码失败退出解码程序 LCALL YS3 CLR P2.6 ;选中数码管 CLR P3.3 ;解码成功喇叭响? AJMP BIJIAO ;判断在118毫秒内是否有连发码 AA: MOV R1,#25 XX: ACALL YS2 JNB P3.7,HH ;跳转到判断连发代码是否正确的程序段 DJNZ R1,XX EXIT: ;对所有端口清零 AJMP START ;连发码判断程序段----------- HH: MOV R6,#4 S: ACALL YS1 ;调用882微秒延时子程序 JB P3.7,EXIT ;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序 DJNZ R6, S ;重复4次,目的是确认连发码的低电平信号波形 JNB P3.7, $ ;等待高电? LCALL YS3 AJMP AA BIJIAO: MOV R0,#18 ;一共18个按键 MOV DPTR,#TAB_REM ;遥控键值查表 LOOKUP_1: MOV A,R0 ;查表偏移量 MOVC A,@A+DPTR XRL A,1cH ;比较键值 JZ REM_BAK0 ;相等转移 DJNZ R0,LOOKUP_1 ;直到18个健比较完毕 JMP EXIT ;都不对退出 REM_BAK0: ;键值处理 MOV A,R0 ;R0 MOV R1,A ; SUBB A,#9 ;如果大于9则反转并将值减去9 JC REM_BAK1 ;小余或等于9到正转 INC A ;加1 MOV R1,A ; 查显示码表 MOV DPTR,#TABLE1 ; MOVC A,@A+DPTR MOV P0,A ;送显示 CLR P2.6 ;开显示 REM_REV: ;反转程序 CALL REV CALL delay ;转速 DJNZ R1,REM_REV ;转动的步数到了停止 JMP AA REM_BAK1: ;正转程序 NOP MOV A,R1 ;按键数值判断执 MOV DPTR,#TABLE1 ; 查显示码表 MOVC A,@A+DPTR MOV P0,A ;送显示 CLR P2.6 ;开显示 REM_FOR: ;正转 CALL FOR CALL DELAY DJNZ R1,REM_FOR JMP AA for: mov r0,#00h ;正转到tab取码指针初值 for1:mov a,r0 ;取码 mov dptr,#table ; movc a,@a+dptr jz FOREXT ;是否到了结束码00h cpl a ;把acc反向 mov p1,a ;输出到p1开始正转 call delay ;转动的速度 inc r0 ;取下一个码 jmp for1 ;继续正转 rev:mov r0,#05h ;反转到tab取码指针初值 rev1:mov a,r0 mov dptr,#table ;取码 movc a,@a+table jz FOREXT ;是否到了结束码00h cpl a ;把acc反向 mov p1,a ;输出到p1开始反转 call delay ;转动的速度 inc r0 ;取下一个码 jmp rev1 ;继续反转 FOREXT: RET YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒 D1: MOV R5,#20 DJNZ R5,$ DJNZ R4,D1 RET YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒 D2: MOV R5,#235 DJNZ R5,$ DJNZ R4,D2 RET YS3: MOV R4,#2 ;延时程序3,精确延时1000微秒 D3:MOV R5,#248 DJNZ R5,$ DJNZ R4,D3 RET TAB_REM: ;遥控的键值 DB 00H DB 10H,03H,01H,06H,09H,1DH,1FH,0DH,19H DB 11H,15H,17H,12H,16H,4CH,40H,48H,04H delay: mov r3,#40 ;步进电机的转速20ms m3: mov r2,#248 djnz r2,$ djnz r3,m3 ret TABLE1:db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h;数码管的码表 ;0 1 2 3 4 5 6 7 8 9 table: db 03h,09h,0ch,06h ;正转表 db 00 ;正转结束 db 03h,06h,0ch,09h ;反转 db 00 ;反转结束 end

毕业设计,步进电机的PLC控制

PLC控制步进电机的实例(图与程序)

•采用绝对位置控制指令(DRVA),大致阐述FX1S控制步进电机的方法。 由于水平有限,本实例采用非专业述语论述,请勿引用。

•FX系列PLC单元能同时输出两组100KHZ脉冲,是低成本控制伺服与步进电机的较好选择!

•PLS+,PLS-为步进驱动器的脉冲信号端子,DIR+,DIR-为步进驱动器的方向信号端子。

•所谓绝对位置控制(DRVA),就是指定要走到距离原点的位置,原点位置数据存放于32位寄存器D8140里。 当机械位于我们设定的原点位置时用程序把D8140的值清零,也就确定了原点的位置。

•实例动作方式:X0闭合动作到A点停止,X1闭合动作到B点停止,接线图与动作位置示例如左图(距离用脉冲数表示)。

•程序如下图:(此程序只为说明用,实用需改善。)

•说明:

•在原点时将D8140的值清零(本程序中没有做此功能)

•32位寄存器D8140是存放Y0的输出脉冲数,正转时增加,反转时减少。 当正转动作到A点时,D8140的值是3000。 此时闭合X1,机械反转动作到B点,也就是-3000的位置。 D8140的值就是-3000。

•当机械从A点向B点动作过程中,X1断开(如在C点断开)则D8140的值就是200,此时再闭合X0,机械正转动作到A点停止。

•当机械停在A点时,再闭合X0,因为机械已经在距离原点3000的位置上,故而机械没有动作!

•把程序中的绝对位置指令(DRVA)换成相对位置指令(DRVI):

•当机械在B点时(假设此时D8140的值是-3000)闭合X0,则机械正转3000个脉冲停止,也就是停在了原点。D8140的值为0

•当机械在B点时(假设此时D8140的值是-3000)闭合X1,则机械反转3000个脉冲停止,也就是停在了左边距离B点3000的位置(图中未画出),D8140的值为-6000。

•一般两相步进电机驱动器端子示意图:

•FREE+,FREE-:脱机信号,步进电机的没有脉冲信号输入时具有自锁功能,也就是锁住转子不动。 而当有脱机信号时解除自锁功能,转子处于自由状态并且不响应步进脉冲。

•V+,GND:为驱动器直流电源端子,也有交流供电类型。

•A+,A-,B+,B-分别接步进电机的两相线圈。

PLC控制步进电机的实例(图与程序)

•采用绝对位置控制指令(DRVA),大致阐述FX1S控制步进电机的方法。 由于水平有限,本实例采用非专业述语论述,请勿引用。

•FX系列PLC单元能同时输出两组100KHZ脉冲,是低成本控制伺服与步进电机的较好选择!

•PLS+,PLS-为步进驱动器的脉冲信号端子,DIR+,DIR-为步进驱动器的方向信号端子。

•所谓绝对位置控制(DRVA),就是指定要走到距离原点的位置,原点位置数据存放于32位寄存器D8140里。 当机械位于我们设定的原点位置时用程序把D8140的值清零,也就确定了原点的位置。

•实例动作方式:X0闭合动作到A点停止,X1闭合动作到B点停止,接线图与动作位置示例如左图(距离用脉冲数表示)。

•程序如下图:(此程序只为说明用,实用需改善。)

•说明:

•在原点时将D8140的值清零(本程序中没有做此功能)

•32位寄存器D8140是存放Y0的输出脉冲数,正转时增加,反转时减少。 当正转动作到A点时,D8140的值是3000。 此时闭合X1,机械反转动作到B点,也就是-3000的位置。 D8140的值就是-3000。

•当机械从A点向B点动作过程中,X1断开(如在C点断开)则D8140的值就是200,此时再闭合X0,机械正转动作到A点停止。

•当机械停在A点时,再闭合X0,因为机械已经在距离原点3000的位置上,故而机械没有动作!

•把程序中的绝对位置指令(DRVA)换成相对位置指令(DRVI):

•当机械在B点时(假设此时D8140的值是-3000)闭合X0,则机械正转3000个脉冲停止,也就是停在了原点。D8140的值为0

•当机械在B点时(假设此时D8140的值是-3000)闭合X1,则机械反转3000个脉冲停止,也就是停在了左边距离B点3000的位置(图中未画出),D8140的值为-6000。

•一般两相步进电机驱动器端子示意图:

•FREE+,FREE-:脱机信号,步进电机的没有脉冲信号输入时具有自锁功能,也就是锁住转子不动。 而当有脱机信号时解除自锁功能,转子处于自由状态并且不响应步进脉冲。

•V+,GND:为驱动器直流电源端子,也有交流供电类型。

•A+,A-,B+,B-分别接步进电机的两相线圈。

求教 步进电机控制

在你了解步进电机参数(电机型号,步距角,电机工作电压范围等)的情况下,你需要做两个方面的准备:1.步进电机单片机控制器--你需要结合你的实际应用,通过程序设计计算出步进脉冲频率来控制步进电机的速度,以及计算你的应用系统走的总行程需要多少步进脉冲。 2.驱动器--针对你的步进电机选择合适的驱动器,驱动器接收步进电机单片机控制器的方向信号(高电平或低电平)和步进脉冲信号来推动电机转动一定的角度(距离)来达到精确控制机械系统位移。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论