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

武汉软件工程职业学院2009 级毕业设计

课题名称基于单片机的步进电机控制系统

学生姓名张宗华

学号1297809050094

班级光电0901

指导老师冯芳亮

完成时间:2011 年11月 20日

光电子与通信工程系

目录

开题报告 (1)

毕业设计任务书 (2)

设计说明书 (2)

1.设计方案论论证 (2)

2.设计原理 (2)

3.硬件设计 (2)

3.1框图 (2)

3.1.1 数码管的硬件电路 (3)

3.1.2按键的硬件电路 (4)

3.1.3驱动芯片ULN2003 (7)

3.1.4 步进电机工作原理 (9)

3.2 电路全图 (14)

3.2 PCB图 (14)

4.软件设计 (15)

4.1框图 (15)

4.1.1主框图 (15)

4.1.2运行模块框图 (16)

4.1.3控制模块框图 (18)

4.2关键程序段说明 (18)

4.2.1按键控制 (18)

4.2.2数码管显示调节 (19)

4.3程序清单 (20)

安装调试过程说明 (25)

对本设计的评价 (26)

本次毕业设计的心得和体会 (26)

本次毕业设计的支撑材料 (26)

1.参考资料及文献 (26)

2.元件参数总表 (27)

毕业设计成绩鉴定表 (30)

光电子与通信工程系毕业设计开题报告

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

1.设计方案论证

设计方案及论证:采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。用软件代替环形分配器,达到了对步进电机的最佳控制。系统中采用单片机接口线直接去控制步进电机各相驱动线路。由于单片机的强大功能,还可设计大量的外围电路,键盘作为一个外部中断源,设置了步进电机正转、反转、档次、停止等功能,采用中断和查询相结合的方法来调用中断服务程序,完成对步进电机的最佳控制,显示器及时显示正转、反转速度等状态。环形分配器其功能由单片机系统实现,采用软件编程的办法实现脉冲的分配。

本方案有以下优点:

(1)单片机软件编程可以使复杂的控制过程实现自动控制和精确控制,避免了失步、振荡等对控制精度的影响;(2)用软件代替环形分配器,通过对单片机的设定,用同一种电路实现了多相步进电机的控制和驱动,大大提高了接口电路的灵活性和通用性;(3)单片机的强大功能使显示电路、键盘电路、复位电路等外围电路有机的组合,大大提高系统的交互性。

基于以上优点,本次设计采用基于单片机的控制方案。用AT89C52单片机做控制系统,用ULN2003A芯片来驱动四相步进电机。

2.设计原理

步进电机是将脉冲信号转变成步距角的电机。所以我们采用单片机控制输出脉冲信号,然后用一个驱动芯片驱动步进电机。利用软件使步进电机根据我们的要求运行以及控制。

3.硬件设计

3.1 框图

以上是单片机通用开发板作为控制系统,用ULN2003A 作为驱动步进电机的芯片,构架成的一个单片控制步进电机大体的硬件框架图。他们之间的各种关系跟关联以及I/O 口的相关应用,连线的接法等等看下面详细分析。

3.1.1数码管的硬件电路

本次设计选用的单片机板采用四位共阳极数码管,用S9012三极管来作为数码管的段选。集电极接数码管,发射极接+5V ,基极串联一个4.7k 的电阻跟单片机的I\O 口连接。基极串联电阻是为了限流,达到阻抗匹配才能安全正确的使用。在数码管段选接到单片机的P0口的时候用了一个 103的上拉电阻。Protel 的原理图接法如下图3.11-1所示:

3.11-1

3.1.2按键的硬件电路

本次设计选用的单片机板采用的是SW-PB按键。只用一个I\O口P2采用行列扫描式来读取取键值。具体接法如图3.12-1所示:

3.12-1

机械抖动:按键按下时,电平的变化并不是马上到位,而是会有一个不稳定的状态过程,再进入电平稳定状态。

软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms 的延时,待后沿抖动消失后才能转入该键的处理程序

可以在去抖程序里加入检测松手程序例如…… …… if(!key) //检测键盘是否按下 delay()://去抖延时一般是50ms if(!key)//再次检测键盘是否按下

×××++: //这里写数码管加"1"程序 while(key);//加入写句,目的是等待key 变为原来的状态才会执行下一条指令!

1、按键在按下的时候、由于机械连接的不稳定,导致刚刚被按键连通的电路中出现电平抖动。

2、在某些情况下,例如系统受到外部震动,也会在按键电路中出现电平抖动,但这种抖动不是控制者所希望的操作,如果没有防抖动程序,那么系统会因这种不希望出现的干扰而错误动作。

3、为了避免系统误判,可以编写防抖动程序。程序流程的文字说明如下(假设按键按下后,低电平送到单片机):(1)是否有低电平输入(按键电路按键被按下了吗)?如果是,到(2)步执行;不是,继续执行(1)(2)延时等待(可以使用定时器或非定时器都可以),然后执行(3)步(3)是否有低电平输入?是的话,执行后面的其他程序;不

是,则跳转到(1)步执行 4、说明:干扰抖动的持续时间很短,为了防止(1)中的低电平是系统内的干扰抖动,则延时等待一会,然后判断是否真的按键按下。并联电容消抖:

用10K的上拉电阻与按键串联,然后按键并联一个去抖电容,以用来消除按键的机械抖动电容的计算方法如下:电容的容值是根据机械按键的触点抖动频率而定,一般机械按键的抖动频率为100Hz左右,当按键闭合抖动时接触时间在毫秒级,根据电容充放电的时间t=0.7*根号RC R=10K,C选0.1uF,电容的充放电时间约20ms,大于抖动时间,可将抖动滤除掉通常电容C选取0.01uF~1uF

硬件消抖2:在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。

3.12-2

图3.12-2中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经

双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。

3.1.3驱动芯片ULN2003A

步进电机模块中使用的驱动芯片为 ULN2003A,它是由七对达林顿管组成的,是集电极开路输出的功率反相器,并且每个输出端都有一个连接到共同端(COM)的二极管,为断电后的电机绕组提供一个放电回路,起放电保护作用。内部逻辑如图3.13-1所示。因此,ULN2003A 非常适合驱动小功率的步进电机。

图3.13-1

ULN2003A的外部封装图如3.13-2。

图3.13-2

单片机的P1.0-P1.3输出的脉冲信号经J2送到ULN2003A的IN1-IN4 输入端,经ULN2003A 放大和倒相后的输出脉冲信号通过 J3 来驱动步进电机作相应的作。ULN2003A的 COM 端和步进电机的 COM1、COM2 连接到 VCC。ULN2003A驱动步进电机模块原理图如图 3.13-3所示。

图3.13-3

3.1.4步进电机的工作原理

当步进电机接收到一个脉冲信号,步进电机按设定的方向转动一个固定的角度(称“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目的。步进电机的这些特性非常适合使用单片机来控制,控制信号由单片机产生,步进电机则根据控制信号来动作。

1、结构及基本原理

步进电机在结构上也是由定子和转子组成,可以对旋转角度和转动速度进行高精度控制。当电流流过定子绕组时,定子绕组产生一矢量磁场,该矢量场会带动转子旋转一角度,使得转子的一对磁极磁场方向与定子的磁场方向一着该磁场旋转一个角度。因此,控制电机转子旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一个脉冲电压,转子就旋转一个步距角,称为一步。根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。电机将电能转换成机械能,步进电机将电脉冲转换成特定的旋转运动。每个脉冲所产生的运动是精确的,并可重复,这就是步进电机为什么在定位应用中如此有效的原因。

通过电磁感应定律我们很容易知道激励一个线圈绕组将产生一个电磁场,分为北极和南极,见图3.1.4-1所示。定子产生的磁场使转子转动到与定子磁场对直。通过改变定子线圈的通电顺序可使电机转子产生连续的旋转运动。

图3.14-1激励线圈产生电磁场

2、步进电机的常用术语

步距角:表示控制系统每发一个步进脉冲信号,步进电机转子所应转动的角度的理论值。

Qn = 2π/ZN

式中: Z --- 转子的齿数

N--- 运行拍数,通常等于相数或相数的整数倍,即N=kN

1

N

--- 步进电机相数

1

从式中可以看出,运行拍数和转子的齿数不同时,步距角不同,且步距角与运行拍数或转子的齿数成反比。八拍运行方式的步距角要比四拍运行方式的步距角小一半。

齿距角:相邻两齿中心线间的夹角,通常定子和转子具有相同的齿距角。

Qz = 2π/ Z

式中: Z --- 转子的齿数

步距角与齿距角之间的关系:

Qn = Qz/N = 2π/NZ

式中: N --- 步进电机工作拍数

Z --- 转子的齿数

步进电机转速:

n = 60×f / N×Z(转/分)

式中:f =脉冲频率(Hz)

N --- 步进电机工作拍数

Z --- 转子的齿数

从这个公式可以看出步进电机以八拍运行方式工作的转速是以四拍运行方式工作的转速的一半。

步进电机的相数:是指步进电机内部的线圈组数。运行频率:是指拖动一定负载使频率连续上升时,步进电机能不失步运行的极限频率。启动频率:是指在一定负载下直接启动而不失步的极限频率。

对于步距角为 7.5 度的步进电机而言:

Qn = 7.5 度

Qz = Qn×N = 7.5×4=30 度(齿距角)

Z = 2π/Qz = 360/30 = 12 (转子的齿数)

3、步进电机的基本控制

(1)控制换相顺序步进电机的通电换相顺序严格按照步进电机的工作方式进行。通常我们把通电换相这一过程称为脉冲分配。例如,步进电机的八拍工作方式,其各相通电的顺序A-AB-B-BC-C-CD-D-DA(正转)或 DA-D-CD-C-BC-B-BA-A(反转),通电控制脉冲必须严格这一顺序分别控制 A,B,C,D 相的通电和断电。

(2)控制步进电机的转向

如果按给定的工作方式正序通电换相,步进电机就正转;如果按反序通电换相,则步进电机就反转。

(3)控制步进电机的速度

如果给定步进电机一个控制脉冲,它就转一步,再发一个控制脉冲,它就会再转一步。两个脉冲的间隔时间越短,步进电机就转得越快。因此,脉冲的频率决定了步进电机的转速。调整单片机发出脉冲的频率,就可以对步进电机进行调速。

调整单片机输出的步进脉冲频率的方法:

A、软件延时方法

改变延时的时间长度就可以改变输出脉冲的频率,但这种方法使 CPU 长时间等待,无法进行其它工作,因此没有实用价值。在单独进行步进电机的演示时可以采用。

B、定时器中断方法

在中断服务子程序中进行脉冲输出操作,调整定时器的定时常数就可以实现调速。这种方法占用 CPU 时间较少,是一种比较实用的调速方法。

用单片机对步进电机进行速度控制,实际上就是控制每次换相的时间间隔。升速时,使脉冲频率逐渐升高,降速时则相反。

4、步进电机的三种运行方式

(1)单四拍运行方式

当电机绕组通电时序为 A-B-C-D 时为正转,通电时序为 D-C-B-A 时为反转。见表 1。

这种驱动方式是如何一个时间,只有一组线圈被激磁,因此产生的力矩较小。

表1

步距角:Qn = Qz/N = 2π/NZ = 360/4*12 = 7.5°

则步进电机转一圈所需步进脉冲数:360°/ 7.5°= 48

(2)双四拍运行方式

当电机绕组通电时序为 AB-BC-CD-DA 时为正转,通电时序为 DA-CD-BC-AB 时为反转。见表 2。

这种驱动方式是在任何一个时间内,有二组线圈同时被激磁,因此产生的力矩较大。

表2

N=4

步距角:Qn = Qz/N = 2π/NZ = 360/4*12 = 7.5°

则步进电机转一圈所需步进脉冲数:360°/ 7.5°= 48

(3)八拍运行方式

当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA 时为正转,通电时序为DA-D-CD-C-BC-B-BA-A 时为反转。见表 3这种驱动方式又承为“半步驱动”,每个驱动信号只驱动半步。

表3

步距角: Qn = Qz/N = 2π/NZ = 360/8*12 = 3.75°

则步进电机转一圈所需步进脉冲数:360°/ 3.75°= 96

八拍运行方式的步距角要比单四拍和双四拍运行方式的步距角小一半,所以步进精度高一倍。

3.2 电路全图

单片机控制步进电机系统原理图(Protel 99SE):

3.3 PCB图

根据单片机的原理图绘制出的PCB图:

单片机通用版PCB图

4.软件设计

4.1 框图

4.1.1 主框图

4.1.2 运行模块框图

Start

相关文档
最新文档