找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16469|回复: 4
收起左侧

单片机步进电机控制系统课程设计报告 实现停止,启动,正转,反转,加速,减速

[复制链接]
ID:295494 发表于 2018-6-4 15:18 | 显示全部楼层 |阅读模式

微机原理与单片机接口技术课程设计报告




设计题目:步进电机控制系统设计

():物理与电子信息学院
专业班级:电子信息工程1402
学生姓名:*
:311408000303
指导教师: 李*


摘要

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

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

目录

前言
1步进电机概述
1.1 步进电机介绍
1.1.1 步进电机概述
1.1.2 步进电机的工作原理
1.1.3 步进电机的分类与选择
1.2 步进电机驱动系统介绍
2 单片机原理简介
2.1概述
2.2单片机的应用系统
2.3 AT89C51简介
3 总体设计思路
3.1电路基本理论
3.2设计方案
4 硬件设计
4.1 控制电路
4.2 最小系统
4.3 驱动电路
4.4 总体电路图
5 软件编程
5.1主流程图
5.2查键部分
5.3前进部分
5.4 后退部分
5.5 加速部分
5.6减速部分
6 心得体会
致谢
参考文献
附录一:总电路图
附录二:源程序

前言

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

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




1步进电机概述
1.1 步进电机介绍

1.1.1 步进电机概述

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。

步进电机的基本参数:

(一)步进电机的静态指标术语

1、相数:产生不同对N、S磁场的激磁线圈对数。常用m表示。

2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.

3、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。

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

5、静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。

虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。

(二)步进电机动态指标及术语:

   1、步距角精度:

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

2、失步:

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

3、失调角:

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

4、最大空载起动频率:

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

5、最大空载的运行频率:

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

6、运行矩频特性:

电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。 要使平均电流大,尽可能提高驱动电压,使采用小电感大电流的电机。

7、电机的共振点:

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

8、电机正反转控制:

当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-AB-A时为反转。

步进电机的特征如下:            

    1、一般步进电机的精度为步进角的3%-5%,且不积累。

    2、步进电机外表允许的最高温度。

    步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。

3、步进电机的力矩会随转速的升高而下降。

当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减少,从而导致力矩下降。

4、步进电机低速时可以正常转动,但若高于一定速度就无法启动,并伴有啸叫声。

步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。              

1.1.2 步进电机的工作原理

步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1-1是该四相反应式步进电机工作原理示意图。

      

图1-1 四相步进电机步进示意图

    开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D

四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图1-2所示:

图1-2 步进电机工作时序波形图

步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。通过对步进电机的软件设计和硬件设计包括步进电机的结构、原理及应用,根据原理和硬件的设计利用C语言编写程序,经过反复运行和调试,实现单片机对步进电机的控制。

1.1.3 步进电机的分类与选择

现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。

反应式步进电动机采用高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步距角可以做的相当小,一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩,但动态性能相对较差。

永磁式步进电机转子采用多磁极的圆筒形的永磁铁,在其外侧配置齿状定子。用转子和定子之间的吸引和排斥力产生转动,它的出力大,动态性能好,但步距角一般比较大。一般为两相,转矩和体积较小,步进角一般为7.5度 或15度。

混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛,它是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,在计算机相关的设备中多用此类电机。

步进电机有步距角(涉及到相数)、静转矩、及电流三大要素组成。一旦三大要素确定,步进电机的型号便确定下来了。

1、步距角的选择

电机的步距角取决于负载精度的要求,将负载的最小分辨率(当量)换算到电机轴上,每个当量电机应走多少角度(包括减速)。电机的步距角应等于或小于此角度。目前市场上步进电机的步距角一般有0.36度/0.72度(五相电机)、0.9度/1.8度(二、四相电机)、1.5度/3度 (三相电机)等。

2、静力矩的选择

步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载二种。单一的惯性负载和单一的摩擦负载是不存在的。直接起动时(一般由低速)时二种负载均要考虑,加速起动时主要考虑惯性负载,恒速运行进只要考虑摩擦负载。一般情况下,静力矩应为摩擦负载的2-3倍内好,静力矩一旦选定,电机的机座及长度便能确定下来(几何尺寸)。

3、电流的选择

静力矩一样的电机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图,判断电机的电流(参考驱动电源、及驱动电压)。

4、力矩与功率换算

步进电机一般在较大范围内调速使用、其功率是变化的,一般只用力矩来衡量,力矩与功率换算如下:

P= Ω·M Ω=2π·n/60 P=2πnM/60
其P为功率单位为瓦,Ω为每秒角速度,单位为弧度,n为每分钟转速,M为力矩单位为牛顿·米

P=2πfM/400(半步工作)

其中f为每秒脉冲数(简称PPS)

1.2 步进电机驱动系统介绍

步进电机不能直接接到交直流电源上工作,而必须使用专用设备——步进电机驱动器.步进电机驱动系统的性能,除与电机本身的性能有关外,也在很大程度上取决于驱动器的优劣。典型的步进电机驱动系统是由步进电机控制器、步进电机驱动器和步进电机本体三部分组成。步进电机控制器发出步进脉冲和方向信号,每发一个脉冲,步进电机驱动器驱动步进电机转子旋转一个步距角,即步进一步。步进电机转速的高低、升速或降速、启动或停止都完全取决于脉冲的有无或频率的高低。控制器的方向信号决定步进电机的顺时针或逆时针旋转。通常,步进电机驱动器由逻辑控制电路、功率驱动电路、保护电路和电源组成。步进电机驱动器一旦接收到来自控制器的方向信号和步进脉冲,控制电路就按预先设定的电机通电方式产生步进电机各相励磁绕组导通或截止信号。控制电路输出的信号功率很低,不能提供步进电机所需的输出功率,必须进行功率放大,这就是步进电机驱动器的功率驱动部分。功率驱动电路向步进电机控制绕组输入电流,使其励磁形成空间旋转磁场,驱动转子运动。保护电路在出现短路、过载、过热等故障时迅速停止驱动器和电机的运行。


2 单片机原理简介2.1概述

单片机(single-chip microcomputer)是把微型计算机主要部分都集成在一块芯片上的单芯片微型计算机。图1-3中表示单片机的典型结构图。由于单片机的高度集成化,缩短了系统内的信号传送距离,优化了结构配置,大大地提高了系统的可靠性及运行速度,同时它的指令系统又很适合于工业控制的要求,所以单片机在工业过程及设备控制中得到了广泛的应用。

图1-3典型单片机结构图

2.2单片机的应用系统

单片机在进行实时控制和实时数据处理时,需要与外界交换信息。人们需要通过人机对话,了解系统的工作情况和进行控制。单片机芯片与其它CPU比较,功能虽然要强得多,但由于芯片结构、引脚数目的限制,片内ROM、RAM、I/O口等不能很多,在构成实际的应用系统时需要加以扩展,以适应不同的工作情况。单片机应用系统的构成基本上如图1-4所示。

图1-4 单片机的应用系统

单片机应用系统根据系统扩展和系统配置的状况,可以分为最小应用系统、最小功耗系统、典型应用系统。本设计是设计一款最小应用系统,最小应用系统是指能维持单片机运行的最简单配置的系统。这种系统成本低廉、结构简单,常用来构成简单的控制系统,如开关量的输入/输出控制、时序控制等。对于片内有ROM/EPROM的芯片来说,最小应用系统即为配有晶体振荡器、复位电路和电源的单个芯片;对与片内没有ROM/EPROM芯片来说,其最小应用系统除了应配置上述的晶振、复位电路和电源外,还应配备EPROM或EEPROM作为程序存储器使用。

2.3 AT89C51简介

    AT89C51的主要参数如表1-1所示:

表1-1 AT89C51的主要参数

型号

存储器

定时器

I/0

串行口

中断

速度

(MH)

其它特点

E²PROM

ROM

RAM

89C51

4K

128

2

32

1

6

24

低电压



AT89C51含E²PROM电可编闪速存储器。有两级或三级程序存储器保密系统,防止E²PROM中的程序被非法复制。不用紫外线擦除,提高了编程效率。程序存储器E²PROM容量可达20K字节。

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

图1-5 单片机的引脚排列

1、主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
寿命:1000写/擦循环

·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路

2、管脚说明:
    VCC:供电电压。
    GND:接地。
    P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
    P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
    P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
    P3口也可作为AT89C51的一些特殊功能口,如下所示:
    P3口管脚备选功能
    P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)
    P3.2 /INT0(外部中断0)
    P3.3 /INT1(外部中断1)
    P3.4 T0(记时器0外部输入)
    P3.5 T1(记时器1外部输入)
    P3.6 /WR(外部数据存储器写选通)
    P3.7 /RD(外部数据存储器读选通)
    P3口同时为闪烁编程和编程校验接收一些控制信号。
    RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
    ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
    /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
    /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
    XTAL2:来自反向振荡器的输出。

3、I/O口引脚:

a:P0口,双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用;

b:P1口,8位准双向I/O口;

c:P2口,8位准双向I/O口,与地址总线(高8位)复用;

d:P3口,8位准双向I/O口,双功能复用口。

4、振荡器特性:
    XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

5、芯片擦除:

整个EPROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
    此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。


3 总体设计思路3.1电路基本理论

步进电机是一种将电脉冲转变为角位移的执行机构,通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。可通过控制脉冲数来控制角位移量,从而达到准确的定位目的。通过对步进电机的软件设计和硬件设计包括步进电机的结构、原理及应用,根据原理和硬件的设计利用c语言编写程序,经过反复运行和调试,实现单片机对步进电机的控制。

步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

3.2设计方案

基于单片机和proteus的步进电机控制电路的基本组成如图2-1所示:

              图2-1 步进电机控制电路的基本组成

根据设计要求,采用的方案如下。硬件部分实现电机转动,包括控制开关模块;电机转动模块。软件部分实现对步进电机的控制功能,主要设计思想通过控制台控制程序的开关来控制电机的转动。电源驱动89C51单片机,在89C51中装载程序,通过开关按键来输入信号,89C51向驱动电路提供信号使步进电机动作。

4 硬件设计4.1 控制电路

本设计的硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。最小系统只要是为了使单片机正常工作。控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。显示电路主要是为了显示电机的工作状态和转速。驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。

根据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、S2、S3,控制电路如图4所示。通过K1、K2状态变化来实现电机的启动和换向功能。当K1、K2的状态变化时,内部程序检测P1.0和P1.1的状态来调用相应的启动和换向程序,发现系统的电机的启动和正反转控制。

根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。对于单片机而言,主要的方法有:软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过S2、S3的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。

通过对开关k1 k2 k3的开关,来实现对步进电机的正反转和停止,通过k4 k5来进行加减速,并且有相应的LED灯的显示。

图3-1 控制和显示电路原理图

4.2 最小系统

   单片机最小系统或者称为最小应用系统,素质用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:单片机、复位电路、晶振电路。

复位电路:使用了独立式键盘,单片机的P1口键盘的接口。该设计要求只需4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘。复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用30PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。如图5示。

晶振电路:8051单片机的时钟信号通常用两种电路形式电路得到:内部震荡方式和外部中断方式。在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如图3-2示。其电容值一般在5~30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。

图3-2 复位及时钟振荡电路

4.3 驱动电路

通过ULN2803构成比较多的驱动电路,电路图如图3-3所示。通过单片机的P1.0~P1.3输出脉冲到ULN2803的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D相。

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

4.4 总体电路图

图3-4总体电路图


5 软件编程5.1主流程图

系统分为电机正转、电机反转、电机加速与电机减速的几部分组成,其主程序框图如图5-1所示。


图5-1主流程图

5.2查键部分

查键程序用于判断P0.0口与P0.1口的值,当p0.0口为0时,电机正转,当p0.0口为1时,继续判断p0.1口的值,p0.1口为0时,电机反转。如图5-2所示。

图5-2 查键部分流程图

5.3前进部分

系统初始化之后,前进子程序R0用于给P2口送不同的值,根据电机转动的相序,使电机正向转动,P2口的值分别为01H,03H,02H,06H,04H,0CH,08H,09H。流程图如图5-3所示。

图5-3 前进部分流程图

5.4 后退部分

电机反转原理与正转相似,此时P2口的值分别为09H,08H,0CH,04H,06H,02H,03H,01H。流程图如图5-4所示。

图5-4 后退部分流程图

5.5 加速部分

当电机正转或反转的时候,按下加速键,调用加速子程序,使电机每转动一步的延时时间变短,从而实现电机的加速。流程图如图5-5所示。

图5-5 加速部分流程图

5.6减速部分

电机正转或反转的时候,按下减速键,通过改变电机每转动一步的延时时间,使时间变长,从而实现电机减速。流程图如图5-6所示。

图5-6 减速部分流程图

6 心得体会

通过这次毕业设计,让我对单片机有了一个更深入的认识,单片机作为一种计算机基本硬件,与计算机广泛应用紧密相关,他能解决很多大型计算机所不能解决的问题,所以,掌握单片机设计方法是非常必要的。

这其中也让我对汇编有了更深一层的认识,并且还让我领略到单片机这一计算机控制的魅力。正如课程设计的任务和地位中所说的那样,计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。同学们要着重学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的一切问题,最后取得成功。

最后,这次课程设计让我意识到无论什么时候都要细致认真地工作,时刻注重培养自己发现问题、分析问题、解决问题的能力,这样才能有所收获,有所进步。



致谢

此次课程设计紧密联系了大学很多课程所学知识。本设计的顺利完成首先要感谢老师悉心指导,老师购买单片机原件,并在设计选题和题目要求中花费了很多心血,并在本设计的总体规划和设计思想方面给了我很大的启迪,老师在设计的步骤、总体规划、各结构功能的实现以及软硬件仿真等方面都给予了很大帮助.还要感谢室友以及同学,在我遇到困难时给予我帮助,在我想要放弃时给予我鼓励。我也学到了做研究认真严谨的态度,和一丝不苟的作风。通过本次课程设计,我在老师精心指导和严格要求下,巩固并丰富了本科所学习的相关理论知识,并极大地提高了实践能力。单片机领域和Keil单片机集成开发环境对我今后的学习会有很大的帮助,在此,忠心感谢老师以及许多同学的帮助和支持。



参考文献

[1]余发山 王莉.微机原理与单片机原理技术.北京:煤炭工业出版社,2013

[2]刘爱荣.单片机应用技术(C语言版).重庆:重庆大学出版社, 2015.5

[3]张杰 宋戈.51单片机应用开发范例大全.北京:人民邮电出版社,2016.5

[4]马淑华,王凤文,张美金. 单片机原理与接口技术【M】.北京:北京邮电大学出版社,2007.

[5] 张毅刚,彭喜元,彭宇等单片机原理及应用[M],北京:高等教育出版社,2010.5

[6]赵茂泰.智能仪器原理及应用[M],北京:电子工业出版社,2009

[7]刘江海.EDA技术[M],北京:华中科技大学出版社,2006

[8]郭天祥.51单片机C语言教程[M],北京:电子工业出版社,2006

[9]张忠梅.单片机的C语言应用程序设计[M],北京:北京航空航天大学出版社,2006

[10]张毅刚.MCS-51单片机应用设计[M], 哈尔滨:哈尔滨工业大学出版社,1997.

[11]严天峰.单片机应用系统设计与仿真调试[M], 北京:北京航空航天大学出版社,1999.

[12]李朝清. 单片机原理与接口技术[M], 北京:北京航空航天大学出版社,1989,第3版.

[13] 何立民.单片机应用技术选编.北京: 北京航空航天大学出版社,2003

[14] 史国生.交直流调速系统.北京:化学工业出版社,2002

[15] V. Yu. Teplov,A. V. Anisimov. Thermostatting System Using a Single-Chip Microcomputer and Thermoelectric Modules Based on the Peltier Effect[J] ,2002



附录一:总电路图


单片机源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code FFW[]=
  5. {
  6.               0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
  7. };

  8. uchar code REV[]=
  9. {
  10.               0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
  11. };

  12. sbit K1 = P3^0;
  13. sbit K2 = P3^1;
  14. sbit K3 = P3^2;
  15. sbit K4 = P3^3;
  16. sbit K5 = P3^4;
  17. void DelayMS(uint ms)
  18. {
  19.               uchar i;
  20.               while(ms--)
  21.               {
  22.                             for(i=0;i<120;i++);
  23.               }
  24. }

  25. void SETP_MOTOR_FFW(uchar n)
  26. {
  27.               uchar i,j;
  28.               int M=25;
  29.               for(i=0;i<5*n;i++)
  30.               {
  31.                             for(j=0;j<8;j++)
  32.                             {
  33.                                           if(K3 == 0)              break;
  34.                                           P1 = FFW[j];
  35.                                           if(K4 == 0)
  36.                                           {
  37.                                                         P0=0xf6;
  38.                                                         DelayMS(20);
  39.                                           }
  40.                                           else              if(K5 == 0)
  41.                                                         {
  42.                                                                       P0=0xee;
  43.                                                                       DelayMS(100);
  44.                                                         }
  45.                                                         else              DelayMS(50);
  46.                                                         if(K4 == 1&&K5 == 1)                           
  47.                                                         {
  48.                                                                       P0 = 0xfe;            
  49.                                                         }
  50.                             }
  51.               }
  52. }
  53. void SETP_MOTOR_REV(uchar n)
  54. {
  55.               uchar i,j;
  56.               int M=25;
  57.               for(i=0;i<5*n;i++)
  58.               {
  59.                             for(j=0;j<8;j++)
  60.                             {
  61.                                           if(K3 == 0)              break;
  62.                                           P1 = REV[j];
  63.                                           if(K4 == 0)
  64.                                           {
  65.                                                         P0=0xf5;
  66.                                                         DelayMS(20);
  67.                                           }
  68.                                           else              if(K5 == 0)
  69.                                                         {
  70.                                                                       P0=0xed;
  71.                                                                       DelayMS(100);
  72.                                                         }
  73.                                                         else              DelayMS(50);
  74.                                                         if(K4 == 1&&K5 == 1)                           
  75.                                                         {
  76.                                                                       P0 = 0xfd;            
  77.                                                         }
  78.                             }
  79.               }
  80. }
  81. void main()
  82. {
  83.               uchar N = 50;
  84.               while(1)
  85.               {
  86.                             if(K1 == 0)
  87.                             {
  88.                                           P0 = 0xfe;
  89.                                           SETP_MOTOR_FFW(N);                                         
  90.                                           if(K3 == 0) break;
  91. ……………………

  92. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
步进电机控制系统.docx (555.44 KB, 下载次数: 184)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:549166 发表于 2019-5-29 09:51 | 显示全部楼层
感谢分享,另外5.1主程序图有错误,可以修正下
回复

使用道具 举报

ID:553838 发表于 2019-6-5 10:06 | 显示全部楼层
加速 减速的开关可以换成按键式的么
回复

使用道具 举报

ID:776223 发表于 2020-6-11 17:55 | 显示全部楼层
临时有急事币不够,想看后面的代码
回复

使用道具 举报

ID:783950 发表于 2020-6-19 16:09 | 显示全部楼层
qq1162532810 发表于 2019-5-29 09:51
感谢分享,另外5.1主程序图有错误,可以修正下

怎么修改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表