基于51单片机的步进电机控制设计报告说明书及源程序.docx

上传人:b****4 文档编号:5110043 上传时间:2023-05-08 格式:DOCX 页数:19 大小:166.96KB
下载 相关 举报
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第1页
第1页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第2页
第2页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第3页
第3页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第4页
第4页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第5页
第5页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第6页
第6页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第7页
第7页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第8页
第8页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第9页
第9页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第10页
第10页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第11页
第11页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第12页
第12页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第13页
第13页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第14页
第14页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第15页
第15页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第16页
第16页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第17页
第17页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第18页
第18页 / 共19页
基于51单片机的步进电机控制设计报告说明书及源程序.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的步进电机控制设计报告说明书及源程序.docx

《基于51单片机的步进电机控制设计报告说明书及源程序.docx》由会员分享,可在线阅读,更多相关《基于51单片机的步进电机控制设计报告说明书及源程序.docx(19页珍藏版)》请在冰点文库上搜索。

基于51单片机的步进电机控制设计报告说明书及源程序.docx

基于51单片机的步进电机控制设计报告说明书及源程序

 

南京XX大学

指导老师:

张X

课程设计

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

 

机械电子工程学院

测控技术与仪器

 

XXXXX

Xxx

 

2012年1年4日

步进电机控制系统

[摘要]本课程设计的内容是利用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.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场;

4.整机结构简单传统的机械速度和位置控制结构比较复杂,调整困难,使用步进电机后,使得整机的结构变得简单和紧凑。

1.4步进电机的原理

图1是一种四相可变磁阻型的步进电机结构示意图。

这种电机定子上有八个凸齿,每一个齿上有一个线圈。

线圈绕组的连接方式,是对称齿上的两个线圈进行反相连接,如图中所示。

八个齿构成四对,所以称为四相步进电机。

图1

它的工作过程是这样的:

当有一相绕组被激励时,磁通从正相齿,经过软铁芯的转子,并以最短的路径流向负相齿,而其他六个凸齿并无磁通。

为使磁通路径最短,在磁场力的作用下,转子被强迫移动,使最近的一对齿与被激励的一相对准。

在图1(a)中A相是被激励,转子上大箭头所指向的那个齿,与正向的A齿对准。

从这个位置再对B相进行激励,如图1中的(b),转子向反时针转过15°。

若是D相被激励,如图1中的(c),则转子为顺时针转过15°。

下一步是C相被激励。

因为C相有两种可能性:

A—B—C—D或A—D—C—B。

一种为反时针转动;另一种为顺时针转动。

但每步都使转子转动15°。

电机步长(步距角)是步进电机的主要性能指标之一,不同的应用场合,对步长大小的要求不同。

改变控制绕组数(相数)或极数(转子齿数),可以改变步长的大小。

它们之间的相互关系,可由下式计算:

Lθ=360P×N

式中:

Lθ为步长;P为相数;N为转子齿数。

在图1中,步长为15°,表示电机转一圈需要24步。

1.5步进电机的驱动

混和步进电机的工作原理

在实际应用中,最流行的还是混和型的步进电机。

但工作原理与图1所示的可变磁阻型同步电机相同。

但结构上稍有不同。

例如它的转子嵌有永磁铁。

激励磁通平行于X轴。

一般来说,这类电机具有四相绕组,有八个独立的引线终端,如图2a所示。

或者接成两个三端形式,如图2b所示。

每相用双极性晶体管驱动,并且连接的极性要正确。

图3所示的电路为四相混和型步进电机晶体管驱动电路的基本方式。

它的驱动电压是固定的。

表1列出了全部步进开关的逻辑时序。

步数

Q1

Q2

Q3

Q4

1

1

0

1

0

2

1

0

0

1

3

0

1

0

1

4

0

1

1

0

5

1

0

1

0

表1

二方案设计与论证

2.1键盘设计

该系统中只运用到三个控制按钮,即“正反”,“换挡”,“启停”,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂。

2.2显示电路设计

如图2.31,采用LED数码管动态显示数据与个项参数,方法简单,容易控制,成本低。

设计如下图

图2.31

2.4驱动电路设计

驱动电路可分为:

三极管直接驱动(图3),采用斩波恒流驱动方式(图2.41)和芯片驱动电路等。

驱动电路的性能直接关系到步进电机走步的准确与稳定。

本电路采用驱动芯片ULN2803。

ULN2803是一种大电流高电压型器件,外电路简单(图2.42)。

 

图2.41

 

图2.42

三电路设计

3.1、设计要点和软硬环境

1、步进电机的设计要点和软硬件环境

步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。

即步进电机是将电脉冲信号转换为机械角位移的执行元件。

步进电机的控制可以用硬件,也可以用软件通过单片机实现。

硬件方法是采用脉冲分配器芯片进行通用换相控制;而软件方法是用单片机产生控制脉冲来控制步进电机的运行状态,这种方法可简化电路,降低成本。

在用软件控制时,主要设计要点如下:

判断旋转方向;

按相序确定控制字;

按顺序输入控制字;

确定控制步数和每一步的延时时间。

由于单片机的驱动电流一般都比较小,不能直接驱动电机工作,所以单片机的I/O口输出必须接驱动电路,即功率驱动,才得以控制电机正常工作。

控制框图如下图所示:

(2)、相关参数设定:

这里采用四相六线步进电机,这款步进电机的驱动电压12V,步进角为7.5度.一圈360度,需要48个脉冲完成。

其相序A-AB-B-BC-C-CD-D-DA。

所以其正转控制脉冲为:

01h,09h,08h,0ch,04h,06h,02h,03h,00h;反转控制脉冲为:

01h,03h,02h,06h,04h,0ch,08h,09h,00h。

单片机的晶振为12MHZ;

(3)、系统电路图:

一、单片机最小系统的硬件原理接线图:

  1、接电源:

VCC(PIN40)、GND(PIN20)。

加接退耦电容0.1uF

  2、接晶体:

X1(PIN18)、X2(PIN19)。

注意标出晶体频率(选用12MHz),还有辅助电容20pF

  3、接复位:

RES(PIN9)。

接上电复位电路,以及手动复位电路,分析复位工作原理

  4、接配置:

EA(PIN31)。

说明原因。

  二、单片机内部I/O部件:

(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)

  1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3;

  2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)

  3、一个串行通信接口;(SCON,SBUF)

4、一个中断控制器;(IE,IP)

根据以上的方案比较与论证确定总体方案,确定硬件原理图。

原理图如下:

图10

3.2主要器件资料

AT89C51单片机

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

·与MCS-51兼容·4K字节可编程FLASH存储器

  ·数据保留时间:

10年·全静态工作:

0Hz-24MHz

  ·三级程序存储器锁定  ·128×8位内部RAM

  ·32可编程I/O线  ·两个16位定时器/计数器

  ·5个中断源  ·可编程串行通道

·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路

·寿命:

1000写/擦循环

 

ULN2803步进电机控制器

ULN2803是一种大电流型高电压器件,步进电机控制器。

内部电路如图11

图11

四系统软件设计

4.1程序流程图4.1

图4.1

4.2程序设计

根据要求,可以将程序分为以下几个部份:

(1)键盘输入程序设计

本系统使用的键盘较少,因此采用独立式键盘接口设计。

独立式键盘适用于按键数量较少的场合。

独立键盘工作原理:

通过上拉电阻接到+5V上。

无按键,处于高电平状态,有键按下电平为低。

在消除抖动影响上是可以采用了软件消抖方法:

在第一次检测到有键按下时,执行一段延时子程序后(约5ms),再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。

(2)步进电机运行步数控制程序

此方案采用单相和双相交差通电处理方式。

此方法具有运行速度稳定,运行步数准确无误等优点。

第五章调试总结

5.1操作控制:

本电路经调试符合题目要求,各项技术指标均达到设计的目的。

具体操作控制方法如下:

1、当电机启停按钮时,步进电机根据制定默认状态开始转动;

2、当电机再启停按钮时,步进电机停止转动;

3、当电机换挡按钮时,步进电机速度快速转动;

4、当电机再换挡按钮时,步进电机速度缓慢转动;

5、当电机正反按钮时,步进电机反转;

6、当电机再正反按钮时,步进电机正转;

5.2设计过程中遇到的主要问题以及解决办法

1、仿真时数码管显示有闪烁,在程序中多加上几次display()函数即可。

2、步进电机在仿真调试的时候,出现往返转的情况,即不能正常转动,PROTEUS中的步进电机MOTOR-STEPPER,不知道具体型号,即不知道其内部接线结构,经过反复的调试,才得以解决问题。

在仿真调试成功的前提下,进行硬件调试的时候,出现步进电机不转的情况,这是因为仿真的步进电机和硬件的步进电机是两个不同的型号,不同步进电机所允许的最快转动速率是不同的,在设置延时程序的时间参数时,一旦超过此值,电机就不能启动。

所以硬件调试时,需要重新设置延时程序的时间参数,问题才得以解决。

3、第一次烧写程序时烧不进去,不知如何解决。

驱动也装好了,各方面都没问题就是不知道问题出在哪里。

5.3心得体会

步进电机的控制可以用硬件,也可以用软件通过单片机实现。

本系统采用了软件方法,即用单片机产生控制脉冲来控制步进电机的运行状态,这种方比采用硬件方法,即采用脉冲分配器芯片进行通用换相控制,电路更加简单,成本更低。

在做本次设计的过程中,我感触最深的当属查阅大量的设计了。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的。

在这次课程设计中,我们运用到了以前所学的专业课知识,如:

C语言、模拟和数字电路知识等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

设计结束了,但是从中得到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

此次设计更锻炼了我的毅力,我觉得做任何事情要善始善终,不要中途放弃,只要自己认真的去对待,再难的问题也能找到办法解决。

最后感谢张老师在我遇到困难时,给予我们的建议与鼓励。

附录一:

引用文献

1何丽民,《单片机初级教程》,北京航空航天大学出版社;

2沙占友,王彦朋,孟志永,《单片机外围电路设计》,电子工业出版社;

3童诗白,华成英,《模拟电子技术基础》,北京高等教育出版社;

4康华光,陈大钦,《电子技术基础》,北京高等教育出版社;

5黄继昌,张海贵,郭继忠,《实用单元电路及其应用》,人民邮电出社;

6谢宜仁,《单片机实用技术问答》,人民邮电出版社;

7张迎新《单片机初级教程——单片机基础》,北京航空航天大。

附录二:

单片机源程序

/********************************************************************

/*********************************/

/*AllCopyAight@2012黄继鹏*/

/*南京林业大学机械电子工程学院*/

/*********************************/

*************************我是分割线*********************************

P0口控制段选p1步进电机P2控制位选

独立键盘P3.0~P3.2

数码管的第一位为正反转标志位0:

正转1:

反转

数码管的第二位为速度标志位0:

单八拍1:

双四拍

数码管的第三位为开关标志位0:

关1:

*

*********************我还是分割线*********************************

#include

#defineucharunsignedchar

#defineuintunsignedint

voiddelay(uintxms);//延时子函数

voidkeyscan();//键盘检测子程序

voiddisplay();

sbitkey1=P3^0;//正反转选择

sbitkey2=P3^1;//速度选择

sbitkey3=P3^2;//执行键

ucharzx,k,sudu,bu;

intn=0,m=4;

ucharcodetable[]={

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

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

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

0x39,0x5e,0x79,0x71,};//数码管显示编码

/*****************************************************

*单双八拍工作方式:

*

*A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)*

******************************************************/

ucharcodeFFZ[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99};//反转

ucharcodeFFW[]={0x99,0x88,0xcc,0x44,0x66,0x22,0x33,0x11};//正转

/*****************************************************

*单四拍工作方式:

*

*A-B-C-D(即一个脉冲,转7.5度)*

******************************************************/

ucharcodeshuangz[]={0x88,0x22,0x44,0x11};

ucharcodeshuangw[]={0x11,0x44,0x22,0x88};

/*****************************************************

*单四拍工作方式:

*

*A-B-C-D(即一个脉冲,转7.5度)*

******************************************************/

//ucharcodedanz[]={0x88,0x22,0x44,0x11};

//ucharcodedanw[]={0x11,0x44,0x22,0x88};

voidmain()

{

TMOD=0x01;

EA=1;

ET0=1;

TH0=-1000/256;

TL0=-1000%256;

TR0=1;

while

(1)

{

keyscan();

display();

//if(zx==1)qudong();

//if(x==0)zx=0;

}

}

voidkeyscan()

{

if(key1==0)//正反转选择

{

delay(5);

if(key1==0)

{

k++;

if(k==2)k=0;

while(!

key1)display();

}

}

if(key2==0)//速度选择

{

delay(5);

if(key2==0)

{

sudu++;

if(sudu==2)sudu=0;

while(!

key2)display();

}

}

if(key3==0)//执行键

{

delay(5);

if(key3==0)

{

zx++;

if(zx==2)zx=0;

while(!

key3)display();

}

}

}

voidtime0()interrupt1

{

TH0=-1000/256;

TL0=-1000%256;

if(zx==1)

{

if(n>=m)

{

if(k==0)//步进电机正转

{

if(sudu==0)//八拍

{

{

for(bu=4;bu>0;bu--)

{

P1=FFZ[bu];

delay

(2);

n=0;

display();

}

}

}

if(sudu==1)//双四拍

{

for(bu=4;bu>0;bu--)

{

P1=shuangz[bu];

//delay

(2);

n=0;

display();

}

}

}

if(k==1)//步进电机反转

{

if(sudu==0)//八拍

{

for(bu=8;bu>0;bu--)

{

P1=FFW[bu];

delay

(2);

n=0;

display();

}

}

if(sudu==1)//双四拍

{

for(bu=4;bu>0;bu--)

{

P1=shuangw[bu];

//delay

(2);

n=0;

display();

}

}

}

}

n++;

}

elsen=0;

}

voiddelay(uintxms)

{

uinti,j;

for(i=110;i>0;i--)

for(j=xms;j>0;j--);

}

voiddisplay()//显示子函数

{

P0=table[k];//正反转标志位

P2=0x01;//选通第一位00000001

delay(3);

P0=table[sudu];//速度标志位

P2=0x02;//选通第二位00000010

delay(3);

P0=table[zx];//开关标志位

P2=0x04;//选通第二位00000100

delay(3);

P2=0x00;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2