基于51单片机的步进电机的控制设计共15页.docx

上传人:b****3 文档编号:1577387 上传时间:2022-10-23 格式:DOCX 页数:19 大小:5.14MB
下载 相关 举报
基于51单片机的步进电机的控制设计共15页.docx_第1页
第1页 / 共19页
基于51单片机的步进电机的控制设计共15页.docx_第2页
第2页 / 共19页
基于51单片机的步进电机的控制设计共15页.docx_第3页
第3页 / 共19页
基于51单片机的步进电机的控制设计共15页.docx_第4页
第4页 / 共19页
基于51单片机的步进电机的控制设计共15页.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于51单片机的步进电机的控制设计共15页.docx

《基于51单片机的步进电机的控制设计共15页.docx》由会员分享,可在线阅读,更多相关《基于51单片机的步进电机的控制设计共15页.docx(19页珍藏版)》请在冰豆网上搜索。

基于51单片机的步进电机的控制设计共15页.docx

基于51单片机的步进电机的控制设计共15页

 

 

单片机应用系统(xìtǒng)设计报告

 

设计(shèjì)题目:

步进电机(diànjī)控制器设计

专业班级:

学生姓名:

指导教师:

设计时间:

2016年12月

 

一、设计(shèjì)要求(yāoqiú)及方案(fāngàn)

1、设计要求

可以实现步进电机正转和反转控制及速度的控制,同时实现步进电机步数的控制。

2、设计方案

本次设计采用AT89C51单片机控制一个四相步进电机。

单片机输出脉冲序列,驱动步进电机转动;并设置开关、按键电路,来控制步进电机的2挡转速,即加速、减速;以及步数的变化,即四拍驱动方式、八拍驱动方式,同时控制步进电机的转动方向,即正转、反转。

单片机

AT89C51

设计方案总体框图:

 

二、步进电机简介

1、步进电机工作原理

步进电机是一种将电脉冲转化为角位移的执行机构。

当步进驱动器接收到一个(yīɡè)脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率(pínlǜ)来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的多相时序控制器。

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

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

因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。

步进电机作为执行元件,是机电一体化的关键产品(chǎnpǐn)之一,广泛应用在各种自动化控制系统中。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

2、步进电机磁力方式选择

步进电机的励磁方式主要分为全步励磁和半步励磁两种,其中全步励磁又有一相励磁和二相励磁之分,半步励磁又称一-二相励磁。

一相励磁:

在每一瞬间,步进电机只有一个线圈导通。

每送出一个励磁信号,步进电机旋转1.8°,这是三种励磁方式中最简单的一种。

其特点是:

精确度好、消耗电力小,但输出转矩小,震动较大。

二相励磁(lìcí):

在每一瞬间,步进电机有两个线圈同时导通。

每送一个励磁信号,步进电机旋转1.8°。

其特点是:

输出转矩大,振动小。

一-二相励磁:

为一相励磁与二相励磁交替导通的方式。

每送一个(yīɡè)励磁信号,步进电机旋转0.9°。

其特点是:

分辨率高,运转平滑。

本次(běncì)设计,八拍驱动时采用一相励磁方式,四拍驱动时采用二相励磁方式。

八拍磁力顺序表:

时序

1

2

3

4

5

6

7

8

置1

A

-

B

-

C

-

D

-

置0

-

D

-

A

-

B

-

C

四拍磁力顺序表:

时序

1

2

3

4

置0

D

A

B

C

置1

A,B

B,C

C,D

D,A

 

三、硬件电路设计

1、晶振电路设计

AT89C51单片机各功能部件的运行都以时钟控制信号为基准,有条不紊,一拍一拍地工作。

本次设计时钟电路采用内部时钟方式。

AT89C51内部有一个用于构成震荡器的高增益方向放大器,它的输入端为芯片引脚XTAL1,输出端引脚为XTAL2。

这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器。

本次设计选择振荡频率为12MHZ的石英晶体。

图晶振电路(diànlù)

2、复位(fùwèi)电路设计

AT89C51的复位是由外部的复位电路实现的。

复位引脚RST通过(tōngguò)一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

复位电路通常采用上电复位和按钮复位两种方式,本次设计采用上电复位方式。

图复位电路

 

3、开关(kāiguān)、按键电路

本次设计(shèjì)采用开关、按键电路来控制步进电机的正转、反转、加速、减速、步数。

并且由单片机的P2口对其进行控制。

图开关、按键(ànjiàn)电路

 

4、驱动电路设计

本设计采用ULN2003作为驱动器驱动步进电机运转,把单片机P1口输出的脉冲信号转化为脉冲电流,驱动步进电机运转。

图驱动(qūdònɡ)电路

5、总电路图

图总电路图

四、软件(ruǎnjiàn)程序设计

1、程序设计(chénɡxùshèjì)思路

通过分析可以看出,实现系统功能可以采用多种方法,由于随时(suíshí)有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成2个部分的工作才能满足课题要求,即主程序部分、定时器中断部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之(fǎnzhī)系统停止工作;定时器中断器部分,控制按键标志位值的改变,从而可以控制主程序中步进电机(diànjī)转速、转向、步数。

2、程序框图

 

3、程序(chéngxù)

#include

#defineucharunsignedchar

#defineuintunsignedint

uinttemp=4,flag=0;

intk=100,m=0;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

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

}

sbitP2_5=P2^5;

sbitP2_6=P2^6;

sbitP2_7=P2^7;

ucharcheck_key1()

{

ucharn;

P2=0xff;

n=P2;

if(n!

=0xdf)

return1;

else

return0;

}

ucharcheck_key2()

{

ucharn;

P2=0xff;

n=P2;

if(n!

=0xbf)

return1;

else

return0;

}

ucharcheck_key()

{

ucharn;

P2=0xff;

n=P2;

if(n!

=0x7f)

return1;

else

return0;

}

voidtimer0()interrupt1

{

switch(P2)

{

case0xde:

if(check_key1()==1)

{

delay(5);

if(check_key1()==1)

{temp=0;

P1=0xf0;}

}

break;

case0xdd:

if(check_key1()==1)

{

delay(5);

if(check_key1()==1)

{temp=1;

P1=0xf0;}

}

break;

case0xbb:

if(check_key2()==1)

{

delay(5);

if(check_key2()==1)

temp=2;

}

while(check_key2());

break;

case0xb7:

if(check_key2()==1)

{

delay(5);

if(check_key2()==1)

temp=3;

}

while(check_key2());

break;

case0x6f:

if(check_key()==1)

{

delay(5);

if(check_key()==1)

{

flag++;

if(flag>=2)

flag=0;

}

}

while(check_key());

break;

}

}

voidsudu0()

{

if(temp==2)

{

k+=200;

if(k>=1000)

k=1000;

temp=0;

}

if(temp==3)

{

k-=200;

if(k<=0)

k=100;

temp=0;

}

}

voidsudu1()

{

if(temp==2)

{

k+=200;

if(k>=1000)

k=1000;

temp=1;

}

if(temp==3)

{

k-=200;

if(k<=0)

k=100;

temp=1;

}

}

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

sbitP1_3=P1^3;

voidmain(void)

{

TMOD=0x01;

EA=1;

ET0=1;

TR0=1;

P1_0=0;

P1_1=0;

P1_2=0;

P1_3=0;

while

(1)

{

for(m=1;m<=8;m++)

{

if(flag==0)

{

if(temp==0)

{

switch(m)

{

case1:

P1_0=1;

delay(k);

break;

case2:

P1_3=0;

delay(k);

break;

case3:

P1_1=1;

delay(k);

break;

case4:

P1_0=0;

delay(k);

break;

case5:

P1_2=1;

delay(k);

break;

case6:

P1_1=0;

delay(k);

break;

case7:

P1_3=1;

delay(k);

break;

case8:

P1_2=0;

delay(k);

break;

}

sudu0();

if(flag==1)

P1=0xe0;

}

if(P1==0xe0)

break;

if(temp==1)

{

switch(m)

{

case1:

P1_

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1