文档库 最新最全的文档下载
当前位置:文档库 › 基于单片机的步进电机控制系统

基于单片机的步进电机控制系统

数理与信息工程学院 《单片机原理及应用》期末学期课程设计

题目:基于单片机的步进电机控制系统

专业:电子信息工程

班级:电信041班

姓名:林浩波

学号: 04610117

指导老师:余水宝

成绩:12 自己的东西偏少,格式欠规范化

(2007.1)

目录

第1章 引 言 (3)

1.1 步进电机控制系统概述 (3)

1.2 本设计任务和主要内容 (4)

第2章 系统主要硬件电路设计 (5)

2.1 单片机控制系统原理 (5)

2.2 单片机主机系统电路 (5)

2.2.1时钟电路 (6)

2.2.2复位电路 (6)

2.3 步进电机驱动电路 (7)

2.4 LED显示电路 (8)

第3章 系统的软件设计 (10)

3.1 步进电机的位置控制 (10)

3.2 显示子程序 (13)

第四章 结束语 (17)

第5章 参考文献 (18)

基于单片机的步进电机控制系统

数理与信息工程学院 电信041 林浩波

指导教师:余水宝

第1章引言

在当今社会的各个领域步进电机无处不在,应用领域涉及机器人、工业电子自动化设备、医疗器件、广告器材、舞台灯光设备、印刷设备、计算机外部应用设备等等。因此,设计出高精确度、实时监控、语音提示的步进电机具有重要的现实意义和实用价值。本设计是基于80C51单片机的步进电机控制系统,能够有效地对步进电机转速、方向的控制。为了能够更加人性化的控制系统,本设计还增加了语音提示部分,在实际应用当中由于紧急事件需要在短时间内了解电机的工作情况,这时看数码显示就很不方便,而语音提示提供很大帮助,只要按下语音提示按钮便能获取相关技术数据。

本设计采用16 位单片机MCS80C51对步进电机进行控制,通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过驱动芯片驱动步进电机;同时,用 4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动。

1.1 步进电机控制系统概述

步进电机是机电一体化产品中的关键组件之一,是一种性能良好的数字执行元件,随着计算机应用技术、电子技术和自动控制技术在国民经济各个领域中的普及与深入,步进电机的需求量越练越大。

随着工业技术的不断发展,以及同类产品的不断出现,步进电机面临着前所未有的挑战。但近30年来,数字技术、计算机技术和永磁材料的迅速发展,推动步进电机的发展,为步进电机的应用开辟了广阔的前景,近几年来,步进电机需求量一直呈现出较快的增长速度,其中扫描仪、打印机、传真、DVD-ROM/CD-ROM驱动器、空调及多功能自动化办公设备等应用对步进电机的需求增长最强。此外由于USB2.0的日益流行促进了高分辨率扫描仪的销售,步进电机向着小型、薄型和更小的步进角度发展。

步进电机有着方方面面重要应用,如何对其进行有效控制,使其能够发挥最大的优势是各个行业技术开发人员所共同关注的,本文旨在设计一套较完整的通用控制系统,对步进电机的转速、方向实行智能化控制,并能通过LED显示其转速。

1.2 本设计任务和主要内容

本论文主要研究单片机控制的步进电机系统,对步进电机的转速、方向进行控制和显示。

主要内容如下:

②通过键盘设定步进电机的转速及方向

② LED显示步进电机的转速

第2章 系统主要硬件电路设计

2.1 单片机控制系统原理

图2-1 单片机控制系统原理框图

2.2 单片机主机系统电路

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图2-2 单片机主机系统图

2.2.1时钟电路

单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图2-2中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选12MHz

2.2.2复位电路

为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现

两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。

图2-2中R9和Cl组成上电复位电路,其值R取为1K, C取为1pF.

2.3 步进电机驱动电路

驱动电路集成化成为一种趋势。目前,已有多种步进电机驱动集成电路芯片,它们大多集驱动和保护于一体,作为小功率步进电机的专用驱动芯片,广泛用于小型仪表、计算机外设等领域,使用起来非常方便。本设计采用UCN5804B芯片。UCN5804B芯片适用于四相步进电机的单极性驱动。它最大能输出1.5A电流、3.5V电压。内部集成有驱动电路,上电自行复位,可以控制转向和输出使能。

图2-3 步进电机驱动电路

图2-3为步进电机驱动电路,其中4、5、12、13脚为接地引脚,1、3、6、8脚为输出引脚,电动机各相的的接线如图,14脚是控制电机的转向,其中低电平为正转,高电平为反转;11脚是步进脉冲的输入端,9、10脚决定工作方式,其真值表如表2-1所示:

表2-1 9、10脚真值表

工作方式 9脚 10脚

双四拍 0 0

八拍 0 1

单四拍 1 0

禁止 1 1

2.4 LED显示电路

由于系统显示的内容比较简单,显示量不多,所以显示选用数码管既方便又经济。LED有共阴极和共阳极两种。如图2-4所示。

符号和引脚共阴极共阳极

图2-4 LED数码管结构原理图

二极管的阴极连接在一起,通常此共阴极接地,而共阳极则将二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔画即亮;不加电压即暗。为了保护各段LED不被损坏,需外加限流电阻。

数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。本电路的“段控”和“位控”分别由P1口和P3口控制,P3选中哪个数码管,哪个数码管就亮,P1口控制显示数字。

因AT89C51单片机I/O口资源有限,必须对其Il0口进行扩展才能满足实现系统功能,如图2-7所示为用8155扩展1/0口的4个8位LED动态显示器,显示扫描由程控实现,其中PA口输出字型码,PC口输出位选信号即扫描信号,图中片选线CE和AT89C51的P2.7口相连,IO/ M选通输入线与P2.4口相连,

该系统中当P2.7=0且P2.4 =1时,选中8155芯片内三个I/O口。相应的端口地址分配如表2-1:

端口地址分配

表2-2 8155

图 2-5 显示电路

第3章 系统的软件设计

3.1 步进电机的位置控制

步进电机的运行控制涉及到位置控制和加、减速控制。步进电机的位置控制,指的是控制步进电机执行机构从一个位置精确地运行到另一个位置。步进电机的位置控制是步进电机的一大特点,它可以不用借助位置传感器而只需要的开环控制就能达到足够的位置精度。

步进电机的位置控制需要两个参数。

第一个是绝对位置,即步进电机控制的执行机构当前的位置参数,绝对位置是有极限的,其极限是执行机构运动的范围,超越了这个极限就应报警。

第二个是从当前位置移动到目标位置的距离,我们可以用折算的方式将这个

距离折算成步进电机的步数。这个参数是外界通过键盘或可调电位器旋钮输入的,所以折算的工作应该在键盘程序或A/D转换程序中完成。

下面是本程序使用的资源:

30H、31H------存放定时器的常熟,低位在前

32H~34H--------存放绝对位置参数,低位在前

35H、36H-------存放步进数,低位在前

中断服务子程序框图如图2-6所示。

图2-6 步进电机位置控制子程序框图

程序如下:

POS: CPL P1.0 ;改变P1.0电平状态

PUSH ACC ;累加器A进栈

PUSH PSW

PUSH R0 ;R0进栈

JNB P1.0,POS4 ;P1.0=0时,半个脉冲,转到POS4 CLR EA ;关中断

JNB P1.1,POS1 ;反转,转到POS1

MOV R0,32H ;正转

INC @R0

CJNE @R0,#00H,POSE ;无进位则转向POS2

INC R0

INC @R0

CJNE @R0,#00H,POS2

INC R0

INC @R0

CJNE @R0,#00H,POS2 ;无越界,则转POS2

CLR TR0 ;发生越界,停定时器(停电动机)

LCALL BAOJING ;调报警子

POS1: MOV R0,#32H ;反转

DEC @R0

CJNE @R0,#0FFH,POS2 ;无借位则转向POS2

INC R0

DEC R0

CJNE @R0,#0FFH,POS2

INC R0

DEC @R0

CJNE @R0,0FFH,POS2

CLR TR0

LCALL BAOJING

POS2: MOV R0,#35H ;指向步数低位35H

DEC @R0

CJNE @R0,#0FFH,POS3IU9

INC R0

DEC @R0

POS3: SETB EA

MOV A,35H

ORL C

JNZ POS4

CLR TR0

SJMP POS5

POS4: CLR C

CLR TR0

MOV A,TL0

ADD A,#08H

ADD A,,30H

MOV TL0,A

MOV A,TH0

ADDC A,31H

MOV TH0,A

SETB TR0

POS5: POP R0

POP PSW

POP ACC

RETI

3.2 显示子程序

硬件电路如图2-4所示,通过8155芯片来扩展I/O口,其端口地址分别是:命令/状态寄存器:7FF8H ,PA口:7FF9H,PB口:7FFAH,PC口:7FFBH。通过P1口控制数字显示,即“段选”,P3口控制“位选”。

ORG 0000H ;初始化

START:JMP MAIN

ORG 30H

MAIN:MOV SP,#5FH

B_BIT EQU 34H ;个位显示数据存储器

A_BIT EQU 35H ;十位显示数据存储器

C_BIT EQU 22H ;百位显示数据存储器

D_BIT EQU 23H ;十位显示数据存储器

E_BIT EQU 34H ;万位显示数据存储器

Count EQU r4 ;计数器数据存储器

ACALL INIT_RS232;调用INIT_232子程序

CPL P0.0 ; P0.0亮表示正在设定串口

MOV R5,#25

ACALL DELAY

CPL P0.0 ;P0.0暗表示设定完成

MOV P1,#0FFH

MOV P2,#0FFH

WAIT:acall DIAPY;调用显示程序

JNB RI,WAIT;接收电脑发过来的数据

ClR RI ;清RI,继续下次接收

LJMP WAIT

DIAPY :MOVR1,SBUF把接收到的数据放到A里MOV A,R1

MOV B,#100

DIV AB

MVO 33H,A

MOV A ,B

MOV B,#10

DIV AB

MOV B_BIT,B ;提取百位

MOV A_BIT,A

MOV DPTR,#TAB

MOV R0,#5

DP11:MOVR1,#250

DPLOP:个位显示

MOV,A,B_BIT

MOVC A,@A+DPTR ;提取字模

MOV P1,A

CLR P2.2 ;开个位

ACALL DELAY1;调用扫描子程序

SETB P2.2 ;十位显示

MOV A,A_BIT]

MOVC A,@A+DPTR ;提取字模

MOV P1,A

CLR P2.3 ;开十位

ACALL DELAY1

SET P2.3 ;百位显示

MOV A,A_BIT

MOVC A,@A+DPTR;提取字模

MOV P1,Amov p1,a

CLR P2.4 ;开百位

ACALL DELAY1

SETB P2.4

DJNZ R1,DPLOP

DJNZ R0,DP11

RET

INIT_RS232: ;rs232初始化设定MOV TMOD,#20H ;1200bs

MOV TH1,#0E8H

SETB TR1

MOV SCON,#01010000B

RET

DELAY1:

MOV R7,#2

D3: MOV R6,#25

D4: DJNZ R6,D4

DJNZ R7,D3

RET

delay: MOV R5,#20

D2:MOV R6,#50

D1:MOV R7,#250

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,D2

RET

TAB: DB 0C0H,0f9H,0a4H,0b0h,99h ;"0","1","2","3","4"

DB 92H,82H,0f8H,80H,90h ;"5","6","7","8","9'

DB 88H,83H,46H,0a1H,86h ;"a","b","c","d" ,"e"

DB 8eh ;"F"

END

第四章 结 束 语

本次课程设计是在学习单片机课程后的一次实践,通过查阅大量书籍、专业网站、论坛等,通过反复对比,采用技术较为成熟以及仿真效果的电路。在软件设计方面,一部分参考文献的已成程序进行修改编写,一部分则是平时的经验积累。

应该说这次课程设计还是基本达到了设计的要求,但是也存在着未能解决的问题,由于在执行语音程序时对资源的消耗比较大,在语音报数的时候会中断步进电机驱动信号的输出,导致电机停转。为此,在参考有关文献之后我将尝试使用两块单片机,通过双机通讯来传递信号。

这次步进电机的综合实验我们学到了步进电机、数码管、4*4键盘、更重要的是学会了程序出问题时调试的方法,并养成了遇到困难主动独立寻找解决方案的信心和技巧。

第5章 参考文献

[1]谢自美,电子线路设计、实验、测试(第二版).华中理工大学出版社,2000.

[2]薛钧义,张彦斌,樊波等《凌阳十六位单片机原理及应用》.北京航空航天大学出版社,

2003

[3]王晓明,电动机的单片机控制.北京航空航天大学出版社,2002.5

[4]张鑫,单片机原理及应用.电子工业出版社,2005.8

[4][EB/01] https://www.wendangku.net/doc/6a13510637.html,

[5][EB/02] https://www.wendangku.net/doc/6a13510637.html,

相关文档
相关文档 最新文档