步进电机实验报告.docx

上传人:b****1 文档编号:14071418 上传时间:2023-06-20 格式:DOCX 页数:44 大小:457.93KB
下载 相关 举报
步进电机实验报告.docx_第1页
第1页 / 共44页
步进电机实验报告.docx_第2页
第2页 / 共44页
步进电机实验报告.docx_第3页
第3页 / 共44页
步进电机实验报告.docx_第4页
第4页 / 共44页
步进电机实验报告.docx_第5页
第5页 / 共44页
步进电机实验报告.docx_第6页
第6页 / 共44页
步进电机实验报告.docx_第7页
第7页 / 共44页
步进电机实验报告.docx_第8页
第8页 / 共44页
步进电机实验报告.docx_第9页
第9页 / 共44页
步进电机实验报告.docx_第10页
第10页 / 共44页
步进电机实验报告.docx_第11页
第11页 / 共44页
步进电机实验报告.docx_第12页
第12页 / 共44页
步进电机实验报告.docx_第13页
第13页 / 共44页
步进电机实验报告.docx_第14页
第14页 / 共44页
步进电机实验报告.docx_第15页
第15页 / 共44页
步进电机实验报告.docx_第16页
第16页 / 共44页
步进电机实验报告.docx_第17页
第17页 / 共44页
步进电机实验报告.docx_第18页
第18页 / 共44页
步进电机实验报告.docx_第19页
第19页 / 共44页
步进电机实验报告.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

步进电机实验报告.docx

《步进电机实验报告.docx》由会员分享,可在线阅读,更多相关《步进电机实验报告.docx(44页珍藏版)》请在冰点文库上搜索。

步进电机实验报告.docx

步进电机实验报告

步进电机实验报告

 

单片机实验

 

课程名称:

步进电机表实验

授课班级:

2010级自动化三班

任课教师:

***

计划学时:

32学时

实验组员:

张藤耀赵福亮王聪慧

秦菱蔚梁钦郑欢

 

摘要…………………………………………………………………………

第一章概述………………………………………………………………………………………….

1.1实验目的…………………………………………………………………………

1.2实验要求…………………………………………………………………………

1.3步进电机的介绍……………………………………………………………………

1.4研究思路…………………………………………………………………………

第二章硬件设计…………………………………………………………..

2.151单片机介绍……………………………………………………………………

2.2UIN2003A……………………………………………………………………………

2.3ZLG7290……………………………………………………………………………

2.3.17290工作原理…………………………………………………………………

2.3.27290引脚图……………………………………………………………………

第三章相关图像……………………………………………………………….

3.1总电路图………………………………………………………………………

3.27290控制数码管………………………………………………………………………

3.3程序流程图…………………………………………………………………………

3.3.1控制框图…………………………………………………………………………

3.3.2流程图…………………………………………………………………………

第四章调试………………………………………………………………………

第五章心得体会…………………………………………………………………

附录【一】系统程序……………………………………………………………

附录【二】参考文献…………………………………………………………….

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

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

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

通俗一点讲:

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。

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

图1步进电机剖面图

1.4研究思路

1、了解单片机本身内部应有的资源,如:

中断、定时器、计数器、I\O的使用。

2、了解步进电机的工作原理和作用。

3、根据步进电机的原理,分析并分配单片机内部资源,并根据单片机的资源,来实现硬件电路的设计以及软件程序的编写。

4.、对于自己不熟悉的东西,查阅资料。

5、在设计好单片机步进电机时,要学会分析电路中出现的问题,并好好总结。

第二章硬件设计

2.1单片机的简介

单片机是续计算机出现之后,并随着电器时代大到来,人们借助电气技术想实现了自动控制机械,自动生产线甚至自动工厂,但依靠计算机去完成每一个自动的过程,反而有些复杂以及资源的乱费;所以用更方便,更微小,更智能的微型处理器来处理工业现场的测控领域,控制领域,有着重大意义;更何况目前,彩电,冰箱,空调,录像机,VCD,遥控器,游戏机,电饭煲等无处不见单片机的影子,所以单片机将会更满足我们的生活,会更取代大型的计算机。

现在单片机主要按用途,大体上可分为两大类:

1--通用型单片机2--专用型单片机

专用型单片机是指用途比较专一,出厂时程序已经一次性固化好,不能再修该的单片机。

例如电子表里的单片机就是其中的一种。

其生产成本很低。

通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。

小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。

2.2UIN2003

本文选用ULN2003构成步进电机的驱动电路,下面但见介绍下ULN2003的结构和特点:

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。

该电路的特点如下:

ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。

ULN2003方框图如图2所示。

图2ULN2003内部方框图

利用ULN2003以及AT89C54RD设计的步进电机驱动电路如图3所示。

2.3ZLG7290

2.3.17290工作原理

ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。

除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。

此外,ZLG7290B的电路简单,使用也很方便。

用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。

正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。

微控制器可通过两种方式得到用户的键盘输入信息。

其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。

其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根I/O口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。

2.3.27290引脚图

图37290引脚图

 

第三章相关图像

3.1总体电路图

3.27290控制数码管

3.3程序流程图

3.3.1控制框图

3.3.2流程图

第四章调试

1、按照实验原理图连接好电路图。

2、根据原理图编写程序。

3、电路上电,调试程序,观察并控制电机使其按照预期的行为工作。

4、当电机可以通过按键控制其正转加减速、反转加减速程序、点动后,调试结束。

5、优化程序,整理实验结果。

总的来说,过程比较顺利,只是粗心之下,连线出现了错误,对于此,我进行了深刻的自我检讨和批评。

在经过老师的知道后,我们终于实现了实验要求的功能,能实现正反转,快慢变化及点动等。

第五章收获体会

首先是关于课题的选择,开始是准备做一个万年历,经过查看资料后发现计算机的过程实现比较的复杂,而这次的课程设计时间比较短,故放弃了这个想法。

经过各种筛选,最后决定做步进电机的相关设计,起初看着指导书上的内容觉得实现步进电机是比较的简单的,但当我真正开始设计之后才发现并没有想像中那么的简单。

这学期的微机课和单片机课没怎么学好,故感觉在做这个设计时有点困难,比如汇编程序。

后来决定用c来编写程序,这样稍微轻松点,在设计程序中涉及到了中断程序的编写,发现已学的理论知识完全用不上来,也许这就是理论脱离时间的结果,在期间恶补了单片机的中断知识及其相应的程序编写。

通过这次课程设计实验,我对步进电机调速控制系统有了实际的了解和认识,提高了动手能力。

本次实验把书本上、课堂上学到的知识灵活地运用到实际的实物上,感觉是对学以致用的一种锻炼和考验提高了用所学知识解决实际问题的能力,加深和巩固的对知识的理解和掌握。

控制电路、驱动电路、测速反馈电路、步进电机几个模块的整合,也实际中提高了自己对系统的认识,有了些整体的概念和思维观。

实验是团队合作完成的,从设计电路到设计软件,然后仿真到做硬件做出符合要求的控制系统,不仅从实际中锻炼了动手能力而且学会了团队合作,互相学习,提高自己。

这次的课程设计总的感觉就是很累,但在不断的学习机实践当中学到了很多东西,知识的提高那是最基础的,中断,电路工作及相关的知识都是得到了提升;然后就是个人处理问题能力的提高,虽然说这次的设计不算一个大的项目,但也算是小的雏形,课题的选择,前期的准备,理论的实践,知识的提高,处理实际问题及后期的总结归纳。

付出去收获往往是成正比的,这次的课程设计中得到了充分的体现。

总的来说,这次设计的步进电机控制电路还是比较成功的在设计中遇到了很多问题,最后在自己的思考下,宿舍大家一起经过激烈的探讨下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。

不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识。

同时,对未来有了更多的信心。

最后,对文老师表示忠心的感谢,老师,你辛苦了。

附录【一】系统程序

主程序:

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

基于51单片机的异步电机控制程序

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

#include

#include"VIIC_C51.H"

#include"ZLG7290.h"

#defineucharunsignedchar

#defineuintunsignedint

/*四相步进电动机单、双八拍运行状态表

111111100FEHA

111111000FCHAB

111111010FDHB

111110010F9HBC

111110110FBHC

111100110F3HCD

111101110F7HD

111101100F6HDA

*/

sbitPA=P1^0;//P1控制电机

sbitPB=P1^1;

sbitPC=P1^2;

sbitPD=P1^3;

sbitRST=P1^4;

sbitKEY_INT=P3^2;//看是否更改为P3^2

sbitSCL=P1^6;

sbitSDA=P1^7;

ucharcodestep_tab[9]={0xff,0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};

uintcodedelaytime[4]={60,40,20,10};//延时时间列表

//变量的定义

uchardirection;//状态变量0-正向,1-反向

ucharcontinuous;//状态变量0-指定步数运行,1-连续速度运行

ucharrun;//状态变量0-电机未运行,1-电机运行中

ucharspeed_num;//连续速度运行标号1-4

ucharcur_step;//八拍运行状态

ucharstep_num;//指定运行的步数,范围0-99

//键值定义

#defineKey_dir1//方向键

#defineKey_Run2//启动键

#defineKey_stop3//停止键

#defineKet_Step4//单步运行键

#defineKey_step_add5//步数加键

#defineKey_step_sub6//步数减键

#defineKey_speed_add7//速度加键

#defineKey_speed_sub8//速度减键

#defineKey_Con_Set9//连续运行与指定步数运行切换键。

//定义键盘中断标志,FlagINT0=1表示有键按下

volatilebitFlagINT0=0;

voidKeyProsess(ucharkey);

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

函数:

INT0_SVC()

功能:

ZLG7290键盘中断服务程序

说明:

中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平

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

voidINT0_SVC()interrupt0

{

unsignedcharKeyValue;

//读取键值

KeyValue=ZLG7290_GetKey();

//处理键值

KeyProsess(KeyValue);

}

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

函数:

Delay()

功能:

定时器实现延时tms

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

voidDelay(unsignedintt)

{

do

{//TH=64536

TH1=0xFC;

TL1=0x18;

TR1=1;//启动定时器T1并等待中断

while(!

TF1);

TF1=0;//中断请求标致清零

TR1=0;//停止T1定时器

}while(--t);

}

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

函数:

DispDir()

功能:

显示方向子程序

说明:

dat0正向,1反向

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

voidDispDir(uchardat)

{

if(dat==0)

{

ZLG7290_SendCmd(0x60+7,0x0f);//"F"表示正转

}

else

{

ZLG7290_SendCmd(0x60+7,0x0b);//"B"表示反转

}

}

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

函数:

DispSpeed()

功能:

显示速度号子程序

说明:

dat1~4代表四种不同的速度

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

voidDispSpeed(uchardat)

{

ZLG7290_SendCmd(0x60+5,dat);

}

 

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

函数:

DispStepNum()

功能:

显示运行步数号程序

说明:

间接实现转过指定角度=步距角*步数

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

voidDispStepNum(uchardat)

{

unsignedchard;

d=dat/10;

ZLG7290_SendCmd(0x60+1,d);

d=dat-d*10;

ZLG7290_SendCmd(0x60+0,d);

}

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

函数:

DispContinuous()

功能:

显示运行状态,连续还是指定步数

说明:

0-指定步数运行,1-连续速度运行

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

voidDispContinuous(uchardat)

{

if(dat==0)

{

ZLG7290_SendCmd(0x60+3,0x0d);//'d'表示指定步数运行状态

}

else

{

ZLG7290_SendCmd(0x60+3,0x0c);//'C'表示连续速度运行

}

}

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

函数:

OnStep()

功能:

实现单步运行

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

voidOneStep()

{

if(direction==0)

{//正向

if(cur_step==8)

{

cur_step=1;

}else

{

cur_step++;

}

P1=step_tab[cur_step];//输出

}

else

{

if(cur_step<=1)

{

cur_step=8;

}else

{

cur_step--;

}

P1=step_tab[cur_step];//输出

}

}

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

函数:

OnContinue()

功能:

连续运行

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

voidOnContinue()

{

if(continuous!

=0)

{//连续运行

while(run!

=0)

{

OneStep();

Delay(delaytime[speed_num-1]);//延迟目的改变转速

}

}

else

{//指定步数运行

if(step_num!

=0)

{

OneStep();

Delay(50);//50ms延迟

step_num--;

DispStepNum(step_num);//更新显示步数即显示剩下没有执行的步数

if(run==0)return;//若停止键按下,则停止

}

else

{

run=0;//停止

return;

}

}

}

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

函数:

KeyProsess()

功能:

键值处理程序

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

voidKeyProsess(ucharkey)

{

switch(key)

{

caseKey_dir:

//方向键

if(run==0)

{

if(direction==0)

direction=1;

else

direction=0;

DispDir(direction);

}

break;

caseKey_Run:

//启动键

if(run==0)

{

run=1;

}

break;

caseKey_stop:

//停止键

if(run!

=0)

{

run=0;

}

break;

caseKet_Step:

//单步运行键实现点动功能

if(run==0)

{

run=1;

OneStep();

run=0;

}

break;

caseKey_step_add:

//步数加键n=(步距角*60)/(360*t*0.001)单位r/min

if(run==0)

{

if(step_num==99)

{

step_num=0;

}else

{

step_num++;

}

DispStepNum(step_num);

}

break;

caseKey_step_sub:

//步数减键

if(run==0)

{

if(step_num==0)

{

step_num=99;

}else

{

step_num--;

}

DispStepNum(step_num);

}

break;

caseKey_speed_add:

//速度加键

if(run==0)

{

if(speed_num==4)

{

speed_num=1;

}else

{

speed_num++;

}

DispSpeed(speed_num);

}

break;

caseKey_speed_sub:

//速度减键

if(run==0)

{

if(speed_num==1)

{

speed_num=4;

}else

{

speed_num--;

}

DispSpeed(speed_num);

}

break;

caseKey_Con_Set:

//连续运行与指定步数运行切换键。

if(run==0)

{

if(continuous==0)

{

continuous=1;

}else

{

continuous=0;

}

DispContinuous(continuous);

}

break;

default:

break;

}

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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