电机调速.docx
《电机调速.docx》由会员分享,可在线阅读,更多相关《电机调速.docx(13页珍藏版)》请在冰豆网上搜索。
![电机调速.docx](https://file1.bdocx.com/fileroot1/2023-1/5/744970a8-7625-4587-bbc1-b54f8856ecbc/744970a8-7625-4587-bbc1-b54f8856ecbc1.gif)
电机调速
沈阳化工大学()
电机设计报告
专业:
电气工程及其自动化
班级:
学生姓名:
学生学号:
指导教师:
目录
第一章总的控制方案
1.1设计思路……………………………………………2
1.2设计流程框图………………………………………2
第二章硬件系统设计
2.1步进电机工作原理…………………………………3
2.2AT89S52单片机……………………………………4
2.3步进电机及其驱动原理图…………………………4
第3章特殊器件介绍
3.1晶体振荡器…………………………………………5
第4章软件系统设计
4.1软件系统流程图……………………………………6
4.2软件设计……………………………………………7
4.3正转子程序…………………………………………7
4.4反转子程序…………………………………………9
4.5正反转子程序………………………………………11
第5章系统调试
5.1系统调试……………………………………………14
第一章总的控制方案
1.1设计思路
本系统主要由按键电路、单片机最小系统、AT89S52单片机、步进电机电机电路、驱动电路以及步进电机等几部分组成。
ULN2003芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便通过比较,使用ULN2003芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用ULN2003驱动电机。
而使用ULN2003时,可以用ULN2003来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。
步进电机的控制主要通过16个按键来实现,这16个按键分别表示“正转”、“反转”、“预置步数”、“初始化”和“停止”。
单片机输出四路脉冲信号送到驱动电路ULN2003A,驱动步进电机的相应绕组得电,即步进电机获得脉冲,而产生一定的角位移。
单片机循序不断的输出时序脉冲,就可以实现步进电机的旋转了
1.2设计流程框图
第二章硬件系统设计
2.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方向转动。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:
a单四拍b双四拍c八拍
图2.步进电机工作时序波形图
2.2AT89S52单片机
Atmel公司的生产的89C52单片机是一种低功耗/低电压、高性能的8位单片机,它采用CMOS和高密度非易失性存储器技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外还包括256字节RAM,4K字节的ROM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器。
89C51单片机是一种功能强、灵活性高且价格合理的单片机,完全满足本系统设计需要
步进四相的励序
2.3步进电机及其驱动原理图
步进电机是工业控制及仪表中最常用的控制元件之一,它有输入脉冲与电机轴转成比例的特征,在智能机器人、软盘驱动器、数据机床中广泛运用,微电脑控制步进电机最适宜系统中设计使用20BY-0型号步进电机,它实用+5V直流电源,步距角为18度,电机线圈由四相组成。
如下图所示,即A、B、C、D四相。
驱动电路由脉冲信号控制,所以调节脉冲信号的频率便可以改变步进电机的转速。
途中BA、BB、BC、BD即为脉冲信号输入插孔,驱动器输出A、B、C、D接步进电机。
步进电机驱动原理图
第三章特殊器件介绍
3.1晶体振荡器
为了提高振荡频率的稳定度,可以使用晶体或陶瓷震荡子等电压元件。
除了可以应用于高频率震荡电路以外,还可以使用于钟表与计数器等基准时间产生电路。
电压元件为利用机械振动与电气震动间的相互转换作用,而且其固有振动数是由几何尺寸决定的。
晶振特性
第四章软件系统设计
4.1软件系统流程图
本程序先进行程序初始化。
初始化先对外部中断的触发方式进行设置,然后使
能中断,最后对相关标志位进行初始化。
初始化完成后程序进入死循环。
在死循
环中首先判断控制步进电机的按键是否被按下,没有被按下时清除相关电机控制
标志位及关闭所有LED指示灯和数码管显示的状态,当该按键被按下时启动电
机,然后查询速度按键状态,如果有键按下则相应速度标志位,若没有键按下则
继续往下执行判断转动正反向标志位,最后判断速度级别并执行相应不同方向和
速度级别状态下的相关控制程序。
然后进入下一次的循环操作。
依次类推。
系统软件流程图
4.2软件设计
实现步进电机运行方式、方向和速度以及启/停的控制,是接口软件设计的主要任务。
为此,在编写程序之前,要建立一个相序表。
相序表的建立应根据步进电机运行方式的要求及各绕组与8255A端口连接情况来确定加电代码。
根据上图的连接情况,可以写出相序表中双八拍运行方式的加电代码为:
03H,07H,06H,0EH,0CH,0DH,09H,0BH。
在8259初始化完毕后,取出相序表的首地址,将其存如BX。
当要求步行电机正转时,首地址进行加1操作。
在次过程中要检查指针是否指到末地址。
若是,指针减7,回到首地址,如此循环。
当要求反转时,将首地址进行加7操作到达末地址,在进行减1操作,在次过程找要检查指针是否到达首地址。
如是,则将指针加7回到末地址。
根据设计流程图,软件设计部分将本系统分为3个子程序,分别是正向旋转子程序、反向旋转子程序、正反向旋转子程序。
4.3正转子程序
#include"reg52.h"
#sbitP2=0xff;
unsignedcharcodeRUN[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//步进电机相序表
voiddelay(unsignedintt);
//步进电机驱动
voidmotor_ffw()
{
unsignedchari;
for(i=6;i>0;i--)//一个周期转3.75*8=30度
{
P1=RUN[i]&0x1f;//取数据
delay(5);//调节转速
i=i-1;
}
}
/******延时函数****************/
voiddelay(unsignedintt)
{
unsignedintk;
while(t--)
{
for(k=0;k<60;k++)//用for的空循环延长程序的执行时间
{}
}
}
main()
{
while
(1)
{
motor_ffw();//调用旋转处理函数
}
}
4.4反转子程序
#include"reg52.h"
#sbitP2=0xff;
unsignedcharcodeRUN[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//步进电机相序表
voiddelay(unsignedintt);
//步进电机驱动
voidmotor_ffw()
{
unsignedchari;
for(i=0;i<7;i++)//一个周期转3.75*8=30度
{
P1=RUN[i]&0x1f;//取数据
delay(10);//调节转速
i=i+1;
}
}
/******延时函数****************/
voiddelay(unsignedintt)
{
unsignedintk;
while(t--)
{
for(k=0;k<60;k++)//用for的空循环延长程序的执行时间
{}
}
}
main()
{
while
(1)
{
motor_ffw();//调用旋转处理函数
}
}
4.5正反转子程序
#include"reg52.h"
#sbitP2=0xff;
unsignedcharcodeRUN[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//步进电机相序表
voiddelay(unsignedintt);
//步进电机驱动
voidmotor_ffw()
{inta=0;
unsignedchari;
for(a=0;a<200;a++)
{
for(i=0;i<7;i++)//一个周期转3.75*8=30度
{
P1=RUN[i]&0x1f;//取数据
delay(10);//调节转速
i=i+1;
}
}
for(a=0;a<500;a++)
{
for(i=6;i>0;i--)//一个周期转3.75*8=30度
{
P1=RUN[i]&0x1f;//取数据
delay(5);//调节转速
i=i-1;
}
}
}
/******延时函数****************/
voiddelay(unsignedintt)
{
unsignedintk;
while(t--)
{
for(k=0;k<60;k++)//用for的空循环延长程序的执行时间
{}
}
}
main()
{
while
(1)
{
motor_ffw();//调用旋转处理函数
}
}
第五章系统调试
5.1系统调试
在刚开始,从网上找了一个程序,运行之后,步进电机能够按照需求运转,但是后来同学提醒实现单步运行,这个时候就出现了问题,当要步进点击停止时,motounion的指示灯总是停在相同的位置,而且单步运行时的灯的顺序并不是按照相序表来变化的,仅仅电机能转而已,所以最后舍弃了这个程序,开始自己写。
首先就是要让步进电机转起来,转起来的前提就是要读去相序表,在这个过程中,我一直采用的是单步运行方式,在单步运行时,能够顺利的读取相序表,但是当我运行时,就出现了问题,因为当读到最后一个时,不能返回来,每次只能顺序读一次。
最后和同学讨论,得到了解决方法,在正转时,每次都判断是不是到了最后一个加电码,如果是,则指针减8(因为正转时,每次指针都要加1),这样就又回到了首地址了。
在整个程序中,延时程序调试的次数最多了,刚开始,用的数值不是很大,这样电机转的速度很快,导致指示灯一直亮着,而且快、慢转几乎很难分清。
最后经过不断的试验,将数据调到了一个比较合理的值,即转的不是很快,灯能正常显示,又能很好的区分快慢转了。
参考文献
[电动机的单片机控制].王晓明
步进电机原理和应用.
控制电机技术与选用手册.
特种电机.唐任远
特种电机及其控制.
心得体会
经过老师耐心细致的指导,经过近的努力,本次毕业设计课题步进电机控制系统告一段落。
步进电机控制系统主要分为硬件设计和软件设计两个部分:
硬件设计主要是把单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块、测速模块各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。
软件设计主要是通过编写程序代码,实现对整个系统的控制。
在系统上电复位后程序自动运行,通过接受外部的键盘操作修改系统参数值,控制步进电机的启停,以及转速的增减和转动方向的改变;定时器T0根据系统参数控制步进电机的转动;实现步进电机转动速度的动态显示。
本系统具有相当的实用功能,两片单片机分别实现步进电机控制和测速,能基本符合实际应用需求,本次设计由于设计时间较短,个人能力以及精力等因素的限制,加之设计经验的不足,该系统还有许多不尽如人意的地方。
该系统未能完全的实现设计的所有功能。
如:
利用键盘输入转速值实现转速的控制,动态设置最低转速和最高转速等。
在把理论设计转换成实物的整个过程,如:
电路设计、分析计算、画电路图、焊接电路、检查调试、软件流程控制设计分析、编写调试软件、烧写软件到整个软硬件系统的调试,最后直到系统完成。
其中整个系统的前期准备是首先必须做到位的,如控制什么、用什么控制、得到什么结果,进而对各部分应选择具体的芯片作进一步的考虑,以使系统得到最优的表现