基于单片机的步进电机控制 毕业论文

更新时间:2024-05-20 07:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

前 言 ..................................................................... 1 1 选题背景 ................................................................ 2 1.1 课题背景 ........................................................... 2 1.2 研究的目的和意义 ................................................... 3 1.3 课题研究的内容 ..................................................... 4 2 方案论证 ................................................................ 4 2.1 单片机的介绍 ....................................................... 4 2.2 步进电机的介绍 .................................................... 10 2.3 仿真软件的介绍 .................................................... 15 2.4 驱动电路的选择 .................................................... 16 2.5 显示电路的选择 .................................................... 16 3 设计或实验过程论述 ..................................................... 17 3.1 硬件电路的设计 .................................................... 17 3.2 软件部分 .......................................................... 22 4 基于AT89C51的步进电机控制系统的实现 ................................... 26 4.1 系统的故障及调试 .................................................. 26 4.2 设计结果 .......................................................... 26 5 总结与展望 ............................................................. 28 5.1 总结 .............................................................. 28 5.2 展望 .............................................................. 28 参考文献 ................................................................. 29

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

摘 要:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件,在非超载的

情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,广泛应用在各种自动化控制系统。本设计以AT89C51单片机为核心,对步进电机进行控制,通过按键实现步进电机正转、反转、加速、减速,并使用LED显示电机速度。经过PROTEUS仿真和硬件焊接,结果表明,系统实现了要求。该电路简单,可靠性强,运行稳定。

关键词:AT89C51;ULN2003;LED;步进电机 中图分类号:TM356

Design of Mcu-based Control System for Stepping Motor

Abstract :Stepping motor is the open loop control device changing the electrical pulse signal

into angular displacement or linear displacement.In the overload situation, the speed of

motor, stop position depends only on the pulse signal frequency and pulse number, regardless of load changes,and it is widely used in all kinds of automatic control

system.This design is based on AT89C51 microcontroller as the core to control stepping motor.Through the keys,the foreward,reversal,acceleration,deceleration functions are implemented and use LED to show speed of motor.After the simulation results by Proteus software and the hardware is welded,the results show that the require has come true by the system.This circuit is simple,its reliability,stable operation[1].

Key words:AT89C51;ULN2003;LED;stepping motor

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

前 言

单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。 同时用单片机还可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、大容量、高性能、低价格和外围电路内装化等几个方面发展。综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命[2]。

步进电机作为执行元件,是机电一体化的关键产品之一,随着工业自动化的发展,步进电机的应用也越来越广泛,广泛应用在各种自动化控制系统中。步进电机是一种用于开环控制的驱动元件。它是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机。步进电机作为电机的一种,可以靠开路控制做精确的定位,因此普遍应用于电脑的外设及工业生产的自动化机具设备中,如NC车床、切割机,此外机器人的各

1

个关节控制也大量的使用步进电机。

近些年来,由于步进电机的控制精度不断提高,越来越多有较高控制精度要求的系统也开始采用步进电机。对于小功率步进电机,一般采用单片机与专用步进电机驱动器联合工作的方式,单片机产生脉冲,控制停启、正反转,变速等,专用步进电机驱动器则进行脉冲环形分配及功率驱动。

步进电动机突出的优点是它可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可,步进电机的转速取决于脉冲频率、转子齿数和拍数。其角速度与脉冲频率成正比,而且在时间上与脉冲同步。因而在转子齿数和运行拍数一定的情况下,只要控制脉冲频率即可获得所需速度因此在众多领域有着极其广泛的应用。研制一种高性价比步进电机驱动器及其控制系统具有重要的意义[3]。

本次毕业设计选用的步进电机是两相步进电机,通过软件和硬件的结合,使用按键控制步进电机的复位、正转、反转、加速、减速功能,并且将步进电机所处的状态用相应的发光二极管显示。主要通过三大块来设计,包括驱动电路的设计、状态显示部分和按键部分的设计,可以通过控制脉冲个数来控制角位移量,从而控制转动的角度;同时可以通过控制脉冲频率来控制电机转动的加速度,从而达到调速的目的。

本次论文分为六章,第一章是选题背景,主要探讨了课题背景、目的和课题研究内容;第二章是方案论证,探讨了器件的选择和方案的确定;第三章是设计的过程,说明了硬件和软件设计的设计过程;第四章是系统的实现,阐述了实验的结果;第五章是总结和展望。通过五章的描述,详细介绍了此次毕业设计的内容、方法、以及设计中遇到的问题和解决问题的途径,得出满意的结果。

1、选题背景

1.1、课题背景

2

步进电机是自动控制系统中常用的执行部件。步进电机的输入信号为脉冲电流 ,它能将输入的脉冲信号转换为阶跃型的角位移或直线位移 ,因而步进电机可看作是一个串行的数 /模转换器。由于步进电机能够直接接受数字信号 ,而不需数 /模转换,所以使用微机控制步进电机显得非常方便。 步进电机有以下优点:

(1)通常不需要反馈就能对位置和速度进行控制; (2)位置误差不会积累;

(3)与数组设备兼容 ,能够直接接收数字信号; (4)可以快速启停。

步进电机的品种规格很多,按照它们的结构和工作原理可以划分为磁阻式 (也称反应式或变磁阻式 )电机、 混合式电机、永磁式电机和特种电机等四种主要型式。步进电机不需位移传感器就可精确定位 ,所以在精确定位系统中应用广泛。目前打字机、计算机外部设备、数控机床、传真机等设备都使用了步进电机。随着电子计算机技术的发展 ,步进电机必将发挥它的控制方便、 控制准确的特点 ,在工业控制等领域取得更为广泛的应用

[4]

1.2、研究的目的和意义 1.2.1、研究的目的

综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力,以单片机为核心设计一个步进电机控制系统,要求能够通过键盘设置步进电机的转向和转速,并在LED显示器上显示步进电机转速或工作状态。在设计的过程中,熟悉并掌握单片机的结构和使用方法,了解步进电机的内部结构以及工作过程,将二者有机地结合起来,实现要求的结果,锻炼自己的软件编程和硬件焊接的能力。

1.2.2、研究的意义

步进电机是用脉冲信号进行控制,将电脉冲信号转换成和相应的角位移或线位移的为电动机,他突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速启停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统

3

度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。

定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)

静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。 虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。

步距角精度:步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15% 以内。

失步:电机运转时运转的步数,不等于理论上的步数,称之为失步。

失调角:转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。

最大空载起动频率:电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。

最大空载的运行频率: 电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。

运行矩频特性:电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。其它特性还有惯频特性、起动频率特性等。电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。

电机的共振点:步进电机均有固定的共振区域,二、四相感应子式步进电机的共振区一般在180-250pps之间(步距角1.8度)或在400pps左右(步距角为0.9度),电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然,为使电机输出电矩大,不失步和整个系统的噪音降低,一般工作点均应偏移共振区较多。 电机正反转控制:当电机绕组通电时序为AB-BC-CD-DA时为正转,通电时序为DA-CA-BC-AB时为反转[7]。

14

2.3、仿真软件的介绍 2.3.1、keil软件

Keil uVision系列是德国Keil Software公司推出的51系列兼容单片机软件开发系统。它本次设计使用的是Keil2,是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计。Keil uVision系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。

与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。无论是使用C语言还是汇编语言进行程序的编写,其方便易用的集成环境、强大的软件仿真调试工具也会使编程事半功倍。

KeilC51的特点:(1)Keil C51生成的目标代码效率非常之高,多数语句生成的汇编

代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。(2)与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

因此,本次设计采用C语言进行程序的编写。 2.3.2、proteus软件

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

15

功能及特点:

(1)功能:1)原理布图 2)PCB自动或人工布线3)SPICE电路仿真

(2)特点:1)互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。2)仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境[8]。 2.4、驱动电路的选择

方案一、使用达林顿驱动芯片ULN2003,2003为极电极开路驱动芯片,能驱动4相步进电机,他的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。缺点是如果用于驱动直流电机的话只能按一个方向转动。换向要改变电机的接法。

方案二、使用驱动芯片L298, L298为H桥驱动芯片,可以为负载提供双向的电流。适合驱动2相或4相的步进电机,也可以驱动2台普通的有刷直流电机。驱动电流为2A,只用L298需要自己编写控制脉冲时序,而与297联合起来用只需单纯输入脉冲就可以,简单方便,但是相应的成本增加了。

综合本设计的需求,在满足本设计的要求下,选用方案一较为经济。 2.5、显示电路的选择

方案一、采用LCD液晶显示,LCD液晶显示具有方便,美观、显示信息量大的特点,现在市场上集成度高的显示屏在编程方面也较为简洁,缺点是成本较高。

方案二、采用LED数码管显示,数码管显示在硬件连接方面显得较为复杂,在不同的应用场合下配合使用的芯片也不同,但是对于LCD液晶显示来说,在成本方面占较大优势。

由于本次设计只是在数码管上象征性地显示转速,对转速变化有一个感性的认识,对显示器件要求不高,因此最终选择了方案二。

16

3、设计或实验过程论述

3.1、硬件电路的设计 3.1.1、硬件设计的总体方案

因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。

用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是两相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。定时器定时来调整电机的转速,通过键盘的按钮,就可以改变定时初值从而改变了电机的转速,P0口接LED数码管,可以显示当前的电机转速和按钮状态,具体结构见图:

p0.0~p0.7 AT89C51 单片机 p2.0~p2.3 p1.0~p1.3 p3.0~p3.4 四位数码显示管 步进电机 复位、正转、反转 加速、减速按钮

图3.1 系统具体结构图

3.1.2、单片机最小系统

单片机最小系统包括始终振荡电路和复位电路,其电路图如图:

17

图3.2 单片机最小系统

说明: ①复位电路:由电容串联电阻构成,由图并结合\电容电压不能突变\的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就要让RC组合可以在RST脚上产生不少于2个机周期的高电平;

②复位输入高电平有效,当振荡器工作时,RST引脚出现两个机器周期以上的高电平,使单片机复位。此电路除具有上电复位功能外,若要复位只需按“RST”键,此电源Vcc经电阻分压,在RST端产生一个复位高电平;

③晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的方波便于12分频,方便定时操作);

④单片机:一片AT89S51/52或其他51系列兼容单片机; 注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行;

⑤电源部分:接+5伏特的电压。 3.1.3、按键部分

本次设计选用的是单片机的P3口来控制信号的输入,所以把按键开关和P3口连接起

18

来,另一端接地。当按下其中一个开关时,P3.0~P3.4中的某一个I/O的电位被拉低,则单片机控制步进电机进行相应的动作。接线如图:

图3.3 按键部分仿真图

3.1.4、电机驱动芯片

在实际的电路中,单片机的I/O口并不能直接驱动LED发光,因此,必须在单片机和数码管之间加上驱动芯片,本次设计中使用了74HC573,它起到驱动和锁存的作用,其内部结构如图:

图3.4 74HC573芯片

74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时, 新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要

19

外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。 3.1.5、电机驱动芯片

本设计使用的是生活中被广泛使用的电机驱动芯片ULN2003AN ,ULN2003是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,其内部结构及外形如图:

图3.5 ULN2003的内部结构图

ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。 该电路的特点如下:

①ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

②ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。驱动电路如图:

20

图3.6 电机驱动图

3.1.6、步进电机

本设计使用步进电机两相五线电机,电压为DC5V,本次设计中步进电机工作在二相励磁方式。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断

地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单四拍(单相绕组通电A-B-C-D-A),双四拍(双相绕组通电AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A),电机如图:

图3.7 电机实物图

21

3.1.7、显示部分

数码管选用7段共阳4位LED,第一位显示电机的正反转状态,第一位显示“-”,第三、四位显示电机的状态,显示如图:

3.1.8、硬件的焊接

图3.8 4位数码管 步进电机的四线接法P1.0~A、P1.1~B P1.2~A’、P1.3~B’,整体的硬件仿真图如图:

图3.9 系统整体仿真图

22

3.2、软件部分 3.2.1、主程序

进入主程序显示初始化状态,主程序由键盘程序、显示程序、步进电机驱动程序三部分组成,主程序首先初始化各变量,步进电机驱动的各引脚均输出高电平,然后调用键盘程序,并作判断,有键按下,则调用键盘程序,并显示出状态。其主程序框图如图:

开始 显示初始化状态 “—00” 按键检测 Flag==0 Flag==1 Flag==2 以初始速度正向旋转“0—10” 以初始速度反向旋转“1—10” N 加速 Y 减速 N N 加速 减速 N Y Y Y 是否为极限速度 是否为极限速度

保持速度 显示上限 速度加/减 显示改变 保持速度 显示上限 速度加/减 显示改变

结束 图3.10 主程序框图

23

3.2.2、显示子程序

转速的显示是给用户最直观的概念,知道电机的转的快慢,知道电机当前的转速,而需要怎样的速度,再对它进行加减速。而这个显示是调用显示子程序。具体流程图如图:

显示 Flag==0? Y 第一个数码管显示“0”(正传) N Flag==2? N 第一个数码管显示“1”(反转) Y 复位显示 “—00” 第二位显示 “—” 第3、4位显示转速。第三位显示转速/10,第四位显示转速 NEXT

图3.11 显示子程序框图

24

3.2.3、键盘扫描子程序

键盘是我们唯一和电机沟通的桥梁,通过键盘的输入从而改变电机的运行状态,这里所需要的键盘数量不多,可以根据学习板做成独立式键盘,键盘的焊接是行线接单片机P3口的p3.0~p3.4,通过调用KEY扫描键盘,调用延时程序,再判断是否有键按下,如果无键按下就返回继续扫描,如果有键按下,则调用delay延时去抖动,再读键值,等待键释放,具体流程如图:

键盘扫描 为最高速度? Y Y 复位是否按下 N 正转是否按下 Y Flag==0转速为10 N 减? N N 速度加1 保持20 N Y 为最低速度? Y 反转是否按下 Y Flag==1转速为10 Flag==2 转速=0 N 速度减1 保持1 加? N Y 返回 图3.12 键盘扫描子程序框图

25

4、基于AT89C51的步进电机控制系统的实现

4.1、系统的故障及调试 4.1.1、软件部分

(1)调试:按照总体流程图,在keil软件上,用C语言编程,编程时采用分块进行,分为按键子程序、显示子程序、调速子程序以及主程序,具体步骤如下:

1)定义各个变量uchar maichong;uchar zhuansu;uchar flag;

2)定义正反转、加减速端口Sbit key_z=P3^1;sbit key_f=P3^2;sbit key_jia=P3^3;sbit key_jian=P3^4;

3)调用显示子程序; 4)调用键盘扫描子程序;

5)执行主程序; 6)返回显示

(2)故障及解决:在编程完成时,运行程序,在仿真图上可以看到电机并不能正常旋转,而是左右来回运转或者是只转半圈,刚开始认为是电机的四相接线接错了,更改之后,电机依旧不能正常运行,于是,我怀疑是程序的问题,改动了几个地方,没有解决。我决定一部分一部分地检查,检查到电机在简单接线时,现象依然不明显,此时认为是电机运转太快了,在眼中有视觉残留,于是,我调整程序中的延迟函数和脉冲个数,在不断地尝试下,最终,能够很清楚地看到电机正常运转,故障得到解决。 4.1.2、硬件部分

(1)调试:根据原理图将硬件焊接好,用Proteus软件下载keil软件生成的HEX文件到单片机中,再给单片机上电,程序就开始运行。

(2)故障及解决:完成了硬件的焊接,将程序通过数据线下载到单片机芯片中,接通电源,电机并不能运转,对比PROTEUS中的电路仿真图的接线,发现电机的四条接线位置不对,更改了位置后电机正常运转。可是,显示的LED并没有按照程序进行运转,此时,我怀疑是LED坏了,于是我将LED拆下来单独点亮,能够正常工作,查阅了相关书籍后发现,LED的驱动需要一定大小的电压和电流,于是我在单片机的I/O口与LED之间接入了驱动芯片74HC573,再次运行,LED正常显示。 4.2、设计结果

这次设计比较成功,在经过了器件的选择,软件的仿真及调试,硬件的焊接后,步进

26

电机能按照预先的要求,实现按键控制电机的复位、正转、反转、加速、减速五个操作。并对应地在LED上显示出象征性的数字,从而直观地观察到电机的转速变化。 按下复位按钮,电机停止,对应的数码管上显示如下:

图4.1 初始化显示图

按下正转按钮从P1口输出脉冲,步进电机正转,显示如下:

图4.2 电机正转显示图

按下反转按钮从P1口输出脉冲,步进电机反转,显示如下:

图4.3 电机反转显示图

按下加速按钮电机速度增加,按下减速按钮电机速度减少显示如图4.4所示:

27

5、总结与展望

5.1、总结

一转眼,毕业设计就快结束了,本次毕业设计主要完成了使用AT89C51控制步进电机的运行,通过按键分别控制电机的复位、正转、反转、加速、减速,并在数码管上对应地象征性地显示转速,经过了软件仿真和调试、硬件的焊接与调试,最终实现了步进电机按照要求正确运行。

通过这次毕业设计,让我对单片机有了一个更深入的认识,对单片机的应用更加熟练,而且对步进电机有了一定的了解。将两者有机地结合在一起,进行一定的操作,提高了我的硬件焊接和软件设计的能力,从中学到了许多知识。将软件仿真做成实物时,我懂得了理论联系实际的重要性,一切的理论与实际之间必然存在差别,我们必须具体问题具体分析,才能有效的解决问题。在调试的过程中,我明白了许多设计时的细节问题,增长了见识,为以后的设计打下基础。在设计的过程中,我查阅了相关资料,并将它们与自己的实际问题相结合,锻炼了自己独立处理问题的能力。在整个过程中我明白了几个道理:首先,做学问要一丝不苟,要以科学的态度对待问题,不能存在侥幸的心理,出现了任何偏差都不要轻视;其次,做任何事情之前,都要有充足的准备,正所谓“磨刀不误砍柴工”,这样的话做事情才有效率;最后,做事要有耐心和毅力,不要遇到困难就退缩,要迎难而上,只有坚持下来的人才是最终获得胜利的人。 5.2、展望

虽然完成了设计,由于作者的水平有限,对各种电机的了解不够深入,查阅的资料不够齐全,设计的东西任然存在许多偏差和不足,例如:电机的转速控制不够精确,没有用到定时器;转速的测量不严密,只是象征性地显示转速,可以用霍尔测速传感器进行转速的测量;使用的元器件可以选用更精确、更廉价的等等。这些问题都是我值得注意的。虽然存在一些问题,但是我学习单片机的热情不会改变,在今后的学习过程中我将尽量拓宽自己的知识面,分析问题时尽量做到面面俱到,设计出更好的作品。

28

参考文献

[1]戴文进. 电气工程及其自动化专业英语[M]. 电子工业出版社, 2009.7 [2]李蒙, 毛建东.单片机原理及应用[M]. 中国轻工业出版社, 2010.2 [3]陈理壁. 步进电机及其应用[M]. 上海:上海科学技术出版社, 1989 [4]王自强. 步进电机应用技术[M]. 科学出版社, 2010.5

[5]周向红. 51系列单片机应用与实践教程[M]. 北京: 北京航天航空大学出版社, 2008.5 [6]丁明亮, 唐前辉. 51单片机应用设计与仿真[M]. 北京: 北京航天航空大学出版社, 2009.2 [7]王晓明, 胡晓柏. 电动机的单片机控制[M]. 北京航空航天大学出版社, 2002.5 [8]杜树春. 基于Proteus和Keil C51的单片机设计与仿真[M]. 电子工业出版社, 2012.2 [9]郭天祥. 51单片机C语言教程[M]. 北京: 电子工业出版社, 2009.12 [10]杨素行. 模拟电子技术简明教程[M]. 高等教育出版社, 2009.7 [11]谭浩强. C 语言设计[M]. 北京: 清华大学出版社, 2005.7

[12]孙进平, 张大鹏, 丁金滨. 51单片机系列单片机原理、开发与应用实例[M]. 中国电力出版社, 2009 [13]刘国永, 陈杰平. 单片机控制步进电机系统设计[J]. 安徽: 安徽技术师范学院学报, 2002 [14] 李海滨, 片春媛, 许瑞雪. 单片机技术课程设计与项目实例[J]. 中国电力出版社, 2009版:56-65 [15]张洪润, 蓝清华. 单片机应用技术教程[M]. 北京: 清华大学出版社, 1997 [16]刘金华. 数字电子技术[M]. 北京: 北京大学出版社,2010

[17]张齐, 朱宁西. 单片机系统设计与开发[M]. 机械工业出版社, 2008.10 [18]赵建领. 51单片机开发宝典[M]. 电子工业出版社, 2008

[19]徐益民. 步进电机的单片机控制系统的设计[D]. 哈尔滨:黑龙江科技学院, 2005 [20]邹益民. 单片机C语言教程[M]. 中国石化出版社, 2010.1

29

致 谢

这次的毕业设计能顺利的实现,并完成了毕业设计论文,与周围的老师、同学的帮助是分不开的,在此,我对他们表示衷心的感谢。

首先,我要感谢万里光老师,此次设计是在万里光老师的亲切关怀和悉心指导下完成的,他渊博的知识,严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到设计的最终完成,万老师都始终给予我细心的指导和不懈的支持。在他的影响下,我认真完成每一步设计,解决设计过程中遇到的困难,永不言弃,最终完成了设计。感谢万老师在忙碌的教学工作中抽出时间给予我指导,帮助我修改论文,在此谨向万老师致以诚挚的谢意和崇高的敬意。

其次,要感谢一路和我共同走过来的同学,是他们陪着我在冯老师的实验室,共同做毕业设计,有不懂的问题,他们都会热心的帮我解答,感谢有你们的陪伴。

最后,要感谢学校图书馆,它种类繁多的图书和网上付费资源,让我方便地找到了许多有用的资料。

正是因为他们的帮助,我的毕业设计才能完成,再次感谢他们!

附 录

系统的实物图

完整的C语言程序: #include

#define uchar unsigned char #define uint unsigned int

Unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ,0x3f,0x83,0xc6,0xa1,0x86,0x8e};

unsigned char code table1[]={0x03,0x06,0x0c,0x09,0x09,0x0c,0x06,0x03}; uchar table_begin; uint maichong; uchar zhuansu; uchar flag; sbit key_fuwei=P3^0; sbit key_z=P3^1; sbit key_f=P3^2; sbit key_jia=P3^3; sbit key_jian=P3^4; void delay(uchar x) { uchar i,j;

for(i=0;i

for(j=100;j>0;j--);} void fuwei(void) {flag=2;

zhuansu=0;} void display() {

uchar A1,A2,A3,A4; if(flag==0) A1=0;

else A1=1; if(flag==2) A1=10; A2=0x3f;

A3=zhuansu/10; A4=zhuansu; P0=table[A1]; P2=0x01; delay(1); P2=0x00; P0=A2;

P2=0x02; delay(1); P2=0x00;

P0=table[A3]; P2=0x04; delay(1); P2=0x00;

P0=table[A4];

P2=0x08; delay(1); P2=0x00; }

void key() {

if(key_fuwei==0) {

delay(5);

if(key_fuwei==0) fuwei();} if(key_z==0) {delay(5);

if(key_z==0) {flag=0;

zhuansu=10;

while(key_z==0);}} if(key_f==0) {

delay(5);

if(key_f==0) {

flag=1;

zhuansu=10;

while(key_f==0);} }

if(key_jia==0) {

delay(5);

if(key_jia==0) {

zhuansu++;

if(zhuansu==21) zhuansu=20;

while(key_jia==0);}} if(key_jian==0) {

delay(5);

if(key_jian==0) {

zhuansu--;

if(zhuansu<=0) zhuansu=0;

while(key_jian==0);}} }

void dispose()

{ switch(zhuansu) {case 0:flag=2; break; case 1:

maichong=160; break; case 2:

maichong=158; break; case 3:

maichong=155; break; case 4:

maichong=150; break; case 5:

maichong=146; break; case 6:

maichong=143; break; case 7:

maichong=140; break; case 8:

maichong=137; break; case 9:

maichong=135; break; case 10:

maichong=130; break; case 11:

maichong=125; break; case 12:

maichong=120; break; case 13:

maichong=115; break; case 14:

maichong=110; break; case 15:

maichong=105; break; case 16:

maichong=100; break; case 17:

maichong=95; break; case 18:

maichong=90; break; case 19:

maichong=85; break; case 20:

maichong=80; break;} if(flag==0)

table_begin=0; else

if(flag==1)

table_begin=4;} void zhuandong(void) {uint i,j;

if(zhuansu>0&&zhuansu<=20)

{for(j=0+table_begin;j<4+table_begin;j++) { P1=table1[j];

for(i=0;i

display(); for(;;) {key();

dispose(); if(flag==2) display(); else

zhuandong(); }}

学士学位论文(设计)答辩评审表

所在院系 机电与控制工程学院 学生姓名 方健 导师姓名 万里光 讲师 所学专业 电气工程及其自动化 学生学号 2008118010141 导师职称 论文题目 基于单片机的步进电机控制系统设计 本文的研究课题为基于单片机的步进电机控制系统设计。主要研究了以单片机为核心,进行步进电机的控制,通过按键控制步进电机的复位、正转、反论文转、加速、减速,并相应地在数码管上显示出来。本文先叙述了单片机和步进主要电机的原理与结构,并说明了各部分元件的选择,再介绍了系统的硬件设计和内容软件设计,最后介绍了系统的 调试情况。 简介 答辩情况 答辩日期 年 月 日 答辩地点 答辩委员 共计( )人,到会( )人 答辩秘书 表决票数 优秀( );良好( );中等( );合格( );不合格( ); 表决结果 优秀( );良好( );中等( );合格( );不合格( ); 答辩委员(签名):_____________ ____________ _____________ ______________ 答辩主席(签名):_____________ 院系盖章:

本文来源:https://www.bwwdw.com/article/goi7.html

Top