ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:457.93KB ,
资源ID:14071418      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14071418.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(步进电机实验报告.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

步进电机实验报告.docx

1、步进电机实验报告步进电机实验报告单片机实验 课程名称:步进电机表实验授课班级:2010级自动化三班任课教师:*计划学时:32学时实验组员:张藤耀 赵福亮 王聪慧 秦菱蔚 梁钦 郑欢 摘要第一章 概述.1.1实验目的 1.2实验要求1.3步进电机的介绍1.4 研究思路第二章 硬件设计. 2.1 51单片机介绍 2.2 UIN2003A2.3 ZLG7290 2.3.1 7290工作原理 2.3.2 7290引脚图第三章 相关图像. 3.1 总电路图 3.2 7290控制数码管 3.3 程序流程图 3.3.1 控制框图 3.3.2 流程图第四章 调试第五章 心得体会 附录【一】 系统程序附录【二】

2、 参考文献.步进电机作为 执行元件 ,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的 目的 ;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。图1 步进电机剖面图1.4研究思路1、了解单片机本身内部应有的资源,如:中断、定时器、计数器、IO的使用。2、了解步进电机的工

3、作原理和作用。3、根据步进电机的原理,分析并分配单片机内部资源,并根据单片机的资源,来实现硬件电路的设计以及软件程序的编写。4、对于自己不熟悉的东西,查阅资料。5、在设计好单片机步进电机时,要学会分析电路中出现的问题,并好好总结。第二章 硬件设计2.1 单片机的简介单片机是续计算机出现之后,并随着电器时代大到来,人们借助电气技术想实现了自动控制机械,自动生 产线甚至自动工厂,但依靠计算机去完成每一个自动的过程,反而有些复杂以及资源的乱费;所以用更方便,更微小,更智能的微型处理器来处理工业现场的测控领域,控制领域,有着重大意义;更何况目前,彩电,冰箱,空调,录像机,VCD,遥 控器,游戏机,电饭

4、煲等无处不见单片机的影子,所以单片机将会更满足我们的生活,会更取代大型的计算机。现在单片机主要按用途,大体上可分为两大类: 1-通用型单片机 2-专用型单片机 专用型单片机是指用途比较专一,出厂时程序已经一次性固化好, 不能再修该的单片机。例如电子表里的单片机就是其中的一种。 其生产成本很低。 通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应 用程序就可完成不同的功能。小到家用电器仪器仪表,大到机器设 备和整套生产线都可用单片机来实现自动化控制。 2.2 UIN2003本文选用ULN2003构成步进电机的驱动电路,下面但见介绍下ULN2003的结构和特点:ULN2003 是高耐压、大

5、电流达林顿陈列,由七个硅NPN 达林顿管组成。该电路的特点如下:ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。ULN2003方框图如图2所示。图2 ULN2003内部方框图利用ULN2003以及AT89C54RD设计的步进电机驱动电路如图3所示。2.3 ZLG72902.3.1 7290工作原理ZLG7290的核心是一块ZLG7290B芯片,它

6、采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。此外,ZLG7290B的电路简单,使用也很方便。用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。微控制器可通过两种方式得到用户的键盘输入

7、信息。其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根IO口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。2.3.2 7290引脚图 图3 7290引脚图第三章 相关图像3.1 总体电路图3.2 7290控制数码管3.3 程序流程图3.3.1控制框图3.3.2 流程图第四章 调试 1、 按照实验原理图连接好电路图。 2、 根据原理图编写程序。 3、 电路上电,调试程序,观察并控制电机使其按照预期的行为工作。 4、 当电机可以通过按键控制其正转加减速

8、、反转加减速程序、点动后,调试结束。 5、 优化程序,整理实验结果。 总的来说,过程比较顺利,只是粗心之下,连线出现了错误,对于此,我进行了深刻的自我检讨和批评。在经过老师的知道后,我们终于实现了实验要求的功能,能实现正反转,快慢变化及点动等。第五章 收获体会首先是关于课题的选择,开始是准备做一个万年历,经过查看资料后发现计算机的过程实现比较的复杂,而这次的课程设计时间比较短,故放弃了这个想法。经过各种筛选,最后决定做步进电机的相关设计,起初看着指导书上的内容觉得实现步进电机是比较的简单的,但当我真正开始设计之后才发现并没有想像中那么的简单。这学期的微机课和单片机课没怎么学好,故感觉在做这个设

9、计时有点困难,比如汇编程序。后来决定用c来编写程序,这样稍微轻松点,在设计程序中涉及到了中断程序的编写,发现已学的理论知识完全用不上来,也许这就是理论脱离时间的结果,在期间恶补了单片机的中断知识及其相应的程序编写。通过这次课程设计实验,我对步进电机调速控制系统有了实际的了解和认识,提高了动手能力。本次实验把书本上、课堂上学到的知识灵活地运用到实际的实物上,感觉是对学以致用的一种锻炼和考验 提高了用所学知识解决实际问题的能力,加深和巩固的对知识的理解和掌握。控制电路、驱动电路、测速反馈电路、步进电机几个模块的整合,也实际中提高了自己对系统的认识,有了些整体的概念和思维观。 实验是团队合作完成的,

10、从设计电路到设计软件,然后仿真到做硬件做出符合要求的控制系统,不仅从实际中锻炼了动手能力而且学会了团队合作,互相学习,提高自己。这次的课程设计总的感觉就是很累,但在不断的学习机实践当中学到了很多东西,知识的提高那是最基础的,中断,电路工作及相关的知识都是得到了提升;然后就是个人处理问题能力的提高,虽然说这次的设计不算一个大的项目,但也算是小的雏形,课题的选择,前期的准备,理论的实践,知识的提高,处理实际问题及后期的总结归纳。付出去收获往往是成正比的,这次的课程设计中得到了充分的体现。总的来说,这次设计的步进电机控制电路还是比较成功的 在设计中遇到了很多问题,最后在自己的思考下,宿舍大家一起经过

11、激烈的探讨下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识。同时,对未来有了更多的信心。最后,对文老师表示忠心的感谢,老师,你辛苦了。 附录【一】 系统程序主程序:/* 基于51单片机的异步电机控制程序*/#include#include VIIC_C51.H#include ZLG7290.h#define uchar unsigned char#define uint unsigned int/*四相步进电动机单、双八拍运行状态表11111110 0FEH A

12、11111100 0FCH AB11111101 0FDH B11111001 0F9H BC11111011 0FBH C11110011 0F3H CD11110111 0F7H D11110110 0F6H DA*/sbit PA=P10; /P1控制电机sbit PB=P11;sbit PC=P12;sbit PD=P13;sbit RST=P14;sbit KEY_INT=P32; /看是否更改为P32sbit SCL=P16;sbit SDA=P17;uchar code step_tab9=0xff,0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6;

13、uint code delaytime4 = 60,40,20,10;/延时时间列表/变量的定义uchar direction; /状态变量 0正向,1反向uchar continuous; /状态变量 0指定步数运行,1连续速度运行uchar run; /状态变量 0电机未运行,1电机运行中uchar speed_num; /连续速度运行标号1-4uchar cur_step; /八拍运行状态uchar step_num; /指定运行的步数,范围0-99/键值定义#define Key_dir 1 /方向键#define Key_Run 2 /启动键#define Key_stop 3 /停

14、止键#define Ket_Step 4 /单步运行键#define Key_step_add 5 /步数加键#define Key_step_sub 6 /步数减键#define Key_speed_add 7 /速度加键#define Key_speed_sub 8 /速度减键#define Key_Con_Set 9 /连续运行与指定步数运行切换键。/定义键盘中断标志,FlagINT0=1 表示有键按下volatile bit FlagINT0 = 0;void KeyProsess( uchar key );/*函数:INT0_SVC()功能:ZLG7290 键盘中断服务程序说明:中断

15、触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平*/void INT0_SVC() interrupt 0 unsigned char KeyValue; /读取键值 KeyValue=ZLG7290_GetKey(); /处理键值 KeyProsess(KeyValue);/*函数:Delay()功能:定时器实现延时tms*/void Delay(unsigned int t) do /TH64536 TH1 = 0xFC; TL1 = 0x18; TR1 = 1; /启动定时器T1并等待中断 while ( !TF1 ); TF1 = 0; /中断请求标致清零 TR1 = 0;

16、 /停止T1定时器 while (-t);/*函数:DispDir()功能:显示方向子程序说明:dat 0 正向,1反向*/void DispDir(uchar dat) if(dat = 0) ZLG7290_SendCmd(0x60+7,0x0f); /F 表示正转 else ZLG7290_SendCmd(0x60+7,0x0b); /B表示反转 /*函数:DispSpeed()功能:显示速度号子程序说明:dat 14 代表四种不同的速度*/void DispSpeed(uchar dat) ZLG7290_SendCmd(0x60+5,dat);/*函数:DispStepNum()功能

17、:显示运行步数号程序说明:间接实现转过指定角度=步距角*步数 */void DispStepNum(uchar dat) unsigned char d; d = dat / 10; ZLG7290_SendCmd(0x60+1,d); d = dat - d * 10; ZLG7290_SendCmd(0x60+0,d);/*函数:DispContinuous()功能:显示运行状态,连续还是指定步数说明:0指定步数运行,1连续速度运行*/void DispContinuous(uchar dat) if(dat = 0) ZLG7290_SendCmd(0x60+3,0x0d); /d表示指

18、定步数运行状态 else ZLG7290_SendCmd(0x60+3,0x0c); /C表示连续速度运行 /*函数:OnStep()功能:实现单步运行*/void OneStep() if(direction = 0) /正向 if(cur_step = 8) cur_step = 1; else cur_step +; P1 = step_tabcur_step; /输出 else if(cur_step = 1) cur_step = 8; else cur_step -; P1 = step_tabcur_step; /输出 /*函数:OnContinue()功能:连续运行*/void

19、 OnContinue() if(continuous != 0) /连续运行 while(run!=0) OneStep(); Delay(delaytimespeed_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()功能:键

20、值处理程序*/void KeyProsess( uchar key ) switch(key) case Key_dir : /方向键 if(run=0) if(direction = 0) direction =1; else direction = 0; DispDir(direction); break; case Key_Run : /启动键 if(run =0) run =1; break; case Key_stop: /停止键 if(run !=0) run =0; break; case Ket_Step: /单步运行键 实现点动功能 if(run =0) run =1; On

21、eStep(); run =0; break; case Key_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; case Key_step_sub: /步数减键 if(run =0) if(step_num = 0) step_num = 99; else step_num -; DispStepNum(step_num); break; case Key_spee

22、d_add: /速度加键 if(run =0) if(speed_num = 4) speed_num = 1; else speed_num +; DispSpeed(speed_num); break; case Key_speed_sub: /速度减键 if(run =0) if(speed_num = 1) speed_num = 4; else speed_num -; DispSpeed(speed_num); break; case Key_Con_Set : /连续运行与指定步数运行切换键。 if(run =0) if(continuous = 0) continuous = 1; else continuous = 0; DispContinuous(continuous); break; default: break;

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

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