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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

题目:步进电机控制器学院:专业:学生姓名:学号:指导教师:1摘要步进电动机是一种将电脉冲信号转换成角位移或线位移的精密执行元件,具有快速起动和停止的特点。其驱动速度和指令脉冲能严格同步,具有较高的重复定位精度,并能实现正反转和平滑速度调节。它的运行速度和步距不受电源电压波动及负载的影响,因而被广泛应用于数模转换、速度控制和位置控制系统。本文在分析了步进电机的驱动特性、斩波恒流细分驱动原理和混合式步进电机驱动芯片ULN2003AN的性能、结构的基础上,结合AT89C52单片机,设计出了混合式步进电机驱动电路。关键词:步进电机;AT89C52单片机;ULN2003AN驱动。步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)其相序分配表如下:2总体设计思路方案与设计思路因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是四相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。定时器定时来调整电机的转速,通过键盘的按钮,就可以改变定时初值从而改变了电机的转速,单片机上P3.2~P3.5连的是按键,这里键盘上的K1键为启动与停止键,K2键为减速键,K3键为加速键,K4键为方向转换键。P0以及P2.0~P2.2口接LCD1602,可以显示当前的电机转速、运行状态、运行方向和档位。具体结构见框图。进入主程序,首先是对LCD进行初始化,然后依次进行键盘扫描,调用步进电机相关数据显示子函数,若检测到有键按下,则进去相应的处理。流程图如下图主程序流程图LCD及档位显示程序此次设计使用1602液晶显示步进电机运行状态,其效果比用数码管显示要更加明了,也更容易读取相关状态和数据。液晶上显示有电机运行的状态(RUNNING或STOP)、当前档位(DW)、运行方向(或)以及其运转速度(r/min)。其显示原理如下图液晶显示流程图启动与停止流程图3硬件设计硬件的设计与选取步进电机的驱动步进电机的驱动采用ULN2003,接到单片机的P1.0~P1.3,具体如图5-1:图5-1步进电机驱动及其接口图单片机的选取目前市面上的通用型单片机种类很多,且适合不同应用场合的新产品不断出现,但目前的应用状况,以8位中档MCS-51系列单片机的应用最为普遍。基于这次课程设计的要求不高,我们可以选用51系列或52系列单片机,其有可靠性高,易于扩展以及实用性好等特点,完全可以满足我们的控制要求。其图如下5-2:4AT89C52单片机5.1.3液晶LCD1602显示模块P0接液晶的数据传送口,P2.0~P2.2接液晶的控制端口。其接线图如下图5-3:图5-3液晶与单片机接口原理图5.1.4按键电路设计键盘接口按不同标准有不同分类方法,按键盘排布,可以分为独立方式(一组相互独立的键盘)和矩阵(一行列组成矩阵)方式。此次设计只用到了四个按键,故可采用独立按键,P3.2~P3.5分别接到K1~K4。其原理图如下图5-4:5图5-4按键与单片机接口原理图时针产生电路时针电路部分晶振为11.0592MHz,其原理图如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C130pC230pX1CRYSTAL图5-4时针电路65.2硬件的总体电路连接XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD2LM016LRV11KC130pC230pX1CRYSTALC310uR24.7k1B11C162B22C153B33C144B44C135B55C126B66C117B77C10COM9U2ULN2003A+88.8R14.7KR34.7KR44.7KR54.7K12345678910RN14.7k图5-5总体原理图调试与故障分析软件编写及调试此次编程及调试是用keil软件进行的,程序的编写及调试步骤如下:71.根据步进电机24BYJ48的相序,编好正反转相序表,这个是关键,不能编错。2.定义各个变量及相关液晶显示符:ucharcodecdis0[]={WELCOMETO};ucharcodecdis1[]={STEPPINGMOTOR};ucharcodecdis2[]={CONTROLSYSTEM};ucharcodecdis3[]={STOP};ucharcodecdis4[]={DW:};ucharcodecdis5[]={RUNNING};ucharcodecdis6[]={r/min};3.定义各个按键:sbitK1=P3^2;//运行与停止sbitK2=P3^3;//加速sbitK3=P3^4;//减速sbitK4=P3^5;//方向转换sbitBEEP=P3^6;//蜂鸣器4.编写各个子程序。5.编写主程序,进入主程序即开始进行键盘扫描及调用液晶显示。6.定时器T0的中断服务程序,进入中断,若满足条件,即向步进电机送8个脉冲。调试过程及相关显示结果将程序下载到单片机中,LCD初始化显示如下:之后进入步进电机初始化的画面显示,电机运行状态显示为STOP,档位为5档,开故障分析及解决方法故障一:首先在设计总体方案时,思路上出现了一些问题,我首先是想在中断里完成许多应在中断之外完成的事,经过老师的指点,后来想清楚了。只在中断中给电机送相序码,并设定了一个参数对电机的转速进行调控。故障二:由于编写程序的经验不多,在计算电机转速,并将其显示在液晶时,遇到了一些问题,速度转换公式是找出来了,但怎样将其小数点表示出来,困惑了好久,最后还是请教了同学,才搞定。8故障三:在仿真时首先液晶没有接上拉电阻,液晶上显示不出来,我以为是程序方面出了问题,后来尝试接了上拉电阻,就能够正常显示了。系统原理图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD2LM016LRV11KC130pC230pX1CRYSTALC310uR24.7k1B11C162B22C153B33C144B44C135B55C126B66C117B77C10COM9U2ULN2003A+88.8R14.7KR34.7KR44.7KR54.7K12345678910RN14.7k元器件清单单片机开发板1块STC89C521片LCD16021块ULN20031个步进电机1个9源程序清单#includereg51.h//51芯片管脚定义头文件#includeintrins.h//内部包含延时函数_nop_();#defineucharunsignedchar#defineuintunsignedint#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};ucharcodeFFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正转相序编码表ucharcodeREV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反转相序编码表sbitK1=P3^2;//运行与停止sbitK2=P3^3;//加速sbitK3=P3^4;//减速sbitK4=P3^5;//方向转换sbitBEEP=P3^6;//蜂鸣器sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EN=P2^2;biton_off=0;//运行与停止标志bitdirection=1;//方向标志ucharcodecdis0[]={WELCOMETO};ucharcodecdis1[]={STEPPINGMOTOR};ucharcodecdis2[]={CONTROLSYSTEM};ucharcodecdis3[]={STOP};ucharcodecdis4[]={DW:};ucharcodecdis5[]={RUNNING};ucharcodecdis6[]={r/min};ucharcodecdis7[]={RATE:};ucharm,v=0,q=0,j;ucharrate=5;//预设定速度档uchardata_temP1,data_temp2,data_temp3,data_temp4;uintzs,data_temp;/*****************************************************/voiddelay(uintt)//延时t毫秒函数{uchark;while(t--){for(k=0;k125;k++){}}}/********************************************************/voiddelayB(uc

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功