99网
您的当前位置:首页L297+L298步进电机控制

L297+L298步进电机控制

来源:99网
摘要

摘要

本文介绍了计算机通过单片机控制步进电机的系统。在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。步进电机是机电控制中一种常用的执行机构, 其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。

步进电动机的突出优点是它可以在宽广的频率范围内,可以利用改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且由其组成的开环系统简单、廉价、可靠,因此在众多领域有着极其广泛的应用。本设计重点研究了高性能步进电机驱动器及其控制系统。该系统以微机作为上位机,ATC 51单片机作为下位机。下位机设定电机速度和方向,上位机对下位机的数据信号进行控制和备份。通过单片机与微机的串口通讯,实现对步进电机的远距离实时监控。使用软件代替环形分配器,完成了高效、节能的步进电机控制系统设计。软件使用易于维护的模块化设计方法,并采取软、硬件抗干扰技术,提高了系统稳定性。大量实验表明系统性能达到设计要求,最后对本次设计做出分析和总结。

经系统调试,能够很好的控制步进电机的正反转、加减速,从而达到预期目的。整个系统具有结构简单、可靠性高、成本低和实用性强等特点,具有较高的通用性和应用推广价值。

关键词:计算机 串行口MSComm 51单片机 步进电机

I

Abstract

Abstract

This paper, we introduces a stepper motor system which controlled by SCM. In the Electrical era today, Motor has been playing a very important role in the modernization of production and life. Stepper motor is a common used implementing agency in motor control. The principle is by switching the coil current and the order in its each phase to make a step-by-step rotary motor.

The outstanding advantages of step motor are that it can realize speed regulation, quick startup and stop, positive-reverse control, brake and so on by changing the frequency of pulse. In addition, the open-loop system that consisted of the step motor is simple, cheap and reliability. Therefore its application is very extensive in many fields.

Though system testing, it can be very convenient to control the stepper motor, such as acceleration , deceleration, exigency stop so as to achieve the desired objectives. The whole system is simple in structure with characteristics of high reliability, low cost and practicality which has a higher universal characteristic and the promotional and applied value.

Keywords: computer MSComm Single-chip microprocessor Stepper moto

II

目录

目录

摘要 ····································································································错误!未定义书签。 Abstract ·····························································································错误!未定义书签。 第1章 绪论 ····························································································错误!未定义书签。

1.1 技术概述 ····················································································错误!未定义书签。 1.2课题的背景及意义 ·····································································错误!未定义书签。 第2章 步进电机控制系统的总体设计 ················································错误!未定义书签。

2.1 整体方案设计 ············································································错误!未定义书签。 2.2上位机软件介绍 ·········································································错误!未定义书签。 2.3上位机任务 ·················································································错误!未定义书签。 第3章 系统硬件设计 ············································································错误!未定义书签。

3.1 单片机的选择 ············································································错误!未定义书签。

3.1.1 驱动芯片的选择 ······································································· 错误!未定义书签。 3.1.2 步进电机的选择 ······································································· 错误!未定义书签。

3.2 PC串口通信模块硬件设计 ····················································错误!未定义书签。

3.2.1 PC串口描述 ··········································································· 错误!未定义书签。 3.2.2 上下位机通信电路设计 ··························································· 错误!未定义书签。 3.3 小结 ···························································································错误!未定义书签。

第4章 上位机软件设计 ········································································错误!未定义书签。 4.1上位机界面实现步骤 ································································错误!未定义书签。 4.2串口通信模块程序设计 ····························································错误!未定义书签。

4.2.1串口通信原理·········································································· 错误!未定义书签。

4.2.2串口通信流程图 ······································································ 错误!未定义书签。 4.2.3串口通信程序设计··································································· 错误!未定义书签。

4.3 ATC51程序分析 ····································································错误!未定义书签。

第5章 系统测试 ····················································································错误!未定义书签。

5.1 系统测试 ···················································································错误!未定义书签。 结论 ··········································································································错误!未定义书签。 致谢 ··········································································································错误!未定义书签。 参考文献 ··································································································错误!未定义书签。 附录1:下位机程序 ···············································································错误!未定义书签。 附录2:科技文摘译 ···············································································错误!未定义书签。

河北工程大学毕业设计说明书

绪论

1.1 技术概述

在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产还是在日常生活中的家用电器,都大量地使用着各种各样的电动机。因此对电动机的控制变得越来越重要了。电动机的控制技术的发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术、微机应用技术的最新发展成就。正是这些技术的进步使电动机控制技术化。

步进电机是机电控制中一种常用的执行机构,其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM),混合式步进电机(HB)和单相式步进电机等。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7。50;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1。50,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1。8“而五相步进角一般为0。720。这种步进电机的应用最为广泛。

步进电机的一些基本参数:

电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0。90/1。80(表示半步工作时为0。90、整步工作时为1。80),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。

步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0。90/1。80、三相的为0。750/1。50、五相的为0。360/0。720。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。

保持转矩 :是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重

1

河北工程大学毕业设计说明书

要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为衡量步进电机最重要的参数之一。比如,当人们说2 Nm的步进电机,在没有特殊说明的情况下是指保持转矩为2 Nm的步进电机。

步进电机的一些特点:

⑴一般步进电机的精度为步进角的3%--5%,且不累积。 ⑵步进电机外表允许的最高温度。

⑶步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在130C以上,有的甚至高达200C以上,所以步进电机外表温度80C-90C完全正常。

⑷步进电机的力矩会随转速的升高而下降。

⑸当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。

⑹步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。介绍步进电机的一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

⑺步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。

本文以永磁式步进电机为例,来介绍如何用计算机通过上位机mscomm控件来指示MCS-51 系列单片机控制步进电机。

1.2课题的背景及意义

步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统和精密机械等领域。例如,在仪器仪表,机床设备以及计算机的外围设备中(如打印机和绘图仪等),凡需要对转角进行精确控制的情况下,使用步进电机最为理想。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原

2

河北工程大学毕业设计说明书

理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了80年代后,由于廉价的微型计算机以多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。

现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。

3

河北工程大学毕业设计说明书

第2章 步进电机控制系统的总体设计

随着材料科学、工艺技术、计算机技术的发展与进步,电路系统向着集成度极高的方向发展。CPU的生产制造技术,也朝着综合性、技术性、实用性发展。如CPU的运算位数从4位、8位 „„到32位机的发展,运算速度从8 MHz、32 MHz„„到1.6 GHz。可以说是日新月异的发展着。其中单片机在控制系统中的应用是越来越普遍了。单片机控制系统是以单片机(CPU)为核心部件,扩展一些外部接口和设备,组成单片机工业控制机,主要用于工业过程控制。要进行单片机系统设计首先必须具有一定的硬件基础知识;其次,需要具有一定的软件设计能力,能够根据系统的要求,灵活地设计出所需要的程序;第三,具有综合运用知识的能力。最后,还必须掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的动、静态特性,有时甚至要求给出被控对象的数学模型。

51单片机 计算机 步进电机 MAX232 L298N L297N

图2-1总体框图

2.1 整体方案设计

使用、控制步进电机必须由环形脉冲源、功率放大电路等部分组成控制系统,脉冲信号一般由单片机或CPU产生,一般脉冲信号的占空比为0.3-0.4左右,电机转速越高,占空比则越大。功率放大是驱动系统最为重要的部分。步进电机在一定转速下的转矩取

4

河北工程大学毕业设计说明书

决于它的动态平均电流而非静态电流,平均电流越大,电机力矩越大,要达到平均电流大,这就需要驱动系统尽量克服电机的反电势。因而不同的场合采取不同的驱动方式。到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流等。

此控制系统的硬件主要组成:计算机,MAX232,51系列单片机,L297N,L298N、步进电机等。整体结构如图2-1所示本系统总体设计思路是:由计算机发出电平信号,通过电平转换芯片MAX232把命令给单片机。单片机接受并转换成控制信号发送给L297,L298N。L297主要作用那个是控制步进电机,使编程简单,L298N主要作用连接步进电机从而驱动步进电机。

2.2上位机软件介绍

由于本设计上位机的界面是用VC++6.0实现的,因此有必要先对VC++6.0做简单介绍,使读者对该软件有初步了解。

VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。谈到vc++6.0就不得不提到它的调试功能,这是devcpp比不上的。调试重要的几个键:F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点。 F5调试状态运行程序,程序执行到有断点的地方会停下来。F10单步执行程序。 CTRL+F10运行到光标所在行。F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.SHIFT+F11跳出当前所在函数。调试的步骤:1,保存为c或c++文件。2,根据断点调试找到错误处。3,采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数调用,F11是进入函数体调试。一般是先用F10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用F11进入函数体一步一步调试。4,在调试过程中,肯定得监视程序中的变量。在vc++6.0的右下角有一个watch窗口,专门用来设置监视变量。具体怎样设置自己体会吧。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值5,vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。右键-->在debug(或调试)选择项的勾勾上。

5

河北工程大学毕业设计说明书

我们就暂时告别一下这些令人敬畏的源代码,来看看VC6的工程设置选项。不过,虽然讲座中不谈及源代码,心铃还是建议大家有空就多读读程序,因为这是一条能够迅速增加编程知识,提高编程能力的有效途径。打开或新建一个包含至少一个工程的Workspace后,VC6的Project菜单中的“Settings„”命令就变为有效,选择它或者按下热键Alt+F7后,便可调出工程设置对话框,这里面的选项将影响整个工程的建立和调试过程,因此很重要,虽然在一般情况下,其中的大多数选项都不用改变,但了解一下它们的含义能够消除我们心中存在的神秘感,并加深我们对VC工程的理解。在这个对话框中,左上方的下拉列表框用于选择一种工程配置,包括有Win32 Debug、Win32 Release和All Configurations(指前两种配置一起),某些选项在不同的工程配置中有不同的缺省值。左边的树形视图给出了当前工程所有的文件及分类情况。如果我们把工程“Schedule”置为高亮显示,对话框的右边就会出现总共十个选项卡,其中列出了与工程有关的各种选项,不少选项卡中有一个Reset按钮,按下它后可以把选项卡内的各项设置恢复到生成工程时的初始值。如果我们在树形视图中选择一个文件类或一个文件,那么对话框右边的选项卡会自动减少到一个或两个,其中列出的都是与选中的文件类或文件有关的选项。下面我们就以Win32 Debug为例来看看与工程有关的十个选项卡各自的功能与含义,与文件有关的选项卡则请大家自己琢磨一下。General 这个选项卡比较简单,从上向下的第一个选项用于更改使用MFC类库的方式,大家是否还记得我们曾在AppWizard的第五步指定以DLL的方式来使用MFC类库?但现在我们可以在两种方式之间随意进行切换。第二个选项用于指定在编译连接过程中生成的中间文件和输出文件的存放目录,对于调试版本来说,缺省的目录是工程下面的“Debug”子目录。

在General类别中,我们可以指定要调试的可执行文件名,如果正在编写的程序是一个DLL,那么应在此处指定一个用来调试该DLL的EXE文件。另外三个选项可以指定用于调试的工作目录,开始调试时给程序传送的命令行参数,以及进行远程调试时可执行文件的路径。把类别切换到Additional DLLs后,我们可以指定在开始调试时是否为一些额外的DLL装载调试符号信息,只有装载了符号信息后才能跟踪进DLL。

C/C++选项卡控制着VC6的编译器,其中的选项比较多,也比较复杂,心铃要重点介绍一下它。最下面有一个Project Options编辑框,里面列出的各种命令开关将会在开始编译时作为命令行参数传送给VC6的编译器,以便对编译过程进行控制。这些命令开关会跟随其它选项改变而改变,另外,如果我们知道某些命令开关,也可以直接在这个编辑框中输入,开关所对应的选项会自动改变。

在General类别中,Warning level用于指定编译器显示警告的级别,None表示不显示任何警告,L1表示只显示严重的警告,L2表示显示比L1次严重的警告,L3表示显示比L2次严重的警告,L4则表示显示出所有的警告,包括那些安全忽略的警告,如果选中了Warnings as errors,那么显示的每一个警告都将会引起一个错误,这样在编译完毕后

6

河北工程大学毕业设计说明书

就无法启动连接器来进行连接。C/C++语言的语法相当复杂和严格,尽管编辑器在产生了警告后并不会中断工程的建立过程,但警告信息往往表示程序在某些地方存在着潜在的问题,所以心铃建议大家今后把警告等级设置成L3,并尽量排除掉编译过程中产生的警告。Optimizations用于设置代码优化方式,优化的目的主要有提高运行速度和减小程序体积两种,但有时候这两种目的是相互矛盾的。Debug info用于指定编译器产生的调试信息的类型,第一讲中心铃曾介绍过VC6支持即编即调功能,为了使用这一项功能,必须在这里选择生成“Program Database for Edit and Continue”类型的调试信息,而不能生成与老版本编译器兼容的调试信息。Preprocessor definitions是一些预先定义的宏名,MFC类库和Windows的头文件中大量使用了这些宏来设置条件编译。

2.3上位机任务

本设计中上位机的任务是利用VC++6.0软件,编写出基于对话框的应该用程序,该

对话框中包括“启动,停止,正转,反转,加速,减速”六个按钮,一个 “静态文本框”,一个“下拉组合框”和一个“MSComm控件”。要想利用该对话框的按钮向单片机发送指令从而间接控制步进电机转动,必须利用VC++提供的MSComm控件。上位机和下位机的约定是:01H代表启动,02H代表停止,03H代表正转,04H代表反转,05H代表加速,06H代表减速。当操作人员按了六个按钮中的任何一个按钮时,上位机应该应用MSComm控件的功能把相应的指令代号准确的传送给单片机。上位机不直接对计算机的硬件进行操作,而是利用VC++6.0来把串口当做文件来处理。本设计要达到的目的是,当按下相应按钮时,计算机把相应指令代号传送给单片机,单片机根据指令代号跳向单片机内的相应程序。由于转动完全受上位机控制,单片机内没有改变电机运行状态的程序代码所以上位机必须能够实现准确快速的把指令代码传给单片机。总之上位机要实现一个人机互动的界面,并具有实际功能。

7

河北工程大学毕业设计说明书

第3章 系统硬件设计

步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下: (1)控制换相顺序

通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相

图3-1 ATC51的引脚图

通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。

(2)控制步进电机的转向

如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。

8

河北工程大学毕业设计说明书

(3)控制步进电机的速度

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。

3.1 单片机的选择

MCS-51是标准的40脚双列直插式集成电路芯片,引脚排列请参见图3-1

VCC:电源电压; GND:地;

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写1可作为高阻抗输入端用。

P1口:P1口是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动 (吸收或输出电流)4个TTL逻辑门电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。0作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。

P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动 (吸收或输出电流)4个TTL逻辑们电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。

P3口:P3口是一个带有内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动 (吸收或输出电流)4个TTL逻辑们电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。

P3口除了作为一般的I/O口线外,更重要的用途是他的第二个功能,如表3-1所示:

9

河北工程大学毕业设计说明书

表3-1P3口特殊功能

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 功能特性 RXD(串行口输入) TXD(并行口输入) INT0(外部中断0) INT1(外部中断1) T0(定时计数外部输入0) T1(定时计数外部输入0) WR(外部数据存储器写选通) RD(外部数据存储器读选通) P3口还接收一些用于FLASH闪速存储器编程和程序效验的控制信号。

RST:复位输入。其引脚一旦变成两个机器周期以上的高电平,所有的I/O口都将复位到1状态,当振荡器正在工作时,持续两个机器周期以上高电平便可完成复位,每个机器周期为12个振荡时钟周期。

EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(0000H—FFFFH),EA端必须保持低电平接地,需注意的是:如果加密位LB1被编程,复位是内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。 FLASH存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。

XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器输出端。

ATC51中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和 XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈器件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图3-2。

外接石英晶体或陶瓷振荡器及电容 C1,C2接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振得难易程度及温度稳定性,如果使用石英晶体,推荐电容使用30PF±10PF,而如使用陶瓷振荡器建议选择40PF±10PF。

10

河北工程大学毕业设计说明书

图3-2时钟振荡电路

3.1.1 驱动芯片的选择

基于L297/298驱动芯片的两相双极性混合式步进电机驱动器,采用恒流斩波 图:L297/298驱动器方式驱动,每相电流可达2A。其中L297是步进电机控制器,适用于双极性两相步进电机或单极性四相步进电机的控制。用L297输出信号可控制L298双桥驱动集成电路,用来驱动电 压最高为46V,总电流为4A以下的步进电机。L297也可用来控制由达林顿管组成的分立电路,以驱动更高电压,更大电流的步进电机。L297只需要时钟、方向和模式输入信号,相位由内部产生,从而减轻了微处理器和程序设计的负担。L297采用固定斩波频率的PWM恒流斩波方式工作。L297主要由译码器,两个固定斩波频率的PWM恒流斩波器以及输出控制逻辑组成[2]。L298是用来驱动步进电机的集成电路,采用双全桥接方式驱动,由于是双极性驱动,步进电机的定子励磁绕组线圈可以完全利用,使步进电机达到最佳的驱动。基于L297/298驱动器的混合式步进电机有三种不同的工作模式:即半步模式,见图3-3,整步两相励磁模式,见图3-4整步一项励磁模式,见图3-5。步进电机工作于半步模式时,其内部定子绕组的励磁是一相与两相相间的,此时步进电机每接受一个脉冲,只转过半个步距角。步进电机工作于半步模式时,步进电机所获得的转距较常规值偏小。步进电机工作于整步一相励磁模式时,其内部定子绕组的励磁在任何一个时刻都是一相的,此时步进电机每接受一个脉冲,转过一个步距角。步进电机工作于整步一相励磁模式时,步进电机获得常规转距。步进电机工作于整步两相励磁模式时,其内部定子绕组的励磁在任何一个时刻都是两相的,此时步进电机每接受一个脉冲,转过一个步距角。步进电机工作于整步两相励磁模

11

河北工程大学毕业设计说明书

式时,步进电机获得的转距相对前两种而言是最大的。L297的核心是其内部的译码器,通过译码器L297产生三种相序信号,以对应三种不同的工作模式。译码器受L297的方向输入引脚信号

和半步方式/整步方式输入引脚信号

所控制。译

码器内部是一个3BIT的计数器,加上一些组合逻辑,产生每周期8步的格雷码时序信号(见图3-6即半步模式的时序信号,此时L297的电平。若

输入引脚信号取高

引脚取低电平,则得到整步工作模式。如果

脚是在译码器的八步格雷码时序信号的奇数状态位时取

图3-3和图3-4

低电平的,则得到整步两相励磁模式;如果引脚是在译码器的八步格雷

码时序信号的偶数状态位时取低电平的,则得到整步一相励磁模式。

图3-5和图3-6

12

河北工程大学毕业设计说明书

3.1.2 步进电机的选择

步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统和精密等领域。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。步进电机和普通电机的区别主要在于其脉冲驱动的形式,是这个特点,步进电机可以和现代的数字控制技术相结合。不过步进电机在控制的精度度变化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机。在精度不是需要特别高的场合就可以使用步进电机,步进电机可以发挥其结简单、可靠性高和成本低的特点。使用恰当的时候,甚至可以和直流伺服电动机性能相媲美。每当步进电机被激励一次,它的轴就转动一个精确的角度。一般按国际标准的话,可分为大角度步进器和小角度步进器两大类。大角度步进器每步移动7.5。、15。、45。和90o;小角度步进器的标准步幅为1.80和5。。这种不连续的步进器输出方式的优点是,只要算一算计算机驱动电机多少步,便可知道电机轴的具体位置即实际控制设备的位置就可以知道。与步进电机的接口是比较复杂的问题,各种接口在不同的设备中有一些不同的处理方式,但基本上大同小异,但有些接口可能比我们这里分析输液泵接口的情况有差别,它可能比这里出现的情况要复杂的多,应该说接口电路在实际应用中有着重要的价值。步进电机有4个组。1、2、3和4,按适当顺序加上脉冲电流,电机就能步进。有如下三种顺 序:(1)低功耗顺序;

(2)正常顺序; (3)半步顺序。

低功耗顺序是把电流脉冲送到绕组1,然后是绕组2,绕组3,绕组4,再返回到绕组1,如此循环,在同一时刻不会有两个绕组接通,这时电机将步进一步。

正常顺序下列顺序一次激励两个绕组1和2。2和3,3和4,4和1等等。这样做的结果是运转平稳,但需要较大的功率。半步方式允许在每个步之间走半个角步。其顺序号:1和2;2;2和3;3;3和4;4;4和1;1。电机绕组的电阻相当低,其典型值是0.2Q姆,因此需要电流源来激励,同时还由于绕组的电感很大,需要特殊的设计方法,以防止因电感反冲而损坏开关管或滤波电容器。如果注意到真值表中由两个0和两个1组成的半字节是如何循环移位的,则程序就变得十分简单了,我们所应当做的就是以8位环形方式使数值00110011循环移位,在每次循环到PIA之前便输出。下面举例说明。步进电机2 个相

13

河北工程大学毕业设计说明书

邻磁极之间的夹角为60°。线圈绕过相对的2 个磁极,构成一相(A - A′,B - B′,C- C′) 。磁极上有5 个均匀分布的矩形小齿,转子上没有绕组,而有40 个小齿均匀分布在其圆周上,且相邻2 个齿之间的夹角为9°。当某组绕组通电时,相应的2 个磁极就分别形成N - S 极,产生磁场,并与转子形成磁路。如果这时定子的小齿与转子没有对齐,则在磁场的作用下转子将转动一定的角度,使转子齿与定子齿对齐,从而使步进电机向前“走”一步。211 步进电机的控制方式如果通过单片机按顺序给绕组施加有序的脉冲电流,就可以控制电机的转动,从而实现数字→角度的转换。转动的角度大小与施加的脉冲数成正比,转动的速度与脉冲频率成正比,而转动方向则与脉 冲的顺序有关。以三相步进电机为例,电流脉冲的施加共有3 种方式。

(1) 单相三拍方式(按单相绕组施加电流脉冲) :→A →B →C →正转; →A →C →B →反转。

(2) 双相三拍方式(按双相绕组施加电流脉冲) :→AB →BC →CA →正转; →AC →CB →AB →反转。

(3) 三相六拍方式(单相绕组和双相绕组交替施加电流脉冲) : →A →AB →B →BC →C →CA →正转; →A →AC →C →CB →B →BA →反转。

单相三拍方式的每一拍步进角为3°,三相六拍的步进角则为1. 5°,因此,在三相六拍下,步进电机的运行反转平稳柔和,但在同样的运行角度与速度下,三相六拍驱动脉冲的频率需提高1 倍,对驱动开关管的开关特性要求较高。步进电机的驱动方式如下:步进电机常用的驱动方式是全电压驱动,即在电机移步与锁步时都加载额定电压。为了防止电机过流及改善驱动特性,需加限流电阻。由于步进电机锁步时,限流电阻要消耗掉大量的功率,故限流电阻要有较大的功率容量,并且开关管也要有较高的负载能力。步进电机的另一种驱动方式是高低压驱动,即在电机移步时,加额定或超过额定值的电压,以便在较大的电流驱动下,使电机快速移步;而在锁步时,则加低于额定值的电压,只让电机绕组流过锁步所需的电流值。这样,既可以减少限流电阻的功率消耗,又可以提高电机的运行速度,但这种驱动方式的电路要复杂一些。驱动脉冲的分配可以使用硬件方法,即用脉冲分配器实现。现在,脉冲分配器已经标准化、芯片化,市场上可以买到。但硬件方法结构复杂,成本也较高。步进电机控制(包括控制脉冲的产生和分配) 也可以使用软件方法,即用单片机实现。

L297产生四相驱动信号,用以控制双极性两相步进电机或四相单极性步进电机,可以采用半步、两相励磁、单相励磁三种工作方式控制步进电机,并且控制电机的片内PWM斩波电路允许三种工作方式的切换。使用 L297突出的特点是外部只需时钟、方向和工作方式三个输入信号,同时L297自动产生电机励磁相序减轻了微处理器控制及编程的负担。L297具有DIP20和SO20两种封装形式,可用于控制集成桥式驱动电路或分立元件组成的驱动电路。因此本设计选用双极性二项步进电机35BY48S03。

14

河北工程大学毕业设计说明书

SGS公司的L297单片步进电机控制集成电路适用于双极性两相步进电机或四相单极性步进电机的控制,与两片H桥式驱动芯片L298组合,组成完整的步进电机固定斩波频率的PWM恒流斩波驱动器。L297产生四相驱动信号,用以控制双极性两相步进电机或四相单极性步进电机,可以采用半步、两相励磁、单相励磁三种工作方式控制步进电机,并且控制电机的片内PWM斩波电路允许三种工作方式的切换。使用 L297突出的特点是外部只需时钟、方向和工作方式三个输入信号,同时L297自动产生电机励磁相序减轻了微处理器控制及编程的负担。L297具有DIP20和SO20两种封装形式,可用于控制集成桥式驱动电路或分立元件组成的驱动电路。L297主要由译码器、两个固定斩波频率的PWM恒流斩波器以及输出逻辑控制组成。 L297另一重要组成是PWM斩波器控制相绕组电流,实现恒流斩波控制,以获得良好的转矩-频率特性。每个斩波器由一个比较器、一个RS触发器以及外接采样电阻组成内部设有一公共振荡器,向两个斩波器提供触发脉冲信号,脉冲频率是由外接的RC网络决定,当时振荡器脉冲使触发器置“1”,电机绕组相电流上升,采样电阻RS的电压上升到基准电压Vref时,比较器翻转,使触发器复位,功率晶体管关断,电流下降,等待下一个振荡器脉冲的到来。这样,触发器输出是恒频的PWM信号,调制L297的输出信号,绕组相电流峰值由Vref决定。

图3-7 L297和L298的步进电机驱动电路图

SGS公司的L298芯片是一种高电压、大电流双H桥功率集成电路,可用来驱动继电器、线圈、直流电机和步进电机等感性负载。它具有两抑制输入来使器件不受输入信号影响。每桥的三极管的射级是连接在一起的,相应的外接线端可用来连接外设传感电阻。可安置另一输入电源,使逻辑能在低电压下工作。采用L297和L298实现的步进电机驱动电路见图3-7,该电路为固定斩波频率的PWM恒流斩波驱动方式,适用两相双极性步进电机,最高电压46V,每相电流可达2A。用两片L298和一片297配合

15

河北工程大学毕业设计说明书

使用,可驱动更大功率的两相步进电机。

3.2 PC串口通信模块硬件设计

随着计算机应用技术和微机网络技术的发展, 计算机与其外部设备之间的数据通信越发显得重要, 在很多实际应用中通常用单片机来采集数据, 用微机来处理得到的数据。 数据通信方式可分为两种: 并行传送和串行传送。 并行传送速度快、效率高, 但传送可靠性差, 不适合远距离传送; 串行传送数据按位顺序移动, 速度较慢、效率偏低, 但传送可靠, 可以节省通信子系统的硬件投资。本文给出了MCS251 单片机与微机的串行通信方法, 它具有使用方便、数据传输可靠、适用于远距离通信的特点, 在工业监控、数据采集、检测等系统中有着广泛的应用。

通信协议是指通信双方共同遵守的交换数据的格式和意义的一组规则。计算机网络的协议包括了从物理线路的电气特性到各计算机的进程之间共享资源的全面内容。我们的通信协议只需制订信息在线路中的传输规则,它涉及信息格式、顺序控制、流量控制、信息的成帧与拆帧、差错控制及传输过程中的管理等方面。为了保证通信的正常进行,必须将通信协议规定的尽量详尽和周到,考虑到可能发生的各种情况。为了便于理解,通信协议的功能可以归纳如下:1 信号的传送与接收应规定信息传送的格式、接口 标准以及启动控制、结束控制、超时控制等。2 差错控制使构成传输数据的源码或源码组具有一定的逻辑性,接收端根据收到的数据进行相应的检测和纠

错操作。3 顺序控制对发送方的数据进行编号,以免重复接收或丢失。4 透明性指对用户终端所使用的数据代码无任何约束性的,即对用户使用的代码保证编码的性与传输的透明性。5 链路控制与管理在全双工、半双工等多种线路中,确定哪个站发送、哪个站接收,主要用于分布式控制系统中。6 流量控制为保证数据接收方与发送方在速率上的匹配而采用的方法。由于串行通信是计算机运行时进程的一个组成部分,其协议的设计应考虑能较为方便地与数据存储、输入输出 等操作协调工作。本文采用基于帧的协议设计思想, 即在向RS-232串行口发送命令信号、应答信号及数据信号时,信号是一帧一帧发送的。通信链路中所有的内容都将包含在这样的一个帧中,无论它是控制命令还是传送的数据。为了使数据可靠的传输,将每一帧信号唯一对应一个命令帧,具体如下:1 在PC 读数据时,遵循“读命令--等数据--报告”,即PC下达一条命令,等待接收数据,再根据所接收数据的正误向应用程序报告此命令的执行情况。2 在PC写数据时,遵循“写命令--等回应--报告”,即PC’ 下达一条写命令(此时所要写的数据含于此命令中),等待单片机发来的“已正确接收”的回应信号,并向应用程序报告此命令执行完毕。3 如果在传输的过程中, PC 或MCU 所接收任何一帧信号出现错误时, 均会向对方发送重发此帧信号的请求,连续三次失败,则退出通信。

16

河北工程大学毕业设计说明书

一般说来, 计算机都有一个或多个串行端口, 它们依次为Com1 , Com2 , ⋯这些串口还提供了外部设备与PC 进行数据传输和通信的通道, 这些串口在CPU 和外设之间充当解释器的角色。 当字符数据从CPU 发送给外设时, 这些字符数据将被转换成串行比特流数据; 当接收数据时, 比特流数据被转换为字符数据传递给CPU。 本文选用的是微机的Com1。单片机串口输入输出电平为TTL 电平, 而计算机串口符合RS232C串行总线标准, 采用的是负逻辑, 逻辑“1”为- 5

图3-8串行通信硬件电路

V~ - 15 V , 逻辑“0”为+ 5 V~ + 15 V。 这两种电平是不一样的, 因此不能直接连在一起。在本设计中, 通过电平转换芯片MAX232 来转换这两种电平。 电路原理图如图3-8 所示。

3.2.1 PC串口描述

计算机串行接口采用RS232标准:规定逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,常用的信号有8个(接口为DB9M插座时,引脚号如表3-2所示),其中RXD、TXD为收、发数据,可与RS232串行口设备直接进行通讯,RTS、DTR、CD、DSR、CTS、BELL为控制与检测MODEM的信号,在通讯过程中起联络与控制作用。数据格式有5、6、7、8位几种,1位起始位(逻辑0),1、1.5或2位停止位(逻辑1),可以选择奇校验、偶校验和无校验,常用波特率为2400、4800、7200、9600bps等。串行口编程方法主要有三种:硬件编程法、文件操作法、串口控件法。

表3-2DB9常用信号引脚

针号

功能说明 17

缩写 河北工程大学毕业设计说明书

1 2 3 4 5 6 7 8 9 数据载波检测 接受数据 发送数据 数据终端准备 信号地 数据设备准备好 请求发送 清除发送 振铃指示 DCD RXD TXD DTR GND DSR RTS CTS DHL 随着单片机和微机技术的不断发展,特别是网络技术在测控领域的广泛应用,由PC 机和多台单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。 它结合了单片机在实时数据采集和微机对图形处理、显示的优点。 同时,windows 环境下后台微机在数据库管理上具有明显的优势。 二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了以网络为核心的分布式多点系统发展的趋势。 单片机和PC 机的串行通信一般采用RS - 232、RS - 422 或RS - 485 总线标准接口。 本文针对PC 机常用的RS - 232 方式,

图3-9计算机与MAX232接口电路

主要探讨通过VB610 建立界面,采用RS - 232 接口与单片机通信的方法。RS - 232 是早期为公用电话网络数据通信而制定的标准,其逻辑电平与TTL \\ CMOS 几乎完全不同。 逻辑“0”规定为+ 3~ + 15V 之间,逻辑“1”,规定为- 3~ - 15V 之间。 由于RS - 232 发送和接收之间有公共地,传输采用非平衡模式,因此,共模噪声会耦合到信号系统中,其标准建议的最大通信距离为15 米。 PC 机COM1 与COM2 口的9 针串口的引脚功能如表2。RS - 232 规定的电平和一般微处理器的逻辑电平不一致,必须进行电平转换,实现逻

18

河北工程大学毕业设计说明书

辑电平转换。MCl488 和MCl4 芯片为RS - 232 至TTL 逻辑电平。

3.2.2 上下位机通信电路设计

计算机通过MAX232和单片机的硬件电路如图3-9。 3.3 小结

本文设计出的步进电机控制系统,可以实现对步进电机的基本控制及运行状态的实时显示。该系统实用性强,操作方便,经测试取得了良好效果。经过一定的技术改进后,可以应用于包装机械的物料计量、包装膜供送、横封等过程中,精确控制执行机构的运行速度和运行位置。利用步进电机替代传统的机械或其它方式,不仅能使包装机械结构变得简单、调节方便、可靠性增加,而且精度会得到很大提高。

在Windows环境下,一般不允许用户直接对各类接口进行操作,因此如何在Windows 环境下开发微机的低层资源一针对控制串行口的各类寄存器已成为当今工业控制软件的一大热点。Windows API提供了一系列标准函数,可以支持Windows 系统下的串行通信编程。但由于Windows 本身的复杂性,对这些标准函数及其参数的理解和应用也是比较复杂的。Visual C++6.0提供了一个ActiveX控件Microsoft Comm Control,简称M~.omm控件,可以较为方便地进行计算机串口的管理与控制。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。

本设计通过采用MAX232把计算机的字符命令转换为单片机的脉冲序列,实现了电平转换和合杰斯命令的作用。采用L297和L298联合驱动步进电机的硬件电路,L297是步进电机的控制器,采用该控制器可以很方便的实现步进电机的正转反转不同工作状态下的转换,大大减小了程序设计的难度。而L298是步进电机的驱动器件,L298可是输出46V电压单项2A电流,实现步进电机最后的运转。

第4章 上位机软件设计

19

河北工程大学毕业设计说明书

步进电机是将电脉冲信号变换成相应的角位移或直线位移的机电执行元件。因为步进电机具有快速起停、精确步进以及能直接接收数字量的特点,所以在工业系统中广泛应用。本章主要介绍一种基于微机和单片机的步进电机控制系统。本系统主要由上位PC机,MCS-51单片机,驱动电路和步进电机组成。其中,上位机是PC机,可由VC++实现用户界面,并将用户输入的控制命令通过串行口输出到下位的MCS-51单片机,单片机按照上位PC机的命令产生相应的控制信号,通过驱动电路来驱动步进电机。在本系统中,上位机与下位机之间采用串行通信方式。由于PC机串口电平逻辑是RS-232C电平,而MCS-51串口电平逻辑是TTL电平,因此二者不能直接相连接,故需要进行电平转换。在本系统中,我们选用了MAX232。

VC++语言实现了用户界面和串口通信功能;单片机程序除了串口编程,更重要的是产生步进电机控制信号,使步进电机实现正反转和加减速控制。软件部分分为上位机程序和单片机程序两部分。

软件部分分为上位机程序和单片机程序两部分。其中上位机程序主要是使用

图4-1创建工程

4.1上位机界面实现步骤

⑴,创建工程:在IDE中依次选择“File”→“New”菜单命令,在New”菜单中

单击“Project”选项卡,在列表中选择“MFC AppWizard(.exe)”选项,在“Project name”文本框中输入“MSComm”,其他使用默认值,如图4-1。

20

河北工程大学毕业设计说明书

图4-2step1

图4-3

控件对话框

单击“OK”按钮,弹出“MFC AppWizard-Step1”对话框。在“MFC AppWizard-Step1” 对话框中,选择“Dialog based”单选按钮,其他默认值,单击“Finish”按钮,如图

4-2。在弹出的“New Project Information”中,单击“OK”按钮,就

21

河北工程大学毕业设计说明书

以完成工程的创建。

⑵,添加MSComm控件:依次单击菜单栏的“Project” →“Add To Project” →“Component and Control”,弹出添加控件对话框,如图4-3。然后打开

“Registered Active X Controls”控件夹,选中“Microsoft Communications Control, ,vison6.0”控件,如图4-4,将其添加到工程中。

图4-4具体控件

接着编辑对话框界面,删除原有的静态文本和“确认”“取消”按钮,并为对话框添加六个“按钮”控件,分别是“启动,停止,正转,反转,加速,减速”, 一个静态文本

框“选择串口”。最后添加一个“下拉组合框”,用于选择串口号。

调整他们的大小和位置,使其美观,如图4-5。

22

河北工程大学毕业设计说明书

图4-5界面图

⑶,修改控件属性:添加完各个控件后我们将对各个空间的属性进行修改,具体步骤如下。将鼠标光标移动到对话框中需要编辑的空间上,然后单击鼠标右键打开弹出式菜单,选择“Properities”属性,打开各控件的属性对话框,对控件的属性进行如表4-1的修改:

表4-1控件的属性

控件 MSComm控件 启动按钮 停止按钮 正转按钮 反转按钮 加速按钮 减速按钮 选择串口下拉列表 ID IDC_MSCOMM IDC_BUTTON1 IDC_BUTTON2 IDC_BUTTON3 IDC_BUTTON4 IDC_BUTTON5 IDC_BUTTON6 IDC_COMBOLIST

控件属性 默认 Caption:启动 Caption:停止 Caption:正转 Caption:反转 Caption:加速 Caption:减速 Group:选中,Caption:时间 如图4-6为串行通信控件MSComm的属性。

23

河北工程大学毕业设计说明书

图4-6MSComm属性对话框

⑷,添加控制成员变量:选择“View” →“ClassWizard”菜单项,在弹出的“MFC ClassWizard”对话框中单击“Member Variables”选项卡,进入编辑对话框空间成员变量的界面。如图4-7。

图4-7添加变量对话框

这个界面用于设置为控件关联变量,使得在程序中通过这些变量可以访问空间的属性。在“Project”列表栏中选择“MSComm”,在“Class name”列表框中选择“CMSCommDlg”,

24

河北工程大学毕业设计说明书

再在“Control IDs”选项栏中选择需要添加变量的ID,单击“Add Variable”按钮来添加变量,如图4-7。需要添加的变量如表4-2所示。

表4-2各控件ID及其对应变量

ID IDC_MSCOMM IDC_BUTTON1 IDC_BUTTON1 IDC_BUTTON1 IDC_BUTTON1 IDC_BUTTON1 IDC_BUTTON1 IDC_COMBOLIST

变量属性 Contrl 无 无 无 无 无 无 Value 变量类型 CMSCmm 无 无 无 无 无 无 Int 变量名 m_comm 无 无 无 无 无 无 M_port 完成变量添加的“Member Variables”界面如图4-8。

图4-8添加完变量后界面

25

河北工程大学毕业设计说明书

⑸,为控件添加响应函数:添加完变量后,就应该对前面添加的每个控件设置一个响应的函数。在IDE主菜单中依次选择“View” →“Class Wizard”,打开Class Wizard对话框,选择“Member Maps”选项卡,在“Project”下拉列表框中选择“MSComm”,在“Class name”下拉列表框中选择“CMSCommDlg”。在“Object IDs”下拉列表框中选择要添加响应控件的ID,在Message项中选中需要添加的消息,通过时对话框的下部出现响应的提示。单击“Add Function„”按钮,单击“OK”按钮就可以创建一个消息的处理函数,如图4-9。单击“Edit Code”按钮退出“Class Wizard”对话框,并自动定位在添加的函数上。

图4-9添加函数界面

⑹,添加代码:在文件“MSCommDlg.h”的头部加入语句#include“mscomm1.h”,然后为对话框类加入成员函数 void InitComm(),来出初始化MSComm控件,其各部分代码见本章第二节。

4.2.1串口通信分析

串口是常用的计算机与外部串行设备之间的数据传输通道。 由于串行通信方便易行,所以应用广泛。 依据不同的条件实现对串口的灵活编程控制是我们所需要的。 Windows 下串行通信与以往串行通信程序不同的是,Windows 不提倡应用程序直接控制

26

河北工程大学毕业设计说明书

硬件,而是通过Windows 操作系统提供的设备驱动程序来进行数据传递。 串行口在Windows 中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Windows 提供了相应的文件I/ O 函数与通信函数。 通过了解这些函数的使用,可以编制出符合不同需要的通信程序。 与通信设备相关的结构有COMMCONFIG、COMMPROP、COMMTIME2OU TS、COMSTAT、DCB、MODEMDEVCAPS、MODEMSETTINGS 共7 个,与通信有关的WindowsAPI 函数共有26 个。

在很多情况下,远程监控和自动化领域系统常见的通信编程多为串口通信编程。计算机串口编程在通信软件中有着十分广泛的应用。在Visual C++、Ddphi、Visual Rasis、TC、BC等开发工具之间,Visual C++由于功能强大和应用灵活,同时也得到Miscrosoft系统的最好支持,因此涉及硬件操作的通信编程,一般采用Visual C++。

在VC++中有两种方法可以进行串口通讯。一种是直接用VC++访问串口。另一种是利用Microsoft公司提供的ActiveX控件Microsoft Communications Control。本文将主要介绍第二种方法。利用ActiveX控件Microsoft Communications Con—trol访问串口

ActiveX是Windows下进行应用程序开发的崭新技术,它的核心内容是组件对象模型

CDM(Component ObjectModel)。ActiveX控件包括一系列的属性、方法和事件,使用ActiveX控件的应用程序和ActiveX控件之间的工作方式是客户/服务器方式,即应用程序通过ActiveX控件提供的接口来访问ActiveX控件的功能。

Microsoft Conununications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询方法。 ⑴事件驱动法

事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件的OnComm事件捕获并处理这些通信事件。而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。 ⑵查询法

这种方法适合于较小的应用程序。在这种情况下,每当应用程序执行完某~串行口操作后,将不断检查MSComm控件的ConunEvent属性以检查执行结果或者检查某一事件是否发生。如果应用程序较小,并且是自成一体,这种方法可能是更可取的。 MSComm控件有许多重要的属性,其中首要的几个如下所示

Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通信端口的状态,也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。

27

河北工程大学毕业设计说明书

Output 向发送缓冲区写一个字符串。

InputLen 设置每次Input 读入的字符个数,缺省值为0 ,表明读取接收缓冲区中的全部内容。

InBufferCount 返回接收缓冲区中已接收到的字符数,将其置为0 可以清除接收缓冲区。 InputMode 定义Input 属性获取数据的方式(为0 :文本方式;为1 :二进制方式) 。 RThreshold 和SThreshold 属性,表示在OnComm 事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。编程实现打开Visual C+十6.0集成开发环境,创建一个基于对话框的MFC应用程序项目,命名为MyCOM,记住在设置项目选项时必须选上ActiveX Controls,其他的按照缺省设置。完成这一步后,选择菜单项Project/Add toProiect/Compo—nents and Controls„„,将弹出一个对话框以选择系统中已有的组件(Components)和控件(Controls)。选择RegisteredActiveX Controls文件夹下的Microsoft Communications Control项并按下Insert按钮,将MSComm控件支持加入到本项目中。这时将生成一个名为CMSComm的C++类,并且在对话框编辑器里的工具栏将出现MSComm控件图标。CM一SComm类是由MSComm控件导出的一系列接口函数构成的,利用它将可以访问MSComm控件的属性(Property)和方法(Method)。

我们假设先利用计算机CDMl口上,那么打开资源编辑器,在程序主对话框(资源ID

为IDD_MYCDM_DIALOG)上面放置一个MSComm控件,并用Class Wizard为该对话框类添加对应该控件的成员变量m_wnd COMl。我们假设外接口与计算机进行串行通信时采用7个数据位、1个停止位、偶校验方式,并且波特率为2400/4800/9600可选,这里采用9600波特率,在对话框编辑器中设置MSComm控件的属性。

随着单片机和微机技术的不断发展,特别是网络技术在测控领域的广泛应用,由PC 机和多台单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。它结合了单片机在实时数据采集和微机对图形处理、显示的优点。 同时,windows环境下后台微机在数据库管理上具有明显的优势。 二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了以网络为核心的分布式多点系统发展的趋势。 单片机和PC 机的串行通信一般采用RS - 232、RS - 422 或RS - 485 总线标准接口。 本文针对PC 机常用的RS - 232 方式,主要探讨通过VB610 建立界面,采用RS - 232 接口与单片机通信的方法。

RS - 232 是早期为公用电话网络数据通信而制定的标准,其逻辑电平与TTL \\ CMOS几乎完全不同。逻辑“0”规定为+ 3~ + 15V 之间,逻辑“1”,规定

为- 3~ - 15V 之间。 由于RS - 232 发送和接收之间有公共地,传输采用非平衡模式,因此,共模噪声会耦合到信号系统中,其标准建议的最大通信距离为15 米。RS - 232 规定的电平和一般微处理器的逻辑电平不一致,必须进行电平转换,实现逻辑电平转换。

RS - 232 规定的电平和一般微处理器的逻辑电平不一致,必须进行电平转换,实

28

河北工程大学毕业设计说明书

现逻辑电平转换MCl488 和MCl4 芯片为RS - 232 至TTL 逻辑电平的转换芯片,。该电路需要±12V电压。图中TXD、RXD 分别接单片机的发送和接收端MCS - 51 系列单片机对串口的控制是通过对串行控制寄存器SCON 和电源控制寄存器PCON 的设置来实现的。 SCON 是一个可位寻址的特殊功能寄存器,通过设置SCON 的SM0 和SM1 ,可以使单片机有四种不同的工作方式。 在用于和PC 机实现串行通信时,一般设置为方式1 或方式3 ,主要区别是方式1 的数据格式为8 位,只用于双机通信;方式3 的数据格式为9 位,其中第9 位SM2 为多机通信位,可实现单片机的多点通信,即既适用于双机通信,又适用于多机通信。 电源控制寄存器PCON 的SMOD为串行口波特率倍增控制位。 单片机和PC 机通信时,其通信速率由定时器T1 或定时器T2 产生(52 系列) ,在T1 工作在方式2时的通信速率的计算公式为: 波特率= (2SMOD×Fosc) / (32 ×12 ×[256 - TH1 ]) 。 其中Fosc 晶振频率,为获得准确的通信速率,Fosc 通常为11。 0592MHZ。采用T1 定时器通信的系统,速率不可能过高,一般情况下最高为19200 bit/ s。 如为了获得更高的通信速率可利用52 系列单片机的定时器T2 ,最高速率可达115200 bit/ s。单片机通信程序一般采用中断方式与微机通信,微机为主控方。 当单片机收到微机发送的地址信号时,便转入中断服务程序,向微机发送数据。 其中断服务于程序流程见图2 ,该中断服务于程序也适用于多机通信的系统。 单片机的晶振为1110592MHZ ,通信速率为9600 bit/ s ,帧格式为N1811。

打开Visual C+十6.0集成开发环境,创建一个基于对话框的MFC应用程序项目,命名为MyCOM,记住在设置项目选项时必须选上ActiveX Controls,其他的按照缺省设置。完成这一步后,选择菜单项Project/Add toProiect/Compo—nents and Controls„„,将弹出一个对话框以选择系统中已有的组件(Components)和控件(Controls)。选择RegisteredActiveX Controls文件夹下的Microsoft Communications Control项并按下Insert按钮,将MSComm控件支持加入到本项目中。这时将生成一个名为CMSComm的C++类,并且在对话框编辑器里的工具栏将出现MSComm控件图标。CM一SComm类是由MSComm控件导出的一系列接口函数构成的,利用它将可以访问MSComm控件的属性(Property)和方法(Method)。 我们假设先利用计算机CDMl口上,那么打开资源编辑器,在程序主对话框(资源ID为IDD_MYCDM_DIALOG)上面放置一个MSComm控件,并用Class Wizard为该对话框类添加对应该控件的成员变量m_wnd COMl。我们假设外接口与计算机进行串行通信时采用7个数据位、1个停止位、偶校验方式,并且波特率为2400/4800/9600可选,这里采用9600波特率,在对话框编辑器中设置MSComm控件的属性如表4-3所示:

29

河北工程大学毕业设计说明书

表4-3MSComm控件属性

属性 ID CommPort Settings RThreshold SThreshold Inputlen 说明 IDC_COM1(资源ID) 1(COM1) 9600,e,7.,1(波特率9600,偶校验,7个数据位,1个停止位) 0(不触发接受换成区空事件) 1(没接受到一个字符就触发一个发送数据事件) 0(不从接受缓存区读取数据) 4.2.2串口通信流程图

开始 串口初始化 发送命令帧 延时60s 事件驱动? N 接收数据 N 校验和正确? 结束

图4-10 PC机通信流程图

30

河北工程大学毕业设计说明书

本设计采用事件驱动方式来对pc机和单片机的通信进行编程,是实时性高,节省cpu资源,别且编程比才用查询方式简单。计算机和单片机通信时,上位机程序并没有给出控制步进电机如何加速如何减速如何正转和反转的程序。而是通过和单片机来约定指令代码:01h表示启动,02h表示停止,03h表示正转,04h表示反转,05h表示加速,06h表示减速。单片机接受到指令代码后,通过判断来执行相应的程序。上位机的程序主要包括串口初始化程序和传送指令代码程序两部分。

4.2.3串口通信程序设计

以下是串行口的初始化程序:

m_ComPort.SetCommPort(1);//指定串口号

m_ComPort.SetInBufferSize(1024);//设置输入缓冲区的 大小,Bytes

m_ComPort.SetOutBufferSize(512);//设置输出缓冲区的 Bytes,

if(!m_ComPort.GetPortOpen());//打开串口

m_ComPort.SetPortOpen(TRUE);//打开通信口

m_ComPort.SetInputMode(1);//设置输入方式为二进制 方式

m_ComPort.SetSettings(“9600,n,8,1”);//设置波特率等

参数

m_ComPort.SetRThreshold(1);//为1表示有一个字符引

发一个事件

m_ComPort.SetInputLen(0);

以下是串行口传输指令代码的程序: ⑴“启动按钮”代码:

Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE);

31

河北工程大学毕业设计说明书

Buffer=”01h”;

m_ComPort.SetOutput(Buffer) ; UpdateData(FALSE); }

⑵“停止按钮”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE); Buffer=”02h”;

m_ComPort.SetOutput(Buffer) ; UpdateData(FALSE); }

⑶“正转按钮”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE); Buffer=”03h”;

m_ComPort.SetOutput(Buffer) ; UpdateData(FALSE); }

⑷“反转按钮”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE); Buffer=”04h”;

m_ComPort.SetOutput(Buffer) ; UpdateData(FALSE); }

⑸“加速按钮”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE); Buffer=”05h”;

m_ComPort.SetOutput(Buffer) ;

32

河北工程大学毕业设计说明书

UpdateData(FALSE); }

⑹“减速按钮”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here UpdateData(TRUE); Buffer=”06h”;

m_ComPort.SetOutput(Buffer) ; UpdateData(FALSE); }

⑺“选择串口下拉列表”代码: Void CMSCommDlg::onSend( )

{ //TODO: Add your control notification handler code here CString m_str:

GetDlgItemTest(IDC_COMBOLIST,m_str);//得到下拉列表的内容 M_port=atoi(LPCTSTR(m_str))-1; }

4.3 ATC51程序总体分析

计算机和单片机约定了指令代号“01h,02h,03h,04h,05h,06h”分别代表“启动,停止,正转,反转,加速,减速”。当单片机接受到计算机发来的指令代号后,应当控制步进电机执行相应动作,因此单片机承担了解释计算机命令并控制步进电机运动的任务。由于步进电机的控制芯片L297复位时控制步进电机工作状态的引脚处于高电平,因此本设计中步进电机时钟工作在半步模式。步进电机工作于半步模式时,其内部定子绕组的励磁是一相与两相相间的,此时步进电机每接受一个脉冲,只转过半个步距角。

MCS - 51 系列单片机对串口的控制是通过对串行控制寄存器SCON 和电源控制寄存器PCON 的设置来实现的SCON 是一个可位寻址的特殊功能寄存器,通过设置SCON 的SM0 和SM1 ,可以使单片机有四种不同的工作方式。 在用于和PC 机实现串行通信时,一般设置为方式1 或方式3 ,主要区别是方式1 的数据格式为8 位,只用于双机通信;方式3 的数据格式为9 位,其中第9 位SM2 为多机通信位,可实现单片机的多点通信,即既适用于双机通信,又适用于多机通信。 电源控制寄存器PCON的SMOD为串行口波特率倍增控制位。

33

河北工程大学毕业设计说明书

下位机单片机承担着控制步进电机的任务,因此其程序代码应该包括步进电机的“启动,停止,正转,反转,加速,减速”六项。以下是单片机编程思想。此处主要用到单片机的P0.0,P0.1,P0.2,P0.3,分别和L297的CLK,

相连。

P0.0用于控制脉冲输入,P.01用于控制电机的正反转,P0.2用于控制步进电机的工作模式,P0.3给L297复位,低电平有效。由于单片机通过L297和L298向步进电机发送脉冲时,需要一定的延时,这里我们用定时器T1,通过设置TMOD和TCON,使其工作在方式一16位定时器。步进电机的转速和其接受的脉冲频率有关系,因此程序中要有三个延时程序,每个延时程序都要对定时器T1重新初始化,防止不同延时程序混淆。由于L297是控制步进电机的专用芯片,内部有计算器和译码器。因此单片机只要给L297输入不同频率的脉冲,L297便会产生驱动步进电机转动所需要的脉冲波。P0.1引脚用于控制步进电机的转动方向,当P0.1输出高电平时电机正转,当P0.1输出低电平时,步进电机反转。P0.2用于控制步进电机的运动模式:半步模式,整步一相励磁模式,整步两相励磁模式。当P0.2为高电平时,电机工作于半部模式,在输入脉冲数奇偶性不同的情况下改变P2.0为低电平,可是实现步进电机的整步一相励磁模式或整步两相励磁模式。由于,本设计的上位机没有改变步进电机运行模式的命令,因此单片机复位时,P0.2为高电平,在不改变P2.0电平的情况下,步进电机工作在半部模式。

由于单片机是在接受到上位机的命令后才开始执行程序的,因此应该先对控制单片机传信口的SCON和PCON进行初始化,使串口工作在方式一:9位异步收发。并且对控制终端的EI和EP进行初始化,使其开中断。单片机复位后开中断,准备接受上位机发送来的指令。当单片机接受到上位机发送来的指令代码时,转向中入口地址,终端入口地址用跳转指令来把程序指向终端服务程序。当单片机接收到计算机发过来的指令代号后,把指令代号从Buffer传给累加器A。然后把A中的值分别跟“01h,02h,03h,04h,05h,06h”做比较,A中的值与哪个指令代号的值相等,便跳向相应的中断程序。本设计中,按“启动,正转,反转,加速,减速”中的任何一个按钮,步进电机将会转动,只不过是转动速度和方向不同而已,当按下“停止”按钮时,步进电机才会停止。

34

河北工程大学毕业设计说明书

第5章 系统测试

5.1 系统测试

经过前几章的总体设计,硬件设计和软件设计,本章将对整个系统进行调试。本设

计通过采用VC++6.0设计出了简洁明了人性化的上位机界面,便于操作和应用。进行系统调试时,先把计算机的DB9串行通信口和MAX232连接,然后把MAX232的相关引脚和ATC51的RXD和TXD引脚相连,便可进行调试了。上位机界面如图5-1。

图5-1上位机界面

到此为止,整个由上位机和下位机共同组成的步进电机控制系统设计完毕。计算机通过MAX232与单片机相连,单片机通过步进电机控制芯片L297和步进电机驱动芯片L298与步进电机相连。上位机的界面由VC++6.0实现,计算机和单片机的通信是由VC++6.0提供的MSComm控件实现的,通过设置MSComm控件的属性可以很方便的把计算机的通信数据准确的传输给单片机。若采用Windows提供的专门用于通信的API函数,对编程能力要求高,若采用VC++6.0的专门输入输出函数,要求编程人员熟练掌握通信端口的具体地址等内容,专业化程度高。本设计采用MSComm提供的MSComm控件大大减少了上位机编程的工作量,而且可以完美的完成设计的要求。设计中考虑到计算机有三个串行口,一个被键盘占用,还有两个可以供设计人员用,本人采用了串口1。由于计算机采用的通信协议是RS232标准,与单片机的TTL电平不相同,因此硬件方面采用了MAX232来实现计算机和单片机的电平转换。单片机控制步进电机这一模块,本设计可以只用步进电机的驱动芯片L298。由于L298只是起到驱动步进电机的作用,因此变成比较复杂。考虑到步进电机正转反转的时序脉冲不一样,若只采用L298,变成将会很复杂。

35

河北工程大学毕业设计说明书

因此本设计采用了L297和L298联合驱动的方法,只要把脉冲和控制正反转的信号给L297,L297便会通过其译码器产生步进电机正传反转加速减速所需的时序脉冲。最后L298和步进电机之间的二极管其保护步进电机的作用。通过一系列周密严谨的考虑和设计,最后软硬件调试时,达到了预期的目的,本设计比较成功。

36

河北工程大学毕业设计说明书

结论

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。计算机通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。

本文构建了一个步进电机控制系统,系统的硬件组成主要有:计算机,MAX232,51系列单片机、L298,L298驱动电路,步进电机。上位机采用的软件是VC++6.0。该系统在分析目前步进电机特点基础上,确定步进电机功能要求。针对步进电机的功能要求,提出了控制系统的详细方案。在步进电机控制系统中,上位机采用了通过VC++6.0提供的MSComm控件来实现计算机和单片机的通信。下位机选用了51单片机作为控制工具,并对单片机控制系统的管脚进行了分配,并给出了原理图。并对步进电机转速控制进行了设计。达到了转速的检测要求,确定了经济而适用的控制。论文设计符合步进电机控制系统的标准要求。经系统调试,可以实现步进电机的以下功能:正反转、加减速。

本系统控制灵活,简单方便,制作成本低。同时也有不足的地方:比如说转速控制的精度还不算十分精确,另外还应该加入转速的显示和步进电机运动模式的改变。

37

河北工程大学毕业设计说明书

致谢

经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在这里首先要感谢我的导师王书强老师。王老师平日里工作繁多,但在我做毕业设计的每个阶段,从查阅资料,设计草案的确定和修改,到中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导。我的设计中有很多错误,但是王老师仍然细心地纠正论文中的错误。除了敬佩王老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。在王老师的指导下,我不但能完成本次毕业设计的大部分任务,更重要的是我学会了如何克服学习上的困难。从本学期开始,我对毕业设计一点头绪也没有,到现在完成任务,多亏了王老师的监督和指导。毕业设计中学到的这些知识为我以后的研究生学习和工作都有重大意义,更重要的是我学会了怎样学习,这将使我终身受益。

其次要感谢和我一起作毕业设计的常栋同学,他在本次设计中勤奋工作,克服了许多困难来完成此次毕业设计,并承担了很重要的工作量。如果没有他的努力工作,此次设计的完成将变得非常困难。

然后还要感谢大学四年来所有的老师,为我们打下自动控制专业的基础知识;同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励,尤其是那些在实验室呆过的有实践经验的同学的帮助。此次毕业设计才会顺利完成。

最后感谢我的学院—信息与电气工程学院和我的母校—河北工程大学四年来对我的大力栽培。本人将再接再励,来回报母校。

38

河北工程大学毕业设计说明书

参考文献

[1]李建华.Visual C++编程从基础到实践[Z].北京:电子工业出版社.2007(7).427-452. [2]Nabajyoti Barkaken.Visual C++开发指南[M].北京:电子工业出版社,1998.162-180. [3]OLAFSEN E.MFC.Visuanl C++6.0变成内幕[M].王建华译.北京:机械工业出版社,2000. [4]Richard C.leinecker.Visual C++6开发人员参考手册.金帆翻译组.北京:机械工业出版社,1998. [5]Beck Zaratian.Visual C++6.0程序员指南.希望图书创业室.北京:北京希望电子出版公司,1998. [6]王玉良等.微机原理与接口技术[M].北京.北京邮电大学出版社,1995.231-310. [7]潘新民,微型计算机接口技术[P].北京:人民邮电出版社,2003.170-1.

[8]刘乐善,胡盛斌,叶济衷,微型计算机接口技术[M].重庆:电子科技大学出版社,1993.310-318. [9]刘少克,袁海洲,陆盛旺.步进电机驱动的计算机控制方法[Z].北京:电子工业出版社,

1998.332-338.

[10]于海生,等.微型计算机控制技术[M].北京:清华大学出版社,1999.

[11] 李朝青.PC机与单片机数据通信技术[M].北京:北京航空航天大学出版社,1999.388-418. [13]张洪润,蓝清华.单片机应用教程[M].北京:清华大学出版社,1997.205-228. [14] 杨宁,胡学军.单片机与控制技术.北京:航空航天大学出版社,2005-03:306-322.

[15] 雷海波.杨新.用微机和单片机控制步进电机的走动.北京:清华大学出版社,2000,530- 532. [16]戴佳. 单片机C51语言应用程序设计. 北京:电子工业出版社 2006.7.168-169 [17] 黄灼尧.单片机控制步进电机的方法研究与应用.广东大学出版社,2001.132-138. [18] 雷海波.杨新.用微机和单片机控制步进电机的走动.清华大学出版社,2000.530- 532. [19] [19] R. W. Wood.On a remarkable case of uneven distribution of light in a diffraction

grating spectrum .396-402 .

39

河北工程大学毕业设计说明书

附录1:下位机程序

ORG 0000H

RESET: ORG 000BH AJMP T0INT ORG 001BH LJMP T1INT ORG 0023H LJMP RSINT

LJMP MAIN ORG 0100H

MAIN: MOV SP ,#60H

MOV TMOD,#21H;设置T0为方式1,T1为方式2 MOV SCON,#40H ;设置串行口为方式1

SETB EA ;CPU开中断

SETB ET0;允许T0中断

SETB ET1;允许T1中断

CLR ES ;关串行口中断

CLR TR0;关闭T0

CLR TR1;关闭T1

CLR PS ; 串行口为低优先级中断 SETB PT1 ;定时器T1为高优先级中断 CLR PT0 ;定时器T0低优先级中断

MOV TL1,#0FAH ;定时器T1置初值 MOV TH1,#0FFH

MOV PCON,#80H ;SMOD位=1 CLR RI ;串行口接受标志位清零 SETB TR1;开T1

SETB ES ;串行口开中断 HERE: SJMP $

RSINT :MOV A , SBUF

CJNE A , 01H,ZHENGZHUAN

SETB P0.0 ACAL DELAY1 CLR P0.0

ACALL DELAY1 AJMP QIDONG

ZHENGZHUAN:CJNE A,03H,FANZHUAN SETB P0.1

ACALL QIDONG FANZHUAN:CJNE A,04H,JIASU CLR P0.1

ACALL QIDONG JIASU: CJNE A,05H,JIANSU SETB P0.0 ACALL DELAY2 CLR P0.0

40

河北工程大学毕业设计说明书

ACALL DELAY2 SJMP JIASU

JIANSU: CJNE A,06H,TINGZHI SETB P0.0

ACALL DELAY3 CLR P0.0 ACALL DELAY3 AJMP JIANSU TINGZHI:: CLR P0.0 T1INT : CLR TR1 MOV TL1,#0FAH MOV TH1,#0FFH SETB TR1 RETIT0INT: CLR TR0 SETB TR0 RETIDELAY1: DLY1 : DELAY2 : DLY2: DELAY3 : DLY3: RETI

;关闭T0计时器

MOV TL0,#00H

MOV TH0,#011H

MOV R0, #40 DEC R0

MOV TL0,#00H

MOV TH0,#011H

SETB TR0; 启动T0 CJNE R0,0,DLY1 RET

MOV R0,#20 DEC R0

MOV TL0,#00H

MOV TH0,#011H

SETB TR0; 启动T0

CJNE R0,0,DLY2

RET

MOV R0,#60 DEC R0

MOV TL0,#00H

MOV TH0,#011H

SETB TR0; 启动T0

CJNE R0,0,DLY3

RET

41

河北工程大学毕业设计说明书

附录2:科技文摘译

2.1英文资料

When a phase winding of a stepper motor is energized with current a magnetic flux is developed in the stator. The d When a phase winding of a stepper motor is energized with current a magnetic flux is developed irection of this flux is determined by the “Right HandRule” which states: “If the coil is grasped in the right hand with the fingers pointing in the direction of the current in the winding (the thumb is extended at a 90° angleto the fingers), then the thumb will point in the direction of the magnetic field.”

Figure 2 shows the magnetic flux path developed when phase B is energized with winding current in the direction shown. The rotor then aligns itself so that the flux opposition is minimized. In this case the motor would rotate clockwise so that its south pole aligns with the north pole of the stator B at position 2 and its north pole aligns with the south pole of stator B at position 6. To get the motor to rotate we can now see that we must provide a sequence of energizing the stator windings in such a fashion that provides a rotating magnetic flux field which the rotor follows due to magnetic attraction.

The following are the most common drive modes. • Wave Drive (1 phase on) • Full Step Drive (2 phases on) • Half Step Drive (1 & 2 phases on)

• Micro stepping (Continuously varying motor currents)

In Wave Drive only one winding is energized at any given time. The stator is energized according to the sequence A from position 8 2 4 B A B and the rotor steps

6. For unipolar and bipolar wound motors with

the same winding parameters this excitation mode would result in the same mechanical position. The disadvantage of this drive mode is that in the unipolar wound motor you are only using 25% and in the bipolar motor only 50% of the total motor winding at any given time. This means that you are not getting the maximum torque output from the motor.

In Full Step Drive you are energizingtwo phases at any given time.The stator is

42

河北工程大学毕业设计说明书

energized according to the sequence AB AB AB  AB and the rotor steps from position 1 3 5 7 . Full step mode results in the same angular movement as 1 phase on drive but the mechanical position is offset by one half of a fullstep. The torque output of the unipolar wound motor is lower than the bipolar motor (for motors with the same winding parameters) since the unipolar motor uses only 50% of the available winding while the bipolar motor uses the entire winding.

Half Step Drive combines both wave and full step (1&2 phases on) drive modes. Every second step only one phase is energized and during the other steps one phase on each stator. The stator is energized according to the sequence AB B AB A AB B AB  A and the rotor steps from position 1 2 3 4 5 6 7 8. This results in angular movements that are half of those in 1- or 2-phases-on drive modes. Half stepping can reduce a phenomena referred to as resonance which can be experienced in 1- or 2-phases-on drive modes. In Microstepping Drive the currents in the windings are continuously varying to be able to break up one full step into many smaller discrete steps. More information on microstepping can be found in the microstepping chapter.

When one step pulse is applied to a stepper motor the rotor behaves in a manner as defined by the above curve.The step time t is the time it takes the motor shaft to rotate one step angle once the first step pulse is applied. This step time is highly dependent on the ratio of torque to inertia (load) as well as the type of driver used.

Since the torque is a function of the displacement it follows that the acceleration will also be. Therefore, when moving in large step increments a high torque is developed and consequently a high acceleration. This can cause over shots and ringing as shown. The settling time T is the time it takes these oscillations or ringing to cease. In certain applications this phenomena can be undesirable. It is possible to reduce or eliminate this behaviour by microstepping the stepper motor. For more information on micro stepping please consult the microstepping note.

Stepper motors can often exhibit a phenomena refered to as resonance at certain step rates. This can be seen as a sudden loss or drop in torque at certain speeds which can result in missed steps or loss of synchronism. It occurs when the input step pulse rate coincides with the natural oscillation frequency of the rotor. Often there is a resonance area around the 100 – 200 pps region and also one in the high step pulse rate region. The resonance phenomena of a stepper motor comes from its basic construction and therefore it is not possible to eliminate it completely. It is also dependent upon the load conditions. It can

43

河北工程大学毕业设计说明书

be reduced by driving the motor in half or micro stepping modes.

2.2中文资料

当一相绕组的步进电机电源电流与磁是发达的定子,电流的方向是由“右手定则”决定的。“右手定则”规定:“若磁力线垂直进入右手,四指所指方向为导线中感应电流的方向,则大拇指所指的方向就是磁场的方向。”转子控制自己使反向流量最低。在这种情况下将电机顺时针转动,使南极配合北极的定子B在位置2和北极配合南极定子B在位置6 , 获得电机轮换。为了让步进电机转动,我们现在可以看到,我们必须提供一组序列定子,这组定子可以提供一个旋转磁场,由于磁吸引力,带动定子转动。扭矩代转矩控制取决于若干因素:.步距; .绕组驱动电流;.驱动设计或类型;

在一个步进电机中,当定子和转子的磁流量彼此取代时,扭距才发生变化。定子是由高渗透磁性物质组成的,这种高渗透磁性物质的存在导致磁流量被部分地限定,这有助于磁流量集中在定子两极。当绕组加强时,电机的扭力输出与磁流量产生的强度成比例。H = (N ×i) ÷ l

N :匝数 i :电流 H:磁场强度 L:磁流量路径长度

这种关系表明磁场强度与扭距同匝数和电流成正比,与磁流量路径长度成反比。从这一基本关系可以看出可以看出同样的磁流量路径长度,不同的步进电机通过改变绕组参数可以有不同的输出力矩。更详细的资料关于绕组参数如何影响步进机输出量可以在题为“驱动电流基础”的应用说明中找到。

下列各项是最通常的驱动模式;1. 波动驱动(在1 状态)2. 半步驱动(在2状态)3. 全步驱动(在1和2状态)4. 细分步进(不断地改变电机的电流)。

在波动驱动中只有一个线圈转动在任何接通时间。按照A BAB的顺序驱动和转子的转动为8246。对于和相同的参数的单极和有两极的电机,这一个脉冲模式会运行相同的机械位置。这一个驱动模式的缺点是在单极的电机只有在只有25% 被使用和在有两极的电机中在任何的运行时间的只有 50% 的总计电机转动。这表示你没有在从电机运行中得到最大的转力矩输出。

在全步驱动时在任何接同时间有2个脉冲周期。按照ABABABAB和转子的转动为1357。全部驱动在驱动方式和1状态相同有角动但是机械的移动位置全部被弥补一半。因为单极的电机使用,单极电机的转力矩输出比两极的电机 (对于和相同的参数马达) 低只有 50% , 有两极的电机可以用全周期。

半步驱动整合了波动和全部驱动 (在1和2 脉冲)的驱动形式。每两个脉冲逐步运行被激活并在其他运行周期在每个固定的状态。按照AB,B,AB,A,AB,B,AB,A和转子转动为1,2,3,4,5,6,7,8结果在角运动,有一半是在1或2阶段--驱动方式. 半步

44

河北工程大学毕业设计说明书

驱动,可以减少的现象称为共振,可以在经历了1或2阶段的驱动方式。步进驱动电流绕组不断改变形成许多较小的离散步骤. 更多信息细分,可以发现在步进。

当脉冲采用了步进电机转子的运行方式到上述步骤曲线时间t的时候,它采取的电机轴转动一个步距角,第一步是脉冲应用. 这一步的时间是高度依赖比率转矩惯性(负载) ,以及使用的驱动种类。由于扭矩是一个函数的位移所以接下来的加速度也将. 因此,当移动大型梯级递增高转矩发达,因此一个高加速度. 这可引起了长鸣所示. 沉降时间T是要花时间,因此这些振荡或铃声停止. 在某些应用这一现象可不可取. 它可以减少或消除这种行为的细分步进电机. 由于扭矩是一个函数的位移所以接下来的加速度也将. 因此,当移动大型梯级递增高转矩发达,因此一个高加速度. 沉降时间T是要花时间,因此这些振荡或周期停止. 在某些应用这一现象. 它可以减少或消除这种行为的细分步进电机.

步进电机往往能表现出的现象称为共振, 这可以看作一个突然丧失或下降时转矩转速一定能够导致漏步骤或失去同步. 当它发生时,输入阶跃脉冲率刚好与自然振荡频率有关. 共振现象的一个步进电机来自其基础设施建设,因此不可能消除. 这也是取决于负载的情况. 它可以减少电机驱动在半步或微步进模式。

45

因篇幅问题不能全部显示,请点此查看更多更全内容