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

下载本文档

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

文档简介

1、.一、设计目的通过具体小型测试系统设计,实践单片机系统设计及调试的全过程,以加深对单片机内部结构、功能和指令系统的理解,并进一步学习单片机开发系统的应用及一些外围芯片的接口和编程方法,初步掌握单片机系统的硬、软件设计技术及调试技巧。二、设计要求1)电机转速可以平稳控制2)通过键盘和显示器可以设置电机的转速3)显示电机的速度趋势三、仪器设备名称型号数量单片机STC89C521步进电机28BYJ481液晶LCD128641步进电机驱动ULN2003A1晶振1电容、电阻、微动开关若干四、硬件线路图(1)单片机最小系统上图所示为单片机最小系统,该系统通过5V直流电源供电,可上电复位和手动复位。通过串口

2、将程序烧写到单片机。(2)步进电机驱动电路由于步进电机运转时所需电流较大,而单片机引脚提供的电流较小,所以单片机与步进电机间需要加上驱动芯片ULN2003A,如上图所示,通过单片机的P1口控制步进电机的运转。(3)显示电路该系统用LCD12864作为显示器,12864内置字库,每屏可显示32个汉字,且编程容易,该系统中可用于显示开机界面,电机转速,速度变化趋势等。其接口如图所示。(4)按键电路由于系统所用按键较少,所以键盘采用独立按键形式,每个按键都有上拉电阻,提高了按键的稳定性。五、主要芯片说明(1)STC89C52STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具

3、有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软

4、件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 (2)ULN2003ULN2003是高耐压、大电流复合晶体管,由七个硅NPN 复合晶体管组成。ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,

5、输出还可以在高负载电流并行运行。ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。 六、系统工作原理(1)步进电机工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 虽然步进电机已被广泛地应用,但步进电

6、机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。如图步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对 齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组

7、磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。(2)步进电机调速原理步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。正常运动情况下,它每转一周具有固定的步数;做连续步进运动时,其旋转转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影

8、响。在步进电机工作方式确定后,其在每个脉冲下前进1步,因此只要改变给脉冲间的时间间隔即可改变步进电机的速度。程序中通过在每次脉冲后加可调时间延时来控制步进电机的速度。(3)系统工作原理该系统可实现开机界面,步进电机工作方式选择,步进电机加速、减速,显示器可显示步进电机速度变化趋势,步进电机理论转速。开机后,系统进入开机界面,通过以下函数实现: writestring(0,0,8,"欢迎使用"); writestring(1,0,16,"步进电机控制器"); delay(2000); write(0x01,0); /清屏delay(100); writes

9、tring(1,0,16,"请选择工作方式");稍作延时后系统提示选择步进电机的工作方式,包括单相四拍,双相四拍和四相八拍共三种工作方式。while(m) if(key1=0) delay(5); if(key1=0)n+; if(n=1) write(0x01,0);delay(100); writestring(1,2,8,"单相四拍");while(n=1) for(i=0;i<4;i+) P1=string1i; delay(1); if(key1=0) break; if(key4=0) m=0;break; if(n=2) write(

10、0x01,0);delay(100); writestring(1,2,8,"双相四拍"); while(n=2) for(i=0;i<4;i+) P1=string2i; delay(1); if(key1=0) break; if(key4=0) m=0;break; if(n=3) write(0x01,0); delay(100); writestring(1,2,8,"四相八拍");while(n=3) for(i=0;i<8;i+) P1=string3i; delay(1); if(key1=0) break;if(key4=0

11、) m=0;break; if(n>3)n=0;按键1为工作方式选择键,每次按下设定参数加1,程序检测给定参数的值,从而控制步进电机做相应运动,按键4为退出键,工作方式子函数中实时检测按键4的状态,但按键4按下时,程序跳出当前循环,回到主程序,步进电机停转,液晶显示器从现实工作方式信息跳到下一环节。上述功能跳出后,系统进入调速功能,此时步进电机以一定的速度运转,液晶显示此时电机的理论速度。当按键2按下时,步进电机每步间延时减小,电机加速;当按键3按下时,步进电机每步间延时增加,步进电机减速,同时12864实时显示步进电机速度及速度变化趋势。该功能函数同样检测按键4的状态,当按键4按下时,

12、系统退出,步进电机停转。七、程序框图退出加速减速检测按键2、3、4调速界面检测按键4单相四拍四相八拍双相四拍检测按键1上电后系统进入开机界面,等待选择工作方式123YYYYKey2 Key3 Key4八、程序清单#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit RS=P20;sbit RW=P21;sbit E=P22;sbit key1=P23;sbit key2=P24;sbit key3=P25;sbit key4=P26;uchar i,time=10,m=1,sudu;sta

13、tic uchar n=0;uchar string1=0xfe,0xfd,0xfb,0xf7; /单相四拍uchar string2=0xfc,0xf9,0xf3,0xf6; /双相四拍uchar string3=0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6; /四相八拍uchar sudu13; /速度暂存void write(uchar,bit);void writestring(uchar,uchar,uchar,uchar *p);void init();void delay(uint);void main()init(); writestring(

14、0,0,12," 欢迎使用"); writestring(1,0,16,"步进电机控制器"); delay(2000); write(0x01,0); /清屏delay(100); writestring(1,0,16,"请选择工作方式"); while(m) if(key1=0) delay(5); if(key1=0)n+; if(n=1) write(0x01,0);delay(100); writestring(1,2,8,"单相四拍");while(n=1) for(i=0;i<4;i+) P1=s

15、tring1i;delay(1); if(key1=0) break;if(key4=0) m=0;break; if(n=2) write(0x01,0);delay(100); writestring(1,2,8,"双相四拍"); while(n=2)for(i=0;i<4;i+) P1=string2i; delay(1); if(key1=0) break;if(key4=0) m=0;break; if(n=3) write(0x01,0); delay(100); writestring(1,2,8,"四相八拍");while(n=3)

16、 for(i=0;i<8;i+) P1=string3i; delay(1); if(key1=0) break;if(key4=0) m=0;break; if(n>3)n=0; write(0x01,0); delay(1000); writestring(0,2,8,"调速控制"); while(1) writestring(1,0,6,"转速:"); writestring(1,5,5,"r/min"); writestring(2,0,10,"速度趋势:"); if(key3=0) /点动减速

17、 delay(5); if(key3=0) time+; writestring(2,5,4,"减速"); if(time>=30) time=10; if(key2=0) /点动加速 delay(5); if(key2=0) time-; writestring(2,5,4,"加速"); if(time<=1) time=1;for(i=0;i<8;i+) P1=string3i;delay(time); sudu=358/time; sudu10=sudu/100+0x30; sudu11=sudu%100/10+0x30; sud

18、u12=sudu%10+0x30; writestring(1,3,3,sudu1); if(key4=0) break; write(0x01,0); delay(1000); writestring(1,2,10,"谢谢使用!"); while(1);void delay(uint z) uint x,y; for(x=115;x>0;x-)for(y=z;y>0;y-);void write(uchar dat,bit command)/写函数P0=dat;RS=command;RW=0;E=1;E=0;void init()/初始化write(0x38,0); /8位点阵显示write(0x01,0);write(0x0c,0); /开显示关光标void writestring(uchar x,uchar y,uc

温馨提示

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

评论

0/150

提交评论