基于51单片机的步进电机的控制设计_第1页
基于51单片机的步进电机的控制设计_第2页
基于51单片机的步进电机的控制设计_第3页
基于51单片机的步进电机的控制设计_第4页
基于51单片机的步进电机的控制设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、 单片机应用系统设计报告设计题目: 步进电机控制器设计 专业班级: 学生姓名: 指导教师: 设计时间: 2016年12月 一、 设计要求及方案1、设计要求可以实现步进电机正转和反转控制及速度的控制,同时实现步进电机步数的控制。2、设计方案本次设计采用AT89C51单片机控制一个四相步进电机。单片机输出脉冲序列,驱动步进电机转动;并设置开关、按键电路,来控制步进电机的2挡转速,即加速、减速;以及步数的变化,即四拍驱动方式、八拍驱动方式,同时控制步进电机的转动方向,即正转、反转。步进电机单片机最小系统单片机AT89C51单片机最小系统开关、按键电路设计方案总体框图:二、 步进电机简介1、步进电机工

2、作原理步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信 号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电

3、的多相时序控制器。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。2、步进电机磁力方式选择步进电机的励磁方式主要分为全步励磁和半步励磁两种,其中全步励磁又有一相励磁和二相励磁之分,半步励磁又称一-二相励磁。 一相励磁:在每一瞬间,步进电机只有一个线圈导通。每送出

4、一个励磁信号,步进电机旋转1.8°,这是三种励磁方式中最简单的一种。其特点是:精确度好、消耗电力小,但输出转矩小,震动较大。 二相励磁:在每一瞬间,步进电机有两个线圈同时导通。每送一个励磁信号,步进电机旋转1.8°。其特点是:输出转矩大,振动小。 一-二相励磁:为一相励磁与二相励磁交替导通的方式。每送一个励磁信号,步进电机旋转0.9°。其特点是:分辨率高,运转平滑。本次设计,八拍驱动时采用一相励磁方式,四拍驱动时采用二相励磁方式。八拍磁力顺序表:时序12345678置1A-B-C-D-置0-D-A-B-C四拍磁力顺序表:时序1234置0DABC置1A,BB,CC,

5、DD,A三、硬件电路设计1、晶振电路设计AT89C51单片机各功能部件的运行都以时钟控制信号为基准,有条不紊,一拍一拍地工作。本次设计时钟电路采用内部时钟方式。AT89C51内部有一个用于构成震荡器的高增益方向放大器,它的输入端为芯片引脚XTAL1,输出端引脚为XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器。本次设计选择振荡频率为12MHZ的石英晶体。图 晶振电路2、复位电路设计AT89C51的复位是由外部的复位电路实现的。复位引脚RST通过一个施密特触发器与复 位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然

6、后才能得到内部复位操作所需要的信号。复位电路通常采用上电复位和按钮复位两种方式,本次设计采用上电复位方式。图 复位电路3、开关、按键电路本次设计采用开关、按键电路来控制步进电机的正转、反转、加速、减速、步数。并且由单片机的P2口对其进行控制。图 开关、按键电路4、驱动电路设计本设计采用ULN2003作为驱动器驱动步进电机运转,把单片机P1口输出的脉冲信号转化为 脉冲电流,驱动步进电机运转。图 驱动电路5、总电路图图 总电路图四、软件程序设计1、程序设计思路通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成2个部分

7、的工作才能满足课题要求,即主程序部分、定时器中断部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器中断器部分,控制按键标志位值的改变,从而可以控制主程序中步进电机转速、转向、步数。2、程序框图Flag置1减少延时Flag置0是是否否增加延时访问标志位输出一拍脉冲延时速度变快?改变步数?开始初始化3、程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intuint temp=4,flag=0;int k=100,m=0;void d

8、elay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);sbit P2_5=P25;sbit P2_6=P26;sbit P2_7=P27;uchar check_key1() uchar n; P2=0xff; n=P2; if(n!=0xdf) return 1; else return 0;uchar check_key2() uchar n; P2=0xff; n=P2; if(n!=0xbf) return 1; else return 0;uchar check_key() uchar n; P2=0xff; n=P2

9、; if(n!=0x7f) return 1; else return 0;void timer0() interrupt 1switch(P2)case 0xde:if(check_key1()=1)delay(5);if(check_key1()=1)temp=0;P1=0xf0;break;case 0xdd:if(check_key1()=1)delay(5);if(check_key1()=1)temp=1;P1=0xf0; break;case 0xbb:if(check_key2()=1) delay(5);if(check_key2()=1)temp=2; while(chec

10、k_key2();break; case 0xb7:if(check_key2()=1)delay(5);if(check_key2()=1)temp=3; while(check_key2();break;case 0x6f:if(check_key()=1)delay(5);if(check_key()=1)flag+;if(flag>=2)flag=0; while(check_key();break; void sudu0() if(temp=2)k+=200;if(k>=1000)k=1000;temp=0;if(temp=3)k-=200;if(k<=0)k=10

11、0;temp=0;void sudu1() if(temp=2)k+=200;if(k>=1000)k=1000;temp=1;if(temp=3)k-=200;if(k<=0)k=100;temp=1;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;void main(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)case 1:

12、P1_0=1;delay(k);break;case 2:P1_3=0;delay(k);break;case 3:P1_1=1;delay(k);break;case 4:P1_0=0;delay(k);break;case 5:P1_2=1;delay(k);break;case 6:P1_1=0;delay(k);break;case 7:P1_3=1;delay(k);break;case 8:P1_2=0;delay(k);break;sudu0();if(flag=1)P1=0xe0;if(P1=0xe0)break;if(temp=1)switch(m)case 1:P1_3=1

13、;delay(k);break;case 2:P1_0=0;delay(k);break;case 3:P1_2=1;delay(k);break;case 4:P1_3=0;delay(k);break;case 5:P1_1=1;delay(k);break;case 6:P1_2=0;delay(k);break;case 7:P1_0=1;delay(k);break;case 8:P1_1=0;delay(k);break;sudu1();if(flag=1)P1=0xe0;if(P1=0xe0)break;if(flag=1)if(temp=0)switch(m)case 1:P1

14、_3=0; P1_0=1;P1_1=1; delay(k);break;case 2:P1_0=0; P1_1=1; P1_2=1; delay(k);break;case 3:P1_1=0;P1_2=1;P1_3=1;delay(k);break;case 4:P1_2=0;P1_3=1;P1_0=1;delay(k);break;sudu0();if(flag=0)P1=0xd0;if(P1=0xd0)break;if(temp=1)switch(m)case 1:P1_0=0;P1_3=1;P1_2=1;delay(k);break;case 2:P1_3=0;P1_2=1;P1_1=1

15、;delay(k);break;case 3:P1_2=0;P1_1=1;P1_0=1;delay(k);break;case 4:P1_1=0; P1_0=1; P1_3=1;delay(k);break;sudu1();if(flag=0)P1=0xd0;if(P1=0xd0)break; 五、新的体会因为微机课和单片机课没怎么学好,故感觉在做这个设计时有点困难,比如汇编程序。后来决定用c来编写程序,这样稍微轻松点,在设计程序中涉及到了中断程序的编写,发现已学的理论知识完全用不上来,也许这就是理论脱离时间的结果,在期间恶补了单片机的中断知识及其相应的程序编写。 通过这次课程设计实验,我对步

16、进电机调速控制系统有了实际的了解和认识,提高了动手能力。本次实验把书本上、课堂上学到的知识灵活地运用到实际的实物上,感觉是对学以致用的一种锻炼和考验提高了用所学知识解决实际问题的能力,加深和巩固的对知识的理解和掌握。控制电路、驱动电路、测速反馈电路、步进电机几个模块的整合,也实际中提高了自己对系统的认识,有了些整体的概念和思维观。实验是团队合作完成的,从设计电路到设计软件,然后仿真到做硬件做出符合要求的控制系统,不仅从实际中锻炼了动手能力而且学会了团队合作,互相学习,提高自己。 这次的课程设计总的感觉就是很累,但在不断的学习机实践当中学到了很多东西,知识的提高那是最基础的,中断,电路工作及相关的知识都是得到了提升;然后就是个人处理问题能力的提高,虽然说这次的设计不算一个大的项目,但也算是小的雏形,课题的

温馨提示

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

评论

0/150

提交评论