单片机课程设计步进电机驱动器

上传人:x**** 文档编号:70451423 上传时间:2022-04-06 格式:DOC 页数:30 大小:2.87MB
收藏 版权申诉 举报 下载
单片机课程设计步进电机驱动器_第1页
第1页 / 共30页
单片机课程设计步进电机驱动器_第2页
第2页 / 共30页
单片机课程设计步进电机驱动器_第3页
第3页 / 共30页
资源描述:

《单片机课程设计步进电机驱动器》由会员分享,可在线阅读,更多相关《单片机课程设计步进电机驱动器(30页珍藏版)》请在装配图网上搜索。

1、单片机原理实训说明书题 目:步进电机控制器学 院:专 业:学生:学 号:指导教师:2011 年 12 月 29 日29 / 30摘 要步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,具有快速起动和停止的特点。其驱动速度和指令脉冲能严格同步,具有较高的重复定位精度, 并能实现正反转和平滑速度调节。它的运行速度和步距不受电源电压波动与负载的影响, 因而被广泛应用于数模转换、速度控制和位置控制系统。本文在分析了步进电机的驱动特性、斩波恒流细分驱动原理和混合式步进电机驱动芯片ULN2003AN的性能、结构的基础上,结合AT89C52单片机,设计出了混合式步进电机驱动电路。关键词:步进电

2、机;AT89C52单片机;ULN2003AN驱动。AbstractStepping motors is a kind of will convert angular displacement or electrical impulses signal line displacement of precision actuator, have fast start and stop characteristics. The driving speed and instructions pulse can strictly synchronization, which has high repos

3、itioning precision, and can realize the positive &negative and smooth adjustable speed. Its operation speed and step distance from supply voltage fluctuation and load effect, which have been widely applied in analog-to-digital conversion, speed control and the position control system. Based on the a

4、nalysis of the stepper motor driving characteristics, a chopper constant-current subdivided driving principle and hybrid stepping motor drive chip ULN2003AN the performance, structure in the foundation, the union AT89C52 single chip computer, designed a hybrid stepping motor driver circuit. Keywords

5、:Stepping motor; AT89C52 single chip computer; ULN2003AN driver.目 录第1章 步进电机的原理介绍22.1 步进电机的工作原理32.2 步进电机24BYJ48的相关电气参数32.3 步进电机的基本术语42.3.1 相数42.3.2 拍数42.3.3 步距角42.3.4 信号分配4第2章 总体设计思路53.1 方案与设计思路53.2 总框图5第3章 程序设计54.1 主程序54.2 LCD与档位显示程序64.3正反转流程图74.4启动与停止流程图8第4章 硬件设计95.1 硬件的设计与选取95.1.1 步进电机的驱动95.1.2 单片

6、机的选取105.1.3 液晶LCD1602显示模块105.1.4 按键电路设计115.1.5 时针产生电路115.2 硬件的总体电路连接12第5章 调试与故障分析136.1 软件编写与调试136.2 调试过程与相关显示结果146.3 故障分析与解决方法15第6章 心得体会15第7章 参考文献17附件18系统原理图19开发板实物图:19元器件清单19源程序清单28第1章步进电机的原理介绍2.1 步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(与步进角)。可以通过控制脉冲个来控制角位移量,从

7、而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-

8、DA-A。)其相序分配表如下:2.2 步进电机24BYJ48的相关电气参数1.额定电压:12VDC(另有电压:5V、6V、24V)2.相数:43.减速比:1/64(另有减速比:1/16、1/32)4.步距角:5.625/645.驱动方式:4相8拍6.直流电阻:2007%(25)(按客户要求而定:80、130欧姆)7.空载牵入频率:600Hz8.空载牵出频率:1000Hz9.牵入转矩:34.3mN.m(120Hz)10.自定位转矩:34.3mN.m11.绝缘电阻:10M(500V)12.绝缘介电强度:600VAC/1mA/1S13.绝缘等级:A14.温升:50K(120Hz)15.噪音:40dB

9、(120Hz)16.重量:大约40g17.未注公差按:GB1804-m18.转向:CCW2.3 步进电机的基本术语2.3.1相数产生不同对极N、S磁场的激磁线圈对数,常用m表示。2.3.2拍数完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,比如说本次设计中使用的24BYJ48有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)2.3.3步距角对应一个脉冲信号,电机转子转过的角位移用表示。=360度(转子齿数J*运行拍数),以常规二相,转子齿为50齿

10、电机为例。四拍运行时步距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。2.3.4信号分配四相步进电机按照其通电方式的不同,可以分为单四拍,双四拍和双八拍三种工作方式。单四拍与双四拍的步距角相等,均为11.25度,而八拍的步距角则是单四拍与双四拍的一半,5.625度。单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍 (A-AB-B-BC-C-CD-D-DA-A。)。这里选取的是双相八拍的工作方式。第3章总体设计思路3.1 方案与设计思路因为步进电机的控制是通过脉

11、冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是四相的,所以只需要P1口的低四位P1.0P1.3分别接到电机的四根电线上。定时器定时来调整电机的转速,通过键盘的按钮,就可以改变定时初值从而改变了电机的转速,单片机上P3.2P3.5连的是按键,这里键盘上的K1键为启动与停止键,K2键为减速键,K3键为加速键,K4键为方向转换键。P0以与P2.0P2.2口接LCD1602,可以显示当前的电机转速、运行状态、运行方向和档位。具体结构见3-1框图。3.2

12、总框图图3-1 总体设计方框图第4章程序设计4.1 主程序进入主程序,首先是对LCD进行初始化,然后依次进行键盘扫描,调用步进电机相关数据显示子函数,若检测到有键按下,则进去相应的处理。流程图如下图4-1:4-1图 主程序流程图4.2 LCD与档位显示程序此次设计使用1602液晶显示步进电机运行状态,其效果比用数码管显示要更加明了,也更容易读取相关状态和数据。液晶上显示有电机运行的状态(RUNNING或STOP)、当前档位(DW)、运行方向()以与其运转速度(r/min)。其显示原理如下图4-2:图4-2 液晶显示流程图4.3正反转流程图步进电机的正反转用K4控制,初始化电机为顺时针转,即“”

13、,每当按下K4键,电机转向改变,具体流程图如下图4-3:4.4启动与停止流程图启动与停止是用K1键来控制的,初始化标志位on_off=0,档按下K1,即将on_off置1,每当按下k1,都将在启动与停止间切换,具体流程图如下图4-4:图4-4 启动与停止流程图第5章硬件设计5.1 硬件的设计与选取5.1.1步进电机的驱动步进电机的驱动采用ULN2003,接到单片机的P1.0P1.3,具体如图5-1:图5-1 步进电机驱动与其接口图5.1.2单片机的选取目前市面上的通用型单片机种类很多,且适合不同应用场合的新产品不断出现,但目前的应用状况,以8位中档MCS-51系列单片机的应用最为普遍。基于这次

14、课程设计的要求不高,我们可以选用51系列或52系列单片机,其有可靠性高,易于扩展以与实用性好等特点,完全可以满足我们的控制要求。其图如下5-2:图5-2 AT89C52单片机5.1.3液晶LCD1602显示模块P0接液晶的数据传送口,P2.0P2.2接液晶的控制端口。其接线图如下图5-3:图5-3 液晶与单片机接口原理图5.1.4按键电路设计键盘接口按不同标准有不同分类方法,按键盘排布,可以分为独立方式(一组相互独立的键盘)和矩阵(一行列组成矩阵)方式。此次设计只用到了四个按键,故可采用独立按键,P3.2P3.5分别接到K1K4。其原理图如下图5-4:图5-4 按键与单片机接口原理图5.1.5

15、时针产生电路时针电路部分晶振为11.0592MHz,其原理图如下:图5-4 时针电路5.2 硬件的总体电路连接图 5-5 总体原理图第6章调试与故障分析6.1 软件编写与调试此次编程与调试是用keil软件进行的,程序的编写与调试步骤如下:1. 根据步进电机24BYJ48的相序,编好正反转相序表,这个是关键,不能编错。2.定义各个变量与相关液晶显示符:uchar code cdis0 = WELCOME TO ;uchar code cdis1 = STEPPING MOTOR ;uchar code cdis2 = CONTROL SYSTEM ;uchar code cdis3 = STOP

16、 ;uchar code cdis4 = DW:;uchar code cdis5 = RUNNING;uchar code cdis6 = r/min;3. 定义各个按键:sbit K1 = P32; /运行与停止sbit K2 = P33; /加速sbit K3 = P34; /减速sbit K4 = P35; /方向转换sbit BEEP = P36; /蜂鸣器4. 编写各个子程序。5. 编写主程序,进入主程序即开始进行键盘扫描与调用液晶显示。6. 定时器T0的中断服务程序,进入中断,若满足条件,即向步进电机送8个脉冲。6.2 调试过程与相关显示结果 将程序下载到单片机中,LCD初始化显

17、示如下:之后进入步进电机初始化的画面显示,电机运行状态显示为STOP,档位为5档,开机转速为2.66r/min,如下:实物图如下:按下启动键K1后,转向显示出显示,即电机顺时针转,显示如下:按K2键一次,档位加一,高位档为10档,此时对应电机转速为最慢,为1.33r/min,如下图:实物图显示如下:按下K3键一次,档位减一,低位档为1档,也是电机转速最快的档,为13.32r/min,显示效果如下图:实物图显示如下:6.3 故障分析与解决方法故障一:首先在设计总体方案时,思路上出现了一些问题,我首先是想在中断里完成许多应在中断之外完成的事,经过老师的指点,后来想清楚了。只在中断中给电机送相序码,

18、并设定了一个参数对电机的转速进行调控。故障二:由于编写程序的经验不多,在计算电机转速,并将其显示在液晶时,遇到了一些问题,速度转换公式是找出来了,但怎样将其小数点表示出来,困惑了好久,最后还是请教了同学,才搞定。故障三:在仿真时首先液晶没有接上拉电阻,液晶上显示不出来,我以为是程序方面出了问题,后来尝试接了上拉电阻,就能够正常显示了。第7章心得体会为期两周的单片机课程设计在忙碌中已接近尾声,经过这么多天的努力,终于完成了这次课程设计基本设计要求,在充实中也学到了很多知识,是真正将所学知识运用于实践中的一次很好的体验,使人受益匪浅。由于此次控制要求不是很高,选用51系列或52系列完全能够满足设计

19、需求,最后选用的STC89C52。接下来就是硬件接口分配问题和如何去驱动电机。对于步进电机之前没有什么接触,所以我上网查了许多关于步进电机的资料,知道了其基本工作原理以与怎么去实现其控制运转和驱动。接下来的主要问题就是如何编程去实现控制它了,这次程序的编写和调试对我来说是个不小的挑战,因为之前只编写过一些简短的小程序,对较大的程序总体性方面还不能很好的把握。经过反复的尝试和调试,用发现一个问题,解决一个问题的方法,还参考了一些别人的经验方法,完成了程序的编写。这对我以后编写程序是一次很好的经验积累。仿真时也出了一些小问题,首先LCD完全没有显示,我就尝试接上拉电阻,结果就能正常工作了。然后是电

20、机也不转,最后我把送进去的脉冲频率减小,才使得电机运转起来,这个仿真过程又使我更加熟练了Proteus软件的用法。这次课程设计使我认识到,刚学好书上的知识还是不够的,更重要的是我们要能将所学的知识运用到实践中来,这才是我们学习知识的最基本的要求,所以在以后的学习生活中,我们应该更加注意将学习与实践相结合,在实践中去运用好所学知识,更进一步深化和理解所学知识,达到学以致用。通过这次课程设计,我也了解到了自己的不足,以前自己学习单片机的时候,往往只去看懂别人写的程序,以为看懂了自己就知道写了,但事实并不是这样,虽然这次课程设计程序是完成了,但棘手的地方很多,编程并不像以前认为的简单。所以在以后的学

21、习中,不能手高眼低,一定要脚踏实地,一步步地走,自己动手去做,这样才能将知识真正学到手。这次课程设计能得以顺利完成,还要感符强老师的指导和同学们的帮助,在老师指导和同学的帮助下,很多问题问题都很好地解决了。总之,虽然只是短短两周的时间,但也学到了很多,感受很深,是一次很好的经验积累和设计经历。第8章参考文献1王迎旭.单片机原理与与应用.:机械工业2迎新.单片微型计算机原理、应用与接口技术.:国防工业3郭天祥.新概念51单片机C语言教程.:电子工业4蔡明文 先成编著.单片机课程设计.:华中科技大学5王晓明.电动机的单片机控制.航空航天大学 附件系统原理图元器件清单单片机开发板 1块STC89C5

22、2 1片LCD1602 1块ULN2003 1个步进电机 1个源程序清单#include /51芯片管脚定义头文件#include /部包含延时函数 _nop_();#define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9; /正转相序编码表uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0x

23、f3,0xf1;/反转相序编码表sbit K1 = P32; /运行与停止sbit K2 = P33; /加速sbit K3 = P34; /减速sbit K4 = P35; /方向转换sbit BEEP = P36; /蜂鸣器sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;bit on_off=0; /运行与停止标志bit direction=1; /方向标志uchar code cdis0 = WELCOME TO ;uchar code cdis1 = STEPPING MOTOR ;uchar code cdis2 = CO

24、NTROL SYSTEM ;uchar code cdis3 = STOP ;uchar code cdis4 = DW:;uchar code cdis5 = RUNNING;uchar code cdis6 = r/min;uchar code cdis7 = RATE:;uchar m,v=0,q=0,j;uchar rate=5; /预设定速度档uchar data_temP1,data_temp2,data_temp3,data_temp4; uint zs,data_temp;/*/void delay(uint t) / 延时t毫秒函数 uchar k; while(t-) fo

25、r(k=0; k125; k+) /*/void delayB(uchar x) /x*0.14MS uchar i; while(x-) for (i=0; i13; i+) /*/void beep() /蜂鸣器 uchar j; for (j=0;j100;j+) delayB(4); BEEP=!BEEP; /BEEP取反 BEEP=1; /关闭蜂鸣器 delay(170); /*/ bit lcd_busy() /检查LCD是否为忙状态,lcd_busy为1时,忙,等待。为0时,闲,可写指令与数据。 bit result; LCD_RS = 0; LCD_RW = 1;LCD_EN

26、= 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/void lcd_wcmd(uchar cmd)/写指令数据到LCD ,*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 while(lcd_busy(); LCD_RS = 0;LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/void lcd_wdat(uchar dat)/写显示数据到

27、LCD,RS=H,RW=L,E=高脉冲,D0-D7=数据。 while(lcd_busy(); LCD_RS = 1;LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/void lcd_init()/LCD初始化设定 delay(30); lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据 delay(5); lcd_wcmd(0x38); delay(5);lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); /显示开,关光标

28、 delay(5); lcd_wcmd(0x06); /移动光标 delay(5); lcd_wcmd(0x01); /清除LCD的显示容 delay(5); /*/void lcd_pos(uchar pos)/设定显示位置 lcd_wcmd(pos | 0x80); /数据指针=80+地址变量 /*/void LCD_init_DIS()/ LCD1602初始显示子程序 delay(10); /延时 lcd_init(); /初始化LCD lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cdis0m != 0) /显示字符WELCOME lcd_wda

29、t(cdis0m); m+; delay(2000); lcd_wcmd(0x01); /清屏 delay(5); /清屏以后的这个延时不能少,给LCD一定的缓冲,否则下一条指令不一定被执行 lcd_pos(0x10); /设置显示位置为第一行的第17个地址 m = 0; while(cdis1m != 0) /显示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x50); /设置显示位置为第二行第1个字符 m = 0; while(cdis2m != 0) lcd_wdat(cdis2m); /显示字符 m+; for(j=0;j16;j+) lcd_wcmd(0x18)

30、; delay(300); delay(3000); /延时 lcd_wcmd(0x01); /清屏 lcd_pos(0x00); /设置显示位置为第一行的第1个字符 m = 0; while(cdis3m != 0) /显示字符STOP lcd_wdat(cdis3m); m+; lcd_pos(0x08); /设置显示位置为第一行第9个字符 m = 0; while(cdis4m != 0) lcd_wdat(cdis4m); /显示字符DW m+; for(m=0;m2;m+) lcd_pos(0x0e+m); /显示方向符号 lcd_wdat(0x2d); lcd_pos(0x47);

31、 /显示小数点 lcd_wdat(0x2e); m = 0; lcd_pos(0x4a); /显示字符r/min while(cdis6m != 0) lcd_wdat(cdis6m); m+; m = 0; lcd_pos(0x40); /显示字符RATE: while(cdis7m != 0) lcd_wdat(cdis7m); m+; /*/void data_conv()/档位数据转换子程序 data_temP1=data_temp/10; /高位 if(data_temP1=0) data_temP1=0x20;/高位为0不显示 else data_temP1=data_temP1+

32、0x30; data_temp2=data_temp%10; /低位 data_temp2=data_temp2+0x30; /*/void data_conv1()/转速数据转换子程序 data_temP1=data_temp/1000;/整数位第一位 if(data_temP1=0) data_temP1=0x20;/高位为0不显示 else data_temP1=data_temP1+0x30; data_temp2=data_temp%1000/100; /整数位第2位 data_temp2=data_temp2+0x30; data_temp3=data_temp%100/10; /

33、小数位第一位 data_temp3=data_temp3+0x30; data_temp4=data_temp%10; /小数位第二位 data_temp4=data_temp4+0x30; /*/void data_dis() /数据显示子程序 data_temp = rate; /显示档位 data_conv(); lcd_pos(0x0b); lcd_wdat(data_temP1); lcd_pos(0x0c); lcd_wdat(data_temp2); zs=1332/rate;/转速换算公式:zs=13.32/rate;data_temp=zs; /显示转速data_conv1(

34、); lcd_pos(0x45); lcd_wdat(data_temP1); lcd_pos(0x46); lcd_wdat(data_temp2); lcd_pos(0x48); lcd_wdat(data_temp3); lcd_pos(0x49); lcd_wdat(data_temp4);/*/void motor_DR()/显示运行方向符号 if(direction=1) /正转方向标志 for(m=0;m号 else for(m=0;m2;m+) /反转方向标志 lcd_pos(0x0e+m); /显示方向符号 lcd_wdat(0x3c); /显示号 /*/void motor

35、_RUN() /显示运行状态 if(on_off=1) TR0=1; lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cdis5m != 0) lcd_wdat(cdis5m); /RUNNINGm+; motor_DR(); else TR0=0; P1 =0x0f; lcd_pos(0); /设置显示位置为第一行的第1个字符 m = 0; while(cdis3m != 0) lcd_wdat(cdis3m); /STOPm+; motor_DR(); for(m=0;m2;m+) lcd_pos(0x0e+m); /显示- lcd_wdat(0x2d

36、); /*main() /主程序 LCD_init_DIS(); TMOD = 0x01; /T0定时方式1 TH0=(65536-1100)/256;/赋初值TL0=(65536-1100)%256; EA = 1;/开启总中断 ET0 = 1; /开放定时器T0的中断 P1 = 0x0f; while(1) if(K1=0)/运行与停止 delay(5); /消抖if(K1=0) beep(); while(K1=0); /等待键释放 on_off=on_off; motor_RUN(); /K1 end/* if(K4=0) /方向转换 delay(5); if(K4=0) beep()

37、; direction=direction; motor_DR(); /K3 end/* if(K2=0) /减速 delay(5); if(K2=0) beep(); rate+; if(rate=0x0b) rate=0x0a; if(K3=0) /加速 delay(5); if(K3=0) beep(); rate-; if(rate=0x00) rate=0x01; data_dis(); /*void motor_onoff() interrupt 1 / 定时器 0 中断 /TL0 = 0x33; /TH0 = 0xf5; TH0=(65536-1100)/256;TL0=(65536-1100)%256; q+; if(q rate) return; else q=0; if(direction=1) /方向标志 if(v8) P1 = FFWv;v+; /取数据,正转 if(v=8) v=0; else if(v8) P1 = REVv;v+; /取数据,反转 if(v=8) v=0;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!