基于51单片机三相步进电机调速系统_第1页
基于51单片机三相步进电机调速系统_第2页
基于51单片机三相步进电机调速系统_第3页
基于51单片机三相步进电机调速系统_第4页
基于51单片机三相步进电机调速系统_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、基于51单片机三相步进电机调速系统学校:南京理工大学专业:机电一体化技术姓名:卜婷婷班级:电气123学号:120202301摘要 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累计误差等特点,使得它在位置,速度等控制领域显得非常简单。步进电机的调速一般是改变输入步进电机的脉冲频率来实现调速的,步进电机每给一个脉冲就转动一个固定角度,这样就可以通过控制步进电机的脉冲到下一个脉冲的时间间隔来改变脉

2、冲的频率,延时的长短来具体控制步进角来改变转速,从而实现调速功能。一. 步进电机1.1步进电机的工作原理 本论文我们采用的电机是三相步进电机,其主要应用于完成调速功能。 步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可以使步进电机旋转一个固定角度,脉冲的数量决定了旋转的总角度,脉冲的频率决定了电机运转的速度,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,他的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉

3、冲频率来控制电动机的速度和加速度,从而达到调速的目的。1.2 步进电机的特点1·一般步进电机的精度为步进角的百分之三到百分之五;2·步进电机外表允许的温度高,电机外表允许的最高温度应取决于不同的电机磁性材料的退磁点,一般的磁性材料的退磁点都在摄氏130度以上,所以步进电机的外表温度在摄氏80度到90度下完全正常。3·步进电机的力矩会随转速的升高而下降。二 单片机的选择 本次设计以AT89C51作为步进电机的控制芯片。它结构简单,并且可以在编程器上实现闪烁式的电擦写达几万次以上,使用方便等优点。而且完全兼容MCS51系列单片机的所有功能。它是一种带4k字节闪烁可编程

4、可擦除只读存储器的低电压,高性能CMOS八位微处理器。它为很多嵌入式的控制系统提供了一种灵活性且廉价的方案。 2.1显示模块 LED数码管实际上是有七个发光管组成的8字形构成的,加上小数点就是8个。这些段分别可以用字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压之后,这特定的段就会发亮,就形成了我们看到的字样了。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。P0口和P2口的前四个分别接步数显示中对数码管的字段控制及数码管片选,如图1 ,这里主要是有软件算法来实现单片机输出的控制。图1 :显示模块2.2工作模块由三个键盘控制单片机。将

5、步进电机的3个端口直接接到单片机P3.0至P3.2即可,另外3个端口可接到+12V的高电平给步进电机供电,只需在软件编写上控制算法便可以调节这三个端口的高低电平来控制步进电机的开启与停止,正反转与停止。如图2所示。 图2:工作模块2.3 驱动模块步进电机相当于四个绕组与三极管串联,采用星形接法。当绕组通电后再切断电源时,绕组所产生的自感电动势上边正,下边负,而且比加在绕组上的工作电压高出N倍,这个感应电压很高,对三极管产生影响,因此在绕组上并接一个续流二极管,就是为绕组的自感电动势提供一个泄放通道,消除感生电压对开关器件的影响流经续流二极管的额定电流为200mA。图3:驱动模块三 程序流程图3

6、.1 主程序流程图开始初始化显示键盘计算控制延时3.2按键流程开始初始化判P3.4为0?取反方向控制,改变电机方向加速减速退出判P3.5为0?判P3.6为0?是是是四 主电路图五 程序部分#include<.reg51.h>#include<.stdio.h> viod delay1(void); viod delay2(viod); viod display(int);int bs=0;main()char a,b,c,d,j,*q,done18=0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00,done28=0x03,0x06,0x05

7、,0x00,0x03,0x05,0x06,0x00,don314=0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02,0x03,0x00,L: a=P1;while(!(a&0x08) /判断是否启动,若没有启动则重新判断P3=0x08;delay1();a=P1;/.判断工作模式if(a&0x01) /方式1模型q=done1;else if(a&0x02) /方式2模型q=done2;else if(a&0x04) /方式3模型q=done3;/.判断电机转向if(a&0x010)

8、/判断电机是否要正转P3=0X10; /P1.4口为1,电机正转,红灯亮b=0;elseP3=0X20; / P1.4口为0,电机反转,黄灯亮if(a&0x04)b=7;/反转时将b置数,使指针指到数组反相序部分else b=4;/.d=b;while(1)c=*(q+b); /判断电机步数是否走完if(c=0)b=d; /步数走完,电机重新再走elseP3=c; /从P3输出电机控制信号b+;bs+; /总步数加1display(bs); /显示步数j=a;a=P1;if(a!=j) /判断P1口状态信号是否改变if(!(a&0x08)bs=0; /若为停止信号,总步数清零g

9、oto L; /状态信号改变,返回到开始,重新对电机控制 viod delay1() /延时5ms子程序int i,j; for(i=0;i<200;i+) for(j=0;j<300;j+);viod delay2() /延时5us子程序 int i,j; for(i=0;i<10;i+) for(j=0;j<60;j+);viod display(int n)unsigned char tab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67;dnsigned char i,k,t,num4;num0=n%10; /将总步数的各位分别存在在num数组中num1=(n/10)%10; num2=(n/100)%10; num3=(n/1000)%10;for(t

温馨提示

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

评论

0/150

提交评论