基于51单片机步进电机控制设计
- 格式:wps
- 大小:2.67 MB
- 文档页数:17
基于51单片机步进电机的控制及细分驱动电路悬赏分:20|解决时间:2009-6-22 21:11 |提问者:sailorman123我的邮箱sailor3848352@拜求高手指点,希望能附带相应的电路图,和一定的说明。
谢谢给位大虾了!!!最佳答案参考:/chary8088/blog/item/177332ce39cef70a92457ea9.html接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。
这几天给自己的任务就是搞定步进电机的单片机控制。
以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。
今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所示:拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。
地线与四线接触的顺序相反,电机的转向也相反。
如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。
通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。
所以,设计了如下电路图:C51程序代码为:代码一#include <AT89X51.h>static unsigned int count;static unsigned int endcount;void delay();void main(void){count = 0;P1_0 = 0;P1_1 = 0;P1_2 = 0;P1_3 = 0;EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许TH0 = 0xFC;TL0 = 0x18; //设定时每隔1ms中断一次TR0 = 1; //开始计数startrun:P1_3 = 0;P1_0 = 1;delay();P1_0 = 0;P1_1 = 1;delay();P1_1 = 0;P1_2 = 1;delay();P1_2 = 0;P1_3 = 1;delay();goto startrun;}//定时器0中断处理void timeint(void) interrupt 1{TH0=0xFC;TL0=0x18; //设定时每隔1ms中断一次count++;}void delay(){endcount=2;count=0;do{}while(count<endcount);}将上面的程序编译,用ISP下载线下载至单片机运行,步进电机便转动起来了,初步告捷!不过,上面的程序还只是实现了步进电机的初步控制,速度和方向的控制还不够灵活,另外,由于没有利用步进电机内线圈之间的“中间状态”,步进电机的步进角度为18度。
2020.19设计研发基于51单片机的步进电机正反转可控设计与仿真李建中(江苏省海门中等专业学校,江苏南通,226100)摘要:步进电机是伺服控制中的关键部件,对步进电机进行精确高效地控制,是实现精密运动、制造等的重要手段。
釆用51单片机作为电机的控制核心-ULN2003A作为电机的驱动芯片,选用额定电压为5V的小型步进电机,设置正转、反转、停止、加速、减速5个按钮,其中正转、反转和停止均有对应的LED指示灯。
通过Keil进行控制程序的编写,在Proteus 中进行仿真电路的连接,结果表明:电路设计正确;步进电机能够根据按钮指令进行运转,达到了设计预期;系统可应用于某些需要高精度控制的场合。
关键词:步进电机;51单片机;ULN2003A;Keil;ProteusDesign and Simulation of Positive and Negative Rotation ofStepping Motor Based on51Single Chip MicrocomputerLi Jianzhong(Jiangsu Province Haimen Secondary Vocational School,Narrtong Jiangsu,226100)Abst r act;St epper motor is the key compone n t in servo cont r ol.It is an import a n t means to realize precise motion and manufacture to control stepping motor accurately and efficiently.51single chip microcomputer is used as the cont r ol core of the mot o r,uln2003a is used as the driving chip of the motor,the small st e pping motor with:r ated volt a ge of5V is selec t ed,and five buttons of forward rotation,reverse rotation,stop,acceleration and deceleration are set,and the corresponding LED indicator lights are used for forward rotation,reverse rotation and stop.The resuIts show that:the circuit design is correct;the stepper motor can operate according to the button command,which meets the design expectation;the system can be applied to some occasions requiring high-precision control.Keywords:stepper motor;51single chip microcomputer;ULN2003A;Keil;Proteus0引言步进电机在工业制造、数控机床、各种伺服系统中均有应用。
D10-基于单片机旳步进电机控制系统一、理解什么是步进电机以及其工作原理步进电机是数字控制电机,步进电机旳运转是由电脉冲信号控制旳,其角位移量或线位移量与脉冲数成正比,每个一种脉冲,步进电机就转动一种角度(不距角)或前进、倒退一步。
步进电机旋转旳角度由输入旳电脉冲数确定,因此,也有人称步进电机为数字/角度转换器。
步进电机旳各相绕组按合适旳时序通电,就能使步进电机转动。
当某一相绕组通电时,对应旳磁极产生磁场,并与转子形成磁路,这时,假如定子和转子旳小齿没有对齐,在磁场旳作用下,由于磁通具有力图走磁阻最小途径旳特点,则转子将转动一定旳角度,使转子与定子旳齿互相对齐,由此可见,错齿是促使电机旋转旳原因。
二、步进电机旳特点(1)步进电机旳角位移与输入脉冲数严格成正比,因此当它转一转后,没有合计误差,具有良好旳跟随性。
(2)由步进电机与驱动电路构成旳开环数控系统,既非常以便、廉价,也非常可靠。
同步,它也可以有角度反馈环节构成高性能旳闭环数控系统。
(3)步进电机旳动态响应快,易于启停、正反转及变速。
(4)速度可在相称宽旳范围内平滑调整,低速下仍能保证获得很大旳转矩,因此一般可以不用减速器而直接驱动负载。
(5)步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
(6)步进电机自身旳噪声和振动比较大,带惯性负载旳能力强。
三、步进电机旳控制步进电机旳控制重要包括换相次序旳控制、速度控制、速度控制、加减速控制等,控制系统就是运用单片机旳功能实现以上控制旳系统,即本次设计旳目旳。
四、示意图五、硬件设计计划本设计旳硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。
最小系统只要是为了使单片机正常工作。
控制电路只要由开关和按键构成,由操作者根据对应旳工作需要进行操作。
显示电路重要是为了显示电机旳工作状态和转速。
驱动电路重要是对单片机输出旳脉冲进行功率放大,从而驱动电机转动。
(1)控制电路根据步进电机旳工作原理可以懂得,步进电机转速旳控制重要是通过控制通入电机旳脉冲频率,从而控制电机旳转速。
51系列单片机控制步进电机调速实验实验目的及要求:1、熟悉步进电机的工作原理2、熟悉51系列单片机的工作原理及调试方法3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量)4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。
速度设定由键盘设定,步进电机的反馈速度由LED数码管显示。
实验原理:步进电机控制原理一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。
步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。
由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。
随着数字控制系统的发展,步进电动机的应用将逐渐扩大。
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机的驱动电路根据控制信号工作,控制信号可以由单片机产生。
电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。
0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)图1 是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。
课程设计报告设计题目:遥控小车——基于51单片机的步进电机调速系统学院:专业:班级:学号:姓名:电子邮件:时间:成绩:指导教师:华南农业大学理学院应用物理系课程设计(报告)任务书学生姓名指导教师职称学生学号专业电子信息科学与技术题目基于51单片机的步进电机调速系统(遥控小车)任务与要求1. 设计并制作电路,利用单片计控制步进电机运转。
2. 通过键盘可以不间断地设定改变电机的转速、转向。
3. 利用显示器实时显示转速等参数。
4. 扩展功能:可设定转动步数。
开始日期2014 年3 月完成日期2014 年3 月1引言步进电机是一种将电脉冲转化为角位移的执行机构。
目前,步进机已经广泛应用于领域,例如工业生产中的机械臂的控制,照明装置和监控摄像机转动等。
步进机在装置转动、精确位移方面有很重大的作用。
本系统是基于STC89C51 单片机的遥控小车。
采用STC89C51单片机作为控制核心,通过ULN2003A驱动步进机(28BYJ-48)转动,由按键和显示屏1602组成人机交互模块,同时通过315M无线发射和接收模块向单片机输入控制信号,将整个系统固定于简易小车上,最终实现小车测试和远程遥控功能。
基本达到预定的设计要求以及功能的扩展。
2系统的设计与理论分析2.1系统总体设计2.2理论分析本设计分为两种工作模式:测试模式、遥控模式。
在电路板上有一个带锁的开关进行设置。
测试模式工作时,通过控制小车上的按键进行加速、减速、反转、设置、步数增、步数减等按键,单片机扫描按键,通过软件控制液晶模块显示对应的转速、设置的速度和步数,同时控制步进机模块进行相应的转动。
步进机的是由ULN2003A达林顿管驱动,由单片机控制输入脉冲的频率来控制步进机的转速,单片机是通过程序查表对4个I/O口输出脉冲,本次设计采用的是两相四线减速步进机,步进角为5.625°,减速比为64:1,程序采用的是8拍查表,具有较好的扭矩。
遥控模式工作时,遥控部分五个按键分别输入前、后、左、右、暂停,单片机扫描按键,通过无线发射模块发射串行编码,小车的无线接收模块接收对应的编码,送至单片机进行解码,从而控制液晶模块的显示和步进机模块的工作,进而完成功能。
基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
51单片机驱动步进电机的方法一、步进电机简介步进电机是一种将电脉冲转化为角位移的执行机构,广泛应用于各种自动化设备中。
其工作原理是,当一个脉冲信号输入时,电机转动一个步距角,从而实现电机的精确控制。
二、51单片机驱动步进电机的方法1、硬件连接需要将51单片机与步进电机连接起来。
通常,步进电机需要四个引脚,分别连接到单片机的四个GPIO引脚上。
同时,还需要连接一个驱动器来提高电机的驱动能力。
2、驱动程序编写接下来,需要编写驱动程序来控制步进电机的转动。
在51单片机中,可以使用定时器或延时函数来产生脉冲信号,然后通过GPIO引脚输出给电机。
同时,还需要设置电机的步距角和转向,以保证电机的精确控制。
3、示例程序以下是一个简单的示例程序,用于演示如何使用51单片机驱动步进电机:cinclude <reg52.h> //包含51单片机的头文件sbit motorPin1=P1^0; //定义连接到P1.0引脚的电机引脚sbit motorPin2=P1^1; //定义连接到P1.1引脚的电机引脚sbit motorPin3=P1^2; //定义连接到P1.2引脚的电机引脚sbit motorPin4=P1^3; //定义连接到P1.3引脚的电机引脚void delay(unsigned int time) //延时函数unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);void forward(unsigned int step) //正转函数motorPin1=0;motorPin2=0;motorPin3=0;motorPin4=0; //清零电机引脚delay(step); //延时一段时间motorPin1=1;motorPin3=1;motorPin2=0;motorPin4=0; //设置转向和步距角delay(step); //延时一段时间void backward(unsigned int step) //反转函数motorPin1=0;motorPin2=0;motorPin3=0;motorPin4=0; //清零电机引脚delay(step); //延时一段时间motorPin2=1;motorPin4=1;motorPin3=0;motorPin1=0; //设置转向和步距角delay(step); //延时一段时间void main() //主函数unsigned int step=1000; //设置步距角为1000微步forward(step); //正转一圈backward(step); //反转一圈while(1); //循环等待,保持电机转动状态在这个示例程序中,我们使用了四个GPIO引脚来控制步进电机的转动。
重庆工商大学计算机与信息工程学院学院《单片机原理及应用》课程实验报告实验名称:步进电机综合控制实验实验班级:2010级自动化专业班级:2010级自动化三班指导老师:文远熔组员:陶园2010133330 王路2010133344江洋2010133335陈娅2010133326张琴芳2010133317张丹2010133320(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。
步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。
利用ZLG7290模块驱动LED数码管显示速度设定值。
通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。
关键词:51单片机步进电机ZLG7290 ULN2003二、设计内容与要求:1、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。
所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。
2、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。
三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。
在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。
其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1步进电机1.1.1相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。
电机相数不同,其步距角也不同。
b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。
本实验程序运行前要先测量步进电机的步距角。
用51单片机控制两相四线步进电机最近学习步进电机的驱动原理,照着教材自己实践了一下用ULN2003驱动28BYJ-48两相5线步进电机,可以正常转动。
手头有一个旧光驱,拆开发现里面有三个电机,其中有一个控制激光头寻迹的两相四线步进电机,我就用51的单片机让它也转起来。
一开始照葫芦画瓢用ULN2003驱动,结果发现无论如何也不行。
原来ULN2003基本没输出电流,只能驱动有公共端的两相五线、两相六线步进电机,不能驱动2相4线步进电机。
然后改用L293D驱动,可以转动。
通过按钮控制正反转时发现,按键释放后,电机迅速发热,烫手。
用万用表测量,发现电机A,A-或B,B-直接存在电位差!应该是按键释放时,IN1-IN4没有归零。
找到问题,就容易解决了。
修改程序,可以完美运行,键1按下正转,释放停下,键2按下反转,释放停下。
IN1-IN4分别接P1口的低四位。
工作方式选用8拍。
A 1 1 0 0 0 0 0 1A- 0 0 0 1 1 1 0 0B 0 1 1 1 0 0 0 0B- 0 0 0 0 0 1 1 1附上源程序,仅供参考。
#include#define uint unsigned int#define uchar unsigned charsbit K3=P2^5;sbit K4=P2^4;//k3正转。
k4反转。
释放停止uchar code step_table[]={0x8,0xa,0x2,0x6,0x4,0x5,0x1,0x9};void delay(unsigned int m){unsigned int i,j;for(i=m;i>0;i--)for(j=110;j>0;j--);}void xp()//x轴正转{while(!K3){uint i;for(i=0;i<8;i++){P1=step_table[ i];delay(10);}}P1=0;//按键释放时,反转P1停在table某处,导致电机有电压从而使电机发热,需要归零。
项目设计报告项目名称:步进电机的控制课程名称:单片机应用工程技术训练学院:机电学院专业:机械工程及自动化学号:2010090301304/22/37姓名:张梦迪张博文崔剑锋成绩:2013年05月28 日1.设计任务设计基于51单片机的步进电机测控系统。
基本功能:可6键控制步进电机的启动/停止、加速/减速和正转/反转。
扩展功能:可在LED显示器上实时显示步进电机的运行状态。
2. 设计要求2.1. 基本功能(1)利用2按键控制步进电机的启停与停止。
系统上电后,等待启动命令;按“启动”键后,步进电机开始正转(默认转向和转速);在转动过程中,按“停止”键后步进电机停止转动,程序回到上电状态。
要求按键作消抖处理。
(2)利用2个按键改变步进电机的转动方向,使其在转动过程中按“正转”键时步进电机正转;按“反转”键时步进电机反转,要求按键作消抖处理。
在LCD显示器上显示步进电机的转向。
(3)利用2按键改变步进电机的转速,使其在转动过程中按“加速”键时步进电机的转速增加10r/min,按“减速”键时步进电机的转速减少10r/min,转速控制在10~100r/min的范围内。
默认值为50r/min。
2.2.扩展功能电机运行后,在LED显示器上实时显示步进电机的运行状态。
2.3. 材料清单表1. 材料清单序号数量步进电机的控制规格1 1 四相步进电机2 1 电机驱动器ULN20033 6 独立式按键4 1 LED显示器3、总体方案设计3.1 步进电机控制设计要点本系统中驱动的电机为四相步进电机。
该四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动[6]。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
本系统使用的工作方式便为四拍工作方式。
工作方式如图2所示:在用软件控制时,主要设计要点如下:(1)判断旋转方向;(2)按相序确定控制字;(3)按顺序输入控制字;(4)确定控制步数和每一步的延时时间。
系统控制简图如图3所示:图3. 系统控制简图4. 硬件设计4.1 各单元模块功能及电路设计,绘制电路原理图;1)按键设计该系统中运用到六个控制按钮,即正转、反转、启动、停止、加速、减速,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂。
按键电路如图4所示图4. 按键电路图2)显示设计使用LED 实时显示步进电机的转向和转速,方法简单,容易控制,成本低。
控制按键单片机 AT89c51功率驱动电路步进电机数码管显示模块显示电路图如图5所示图5. 显示电路图3)功率驱动电路对单片机发出的脉冲信号进行放大,来控制步进电机运转。
功率驱动电路如图6所示图6. 驱动电路图4.2 电路参数的计算及元器件的选择。
表2.步进电机单4拍方式节拍控制字表通电顺序P1口线输出状态控制字P1.3(D)P1.2(C)P1.1(B) P1.0(A)A000101B001002C010004D100008电路晶振频率为12MHz步进电机步距角为18度5、软件设计通过项目分析,由于随时有可能输入启动停止信号、加减速信号和方向改变信号,因而采用中断方式,这样总共要完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分以及中断部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。
5.1 软件设计及程序流程图1)主程序设计主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。
其中系统初始状态的设置内容较多,该系统中,需要选定定时器工作方式、初始化定时器、开放外部中断,设置标志位及偏移量。
主程序流程图如图7所示。
主程序中开放了正反控制标志位30H,设置默认转速值放于中间寄存器R2,设置步进电机工作方式为单相四拍并存储于中间寄存器R4中。
系统初始化调用显示子程序调用按键扫描程序开始图7. 主程序流程图2)LED显示子程序在显示子程序中,由于需要四位数码管显示,单片机的I/O接口不够用,所以需要使用数码管动态显示,在显示程序中,先要完成送显字符BCD译码,在对译码数据进行送显。
显示子程序如图8所示。
在显示子程序中,由于要对显示进行查表,为避免与按键与电机扫描查表混乱,所以需要对表头地址进行堆栈,保护现场,设置的堆栈地址为40H,41H,42H。
进入取显示数据分离数据取送字位码取送字形码判断3位是否显示完毕返回修改字位码YN 图8. 显示子程序流程图3)按键扫描子程序按键扫描程序中通过扫描单片机P3.0—P3.5引脚是否识别到低电平来确认是否有按键按下,进而修改标志位使电机改变运转方式以及更改数码管显示。
按键扫描子程序如图9所示。
进入检测那个按键启动键按下启动定时结束检测是否有按键按下按下执行相应程序返回YN启动键按下进入启动定时结束返回停止键按下进入停止定时结束返回正转键按下进入设标志位返回启动键按下启动定时结束反转键按下进入设标志位返回取速度表定时加速键按下判断是否为最高速进入进入判断是否为最高速循环次数返回偏移量加一进入YN加速键按下判断是否为最高速进入判断是否为最高速取速度表定时循环次数返回偏移量加一进入YN启动键停止键正转键反转键加速键减速键图9. 按键扫描子程序流程图4)定时中断子程序定时器可以使用查双字表,也可以通过设定一个基本定时时间再循环来实现。
在本次设计中,使用定时器来实现步进电机的转速控制,由于需要多次调用,所以相比较而言,查双字表比较麻烦,所以选用第二种方式;再根据定时器四种工作方式以及本次设计的要求,所以使用定时器1,工作方式TMOD=1,根据步进电机的速度控制要求,设定定时器的基本定时时间为t=2.4ms,计算计数初值:X=216-2.4*10-3*12*106/12=63163=0F6A0H,即定时器初值为:TH1=0F6H TL1=0A0H 定时器的设计如表3所示表3. 定时器设计速度(r/min)10 20 30 40 50 60 70 80 90 100单步所需时间(ms)300 150 100 75 60 50 43 38 33 30基本定时时间(ms)2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4循环次数(n)125 63 42 31 25 21 18 16 14 13定时器子程序流程图如图10所示进入重新赋值判断是否循环完毕压栈DPTR判断是否为正转送控制字偏移量加一判断四步是否走完重赋偏移量初值返回定时器启动取正转控制字取反转控制字YNY NYN6、系统调试及结果6.1列出调试内容、调试方法以及具体步骤;调试内容及具体操作控制方法如下:1、当按电机启动按键时,步进电机根据制定默认状态开始转动;2、当按电机停止按键时,步进电机停止转动;3、当按电机加速按键时,步进电机速度增加10r/min继续转动;4、当按电机减速按键时,步进电机速度减少10r/min继续转动;5、当按电机反转按键时,步进电机反转;6、当按电机正转按键时,步进电机正转;具体调试方法为断点调试方法,单步执行。
6.2说明调试中出现的问题及解决方法。
1.反转不能正常运行解决办法:没有正确运用标志位,通过中断检测和单步运行,找到问题是送给步进电机的控制字不正确,所以一直在抖动。
通过设置标志位,判定正反转,然后再赋表头地址,查表取控制字,然后反转运行正常2.调速不正常解决办法:同样是查表有问题,通过中断检测和位状态监控找到问题,然后通过逻辑分析调整偏移量和表头地址,解决问题3.显示程序与转速冲突解决办法:当加上显示子程序的时候,表达到五个,查表的DPTR产生相互之间的影响,从而是查表混乱,通过设置堆栈指令保护现场,然后在每次查表的时候重新给一下表头地址,这样就可以保证每次查表的正确性。
7、设计总结步进电机的控制可以用硬件,也可以用软件通过单片机实现。
本系统采用了软件方法,即用单片机产生控制脉冲来控制步进电机的运行状态,这种方比采用硬件方法,即采用脉冲分配器芯片进行通用换相控制,电路更加简单,成本更低。
在做本次设计的过程中,我感触最深的当属查阅大量的设计了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的。
在这次课程设计中,我们运用到了以前所学的专业课知识。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
设计结束了,但是从中得到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
此次设计更锻炼了我的毅力,我觉得做任何事情要善始善终,不要中途放弃,只要自己认真的去对待,再难的问题也能找到办法解决。
8、参考资料1. 参考教材一:《单片机接口技术实训指导书》作者:北京联合大学机电学院2. 参考教材二:《微机原理与接口技术实验指导书2009》作者:北京联合大学机电学院3.参考教材三:《单片机应用技术》,科学出版社作者:赵林惠9、附件1. 系统电路原理图见附录I2. 程序清单及注释见附录II成员签字:附录I 系统电路原理图附录II 程序清单及注释DISP_0 EQU 40HDISP_1 EQU 41HDISP_2 EQU 42HORG 0000HAJMP MAINORG 001BHAJMP T1_INORG 0080HMAIN: MOV SP,#65hMOV TMOD,#10H ;定时器1 工作方式1MOV TH1,#0F6H ;定时器初值MOV TL1,#0A0HMOV IE,#88H ;开放中断MOV A,#00HMOV R4,#04 ;单四拍MOV R3,#0SETB 30H ;开放正反转标志位MOV R2,#25 ;默认值为50r/minMOV 60H,R2MOV 45H,#04 ;默认转速值LP: ACALL DISPLAY ;调用显示子程序ACALL KEYSJMP LPKEY: MOV P3,#0FFH ;p3口写1MOV A,P3CPL A ;取反,按下去是1不按是0JZ EXITACALL DELAY ;调用延时消抖MOV A,P3 ;读P3口,验证是否有键按下CPL A ;取反,按下去是1不按是0JZ EXIT ;无键按下,退出子程序。
有键按下,确定键号。
JB ACC.0,KEY1 ;查询1号键正转JB ACC.1,KEY2 ;查询2号键反转JB ACC.2,KEY3 ;查询3号键停止JB ACC.3,KEY4 ;查询4号键启动JB ACC.4,KEY5 ;查询5号键加速JB ACC.5,KEY6 ;查询6号键减速EXIT: RETKEY1: MOV A,P3 ;检查键位是否释放JNB ACC.0,KEY1 ;键未释放,则继续等待,否则向下执行相应的功能程序SETB 30H ;正转RETKEY2: MOV A,P3JNB ACC.1,KEY2CLR 30H ;反转RETKEY3: MOV A,P3JNB ACC.2,KEY3CLR TR1 ;停止JNB ACC.3,KEY4SETB TR1 ;启动RETKEY5: MOV A,P3JNB ACC.4,KEY5MOV A,45HCJNE A,#09H,K5 ;判断转速是否为最大值MOV 45H,#09HSJMP K55K5: INC 45HK55: MOV A,45HMOV DPTR,#TAB3MOVC A,@A+DPTRMOV R2,AMOV 60H,ARETKEY6: MOV A,P3JNB ACC.5,KEY6MOV A,45HCJNE A,#00H,K6 ;判断转速是否为最小值MOV 45H,#00HSJMP K66K6: DEC 45HK66: MOV A,45HMOV DPTR,#TAB3MOVC A,@A+DPTRMOV R2,AMOV 60H,ACLR aRETT1_IN: MOV TH1,#0F6H ;重新赋定时器初值MOV TL1,#0A0HDJNZ R2,T1_ENDMOV R2,60Hpush DPHpush DPLJNB 30H,LP1 ;判断正反转MOV DPTR,#TAB1LB: MOV A,R3MOVC A,@A+DPTRMOV P0,AINC R3CLR ADJNZ R4,T1_ENDSJMP LP3LP1: MOV DPTR,#TAB2SJMP LBLP3: MOV R4,#04HMOV R3,#0T1_END: pop DPLpop DPHL1: MOV R6,#0FAHDJNZ R6,$DJNZ R7,L1 ;延时12ms子程序RETDISPLAY:MOV A,45HMOV DPTR,#TAB4MOVC A,@A+DPTRMOV B,#100;转换为BCD码,送入显示缓冲区DIV ABMOV DISP_2, AMOV A, BMOV B, #10DIV ABMOV DISP_1, AMOV DISP_0, BMOV R0, #DISP_0 ;置显示缓冲区首地址MOV R5, #01H ; 置字位码初值,右边第一位开始亮DIS0: MOV P2,#00H ; 关显示器MOV A, R5MOV P2, A ; 送字位码MOV DPTR, #DISP_TABMOV A, @R0MOVC A, @A+DPTR ; 查表取显示的字符的字形码MOV P1,A ; 送字形码ACALL DELAY1MOV A, R5 ; 取字位码JB ACC.3, DISRET ; 判断3位是否显示完毕RL A ; 修改字位码MOV R5, A ; 保存字位码INC R0SJMP DIS0 ; 继续显示下一位DISRET: RETTAB1: DB 01H,02H,04H,08HTAB2: DB 08H,04H,02H,01HTAB3: DB 125,63,42,31,25,21,18,16,14,13Tab4: DB 10,20,30,40,50,60,70,80,90,100DISP_TAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DHDB 7DH, 07H, 7FH, 6FHDELAY1: MOV R7,#4HDEL: MOV R6,#0FAHDJNZ R6,$ ;T=2*250*4=2msDJNZ R7,DELRETEND。