步进电机及其控制
【实验目的】
熟悉步进电机的结构和驱动方式
掌握用AT89S52来控制步进电机的方法
进一步熟悉EDA实验平台
【实验器材】
EDA实验箱、PC机、DB25-ISP下载线、USB转换线、
USB-BLASTER编程器等
软件:Quatus II 、Keil uVision2、ISPlay等
【实验原理】
步进电机(stepping motor)是一种以脉冲控制的转动设备,由于是以脉冲驱动,很适合以数字或微型计算机来控制,做一又把它当成是一种数字设备。
1、步进电机的结构:
步进电机与一般电机结构类似,除了托架、外壳之外,就是转子和定子,比较特殊的是其转子与定子上有许多细小的齿,如图1所示。
转子为永久磁铁,线圈绕在定子上。
根据项圈的配置,步进电机可以分为2相、4相、5相等,如图2所示。
比较常用的是2相的步进电机。
其中包括两组具有中间抽头的线圈,A、com1、A为一组,B、com2、B为另一组。
两相5线式步进电机就是将其中的com1和com2连接。
图1:步进电机的基本结构图2:步进电机的种类
2、步进电机步进角度的计算
顾名思义,步进电机就是一步步走的电机,其转子与定子的齿,决定了其每布的间距。
如图3所示。
图3:步进电机的齿间距
若转子上有N 个齿,则其齿间距θ为:
N
360︒
==转子齿间距θ
而步进角度δ为:
P
22θ
δ=⨯=
相数转子齿间距
以常用的2相式50齿步进电机为例,
θ=360°/50=7.2°
δ=7.2°/(2×2)=1.8°
3、步进电机的驱动:
步进电机的驱动是靠定子线圈激磁后,将邻近转子上相异磁极吸引过来实现的。
因此,线圈排列的顺序,以及激磁信号的顺序就很重要。
以2相式步进电机为例,其驱动信号有1相驱动、2相驱动和1-2相驱动三种。
图4:步进电机的驱动方式:1相驱动、2相驱动和1-2相驱动。
(1)、1相驱动:
任何一个时间,只有一组线圈被激磁,其他线圈在休息,因此产生的力矩较小,但这种激磁方式最简单,信号依次为:
1000-0100-0010-0001-1000……(正转)
0001-0010-0100-1000-0001……(反转)
有四种不同的信号呈现周期性的变化。
在AT89S52中产生这种信号,以正转为例,可以先输出“0001”,,经过一小段时间延迟后,让步进电机有足够的时间建立磁场及转动,再输出“0100”,延时…依次循环输出这四种信号即可。
(2)、2相驱动:
任何一个时间,有两组线圈同时被激磁,因此,产生的力矩比1相驱动要大。
其信号依次为:1100-0110-0011-1001-1100……(正转)
1100-1001-0011-0110-1100……(反转)
信号输出方式与1相驱动类似。
(3)、1-2相驱动:
1-2相驱动的方式又称为“半步驱动”,每个驱动信号只驱动半步。
其驱动信号依次为:1001-1000-1100-0100-0110-0010-0011-0001……(正转)
1001-0001-0011-0010-0110-0100-1100-1000……(反转)
共有8种信号成周期性的变化,仔细观察可以发现其中的信号是将1相驱动和2相驱动的信号混合而成的。
具体应用时根据不同型号的步进电机采用不同的驱动方式,本EDA实验箱中的步进电机采用1相驱动的方式进行驱动。
4、转速控制
控制步进电机的运行速度,实际上是控制系统发出时钟脉冲的频率或换相的周期,即在加速的过程中,使脉冲的输出频率增加;在减速过程中,使脉冲的输出频率减小。
脉冲信号的频率可以用软件延时来确定。
5、步进电机的驱动电路
AT89S52的输出电流很难驱动步进电机,必须另外设计驱动电路才行,在此我们将采用ULN2003(如图5)驱动步进电机。
一颗ULN2003系列IC包含7个开集极式输出的反相器,而在每个输出端都有一个连接到公共端(VCC)的二极管,作为放电保护电路,每组反相器的内部电路如图6.
图5:ULN2003
图6:内部电路
【实验内容】
原理图:
1、根据EDA步进电机步进角度,计算出该步进电机的齿间距和齿数,填入表1;
齿数齿间距步进角度
15°
2、步进电机的步进和特定角度旋转
(1)将“桌面\EDA实验-51部分-步进电机实验\步进电机实验底层驱动”路径下“LCD1602.sof”文件烧入FPGA中。
具体步骤如下:
a)用USB转换线将 USB BLASTER 与PC机相连,USB BLASTER的另一端连接到FPGA
核心板右下角J12口。
如果连接正常,USB BLASTER绿灯点亮。
b)双击“桌面\EDA实验-51部分-步进电机实验\步进电机实验底层驱动”路径下
“LCD1602.qpf”文件,启动Quartus II;
c)单击菜单栏中 Tools\Programmer ,打开FPGA程序下载窗口;
d)单击界面右上角“Hardware Setup”,在“Currently selected Hardware”下拉列
表中选择“USB-Blaster[USB-0]”,激活USB-Blaster,单击“close”关闭;
e)单击“Add File”,路径选择“桌面\EDA实验-51部分-步进电机实验\步进电机实验
底层驱动”,选中文件“LCD1602.sof”,勾选Program/Configure;
f)给EDA主板供电,单击“start”,将底板驱动程序烧录到FPGA中。
g)烧录后不要断电,断电后程序会丢失,需要重新烧录。
(2)利用“程序一.c”代码,创建keil工程,生成“程序一.hex”文件
具体步骤如下:
a)单击“开始\程序”,启动Keil uVision2;
b)单击“Project\New Project”,创建新工程;
c)新工程保存路径为“桌面\EDA实验-51部分-步进电机实验\程序一”,工程名设为“工
程一”,单击“保存”;
d)在弹出的“器件选择窗口”中,
选择“Atmel\AT89S52”,单击“确定”;
e)右键单击窗口右边列表栏中“Source Group 1”,选择“Add File to Group
‘Source Group 1’”;
f)选中“桌面\EDA实验-51部分-步进电机实验\程序一”路径下“程序一.c”,单击
“Add”,然后单击“close”;
g)双击“程序一.c”,打开该文件。
h)单击窗口左上角“Build Target”按键,编译程序一;
i)单击窗口左上角图标,选中“output”面板,选中“Creative HEX…”,
单击“确定”。
j)再次单击窗口左上角“Build Target”按键,将生成“程序一.Hex”文件;
k)在路径“桌面\EDA实验-51部分-步进电机实验\程序一”下,已经生成“程序一.Hex”
文件。
(3)将程序一.hex 烧入单片机
具体步骤如下:
a)用DB25-ISP下载线连接单片机ISP程序下载口(EDA主板右下角J15口)和PC机
并口,EDA主板右下角S8拨码开关全部拨向ON;
b)在桌面双击图标,启动ISPlay;
c)单击“检测器件”,听到“嘀嘀嘀”,表示器件检测成功;
d)单击“文件”,选择“桌面\EDA实验-51部分-步进电机实验\程序一”路径下“程序
一.hex”,单击“打开”;
e)单击“AUTORUN!”,完成程序的下载;下载完成会听到“嘀嘀嘀”的响声。
完成表2:
3、设计性实验
步进电机正、反、加速、减速转动控制
通过按键控制步进电机的正转、反转、加速、减速、停止和转动等动作。
【实验要求】
1.根据实验内容,填写表1、表2。
2.分析程序,按要求将程序代码记录在报告上,并将程序编译运行烧录到单
片机内,记录运行结果。
3.记录实验后的收获和体会。
思考题:
1相驱动信号为0001-0010-0100-1000-0001……(正转),而程序中驱动信号为motorshun[8]={0xF2,0xF1,0xF4,0xF8,0xF2,0xF1,0xF4,0xF8},为什么顺序不对应?
2写入程序后,步进电机没有反映,系统不工作,有哪些可能的原因?。