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

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

电气与电子信息学院电气应用系统设计

基于单片机系统的步进电机驱动

摘要:本文介绍了基于80C52单片机的步进电机控制系统的设计。分别概括

的介绍了单片机和步进电机以及步进电机的各种驱动方案;对一款四相步进电机

以及80C52单片机的功能参数和一种驱动方式的特点,以及选择其原因进行了必

要的说明;对基于80C52单片机的步进电机控制系统的原理进行了介绍;根据80C52单片机和步进电机的原理以及特点和参数选择了其他元器件,结合驱动芯片

ULN2003A,建立了相应的电路图;进行了必要的电路分析说明,并将这个电路图

制作成型,使其工作,实现加速,减速,正转,反转等功能。

关键词:步进电机;AT89C52单片机;ULN2003A驱动。

Abstract:This paper introduces the design of the stepper motor control

system based on 80C52 MCU. Respectively generalize the MCU and step into motor and step into the motor drive scheme; a four phase stepper motor and 80C52 microcontroller function parameters and a drive mode characteristics, and choice of the reasons for the necessary explanation; the 80C52 microcontroller based stepper motor control system principle are introduced; based on 80C52 microcontroller and step into motor principle and characteristics and parameters select other components, the combination of the driving chip uln2003a, establish the corresponding circuit diagram; the necessary circuit analysis and the circuit diagram of the forming, the work, the function of acceleration and deceleration.

Keywords:AT89C52 MCU; ULN2003A driver.

目录

1 前言 (1)

1.1课题的背景 (1)

1.2 发展概况 (1)

1.3 课题主要内容 (1)

2 步进电机的基本原理与参数、分类和选择 (2)

2.1 步进电机的基本原理与参数 (2)

2.2 步进电机的特点 (2)

2.3步进电机分类 (3)

2.4四相混合式步进电机的工作原理及工作方式 (3)

2.5步进电机具体型号的选择 (4)

3 步进电机驱动系统及驱动接口选择 (4)

3.1集成功率驱动接口及驱动芯片的选择 (5)

4 驱动系统硬件组成及具体驱动方案分析 (7)

4.1 关于80C52单片机的介绍 (7)

4.2驱动系统总体结构 (9)

4.3驱动系统的驱动原理 (9)

4.3.1步进电机的控制信号 (10)

4.3.2控制信号功率的放大 (10)

4.3.3单片机控制信号的输出 (11)

5 电路板焊接部分 (12)

5.1 电烙铁的选择 (12)

5.2 焊锡的选用 (12)

5.3 焊剂的选用 (12)

5.4 焊接前的准备工作 (12)

5.5 焊接方法 (12)

6 结论 (14)

参考文献 (15)

附录1 (16)

附录2 (21)

1 前言

1.1课题的背景

步进电机是现代数字控制技术中最早出现的执行部件,其特点是可以将数字

脉冲控制信号直接转换为一定数值的机械角位移,并且能够自动产生定位转矩使

转轴锁定。如果在机械结构中再配以滚珠丝杠,那步进电机的高精度转角就可以

转换为高精度直线位移,这在以精度为要求的现代机械控制中是极其重要的一点。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个经济

领域都有应用。步进电机作为一种控制用的特种电机,其优点是结构简单、运行

可靠、控制方便。尤其是步距值不受电压、温度的变化的影响、误差不会长期积

累的特点,给实际的应用带来了很大的方便。研究步进电机的控制方法,对提高

控制精度和响应速度、节约能源等都具有重要意义。为此,本文设计了一段步进

电机驱动程序,可以实现对步进电机转动速度等级的调节,并用数码管显示。

1.2 发展概况

虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流

电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方

可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许

多专业知识。

目前,生产步进电机的厂家的确不少,但具有专业技术人员,能够自行开发,研制的厂家却非常少,连最基本的设备都没有。仅仅处于一种盲目的仿制阶段。

这就给户在产品选型、使用中造成许多麻烦。鉴于上述情况,本文决定以四相混

合式步进电机为例叙述其基本工作原理及设计简单的驱动程序。望能对广大用户

在选型使用时有所帮助。

1.3 课题主要内容

本课题将分析步进电机的工作原理,并简单介绍其各种驱动方式。使用单片

机以软件方式配合有关芯片和电路元件驱动步进电机,通过C语言编程方法,对

步进电机的转速与方向进行控制,使其在一定范围下运行。在Keil中编程并调试,Proteus中进行仿真,并很好地模拟出实验结果。

最后,烧写代码,在硬件上进行验证并调试,保证软件仿真与硬件的效果相同,满足课程设计的要求,达到设计的目的。

2 步进电机的基本原理与参数、分类和选择

2.1 步进电机的基本原理与参数

电机基本原理:步进电机是一种将电脉冲转化为角位移的执行机构,当步进电机接收到一个脉冲信号,它就按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9°

/1.8°(表示半步工作时为0.9°整步工作时为1.8°)这个步距角可以称之为“电机固有步距角”它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。

步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72°。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。

保持转矩:是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说的情况下是指保持转矩为2N.m的步进电机。

2.2 步进电机的特点

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

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

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

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

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

2.3步进电机分类

目前常用的有三种步进电动机:反应式(Variable Reluctance,VR)、永磁式(Permanent Magnet,PM)和混合式(Hybrid Stepping,HS)。

反应式:定子上有绕组、转子由软磁材料组成。结构简单、成本低、步距角小,可达1.2°、但动态性能差、效率低、发热大,可靠性难保证。

永磁式:永磁式步进电机的转子用永磁材料制成,转子的极数与定子的极数相同。其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为7.5°或15°)。

混合式:混合式步进电机综合了反应式和永磁式的优点,其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。

按定子上绕组来分,共有二相、三相和五相等系列。最受欢迎的是两相混合式步进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。该种电机的基本步距角为1.8°/步,配上半步驱动器后,步距角减少为0.9°,配上细分驱动器后其步距角可细分达256倍(0.007°/微步)。由于摩擦力和制造精度等原因,实际控制精度略低。同一步进电机可配不同细分的驱动器以改变精度和效果。

综合步进电机的以上参数特点以及各种步进电机的优缺点,本课题选用四相混合式(感应子式)步进电机

2.4四相混合式步进电机的工作原理及工作方式

如图2-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方向转动。如图2-1所示:

图2-1 四相步进电机步工作进示意图

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的

步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

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

a. 单四拍

b. 双四拍

c.八拍

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

2.5步进电机具体型号的选择

首先基于安全的考量:不使用大功率高电压的步进电机,步进电机的输入电压应该小于安全电压,所以该课程涉及的步进电机应该是小功率低电压的。

此外考虑到实验室材料和驱动功率大小等实际条件,以及连线的方便与否。最终选择型号为28BYJ-48的四相五线步进电机。该步进电机的主要参数为:1.额定电压:5VDC

2.直流电阻:200?±7%(25°)

3.减速比:1/64

4.步距角:5.625°/64

5.驱动方式:4相8拍

6.牵入转矩:≧350mN.m(120Hz)

7.打滑扭力:800-1300mN.m

8.温升:<50K(5VDC 工作频率:120Hz)

9.噪音:小于35dB(120Hz)

10.绝对耐压:600VAC/1s

3 步进电机驱动系统及驱动接口选择

步进电动机不能直接接到工频交流或直流电源上工作,而必须使用专用的步进电动机驱动器,如图3-1所示,它由脉冲发生控制单元、功率驱动单元、保护单元等组成。图中点划线所包围的二个单元可以用微机控制来实现。驱动单元与步进电动机直接耦合,也可理解成步进电动机微机控制器的功率接口,这里对步进电机各种驱动接口进行简单的介绍。如图3-1所示:

图3-1 步进电动机驱动控制系统

3.1集成功率驱动接口及驱动芯片的选择

由于单片机的输出功率很小,无法驱动步进电机,所以一般要经过功率放大器来实现步进电机的控制。功率放大器主要用两种:一种是分离式功率放大器,主要用MOS管实现,适用于大功率,效率高,但价格比较贵。另一种是集成式功率放大器,试用小功率器件,价格便宜,控制简单。目前市场已有多种用于小功率步进电动机的集成功率驱动接口电路可供选用。例如集成H桥式驱动器L298芯片,集成达林顿管ULN2003A极电极开路驱动芯片等。由于ULN2003A具有电流增益高、工作电压高、温度范围宽、带负载能力强,而且集成有续流二极管等特点,以及其对单片机的专用性。本课题选择ULN2003A驱动芯片如图所示:

图3-6 ULN2003逻辑图

图3-7 ULN2003内部电路图

由图3-6、图3-7可知,ULN2003A其本质是一个基于三极管的非门电路芯片。在驱动过程中,ULN2003起到将控制信号功率放大和信号反相的作用。进而稳定地将步进电机的控制信号平稳有效地送给步进电机,确保步进电机的正常运转。

采用集成芯片驱动比较方便,毕竟这是小功率的器件,同时ULN2003可以承受很高的电压,如12V远远满足该设计所要求的最低电压。此外ULN2003的驱动功率满足步进电机的最小收入功率,最重要的是:该驱动芯片可以很方便与单片机IO连接,能直接用TTL电平实现步进电机的控制,而不需要额外的元件辅助。

基本的控制原理是:当单片机的IO输出高电平给ULN2003的输入引脚时,此时ULN2003的内部达林顿管导通,使得外界的电流通过ULN2003之后再流过步进电机,当单片机输出低电平给ULN2003时,此时其内部的达林顿管关闭,外界的电流无法通过ULN2003而无法通过步进电机,则此时步进电机停止转动。只要按照一定的顺序给ULN2003不断输入高低电平,那么步进电机就会转通起来。

4 驱动系统硬件组成及具体驱动方案分析

4.1 关于80C52单片机的介绍

单片机以其体积小、功能齐全、价格低廉、可靠性高等优点,在各个领域都获得了广泛的应用。即使非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量,来开发所希望的单片机应用系统。故在本次设计中采用了其中的低功耗型80C52单片机。

该系列单片机是采用高性能的静态80C52设计,由先进CMOS工艺制造,并带有非易失性Flash程序存储器,全部支持12时钟和6时钟操作,P89C51X2和

P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM、32 条I/O 口线、3 个16 位定时/计数器、6 输入4 优先级嵌套中断结构、1 个串行I/O 口、可用于多机通信 I/O 扩展或全双工UART以及片内振荡器和时钟电路。可实现两个由软件选择的节电模式—空闲模式和掉电模式,空闲模式冻结CPU,但RAM定时器、串口和中断系统仍然工作;掉电模式保存RAM的内容,但是冻结振荡器,导致所有其它的片内功能停止工作。

其主要结构组成如下:

1.中央处理器(CPU)

2.内部数据存储器(内部RAM)

3.内部程序存储器(内部ROM)

4.定时器/计数器

5.并行I/O口

6.串行口

7.时钟电路

8.中断系统

9.外接晶体引脚

图4-1 80C52单片机管脚图

图4-2 80C52单片机工作系统图

单片机管脚如图4-1所示,下面对其各个管脚进行必要的说明。

P0、P1、P2、P3口的电平与CMOS和TTL电平兼容。

P0口的每一位口线可以驱动8个LSTTL负载。在作为通用I/O口时,由于输出驱动电是开漏方式,由集电极开路(OC门)电路或漏极开路电路驱动时需外接上拉电阻;当作为地址/数据总线使用时,口线输出不是开漏的,无须外接上拉电阻。

P1、P2、P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路设有内部上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏极开路电路所驱动,而无须外接上拉电阻。

当CPU不对P3口进行字节或位寻址时,内部硬件自动将口锁存器的Q端置1。这时,P3口作为第二功能使用。

P3.0 :RXD(串行口输入);

P3.1 :TXD(串行口输出);

P3.2 :外部中断0输入;

P3.3 :外部中断1输入;

P3.4 :T0(定时器0的外部输入);

P3.5 :T1(定时器1的外部输出);

P3.6 :(片外数据存储器“写”选通控制输出);

P3.7 :(片外数据存储器“读”选通控制输出)。

EA/VPP:访问程序存储器控制信号,当其为低电平时,对ROM的读操作限定在外部的程序存储器,当其为高电平时,对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器。

ALE/PROG:编程脉冲

PSEN:外部程序存储器读选通信号,在读外部ROM时PSEN是低电平有效,以实现对ROM 的读操作。

RST/VPD:复位信号,当输入信号延续2个周期以上的高电平有效,用以完成单片机复位初始化操作。

XTAL : 时钟晶振输入端。

4.2驱动系统总体结构

图4-3 驱动系统硬件结构

由图4-3可知,本系统通过计算机设定步进电机的运行速度,将这些参数和控制程序通过数据串口烧录到单片机中。按钮和单片机的控制信号通过驱动电路,输入至步进电机,控制步进电机的速度。电源和变压整流电路为单片机和驱动芯片的正常工作提供安全稳定的直流高电平。

4.3驱动系统的驱动原理

为了方便阐述,本节按照步进电机输入信号要求,控制信号功率的放大,单片机控制信号的输出和编程的顺序分析其工作过程。

4.3.1步进电机的控制信号

图4-4 28BYJ-48型步进电机接线指示图

如图4-4所示,28BYJ48型步进电机接内部共有四相线圈,其中Vcc端共接在一起,为红线。四相线圈的控制信号输入端按顺序依次为蓝、粉、黄、橙。为方便编程与描述,本文采用单片机的双四拍运行时序,则其通电线圈按照时序依次为:蓝粉、粉黄、黄橙、橙蓝。其输入信号分布如表4-1所示。以此时序,按照一定的频率,步进电机就可稳定地转动。

4.3.2控制信号功率的放大

单片机不能直接驱动步进电机,这是由于单片机I/O接口输出功率很小,输出信号不稳定。因此就必须在单片机I/O接口下方接功率驱动单元。按照前文所述,本文选择具有信号放大,信号反相功能的ULN2003A驱动芯片。

图4-5 ULN2003电路图(含负载)

由图4-5所示,ULN2003A本质为达林顿管,其中Q1,Q2,R2,R3本质为以放大倍15数被加大的三极管。因此,当输入信号为高电平时,三极管导通,这时负载左端,即芯片的信号输出端为低电平,因此ULN2003A为反相输出。

此时负载中有电流产生。在本文中,负载即为步进电机的某一相线圈,所以当输入信号为高电平时,与之相连的步进电机线圈中有电流产生;当输入信号为低平时,负载左端即信号输出端为高电平,负载中无电流产生,即与之相连的步进电机线圈不工作。

又因为达林顿管放大倍数为两个三极管放大倍数之积,达到比较可观的功率放大作用。综上,将单片机四个I/O接口连接至ULN2003A输入接口,就将控制步进电机的信号放大反相。使得步进电机正常工作。

4.3.3单片机控制信号的输出

考虑到步进电机正常工作所需要的时序分布以及ULN2003A的反相所用,单片机的输出信号以及相应的输出端口如表4-2所示。为了实际电路中连线方便,信号输出端口为P1.0,P1.1,P1.2,P1.3口。

5 电路板焊接部分

5.1 电烙铁的选择

焊接的主要工具是电烙铁。常用的除有内热式与外热式电烙铁外,还有吸锡电烙铁与恒温电烙铁。目前,市售的多为内热式电烙铁,常用规格有 20W,40W,70W 几种。选哪一种电烙铁,这要根据具体的焊接对象来决定。如果你装制半导体收音机或其它小型电子元件,那么应该选20W的电烙铁,因为它具有发热快,耗电省,体积小和重量轻等特点。如果你装制电视机或维修较大型的家用电器时,要选用功率大一点的,如40W的电烙铁。电烙铁的功率选择一定要确当,过大会烫坏晶体管或其它怕热元件,过小往往会焊不牢元件,表面上看焊牢拉,实际上很容易产生假焊或虚焊现象。电烙铁的烙铁头一般是用紫铜制作的,常用的烙铁头有直型和弯型两种。新的电烙铁或刚换上的烙铁头刃口表面有一层氧化层,因此上不了锡,使用时,先用砂纸将烙铁头刃口表面氧化层打磨掉,然后给电烙铁通电加热一段时间后,在打磨干净的地方涂上一层松香,再涂上一层锡,这过程叫上锡。

5.2 焊锡的选用

焊接时常用的焊料是焊锡,最适用的是市场上供应的一种叫焊锡丝的焊料,它的熔点低,导电性好,并存一定的强度,内部事先填了松香,焊接起来十分方便,最适合电子线路的制作。

5.3 焊剂的选用

焊剂在焊接时起防止表面氧化的助焊作用。常用的焊剂是松香,它是中性的,不会腐蚀电路元件和烙铁头。还有一种焊剂是焊油,又叫焊锡膏,助焊效果比松香好,但带一点腐蚀性,一般焊好元件后将焊油擦干净。

5.4 焊接前的准备工作

首先将印刷电路板的表面进行处理,用一张细砂纸将印刷电路板上的铜泊表面磨光亮,用水洗干净,涂上一层松香酒精溶液后就可以进行了。松香酒精比例为1:2。经过表面处理过的印刷电路板既能保证焊接质量,又能提高焊接速度。

5.5 焊接方法

先将准备好的元件插入印刷电路板规定好的位置上,在元件与印刷电路板铜箔的连接点上,涂上少许焊剂,待电烙铁加热后用烙铁头的刃口上些适量的焊锡,上的焊锡多少要根据焊点的大小来决定。焊接时,要将烙铁头的刃口接触焊点与元件引线,根据焊点的形状作一定的移动,使流动的焊锡布满焊点并渗入被焊物的缝隙,

接触时间大约在3-5秒左右,然后拿开电烙铁。拿开电烙铁的时间,方向和速度,决定了焊接的质量与外观的正确的方法是,在将要离开焊点时,快速的将电烙铁往回带一下,后迅速离开焊点,这样焊出的焊点既光亮,圆滑,又不出毛刺。在焊接时,焊接时间不要太长,免得把元件烫坏,但亦不要太短,造成假焊或虚焊。焊接结束后,用列子夹住被焊元件适当用力拉拨一下,检查元件是否被焊牢。如果发现有松动现象,必须重新进行焊接。实物如图6-1所示:

图6-1 实物图

6 结论

数字电子技术已取得很大成就,数字电子技术应用越来越广泛。在动力方面,由于传统电机为模拟电子范畴,并不能直接与以计算机为代表的数字电子设备直接配合使用。需A\D,D\A转化装置,加大了控制成本和技术难度。但是步进电机作为一种数字动力元件的出现,则大大的改善了此情况。由于步进电机可以直接被计算机控制,使其具有可以将数字脉冲控制信号直接转换为一定数值的机械角位移,并且能够自动产生定位转矩使转轴锁定的性能特点,大大提高了电机的控制精度。而单片机作为一种简单可靠,且低功耗,性能稳定的计算机。这就使得单片机驱动步进电机这一应用收到更广泛的关注,本文在此选择较为简单的单片机和步进电机及相应的芯片,组成简单的步进电机驱动系统。做简单的论述,主要工作如下:

1.了解步进电机参数,特点。研究其工作原理,以及使用中的具体注意事项。2.了解单片机的工作原理,掌握其基于C语言的编程方法,以及最小系统的组成。3.搜集步进电机的驱动方案,对驱动方案进行比较,选取合适的驱动方式。4.按照选取的驱动方式,选取相应的元器件,画出电路图,在Keil中编程并用Proteus进行仿真,很好地模拟出实际结果。根据电路图焊接出相应的实际电路,排除故障,完成了相应的功能。

由于小组成员能力有限,而且受到实验设备的限制,本设计还存在着电路较为简单,缺少独立的供电电源等问题和不足。下一步需要在电路上加独立供电模块以及电机暂停按钮以及转向的控制和速度精确的液晶显示,将系统电路改进。并且加上一定的保护外壳,使其更加人性化,方便使用。

参考文献

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

[2] 黄俊,王兆安.电力电子技术[M]. 北京:机械工业出版社,2003.110-123

[3] 胡寿松,自动控制原理[M]. 北京:国防工业出版社,2004.231-246

[4] 丛君丽,基于单片机控制的步进电机高低压驱动系统设计[M],电力电子技术2008.02-031

[5] 张毅刚,单片机原理及应用[M]. 北京:高等教育出版社,2006.159-178

[6] 胡汉才,单片机原理及其接口技术[M]. 北京:清华大学出版社,1996:396-397

附录1

#include

#define cheat_eye_time 5

#define Key_Active_Level 0

#define motor_slow_speed 100

#define motor_fast_speed 3

unsigned char motor_status,motor_step_speed=30; unsigned int step;

#define motor_driver_level 1

#define motor_stop_level 0

#define Motor_Driver_Port P1

#define Display_Port P0

#define Disply_lock_Port P2

sbit key1=P3^2;

sbit key2=P3^3;

sbit key3=P3^4;

sbit key4=P3^5;

unsigned char key_new_value,key_old_value; unsigned char key_change_fly;

unsigned char code lock[]={0xe0,0xd0,0xb0,0x70}; //unsigned char code negative[]={ //共阴极

//0x3f,0x06,0x5b,0x4f,

//0x66,0x6d,0x7d,0x07,

//0x7f,0x6f,0x77,0x7c,

//0x39,0x5e,0x79,0x71};

unsigned char code active[]={//数码管是共阳极

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

unsigned char code motor_step1[]={

0x08,0x0c,0x04,0x06,

0x02,0x03,0x01,0x09

};

unsigned char code motor_step2[]={

0x09,0x01,0x03,0x02,

0x06,0x04,0x0c,0x08

};

void motor_driver(void);

unsigned char keyscan(void);

void key_deal(unsigned char key);

void delayms(unsigned int);

void display(unsigned char postion,unsigned char num); void display_number(unsigned int dat);

void main()

{

while(1)

{

key_new_value=keyscan();

if(key_new_value)

{

if(key_new_value!=key_old_value)//按键功能发生切换 {

step=0//原先电机的步数数据清空

key_old_value=key_new_value; //更新按键状态

}

}

key_deal(key_old_value);

}

}

unsigned char keyscan(void)

{

unsigned char key_value;

if(key1==Key_Active_Level)

{

delayms(10);

if(key1==Key_Active_Level)

{

key_value=0x01;

}

}

if(key2==Key_Active_Level)

{

delayms(10);

if(key2==Key_Active_Level)

{

key_value=0x02;

}

}

if(key3==Key_Active_Level)

{

delayms(10);

if(key3==Key_Active_Level)

单片机控制步进电机和数码管显示

一、设计任务书 设计内容:用80C51单片机设计一个步进电机控制器 设计要求: 1.用8015设计一个四相步进电机。 2.可控制步进电机的启动与停止,正转与反转。 3.10档速度调节。 4.点动控制。 5.可显示电机运行参数。 二、设计总体方案 (一)控制方式的选择 控制主要用于电机速度和方向的转换。控制方式有按键控制和开关控制两种。按键较开关而言,操作更加简便,故选按键控制。 方案一:独立按键。独立按键可自由连接,线路简单。 方案二:编码式键盘。编码式键盘的按键接触点接于74LS148芯片。当键盘上没有闭合时,所有按键都断开,当某一键闭合时,该键对应的编码由74LS148输出。 本次设计所需按键不多,不需要采用复杂编码,考虑硬件条件、线路连接和经济性等方面,选择方案一。 (二)电机电路设计方案的选择 由于条件的限制,对于电机的选择只能是实验台上最小步距角18°的电机,其中已包含了驱动电路。 (三)单片机的选择 方案一:AT89C51高性能8位单片机,内部集成CPU、存储器、寄存器、I/O接口,从而构成较为完整的计算机,价格便宜。 方案二:C8051F005单片机,该单片机是完全集成的混合信号系统及芯片,具有8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还继承了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,执行速度快,但价格较贵。 本次课程设计是在仿真环境下进行,没有太过考虑单片机选择的问题,但就设计本身来讲,从物美价廉的角度考虑,选择方案一较合适。 (四)显示方案的选择 方案一:采用LED数码管。LED数码管是轮流现实的,其利用人烟的视觉暂留特性,使人感觉不到数码管闪动,看到每只数码管都常亮。利用其显示必须不停给数码管数据输入口循环赋值,显示内容较多,编程和接线较为复杂。 方案二:采用LCD1602液晶显示器。LCD1602具有功率小,效果明显,变成容易等优点,且它最多能显示2×16个字符,可以轻松满足设计要求。 由上可知,LCD1602液晶显示器的优点突出,故选择方案二。 (五)软件部分的选择 软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福软件。编程语言主要有以下两种方案。

51单片机控制的步进电机C语言程序

我上周刚做的这个实验成功拉,给你参考一下吧这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的和ULN2003一样,你把它换成2003就行拉 #include unsigned char code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf 9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00}; unsigned char temp,temp_old; unsigned char key; unsigned char i,j,k,m,s; void delay(int i) { for(m=i;m>0;m--) for(j=250;j>0;j--) for(k=10;k>0;k--); } void saomiao() { P3=0xff; P3_4=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--)

for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp) { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=4; break; } temp=P3;

temp=temp&0x0f; while(temp!=0x0f) { temp=P3; temp=temp&0x0f; } } } P3=0xff; P3_5=0; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3; temp=temp&0x0f; if(temp!=0x0f) { temp=P3; temp=temp&0x0f; switch(temp)

基于51系列单片机控制步进电机调速实验 (自动保存的)

基于51系列单片机控制步进电机调速实验 实验指导书 仇国庆编写 重庆邮电大学自动化学院 自动化专业实验中心 2009年2月

基于51系列单片机控制步进电机调速实验 实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED 数码管显示。 实验原理: 步进电机控制原理 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所 以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将 逐渐扩大。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来 进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由 脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号 可以由单片机产生。 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几 何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻 两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐, B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)

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

本科毕业设计 基于单片机的步进电机控制系统的设计

摘要 随着自动控制系统的发展和对高精度控制的要求,步进电机在自动化控制中扮演着越来越重要的角色,区别于普通的直流电机和交流电机,步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制执行元件,是机电一体化的关键组成之一,广泛应用在各种自动化控制系统和精密机械等领域。 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。 本系统介绍了一种基于单片机的步进电机控制系统的设计,包括了硬件设计和软件设计两部分。其中,硬件设计包括单片机最小系统、键盘控制模块、LCD显示模块、步进电机驱动模块、位置检测模块共5个功能模块的设计。系统软件设计采用C语言编写,包括主程序、数字键处理程序、功能键处理程序、电机驱动处理程序、显示模块、位置采集模块。 本设计采用STC89C52单片机作为主控制器,4*4矩阵键盘作为输入,LCD1602液晶作为显示,ULN2003A芯片驱动步进电机。系统具有良好的操作界面,键盘输入步进电机的运行距离;步进电机能以不同的速度运行,可以在不超过最大转速内准确运行到任意设定的位置,可调性较强;显示设定的运行距离和实际运行距离;方便操作者使用。关键词:单片机步进电机液晶显示键盘驱动

Design of the Stepping Motor Control System Based on SCM Qiu Haizhao (College of Engineering, South China Agricultural University, Guangzhou 510642,China) Abstract:With the development of automatic control system and the requirements of high-precision control, stepping motor control in automation is playing an increasingly important role, different from the common DC and AC motor, stepper motor rotation angle and rotational speed can be high-precision controlled. Stepper motor as a control actuator is a key component of mechanical and electrical integration, widely used in a variety of automated control systems and precision machinery and other fields. Stepper motor is the open-loop control components changing electric pulse signals into angular displacement or linear displacement .In the case of non-overloaded, the motor speed, stop position depends only on the pulse frequency and pulse number, regardless of load changes, that is, to add a pulse motor, the motor is turned a step angle. This system introduces a design of stepper motor control system based on single chip microcomputer, including hardware design and software design in two parts. Among them, the hardware design, including single chip minimal system, keyboard control module, LCD display module, the stepper motor drive module, position detection module five functional modules. System software design using C language, including the main program, process number keys, the key of function processes, motor driver handler, the display module, position acquisition module. This design uses STC89C52 microcontroller as the main controller, 4 * 4 matrix keyboard as an input, LCD1602 LCD as a display, ULN2003A chip as stepper motor driver. System has a good user interface, keyboard input stepper motor running distance; Stepper motor can run at different speed, and run to any given position accurately in any speed without exceeding the maximum speed, with a strong adjustable ; Display the running distance and the actual running distance, which is more convenient for the operator to use. Key words: SCM stepper LCD keyboard driver

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

编号: 综合智能电子 实训 (论文)说明书题目: 院(系):使用科技学院 专业:电子信息工程 学生姓名: 学号: 指导教师: 2010年 1 月 6 日

目录 引言 第1章简介 1.1 步进电机 第2章步进电机原理 2.1 步进电机的工作原理 2.1.1结构及基本原理 2.1.2 电机的步进顺序 第3章系统的硬件设计 3.1 系统设计方案 3.2 主从机硬件部件介绍 3.2.1A T89S51简介 3.2.2 TGI2864E简介 3.2.3MAX485 串行通信 3.2.4TIP122 3.2.5 MOC70T2 3.3 LCD显示电路设计 3.4 电机驱动模块设计 第4章系统的软件实现 4.1 系统软件主流程图 4.2 系统初始化流程图 4.3 部分子程序 第五章总结 致谢 参考文献 摘要:本文使用单片机、步进电机驱动芯片、字符型LCD和键盘阵列,构建了集步进电机控制器和驱动器为一体的步进电机控制系统。二维工作台作为被控对象通过步进电机驱动滚珠丝杆在X/Y轴方向联动。文中讨论了一种以最少参数确定一条圆弧轨迹的插补方法和步进电机变频调速的方法。步进电机控制系统的开发采用了软硬件协同仿真的方法,可以有效地减少系统开发的周期和成本。最后给出了步进电机控制系统的使用实例。

关键词:步进电机控制系统,插补算法,变频调速,软硬件协同仿真 In this paper, microcontroller, stepper motor driver chips, character LCD and keypad array, build a set of stepper motor controller and driver as one of the stepping motor control system. Two-dimensional table as a charged object by stepper motor drive ball screw in X / Y axis linkage. This paper discusses a minimum of parameters to determine the trajectory of a circular interpolation method and the method of frequency control stepper motor. Stepper motor control system has been developed using the software and hardware co-simulation method, can effectively reduce the system development cycle and cost. Finally, the stepper motor control system application examples.

基于单片机的步进电机驱动控制

基于单片机的步进电机驱动控制 一、步进电机概述 1.步进电机的定义 步进电机指的是以数字脉冲信号作为电机线或教位移的控制信号,并以数字脉冲频率对电机的转速进行控制的动力控制系统。 在负载正常范围的情况下,步进电机的运行状态只和数字脉冲发生器提供的信号的频率和脉冲占空比有关,一般情况下,电机的状态不受负载的影响。电机的运行角度只和每次所给予的脉冲信号强度有关,而电机的运行速度也只和脉冲信号的频率有直接关 系。这种采用弱点控制强电的控制方式使得步进电机在速度、位移等控制领域有着普通电机不能比拟的优势。 2.驱动控制系统框图 步进电机控制系统有着精确控制、运行稳定的特性,这一其他电机不能比拟的优势使得步进电机得到了广泛的应用。而一般对步进电机控制系统的驱动必须要包含脉冲信 号发生部分,功放部分和驱动控制部分等几个模块电路,我们根据这些通过的模块电路,可将步进电机控制系统的通用框图绘制如下: 在上图的步进电机驱动控制系统方框图中,控制步进电机运行状态的脉冲信号一 般由集成芯片产生,可以是单片机、等智能芯片,也可以是一般的数字电路集成芯片。信号分配环节则要根据步进电机的型号来选择,如四相步进电机有四相四拍和四相 八拍种信号分配的方式;两相步进电机有两相四拍和八拍等脉冲加载形式。功放部分 在驱动环节上显得尤为重要。动态平均电流是步进电机转矩大小的决定因素,前提条件 是电机的速度。电机力矩与平均电流成正比,驱动系统对电机的反电势消弱越多,则平 均电流就越大。 我们一般可以用恒压和恒压串电阻的方法来驱动,或者在条件允许的情况下我们可以用高低压驱动、恒流和细分数等方法来驱动实际的应用过程种,多采用数字集成驱 动芯片作为步进电机的驱动手段。 二、现阶段国内外步进电机驱动的常用方式 1.变频器控制方式 使用变频器对步进电机进行驱动控制时,可以很好的解决步进电机在启动和停止时 容易失步的问题,提高了系统的控制精度。但是变频器的应用成本较高,结构和操作也 比较复杂,无形中提高步进电机的控制难度。 2.PLC控制方式 使用ABB、西门子、欧姆龙等国际知名生产制造商研发的系列产品可以 实现对步进电机的理想化控制,但是基于核心的步进电机控制系统成本高昂,且 难以实现精确控制,在本系统中不太适合。 3.单片机控制方式 随着嵌入式系统在工业控制领域中的广泛应用,以单片机特别是系列单片机 作为控制核心的步进电机控制电路在生产生活领域得到了普及,单片机有着大规模数字

基于51单片机控制步进电机

单片机原理及系统课程设计 1 引言 步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。 随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。 步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。 1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。 在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

2 设计方案与原理 4.1 设计方案 设计一个51单片机四相步进电机控制系统要求系统具有如下功能: (1)由I/O口产生的时序方波作为电机控制信号; (2)信号经过驱动芯片驱动电机的运转; (3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。 4.2 设计原理 步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。 在本次设计中,我们使用的是四相单八拍的工作方式。通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。 图 2.1 步进电机内部结构截图 根据步进电机的相关相序表我们可以正常的控制电机的步进运行。

完整的单片机控制步进电机程序

#include "reg52.h" #include "INTRINS.H" #include #include #define uint unsigned int #define uchar unsigned char void check_addr(void); /*地址核对*/ uchar code slave_addr[4]={00, 01, 02, 255}; /*从机地址*/ uchar idata T0low, T0high,common_count,input_order,cmd_in_permit,interval; uchar sent_ok,speed_change,start_up,start_end,address_true,i; uint y1; uint code add[100]={60006,62771,63693,64154,64430,64614,64746,64845,64922,64983,65033,65075,651 11,65141,65167,65190,65211,65229,65245,65260,65273,65285,65296,65306,65315,65323,65331 ,65339,65345,65352,65358,65363,65368,65373,65378,65382,65387,65390,65394,65398,65401,6 5404,65407,65410,65413,65416,65418,65421,65423,65425,65428,65430,65432,65434,65435,654 37,65439,65441,65442,65444,65445,65447,65448,65450,65451,65452,65453,65455,65456,65457 ,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65469,65470,6 5471,65472,65472,65473,65474,65475,65475,65476,65477,65477,65478,65478,65479,65480,654 80,65481}; sbit P2_0=P2^0; /*作输入步进电机的脉冲信号发送口*/ sbit P2_2=P2^2; /*作输入步进电机的旋转方向信号发送口*/ sbit P1_0=P1^0; /*作串口输出信号的使能口, P1_0=0时接通串口,输出信号*/ sbit WD=P1^7; /*看门狗*/ main() { P2_0=0; P2_2=0; /*步进电机的旋转方向待试验后确定*/ P1_0=1; /*开机时需要关断,串口发送功能,需要时再接通*/ WD=1; /*看门狗先为1,电平翻转为喂狗*/ i=0; common_count=0; cmd_in_permit=0; input_order=0; interval=0; address_true=1; speed_change=0; start_up=0;

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

基于单片机的步进电机控制器毕业设计论文 目录 第1章绪论 (3) 1.1引言 (3) 1.2步进电机常见的控制方案与驱动技术简介 (5) 1.2.1常见的步进电机控制方案 (5) 1.2.2步进电机驱动技术 (7) 1.3本文研究的内容 (9) 第2章步进电机概述 (10) 2.1步进电机的分类 (10) 2.2步进电机的工作原理 (11) 2.2.1结构及基本原理 (11) 2.2.2两相电机的步进顺序 (11) 2.3 步进电机的工作特点 (14) 2.4本章小结 (16) 第3章系统的硬件设计 (17) 3.1系统设计方案 (17) 3.1.1系统的方案简述与设计要求 (17) 3.1.2系统的组成及其对应功能简述 (17) 3.2单片机最小系统 (19) 1

3.2.1AT89S51简介 (19) 3.2.2单片机最小系统设计 (24) 3.2.3单片机端口分配及功能 (25) 3.3串口通信模块 (25) 3.4数码管显示电路设计 (26) 3.4.1共阳数码管简介 (26) 3.4.2共阳数码管电路图 (27) 3.5电机驱动模块设计 (28) 3.5.1L298简介 (28) 3.5.2电机驱动电路设计 (29) 3.6驱动电流检测模块设计 (31) 3.6.1OP07芯片简介 (31) 3.6.2ADC0804芯片简介 (33) 3.6.3电流检测模块电路图 (36) 3.7独立按键电路设计 (37) 3.8本章小结 (37) 第4章系统的软件实现 (38) 4.1系统软件主流程图 (38) 4.2系统初始化流程图 (39) 4.3按键子程序 (40) 结论 (44) 2

51单片机控制四相步进电机解析

51单片机控制四相步进电机 2009年07月21日星期二 12:44 51单片机控制四相步进电机 2009-03-01 18:53 接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。这几天给自己的任务就是搞定步进电机的单片机控制。以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下 图所示: 详细内容: https://www.360docs.net/doc/d312983492.html,/31907887_d.h tml

拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。 如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四

线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图: C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void)

51单片机控制步进电机程序及硬件电路图

#include static unsigned int count; //计数 static int step_index; //步进索引数,值为0-7 static bit turn; //步进电机转动方向 static bit stop_flag; //步进电机停止标志 static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快static int spcount; //步进电机转速参数计数 void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒 void gorun(); //步进电机控制步进函数 void main(void) { count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; //允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许 TH0 = 0xFE;

TL0 = 0x0C; //设定时每隔0.5ms中断一次TR0 = 1; //开始计数 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do{ speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; }while(1); } //定时器0中断处理 void timeint(void) interrupt 1 { TH0=0xFE; TL0=0x0C; //设定时每隔0.5ms中断一次count++; spcount--; if(spcount<=0) { spcount = speedlevel; gorun(); } } void delay(unsigned int endcount) { count=0; do{}while(count

基于51单片机的步进电机控制-

基于51单片机的步进电机控制 [摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启动、 停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求。 关键字:步进电机、数码管、51单片机、ULN2803 一步进电机与驱动电路 1.1 什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2 步进电机的种类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛。 1.3 步进电机的特点 1.精度高一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点 2.过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场;

51单片机驱动步进电机的方法(详解)

51单片机驱动步进电机的方法2019.02 这款步进电机的驱动电压12V,步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。 ;****************************************************************************** ;*************************步进电机的驱动*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19

;--------------------------------------------------------------------------------- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!! ; 本步进电机步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! ;--------------------------------------------------------------------------------- ; A组线圈对应P2.4 ; B组线圈对应P2.5 ; C组线圈对应P2.6 ; D组线圈对应P2.7 ; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转7.5 度) ;---------------------------------------------------------------------------------- ;----------------------------正转-------------------------- ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R3,#144 正转3 圈共144 脉冲 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ START 对A 的判断,当A = 0 时则转到START MOV P2,A LCALL DELAY INC R0 DJNZ R3,START1 MOV P2,#00H LCALL DELAY1 ;-----------------------------反转------------------------ MOV R3,#144 反转一圈共144 个脉冲 START2: MOV P2,#00H

单片机课程设计-单片机控制步进电机

课程设计报告 题目单片机控制步进电机 课程名称单片机原理及接口技术 院部名称 专业自动化 班级M10自动化 学生姓名 学号 课程设计地点 课程设计学时 指导教师高峰 金陵科技学院教务处制 【注:根据课程设计大纲第四项具体要求撰写课程设计报告】

目录 1设计任务和要求 (3) 2设计思路 (4) 3系统硬件设计 (5) 3.1 硬件电路的工作原理 (5) 3.2步进电机模块 (5) 3.3控制模块 (6) 3.4主要元件介绍: (6) 4软件编程 (11) 5 调试过程与结果 (20) 5.1正转结果显示: (20) 5.1.1正转加速: (21) 5.1.2正转减速: (21) 6 总结与体会 (24) 7 参考资料 (26) 8 附录 (26)

1设计任务和要求 单片机课程设计是考察学生利用所学过的专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。最终形成一篇符合规范的设计说明书,并参加综合实践答辩,为后期的毕业设计做好准备。 本次设计考核的能力主要有: 1)专业知识应用能力,包括电路分析、电子技术、单片机、检测技术、电 气控制、电机与拖动、微特电机及其驱动、计算机高级语言、计算机辅 助设计、计算机办公软件等课程,还包括本专业的拓展性课程如变频器、组态技术、现场总线技术、伺服电机等课程。 2)项目设计与运作能力,团队协作能力,技术文档撰写能力,PPT汇报与 口头表达能力。 3)电气与自动化系统的设计与实际应用能力。 要求完成的工作量包括: 1)现场仿真演示效果。 2)学生结合课题进行PPT演讲与答辩。 3)学生上交课题要求的各类设计技术文档。

用单片机控制步进电机

用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 一、步进电机常识 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 二、永磁式步进电机的控制 下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。 图1是35BY型永磁步进电机的外形图,图2是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将COM端标识为C,只要AC、 C、BC、 C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、、B、轮流接地。 下表列出了该电机的一些典型参数: 表1 35BY48S03型步机电机参数 型号步距角相数电压电流电阻最大静转距定位转距转动惯量 35BY48S03 7.5 4 12 0.26 47 180 65 2.5 有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,因此用一块开路输出达林顿驱动器(ULN2003)来作为驱动,通过P1.4~P1.7来控制各线圈的接通与切断,电路如图3所示。开机时,P1.4~P1.7均为高电平,依次将P1.4~P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如果要改变电机的

基于单片机AT89C52的步进电机的控制器设计

2012届毕业生毕业设计说明书 题目:基于单片机的步进电机的控制器设计 院系名称:信息科学与工程学院 专业班级:电子信息科学与技术 学生姓名:学号: 指导教师:教师职称: 2012年月日

毕业设计中文摘要 摘要 步进电机控制方式的实现有多种,可以采用电子电路控制,PLC控制和单片机控制的方式。近些年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测的更新,用单片机控制步进电机显得更加灵活和方便。本设计是用AT89C52单片机作为核心部件进行逻辑控制及信号产生,用单片机技术和C语言编程设计来进行步进电机的控制。通过人手动按开关实现步进电机的启动与停止。此外此系统还添加了步进电机的正转反转,加速及减速,屏幕显示功能。同时本文也通过了proteus软件的仿真,在仿真结果过能看出近似真实的效果。 关键词:步进电机单片机控制 AT89C52 proteus仿真

毕业设计外文摘要 Title The design of the control system of Step—motor 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 AT89C52, as the signal generated by logic control and microcontroller technology and assembly language programming designed stepper motor control system, Start and stop of the stepping motor to handle the switch manually by people. In addition, this system also adds a stepper motor forward reverse, acceleration and deceleration, the screen display. Meanwhile, through software simulation in proteus, too can be seen that the approximation of the true effect of the simulation results. Keywords stepper motor microcontroller AT89C52 proteus simulation

最新51单片机控制四相步进电机电路图汇总

51单片机控制四相步进电机电路图

51单片机控制四相步进电机 接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。这几天给自己的任务就是搞定步进电机的单片机控制。以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所 示: 拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。 如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图:

C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void) { count = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0;

EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许TH0 = 0xFC; TL0 = 0x18; //设定时每隔1ms中断一次 TR0 = 1; //开始计数 startrun: P1_3 = 0; P1_0 = 1; delay(); P1_0 = 0; P1_1 = 1; delay(); P1_1 = 0; P1_2 = 1; delay(); P1_2 = 0; P1_3 = 1; delay(); goto startrun; } //定时器0中断处理 void timeint(void) interrupt 1

相关文档
最新文档