步进电机角度控制设计_第1页
步进电机角度控制设计_第2页
步进电机角度控制设计_第3页
步进电机角度控制设计_第4页
步进电机角度控制设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录摘要.11设计任务与要求. 21.1设计目的. 21.2设计要求和设计指标. 22方案分析.33系统硬件部分.43.1主控模块. 43.2键盘输入模块.73.3电机模块. 83.4显示模块.114系统软件部分.134.1整体流程图及主程序.134.2按键流程图及程序.144.3显示模块程序.194.4电动机模块流程图及程序.204.5中断程序.225仿真运行.246心得体会.25参考文献.26附录一:Protues硬件仿真图.27附录二:系统程序.28摘要步进电机在控制系统中具有很广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器或角位移发生器等。步进电机是将电脉冲

2、信号转变为角位移或线位移的开环控制元步进电机件。速的目的。此次设计使用 C 数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到 C 语言,适开发 。硬件部分使用 89C51 作为主控芯片,并使用 ULN2003A 将单片机的信号放大以控制步进电机,同时使用 4 位数码管显示转动角度及次数。关键词:步进电机 C 语言 AT89C51 ULN2003A 转动角度1 设计任务与要求1.1设计目的设计制作和调试一个由 8086 习熟悉键盘控制和七段数码管的使用,掌握步进电机的角度控制和角度显示方法。1.2设计要求和设计指标1在显示器上显示任意四位十进制数2将8 个键定义键值为07,按任意键在显

3、示器上显示对应键值3实现:(1)定义键盘按键:5 个为数字键 15;3个功能键:设置 SET、清零 开始 (2)显示器上第一位显示次数,后三位显示每次行走的角度;(3)通过键盘的按键,设置步进电机各次的角度值;第一位设置次数,后三位设置角度值。(4)按 START键启动步进电机开始转动,按 SET 键停止;按 CLR 键清零。2 方案分析 8 个键盘按键:5 个为数字键 15;3 个功能键:设置 SET、清零 CLR、开始 转动次数和每次转动角度;按START键启动电机开始转动,按SET 键停止;按CLR键清零。综合分析之后,我们应该将电路实现利用键盘按键通过 89C51 的 P3 口实 89

4、C51 的 P0 口和 P1 们可以通过 P2 口控制 ULN2003A 驱动电动机运行。分析。通过分析我们可以画出系统图,如图 2-1 所示。键盘模块主控模块图 2-1 系统图3系统硬件部分3.1主控模块3.1.1 AT89C51芯片本次设计是使用AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100 ATMEL高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,89C2

5、051 是它的一种精简版本。89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51的40个引脚主要有一下几种(2)GND:接地。(3)P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在 FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 口是一个部提供上拉电阻的 8 位双向 I/O 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被部上拉为高,可用作输入

6、,P1 口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1 口作为低八位地址接收。 口为一个部上拉电阻的 8 位双向 I/O 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器 当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。(6)P3 口:P3 口管脚是 8 个带部上拉电阻的

7、双向 I/O 口,可接收输出 4个 TTL 门电流。当 P3 口写入“1”后,它们被部上拉为高电平,并用作输入。 故。P3 口还有其他一些特殊功能,本事设计没有使用,故在此不做叙述。(7)RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。(8)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 存储器时,将跳过一个ALE脉冲。如想禁止ALE 的输出可在 SFR8EH 地址上置0。此时, ALE只有在执行 指令是 ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外

8、部执行状态 ALE禁止,置位无效。每个机器周期两次 /PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。(10)/EA/VPP:当/EA 保持低电平时,则在此期间为外部程序存储器ROM式 1 时,/EA 将部锁定为 RESET;当/EA 端保持高电平时,单片机读取部程序 ROM时读取完部ROM后自动读取外部 FLASH编程期间,此引脚也用于施加12V图3-1 AT89C51芯片3.1.2时钟电路及复位电路在本次课程设计中,我们用到AT89C51单片机。而他需要一些特定的控制复位电路等。如图 3-2 所示是我们的时钟电路,由电容 C1、C2 以及晶振组成。图 3-2

9、时钟电路如图 3-3 所示是我们的复位电路。图 3-3 复位电路3.2键盘输入模块发现有键闭合,求闭合键的键码。根据这一过程的不同,键盘可以分为两种,即对应于被安检的 ASCII 大、按键较多等特点。非编码键盘恰如一组开关,一般组成行和列矩阵。其全部工作过程,如按键的识别、键的代码获取、防止串键及消抖等问题,都靠程序完成。因此,它所需要的硬件少,价格便宜,一般作为单板机、智能仪表等简单的输入设备。立式键盘每个按键独占一根 I/OI/O线而变得无法实用。矩阵式键盘电路将 I/O 可达行线数 n 乘以列线数 m。由此可以看到行列式键盘在按键较多时,可以节省 I/O电源上,在没有键按下时,行线处于高

10、电平状态。 I/O的电平状态读入累加器中,若无键按下,行线仍保持高电平状态,若有键按下,法是:依次从一条列线上输出低电平,然后检查各行线的状态,若全为高电平,说明闭合键不在该列;若不全为1,则说明闭合键在该列,且在变为低电平的行的交点上。 I/O口输出的数据和从行线 I/O口读入的数据可以求出闭合键的键号。图 3-4 键盘模块原理图3.3电机模块3.3.1 步进电机结构及工作原理非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机的驱动电路根据控制信号工作,控制信号由 8086 通过 8255A 产此次设计采用四相

11、式步进电机。生。图 3-5 步进电机励磁线圈(1) 步进电机工作原理说明组组成。步进电机组成和电气连接分别如图 3-6 和 3-7 所示。图3-6 转子和定子示意图图3-7 电气连接示意图当 S1 连通电源后,定子磁场将产生一个靠近转子为 N 极,远离转子为 SS1、S4的送电次序,就能控制转子旋转的方向。例如:若送电的顺序为S1 闭合断开 S4闭合 断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:断开S2 闭合断开S3 闭合若送电的顺序为S4闭合断开S3闭合断开S2闭合断开S1闭合 断开,周而复始的循环,则电机就逆时针旋转,原理同理。3.3.2 电机驱动ULN2003A简介U

12、LN2003 是高耐压、大电流达林顿列,由七个硅 NPN 达林顿管组成。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电ULN2003A管脚如图3-8所示。图3-8 ULN2003A管脚图ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。ULN2003部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列 16 脚封装,NPN 晶体管

13、矩阵,最大驱动电压=50V,电流=500mA,输入电压TTL COMS,由达林顿管组成驱动电路。ULN是集成达林顿管IC,部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003 是一个非门电路,包含 7 个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。由于ULN2003有这些特点,所以经常作为显示驱动、继电器驱动、照明灯驱动、电磁阀驱动、伺服电机、步进电

14、机驱动等电路中。ULN2003A部结构如图3-9所示。图3-9 ULN2003A部结构图图 3-10 电机模块原理图3.4显示模块一起,而阳极是独立的。排列如图 3-11,共阳极数码管结构示意图如图3-12 所示。图 3-11 数码管外引线排列图 3-12 共阳极数码管结构示意图在多位 LED 显示时,为了节省 I/O 口线,简化电路,降低成本,一般采用器来说,每隔一段时间轮流点亮一次,形成动态显示。图 3.13 显示模块原理图4 系统软件部分4.1整体流程图及主程序系统的整体软件流程图如图 4-1 所示开始按下某一数字键数码管显示转动次数和转动角度电机按数码管显示的数字开始运行停止键是否被按

15、下清零键是否被按下图 4-1 系统流程图主程序如下:void main()/主函数TMOD=0 x01;/T0工作方式1TH0=0 xd8;TL0=0 xf0;TR0=0;ET0=1;EA=1;/设初值,0.01秒触发一次/关闭T0定时器/允许T0定时器中断/开启总中断允许P2=0 x03;while(1)scan();show();if(num1=0)/并将状态位置0时器TR0=0;status=0;4.2按键流程图及程序按键流程图如图4-2所示某一数字键被按下,则寄存器被赋予相应值开始键被按下,寄存器将值传给电机模块,电机开始转动停止键被按下,则寄存器被清零,电机停止转动结束图4-2 按键

16、模块流程图按键模块程序如下:void scan()/按键扫描if(START=0&status=0)/开始键:只有当电机不运行时才有效,且将状态位置 1;delay(10);if(START=0&status=0)status=1;TR0=1;/开定时器 0num1=num;if(SET=0&status=1)将状态位置 0;/停止键:只有当电机运行是有效,delay(10);if(SET=0&status=1)status=0;TR0=0;/关定时器0if(CLR=0&status=0)零键才有效delay(10);if(CLR=0&status=0)P1=0;P0=0 xff;sh=0;i

17、f(k1=0&status=0)不运行时,数字键才有效/数字键 1:设置为 3 。只有当电机delay(10);if(k1=0&status=0)num=3;num1=3;bai=0;shi=4;ge=5;sh=1;key=1;if(k2=0&status=0)/数字键2:设置为4 090delay(10);if(k2=0&status=0)num=4;num1=4;bai=0;shi=9;ge=0;sh=1;key=2;if(k3=0&status=0)/数字键3:设置为5 090delay(10);if(k3=0&status=0)num=5;num1=5;bai=0;shi=9;ge=0

18、;sh=1;key=2;if(k4=0&status=0)/数字键4:设置为6delay(10);if(k4=0&status=0)num=6;num1=6;bai=0;shi=4;ge=5;sh=1;key=1;if(k5=0&status=0)/数字键5:设置为7 090delay(10);if(k5=0&status=0)num=7;num1=7;bai=0;shi=9;ge=0;sh=1;key=2;4.3显示模块程序由于使用的是4照一定的顺序轮流显示,只要扫描频率足够高,由于人眼的“视觉暂留”现象,就能连续稳定的显示。程序如下:void show()/数码管显示if(sh=1)P1=

19、0 x01;P0=smgnum;/显示第一位P0=0 xff;P1=0 x02;/显示第二位/显示第三位/显示第四位P0=smgbai;P0=0 xff;P1=0 x04;P0=smgshi;P0=0 xff;P1=0 x08;P0=smgge;P0=0 xff;4.4电动机模块流程图及程序要是步进电机模块按一定方向转动,需要轮流给 P2.0P2.3 口脉冲,故采 4-3 初始值为 初始值为0 x02)开始判断所需角度为45度还是90度奇X、Y均左移一位Y左移一位X、Y进行或运算并将值送到P2口否是停止电机结束图 4-3 电机模块流程图电机模块程序如下:void motor()/电机运行if(

20、key=1)/每次转动角度为45度时if(c%2=0)x=_crol_(x,1);x=x|_crol_(x,4);elsey=_crol_(y,1);y=y|_crol_(y,4);c=c+1;P2=x|y;if(key=2)/每次转动角度为90度时x=_crol_(x,1);x=x|_crol_(x,4);y=_crol_(y,1);y=y|_crol_(y,4);P2=x|y;4.5中断程序加一,当计数存储器达到设定值时便使电机转动一次。中断程序如下:void time0(void)interrupt 1/中断处理程序TR0=0;TH0=0 xd8;TL0=0 xf0;clk+;if(cl

21、k=100)/每一秒电机运转一次clk=0;num1-;motor();/调用电机运行程序TR0=1;5 仿真运行(1)按下数字键后数码管显示数字图 5-1 数码管显示(2)按下开始键后,电机开始运行图 5-2 电机运行图(3)按下停止键后,电机停止运行(4)按下清零键后,数码管被清零。图 5-3 电机停止运转6 心得体会的检测以及对 protues软件的学习和使用。分析不太准确、结果准确性差、费时费力,通过学习protues,并通过使用protues,非常方便准确的得到了仿真电路的正确连线方法以及最优化电路。分析起来又快又准确。大大促进了我们的学习效率。理论联系实际,为以后成为一名技术人才奠

22、定坚实的理论实践基础。参考文献1 郭天祥. 新概念 51 单片机 C 语言教程.:电子工业,20092 周润景.基于 PROTEUS 3 伯石.电力拖动自动控制系统.:机械工业,2003.4 光飞.单片机课程设计实例指导.:航空航天,20045 光东.单片微型计算机原理与接口技术(第二版).:华中科技大学,1999附录一:Protues硬件仿真图附录二:系统程序#includereg51.h#includeintrins.hsbit k1=P30;sbit k2=P31;sbit k3=P32;sbit k4=P33;sbit k5=P34;sbit START=P35;sbit SET=P3

23、6;sbit CLR=P37;int smg10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;int status=0,sh=0;int num,bai,shi,ge,num1,key=0;int clk=0;int c=0,x=0 x1,y=0 x2;void delay(int a);void scan();void show();void motor();void delay(int a)/延时程序int i,j;for(i=a;i0;i-)for(j=1000;j0;j-);void scan()/按键扫描if

24、(START=0&status=0)才有效,且将状态位置1;/开始键:只有当电机不运行时delay(10);if(START=0&status=0)status=1;TR0=1;/开定时器 0num1=num;if(SET=0&status=1)将状态位置 0;/停止键:只有当电机运行是有效,delay(10);if(SET=0&status=1)status=0;TR0=0;/关定时器0if(CLR=0&status=0)零键才有效delay(10);if(CLR=0&status=0)P1=0;P0=0 xff;sh=0;if(k1=0&status=0)不运行时,数字键才有效/数字键 1:设置为 3 。只有当电机delay(10);if(k1=0&status=0)num=3;num1=3;bai=0;shi=4;ge=5;sh=1;key=1;if(k2=0&status=0)/数字键2:设置为4 090delay(10);if(k2=0&status=0)num=4;num1=4;bai=0;shi=9;ge=0;sh=1;key=2;if(k3=0&status=0)/数字键3:设置为5 090delay(10);if(k3=0&status=0)num=5;num1=5;bai=0;shi=9;ge=0;sh=1;key=2;if(k4=0&st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论