您的当前位置:首页正文

基于51单片机的步进电机的课程设计

2020-10-28 来源:东饰资讯网


单片机课程设计

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

编 号: 0802A组06 学生姓名: 同 组 者: 指导教师: ***

2010年11月18日

1

目录

摘要 …………………………………………………………………4 第一章 绪论…………………………………………………………5

1.1 关于步进电机……………………………………………5 1.2 选题的目的和意义…………………………………………6

第二章 元器件的介绍…………………………………………………8

2.1 步进电机………………………………………………8 2.2 89C51…………………………………………………9

第三章 步进电机控制系统硬件电路设计………………………………11

3.1 控制电路………………………………………………10 3.2 最小系统………………………………………………12 3.3 驱动电路………………………………………………13 3.4 显示电路………………………………………………14 3.5 总体电路………………………………………………14

第四章 软件的设计………………………………………………16

4.1 方案论证………………………………………………16 4.2 主程序设计………………………………………………17 4.3 定时中断设计…………………………………………18 4.4 外部中断设计…………………………………………19

第五章 仿真与调试……………………………………………25

5.1 Proteus软件介绍……………………………………25 5.2 keil软件介绍…………………………………………25

2

5.3 仿真过程………………………………………………25

心得体会……………………………………………………………27 附录 PCB板图及其三视图……………………………………………28

3

摘 要

能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、 数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。本文介绍一种用AT89C51作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。

本控制系统采用单片机控制,通过人为按动开关实现步进电机的开关,复位。该系统还增加了步进电机的加速及减速功能。具有灵活方便、适用范围广的特点,基本能够满足实践需求。

关键字:步进电机 单片机

Abstract

Stepper motor control can be achieved in different ways, can be used early analog circuits, digital circuits or a combination of analog and digital circuit means. With the rapid development of science and technology in recent years, the application of SCM is a growing, while traditional control test drive rapid updates. This paper describes a core component of the AT89C51, as the signal generated by logic control and microcontroller technology and assembly language programming designed stepper motor control system, stepping motor background and present, hardware design, software design and simulation have made a detailed introduction, so we not only have a stepper motor-depth understanding of the principles, but also the design of microcontroller development process have a more profound experience.

The control system uses SCM control, pressing the switch through the realization of human stepper motor switch, reset. The system also increased the stepper motor acceleration and deceleration. Has the flexibility for a wide range of features, the basic practice to meet the demand.

Keywords: stepper motor microcontroller

4

第一章 绪论

1.1 关于步进电机

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机的相关参数: 相数

产生不同对极N、S磁场的激磁线圈对数,是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72° 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则‘相数’将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。目前应用最广泛的是两相和四相,四相电机一般用作两相,五相的成本较高。 拍数

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

对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。这个步距角可以称之为‘电机固有步距角’,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 定位转矩

电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的),DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENT TORQUE。

5

最大静转矩

也叫保持转矩(HOLDING TORQUE),电机在额定静态电作用下(通电),电机不作旋转运动时,电机转轴的锁定力矩,即定子锁住转子的力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。 步距角精度

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

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

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

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

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

电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。

1.2 选题的目的和意义

通过这次课程设计,掌握51单片机的原理,了解步进电机的工作原理,提高动手能力和排除故障的能力。同时通过本次设计与调试,调高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解步进电机控制系统中电路之

6

间的关系及相互影响,从而能正确设计各个单元电路。初步掌握步进电机控制系统的测试方法。提高动手能力和排除故障的能力。

7

第二章 元器件的介绍

2.1步进电机

步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机区别于其他控制电机的最大特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。

步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),步进电机又称为脉冲电机,是工业过程控制和仪表中一种能够快速启动,反转和制动的执行

状态显示电路 89C51 单片机 复位电路 键盘控制电路 电源及时钟电路 ULN2803 启动电路 步进 电机 图1 总体设计方框图

元件,其功用是将电脉冲转换为相应的角位移或直线位移,由于开环下就能实现精确定位的特点,使其在工业控制领域获得了广泛应用。步进电机的运转是由电脉冲信号控制的,其角位移量或线位移量与脉冲数成正比,每个一个脉冲,步进电机就转动一个角度(不距角)或前进、倒退一步。步进电机旋转的角度由输入的电脉冲数确定,所以,也有人称步进电机为数字/角度转换器。 ① 四相步进电机的工作原理

该设计采用了20BY-0型步进电机,该电机为四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促

8

使电机旋转的原因。

② 步进电机的静态指标及术语

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

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

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

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

静转矩:电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静态转矩与电磁激磁匝数成正比,与定子和转子间的气隙有关。但过分采用减小气隙,增加励磁匝数来提高静转矩是不可取的,这样会造成电机的发热及机械噪音。 ③ 四相步进电机的脉冲分配规律

目前,对步进电机的控制主要有分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。本设计利用单片机进行控制,主要是利用软件进行环形脉冲分配。四相步进电机的工作方式为四相单四拍,双四拍和四相八拍工作的方式。各种工作方式在电源通电时的时序 与波形分别如图1 a、b、c所示。本设计的电机工作方式为四相单四拍,根据步进电机的工作的时序和波形图,总结出其工作方式为四相单四拍时的脉冲分配规律,四相双四拍的脉冲分配规律,在每一种工作方式中,脉冲的频率越高,其转速就越快,但脉冲频率高到一定程度,步进电机跟不上频率的变化后电机会出现失步现象,所以脉冲频率一定要控制在步进电机允许的范围内。

2.2 89C51单片机

Atmel公司生产的89C51单片机是一种低功耗/低电压‘高性能的8位单片机,它采用CMOS和高密度非易失性存储技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4个8位并行I/O口,5个中断

9

源,2个中断优先级,2个16位可编程定时计数器,89C51单片机是一种功能强、灵活性高且价格合理的单片机,完全满足本系统设计需要。

10

第三章 步进电机原理及硬件设计

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

3.1控制电路

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

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

11

图2 控制电路原理图

3.2最小系统

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

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

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

12

图3复位及时钟振荡电路

3.3驱动电路

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

图4 步进电机驱动电路

13

3.4显示电路

在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为七级,为了方便知道电机的运行状态和电机的转速的等级,这里设计了电机转速和电机的工作状态的显示电路。在显示电路中,主要是利用了单片机的P0口和P2口。采用两个共阳数码管作显示。第一个数码管接的a、b、c、d、e、f、g、h分别接P0.0~P0.7口,用于显示电机正反转状态,正转时显示“1”,反转时显示“一”,不转时显示“0”。第二个数码管的a、b、c、d、e、f、g、h分别接P2.0~P2.7口,用于显示电机的转速级别,共七级,即从1~7转速依次递增,“0”表示转速为零。电路如图5所示。

图5 显示电路

3.5总体电路图

把各个部分的电路图组合成总电路图,如图6所示。

14

图6 总体电路图

15

第四章 软件的设计

4.1方案论证

从该系统的设计 要求可知,该系统的输入量为速度和方向,速度应该有增减变化,通常用加减按钮控制速度,这样只要2根口线,再加上一根方向线和一根启动信号线共需要4根输入线。系统的输出线与步进电机的绕组数有关。这里选

进电机,该电机共有四相绕组,工作电压为+5V,可以个单片机共用一个电源。步进电机的四相绕组用P1口的P1.0~P1.3控制,由于P1口驱动能力不够,因而用一片2803增加驱动能力。用P0口控制第一数码管用于显示正反转,用P2口控制第二个数码管用于显示转速等级。数码管采用共阳的。

通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分、外部中断0和外部中断1部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。下面分析主程序与定时器中断程序及外部中断程序。

16

4.2主程序设计

主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断;对P1口送初值以决定脉冲分配方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。若初始化P1=11H、速度和方向初始值均设为0,就意味着步进电机按四相单四拍运行,系统上电后在没有操作的情况下,步进电机不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图7所示。

17

开 始 初 始 化 显 示 N 启动开关为0? Y 停止计时器 N 速度值为0? Y 停止计时器 启动计时器 延 时 图7主程序流程图

4.3定时中断设计

步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器的中断次数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉冲,以及保存当前的各种状态。程序流程图如图8所示。

18

T0中断入口 保护现场 N 中断次数-1=0? Y 读方向指示 发速度脉冲 重送相关状态 恢复现场 中断返回 图8 定时中断程序流程图 4.4外部中断设计

外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也就是改变了电机的转速。速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮S3,当原数据不为0,减1保存数据,原数据为0则保持不变。程序流程图如图9所示。

19

外部中断入口 保护现场 延时去抖 速度=上或限值? Y N N 速度值±1 按钮是否弹起? N Y 恢复现场 中断返回 图9 外部中断程序流程图

C语言程序如下:

#include #define uint unsigned int

20

sbit k1=P3^4; //启动开关 sbit k2=P3^5; //换向开关 sbit s2=P3^2; //加速按钮 sbit s3=P3^3; //减速按钮

void isr_int0(void);//外部中断0中断服务函数声明 void isr_int1(void); void zd_t0ist(void); uint speed,count,r1,i,t,k; main() {k=0; t=0; r1=0x11 ; speed=0; count=1; TMOD=0x01; ET0=1; EA=1; EX0=1; EX1=1; TH0=0xcf; TL0=0x2c; for(;;) {if(k1==0) {P0=0xff; P2=0xff; speed=0; TR0=0; } else {

21

if(k2==0) P0=0xbf; else P0=0xf9; if(speed==0) {P2=0xc0; TR0=0; }

else TR0=1; } } }

void isr_int0(void) interrupt 0 {

if(speed<7) speed=speed+1; while(s2==0) {for(i=0;i<10;i++);} }

void isr_int1(void) interrupt 2 {

if(speed>0) speed=speed-1; while(s3==0) {for(i=0;i<10;i++);} }

void zd_t0ist(void) interrupt 1 {

TH0=0xd8; TL0=0xf0; switch(speed)

22

{

case 0:P2=0xc0;count=0;break; case 1:P2=0xf9;count=60;break; case 2:P2=0xa4;count=40;break; case 3:P2=0xb0;count=35;break; case 4:P2=0x99;count=30;break; case 5:P2=0x92;count=28;break; case 6:P2=0x82;count=25;break; case 7:P2=0xf8;count=21;break; default :break; } if(t==0) t=count; if(t>0) t=t-1; if(k2==0) { if(t==0) { switch(k) {

case 0:P1=0x01;break; case 1:P1=0x02;break; case 2:P1=0x04;break; case 3:P1=0x08;break; default :break; } k=k+1; if(k==4) k=0;

23

} } else { if(t==0) { switch(k) {

case 0:P1=0x08;break; case 1:P1=0x04;break; case 2:P1=0x02;break; case 3:P1=0x01;break; default :break; } k=k+1; if(k==4) k=0; } } }

24

第五章 仿真与调试

5.1软件介绍

Proteus软件介绍

Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

① 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。③ 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。④ 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

5.2 keil软件介绍

Keil 软件是目前最流行开发 MCS-51 系列单片 机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通 过一个集成开发环境(uVision)将这些部份组合在一起。

5.3仿真过程 操作如下:

1)在Protues中画出系统电路图

25

2)将程序在keil中编译并生成hex文件。

3)把在keil中编译生成的HEX文件载入AT89C51芯片中;

3)运行仿真。

26

心得体会

经过这么长时间的努力终于将课程设计完成了,在这次设计中,我们的电路知识得到了很好的补充和巩固,还使我提高了将理论知识运用到实际中的能力。

通过这次课程设计,更深一步掌握了51单片机的原理,了解了简单步进电机控制系统的组成原理,并初步掌握了步进电机设计及测试方法。提高了动手能力和排除故障的能力。同时通过本次设计与调试,巩固了已学的理论知识,将单片机的理论和实践相结合,了解到步进电机各单元电路之间的关系及影响,从而能正确设计、计算定时计数的各个单元电路。初步掌握步进电机控制系统的设计及测试方法,提高了动手能力和排除故障的能力。

通过本次课程设计我们不仅对前面所学知识作出了检验,也让自己能力得到了很大的提高。在这次课程设计中,我们发现了自己原来的知识还比较欠缺,要学习的东西还太多,深切的感受到学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己的知识和综合素质。

这次设计使我们学到了以前书本知识中所不曾了解的知识,更加明白了在如今的信息时代下电子技能知识的重要性,丰富了我们对实际工艺技术、电子技术和设备技术等方面的认识,掌握了分析问题、处理问题的方法以及调试、计算等基本技能,使实际工作能力得到了有效提高。

在这次的课程设计中非常感谢老师的指导与帮助,使我们的课程设计能更好的完成,这对于我们今后的学习、工作和生活都有很大帮助。同时,我们也充分认识到团队合作的重要性,这次经历对于我们以后的发展无疑是相当有帮助的。相信有了这次累积,毕业后的工作学习将会更加顺利。

27

附录

步进电机控制系统PCB图

步进电机控制系统PCB 3D效果图

28

因篇幅问题不能全部显示,请点此查看更多更全内容