大哥大姐们小弟跪求一个用AT89S52和L293D控制步进电机的C或者汇编程序

大哥大姐们小弟跪求一个用AT89S52和L293D控制步进电机的C或者汇编程序,第1张

实验源程序

P55A equ 288h ;8255A口输出

P55C equ 28ah ;8255C口输入

P55CTRL equ 28bh ;8255控制口

DATA SEGMENT

BUF db 0

MES DB 'K0-K6 ARE SPEED CONTROL',0AH,0DH

DB 'K6 IS THE LOWEST SPEED',0AH,0DH

DB 'K0 IS THE LOWEST SPEED',0AH,0DH

DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,CS

MOV DS,AX

MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MES

MOV AH,09H

INT 21H

MOV DX,P55CTRL

MOV AL,8BH

OUT DX,AL ;8255C输入,A输出

MOV BUF,33H

OUT1:

MOV AL,BUF

MOV DX,P55A

OUT DX,AL

MOV AH,1

INT 16H

JE IN1 ;有无键按下

MOV AH,4CH

INT 21H

IN1:

MOV DX,P55C

IN AL,DX ;读开关状态

TEST AL,01H

JNZ K0

TEST AL,02H

JNZ K1

TEST AL,04H

JNZ K2

TEST AL,08H

JNZ K3

TEST AL,10H

JNZ K4

TEST AL,20H

JNZ K5

TEST AL,40H

JNZ K6

STOP:

MOV DX,P55A

MOV AL,0FFH

JMP OUT1

K0:

MOV BL,10H

SAM:

TEST AL,80H ;K7是否为

JZ ZX0

JMP NX0

K1:

MOV BL,18H

JMP SAM

K2:

MOV BL,20H

JMP SAM

K3:

MOV BL,40H

JMP SAM

K4:

MOV BL,80H

JMP SAM

K5:

MOV BL,0C0H

JMP SAM

K6:

MOV BL,0FFH

JMP SAM

ZX0:

CALL DELAY

MOV AL,BUF

ROR AL,1 ;循环右移

MOV BUF,AL

JMP OUT1

NX0:

CALL DELAY

MOV AL,BUF

ROL AL,1 ;循环左移

MOV BUF,AL

JMP OUT1

DELAY PROC NEAR

DELAY1:

MOV CX,05A4H

DELAY2:

LOOP DELAY2

DEC BL

JNZ DELAY1

RET

DELAY ENDP

CODE ENDS

END START

池中有电流

[导读]步进电机又称为脉冲电机,基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩。其原始模型是起源于年至年间。年前后开始以控制为目的的尝试,应用于氢弧灯的电极输送机构中。

步进电机又称为脉冲电机,基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩。其原始模型是起源于年至年间。年前后开始以控制为目的的尝试,应用于氢弧灯的电极输送机构中。这被认为是最初的步进电机。二十世纪初,在电话自动交换机中广泛使用了步进电机。由于西方资本主义列强争夺殖民地,步进电机在缺乏交流电源的船舶和飞机等独立系统中得到了广泛的使用。二十世纪五十年代后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。到了八十年代后,由于廉价的微型计算机以多功能的姿态出现,步进电机的控制方式更加灵活多样。

步进电机相对于其它控制用途电机的最大区别是,它接收数字控制信号电脉冲信号并转化成与之相对应的角位移或直线位移,它本身就是一个完成数字模式转化的执行元件。而且它可开环位置控制,输入一个脉冲信号就得到一个规定的位置增量,这样的所谓增量位置控制系统与传统的直流控制系统相比,其成本明显减低,几乎不必进行系统调整。步进电机的角位移量与输入的脉冲个数严格成正比,而且在时间上与脉冲同步。因而只要控制脉冲的数量、频率和电机绕组的相序,即可获得所需的转角、速度和方向。

我国的步进电机在二十世纪七十年代初开始起步,七十年代中期至八十年代中期为成品发展阶段,新品种和高性能电机不断开发,目前,随着科学技术的发展,特别是永磁材料、半导体技术、计算机技术的发展,使步进电机在众多领域得到了广泛应用。

步进电机控制技术及发展概况

作为一种控制用的特种电机,步进电机无法直接接到直流或交流电源上工作,必须使用专用的驱动电源步进电机驱动器。在微电子技术,特别计算机技术发展以前,控制器脉冲信号发生器完全由硬件实现,控制系统采用单独的元件或者集成电路组成控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。这就使得需要针对不同的电机开发不同的驱动器,开发难度和开发成本都很高,控制难度较大,限制了步进电机的推广。

由于步进电机是一个把电脉冲转换成离散的机械运动的装置,具有很好的数据控制特性,因此,计算机成为步进电机的理想驱动源,随着微电子和计算机技术的发展,软硬件结合的控制方式成为了主流,即通过程序产生控制脉冲,驱动硬件电路。单片机通过软件来控制步进电机,更好地挖掘出了电机的潜力。因此,用单片机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋。

步进电机控制系统的设计

传统的电流式控制方法是检测流经绕组的电流,并将反馈信号送到控制芯片,然后由控制芯片决定是增加还是降低绕组电流,以取得所需的电流强度。这种控制方法使电机在宽转速和宽电源电压范围内保持理想的转矩,非常适用于全步进和半步进电机驱动,而且实现起来非常容易。

闭环控制电路将电流施加到绕组。反电动势(BEMF)会降低绕组电压,延长电流达到理想值的时间,因此,反电动势限制电机转速。虽然系统无需知道反电动势值,但是,不重视且不修正这个数值将会导致系统性能降低。

因为电源电压变化导致峰值电流有时波动幅度很大,所以,直到现在,工程师还是尽量避免使用电压式控制方法。工程师们还想避免反电动势随着电机转速增加而升高的问题。

在这种情况下,业内出现了能够补偿反电动势的智能电压式控制系统。这种驱动方法使电机运转更顺畅,微步分辨率更高,是对高精度定位和低机械噪声要求严格的应用的理想选择。电压式控制是一种开环控制:当正弦电压施加到电机相位时,机电系统将回馈正弦电流。

我们可以用数字方法补偿反电动势和峰流变化。在记住电机的准确特性(电机电感-转速曲线、反电动势-转速曲线、电机电阻)后,计算并施加电压,以取得理想的电流值。

电压式控制方法是向电机施加电压,而不是恒流。施加的电压值能够补偿并完全消除反电动势效应,施加电压的上升速率与因电机转速增加而导致反电动势上升的速率相同,保证电流幅度对转速曲线平坦。在已知所需电流后,就可以确定取得该电流需要施加的准确电压值。因此,电流是由电压间接控制,如图1所示。

电压式控制还节省了分流电阻,可取得高微步分辨率和极低的转矩脉动。事实上,意法半导体的L6470取得了多达128步的微步控制。

这款数字电机控制驱动器的核心是一个能够降低微控制器资源占用率的数字运动引擎(DME)。

数字运动控制引擎是由行为命令控制,例如,绝对位置请求,并按照预设转速曲线边界驱动电机运动。全部指令集包括相对位置和绝对位置(达到目标位置)、转速跟踪(达到并保持目标转速)和电机停止顺序,还包括机械位置传感器管理专用命令。图2所示是前述部分命令。

该控制器通过具有菊花链功能的高速SPI总线接口与主微控制器通信。

通过一个串行接口,一个微控制器能够管理多个控制器,从而控制多台步进电机,如图3所示。

步进电机的开环控制

系统设计时首先考虑稳态性能。由允许的最大位置误差和要求的最高步进频率选择步进电机和驱动电路。完成了这种选择之后,接下来应考虑怎样对电机和驱动电路进行控制,怎样把它们连接到系统的其他部分。开环控制具有简单因而成本低等优点,常用于简易的经济型数控机床改造等技术中。图1是典型的开环控制系统的方框图。相控制信号可以由微处理机产生,也可以用某种形式的时序电路产生。不管这种信号怎样产生,设计者都需要知道它在定时上有些什么限制。例如特定负载转矩的最高步进频率;又如电机加速负载惯量的时间等。

开环控制方案中,负载位置对控制电路没有反馈,因此,步进电机必须正确地响应每次激磁变化。如果激磁变化太快,电机不能够移动到新的要求的位置,那么,实际的负载位置相对控制器所期待的位置将出现永久误差。如果负载参数基本上不随时间变化,则相控制信号的定时比较简单。但是,在负载可能变化的应用场合中,定时必须以最坏(即最大负载)情况进行设定。当然,这样确定的控制方案对所有其他负载并非最佳。

1 启停频率

最简单的开环控制方式是步进频率恒定的那种控制方式(图2),电机在达到目标位置之前都以这个频率转动。相控制信号由时序发生器产生,时序发生器由来自恒频时钟的步进命令脉冲触发。“启动”信号接通这个时钟,使电机以等于钟频的步进频率运行;“停止”信号关断这个时钟,使电机停转。转动方向一开始就送到相时序发生器,因此,它产生的相控制信号能以合适的方向运转电机。目标位置送入减法计数器,并以这个计数器记录执行的步致。时钟脉冲同时送给相时序发生器和减法计数器。于是,相激励以恒定的钟频变化,减法计数器记录电机相对目标的瞬时位置。

负载达到目标位置时,减法计数器的内容成为零。时钟的“停止”信号利用这个零产生。如果恒定钟统频率太高,电机不能把负载惯量加速到对应的步进频率;系统或者完全不能工作,或者在行程的开始阶段失步。从静止开始,电机能响应而不失步的最高步进频率叫做“启动频率”。与此类似,“停止频率”是系统控制信号突然关断,而电机不冲过目标位置的最高步进频率。对任何电机-负载组合来讲,启动频率和停止频率之间的差别都很小。粘性摩擦使加速度和步进频率降低,但有助于减速,因此,提高了停止频率。不过,在简单的恒频系统里,时钟必须调整在两者之中较低的那个频率上,以此确保可靠的启动和停止。

电机从静止开始加速时,步进频率很低;每相激磁周期比相电路的电气时间常数长得多。在这种情况下,系统性能能够用电机的静转短/转子位置特性来分析。分析结果得知,(1)如果电机的转矩(TM)增大或负载转矩(TL)减小,则能提高启动额率;(2)减少系统惯量(电机惯量+负载惯量)也能提高启动频率。

在系统工作寿命内.由于零部件磨损,将影响负载转矩。为了允许负载转矩略为变化,恒频钟应比求得的启动频率略低,且可调。为了确保系统在工作速度情况下对机械谐振不敏感,还应考虑失步转矩/频率特性。如果算得启动频率恰巧等于谐振频率,那么,应改用较低频率的时钟,或者通过增加阻尼降低谐振影响。实际工作中,启动频率也常常通过试验求得。

2.加速和减速工作

因为步进电机系统的启动频率比它的最高运行频率低得多,因此,为了减少定位时间,常常通过加速使电机在接近最高的速度下运行。随着目标位置的逼近,为使电机平稳地停下来,重新使步进频率逐渐降低到启停电机频率。从初始位置往目标位置运动的整个过程中,步进频率都在变。若以曲线表示即得“速度曲线”,如图3所示。注意;减速可以比加速快得多,因为负载转矩帮助系统

制动;而且,电机产生的减速转矩比 (a)速度曲线;(b)对应的位置/时间响应曲线

加速转矩大。

3.开环控制的实现

对任何系统,选择控制方式都要考虑性能高和成本低等要求。例如,为了使加速方式最佳,也许要求按指数曲线上升,但是,实现的费用高。设计者也许会用比较简单的线性斜坡来折衷,因为这种斜坡能以很低成本实现。另一方面,集成电路工艺的迅速发展,使我们能以低价制成的芯片得到各种各样的电路功能,因此,估计以微处理机控制的潜在优点成为很现实的问题。在微机控制的系统中,常常可以把微处理机的富裕处理能力用来控制步进电机。这时,额外的存贮器成本和软件开发成本的增加很可能低于独立的硬件控制器的价格。

(1)以微处理机产生定时 微处理机很容易产生控制步进电机所要求的数字信号。开环控制中,即使负载很轻,步进电机也很少以大于10000步/秒的速度工作,因此,只要求微处理机每01毫秒发一次步进命令。而每次发送步进命令所需要的程序执行时间比01毫秒小很多,所以,微处理机完全有多余能力执行别的任务。使用中断子程序控制电机能使处理能力得到充分利用。

固定的,步进命令之间的时间受从“TABLE”单元开始的查阅表里存储数值的控制。程序以设寄存器“指针”等于“TABLE”开始,因此,“指针”里装有查阅表中第一个值的地址。然后,把第一次步进命令发给激磁时序控制器,用它改变电机里的相激磁。

在发下一次步进命令之前必须进行延时,使电机有时间执行第一步。这时, 取出由指针寻址的延时数(第一次为查阅表里的第一个值)并把它存入“延迟”单元里。然后,检查这个单元的内容是不是零。如果是零,表示已经走到了这个表的末尾;不是零则“指针”加一,指向表内的下一个数。最后,控制程序返回主程序。

主程序继续执行直到发生下次时钟中断,它使处理机返回到电机控制子程序的“入口”。‘延迟”单元里的数减一并且与零比较。如果不为零,则控制立即返回主程序;如果“延迟”单元已达到零,则把下一步命令送到激磁时序控制器,并且往“延迟”单元装入查阅表里的下一个位。因此,步进命令之间的时间与恒定的时钟周期及查阅表中的数值成正比。例如:第一步命令发出之后,“延迟”单元装入“30”,于是,“延迟”单元减到零之前将产生30次时钟中断。

查阅表中的数值是考虑以6步上升到最高步进频率设置的,这个最高频率是钟频的l/l0。减速从长延时数值(25)开始,这个时间对应转子转过平衡位置而进入产生减速所需要的负转矩的位置。因为负载转矩产生的是负转矩,所以,使电机减速只需要4步。最后,系统逐渐静止,距离初始位置共14步。这时,程序检

测到“延迟”单元内容为零

并转到“停止”。 考虑14步运动的”延迟”值取样表

该例中,走过的距离是

固定的。不过,行程开始之前,程序可装入不同的目标位置。通过扩展查阅表和修改有关程序,能使步数增加。如果目标离初始位置少于14步,这时,可以删去查阅表里适当的位,使频率降低,步数减少。

(2)以硬件定时 如果加速系统需要执行的步数比较少,那么,相激磁定时可以用数字集成电路产生。例如,在图5 (a)小,精确的前三步定时由持

续时间可变的延时时序电路产生,用它把电机加速到由系统钟频确定的步进频率。当接近目标位值时,利用后面的延时时序电路使电机减速。

系统最初静止,启动脉冲加到 “启动”输入端后,经过一系列逻辑“或”门作用到相序发生器上,相序发处器发生的激磁变化启动电机加速。启动脉冲同时触发第一级延时电路,把这个脉冲延迟T1时间,在这期间,电机运动到第—次相转换位置。经过T1延时后,第一级的脉冲输出送到相序发生器并触发下级延时电路。这种时序一直继续到所有延时电路都工作完。最末一级延时的输出用来启动恒频时钟,以恒频时钟生以后的步进命令,定时波形如图5(b)所示。

因为事先把目标位置送入了减法计数器。以后每执行一次,计数器就减一。因此,这个计数器记录着到达目标位置之前需要发出的步进命令数。当还需要执行的步数等于减速延时电路数时,减法计数器产生一个脉冲, 关断时钟并触发第一级减速电路延时T1,。到达目标位置之前的最后几步的减速控制由三级持续时间可变的延时T1,、T2,、T3,产生,它们顺序触发,产生送到相序发生器的步进命令。减速以长激磁周期(T1,)开始,让转子转过平衡位置和产生负转矩。 如果系统的最大工作速度接近失步频率,那末,也许需要20到50级

延时,这时成本很高。通常,硬件定时仅用在工作速度比正常的启停频率高得不太多的场合。在这些应用中,延时时间能够用静转矩/转子位置特性曲线成功地预测。

Keil uv4是一个8051内核单片机的集成开发环境,可以编辑、编译、仿真以C语言或汇编语言编制的51单片机源程序,如果装上MDK,还可以编译ARM,DSP源程序,所以是一款功能强大的集成开发软件,使用方法一般是:

1、建立一个工程

2、添加或新建源程序

3、编辑源程序

4、编译连接生成HEX

5、仿真

6、下载到单片机。

实验源程序

P55A equ 288h ;8255A口输出

P55C equ 28ah ;8255C口输入

P55CTRL equ 28bh ;8255控制口

DATA SEGMENT

BUF db 0

MES DB 'K0-K6 ARE SPEED CONTROL',0AH,0DH

DB 'K6 IS THE LOWEST SPEED',0AH,0DH

DB 'K0 IS THE LOWEST SPEED',0AH,0DH

DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,CS

MOV DS,AX

MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MES

MOV AH,09H

INT 21H

MOV DX,P55CTRL

MOV AL,8BH

OUT DX,AL ;8255C输入,A输出

MOV BUF,33H

OUT1:

MOV AL,BUF

MOV DX,P55A

OUT DX,AL

MOV AH,1

INT 16H

JE IN1 ;有无键按下

MOV AH,4CH

INT 21H

IN1:

MOV DX,P55C

IN AL,DX ;读开关状态

TEST AL,01H

JNZ K0

TEST AL,02H

JNZ K1

TEST AL,04H

JNZ K2

TEST AL,08H

JNZ K3

TEST AL,10H

JNZ K4

TEST AL,20H

JNZ K5

TEST AL,40H

JNZ K6

STOP:

MOV DX,P55A

MOV AL,0FFH

JMP OUT1

K0:

MOV BL,10H

SAM:

TEST AL,80H ;K7是否为

JZ ZX0

JMP NX0

K1:

MOV BL,18H

JMP SAM

K2:

MOV BL,20H

JMP SAM

K3:

MOV BL,40H

JMP SAM

K4:

MOV BL,80H

JMP SAM

K5:

MOV BL,0C0H

JMP SAM

K6:

MOV BL,0FFH

JMP SAM

ZX0:

CALL DELAY

MOV AL,BUF

ROR AL,1 ;循环右移

MOV BUF,AL

JMP OUT1

NX0:

CALL DELAY

MOV AL,BUF

ROL AL,1 ;循环左移

MOV BUF,AL

JMP OUT1

DELAY PROC NEAR

DELAY1:

MOV CX,05A4H

DELAY2:

LOOP DELAY2

DEC BL

JNZ DELAY1

RET

DELAY ENDP

CODE ENDS

END START

可编程序控制器(PLC)控制脉冲的数量和频率以及电机各相绕组的功率顺序,控制步进电机的旋转。

通常电动机的转子是永磁体。当电流流过定子绕组时,定子绕组产生矢量磁场。磁场将驱动转子旋转一个角度,使转子的一对磁场的方向与定子的方向一致。当定子的矢量磁场旋转一个角度时。转子也随磁场旋转一个角度。

每次输入电脉冲时,电机旋转一个角度前进一步。其输出角位移与输入脉冲数成正比,转速与脉冲频率成正比。改变绕组通电和电机反转的顺序。因此可以通过控制电机各相绕组的脉冲数、频率和功率序列来控制步进电机的旋转。

扩展资料:

步进电机控制技术发展概况:

在微电子技术特别是计算机技术发展之前,控制器脉冲信号发生器是完全由硬件实现的。控制系统采用独立的元件或集成电路构成控制回路。它不仅调试和安装复杂,而且需要消耗大量的组件。一旦最终确定,如果要改变控制方案,就必须重新设计电路。

这就需要为不同的电机开发不同的驱动器。开发难度大,成本高,控制难度大,限制了步进电机的推广。

由于步进电机是将电脉冲转化为离散机械运动的装置,具有良好的数据控制特性,计算机成为步进电机理想的驱动源。随着微电子技术和计算机技术的发展,软硬件结合已成为主流。

也就是说,控制脉冲由程序产生,驱动硬件电路。单片机通过软件控制步进电机,更好地发挥了步进电机的潜力。因此,利用单片机控制步进电机已成为必然趋势,也顺应了数字化时代的潮流。

参考资料来源:

百度百科-可编程逻辑控制器

百度百科-步进电机

以上就是关于大哥大姐们小弟跪求一个用AT89S52和L293D控制步进电机的C或者汇编程序全部的内容,包括:大哥大姐们小弟跪求一个用AT89S52和L293D控制步进电机的C或者汇编程序、步进电机的控制系统设计 步进电机的开环控制解析、单片机控制步进电机要怎么用Uv4编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10111525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存