76
运动控制系统应用综合实验 《运动控制系统应用综合实验》 实验指导书 上海交通大学 电气工程实验中心 2014 2

《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

运动控制系统应用综合实验

《运动控制系统应用综合实验》

实验指导书

上海交通大学

电气工程实验中心

2014 年 2 月

Page 2: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

运动控制系统应用综合实验

目录

第一章 绪论 ..................................................................................................................................... 1

第二章 实验一:CodeWarrior IDE和 PE专家系统介绍 ............................................................ 3

2.1 Code Warrior简易入门教程 .......................................................................................... 3

2.2 PE(Processor Expert)专家系统简介 ....................................................................... 6

2.3 程序无法下载 ................................................................................................................... 6

第三章 MC56F8257各模块介绍 ....................................................................................................... 8

3.1 DSC概述 ............................................................................................................................ 8

3.1.1 DSC 相关概念及飞思卡尔 DSC 概述 ................................................................ 8

3.1.2 MC56F8200 系列 DSC 功能概述 ........................................................................ 8

3.1.3 TWR56F8257 简介 ................................................................................................. 11

3.2 实验二: 通用输入输出模块(GPIO) ........................................................................ 11

3.2.1 通用 I/O 接口基本概念及连接方法 ................................................................... 11

3.2.2 MC56F8257 的 GPIO 寄存器 ............................................................................ 12

3.2.3 GPIO 实验内容设计 .......................................................................................... 13

3.3实验三:定时器(Timer)模块 .................................................................................... 19

3.3.1 概述 ...................................................................................................................... 19

3.3.2 定时器实验内容设计 .......................................................................................... 19

3.4实验四:模数转换(ADC)模块 .................................................................................... 21

3.4.1 ADC 通用知识 ................................................................................................... 21

3.4.2 MC56F8257 的 ADC 模块介绍 ......................................................................... 24

3.4.3 ADC 模块编程方法与实例 ............................................................................... 24

3.4.4 ADC 实验内容设计 ........................................................................................... 25

3.4.4.1 实验目的 ......................................................................................................... 25

3.5 实验五:脉冲宽度调制(PWM)和 eFlexPWM模块 ..................................................... 26

3.5.1 脉冲宽度调制(PWM)简介 ........................................................................... 26

3.5.2 Freescale eFlexPWM 模块概述 ......................................................................... 26

3.5.3 MC56F8257 的 eFlexPWM 模块主要特性 ....................................................... 27

3.5.4 PWM 和 eFlexPWM 实验内容设计 .................................................................. 29

3.6 实验六:串行通信模块 ................................................................................................. 34

3.6.1 概述 ..................................................................................................................... 34

3.6.2 功能介绍 ............................................................................................................... 34

3.6.3 使用 PE 配置串行通信模块 ................................................................................ 35

3.6.4 实验说明 ............................................................................................................... 35

第四章 实验七 500W电机控制系统硬件介绍 ............................................................................. 37

4.1功能介绍及驱动原理 ...................................................................................................... 37

4.2测量系统 .......................................................................................................................... 39

4.3总结 .................................................................................................................................. 40

第五章 直流无刷电机和步进电机 ............................................................................................... 41

5.1实验八:直流无刷电机的驱动 ...................................................................................... 41

5.1.1 概述 ..................................................................................................................... 41

Page 3: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

运动控制系统应用综合实验

5.1.2 驱动策略和原理 ................................................................................................. 41

5.1.3 直流无刷电机实验内容设计 ............................................................................. 43

5.1.4 直流无刷电机 A、B、C 三相的确定 .................................................................. 43

5.1.5 直流无刷电机驱动程序的编写 ......................................................................... 43

5.2 实验九:无位置传感器的直流无刷电机的驱动 ......................................................... 51

5.2.1 概述 ..................................................................................................................... 51

5.2.2 无位置传感器直流无刷电机驱动方法 ............................................................. 52

5.2.3 存在的问题 ........................................................................................................... 53

5.3 实验十:步进电机的驱动 ............................................................................................. 54

5.3.1 步进电机概述 ..................................................................................................... 54

5.3.2 驱动策略和原理 ................................................................................................. 54

5.3.3 步进电机的工作原理 ......................................................................................... 55

5.3.4 步进电机实验内容设计 ....................................................................................... 55

5.3.5 步进电机驱动程序的编写 ................................................................................... 55

第六章 实验十一 10W高压电机控制系统硬件介绍 .................................................................. 59

6.2测量系统 .......................................................................................................................... 59

6.3编写 SPWM控制软件 ........................................................................................................ 60

第七章 实验十二:FreeMASTER的使用 ...................................................................................... 61

7.1 FreeMASTER软件简介 .................................................................................................... 61

7.2 FreeMASTER在 PE中的使用 .......................................................................................... 61

第八章 实验十三:图形液晶显示模块(12864 LCD)与 MC56F8257接口编程 ..................... 70

8.1 图形液晶显示模块(12864LCD)简介 ......................................................................... 70

8.2 软件设计 ......................................................................................................................... 70

Page 4: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第一章 绪论

随着电力电子技术、微电子技术的迅猛发展,原有的电气传动(电力拖动)控制的概念

已经不能充分概括现代计算机自动化系统承担第一线任务的全部控制设备,“电气自动化”、“电气控制”作为新的名词在国内相继出现。1985 年前后,国际上开始出现“运动控制系统”这一名称,并立即被许多学者采用。美国 B.K.Bose 教授写道:“运动控制是这一代工程师们

采纳的新名词,它是电机拖动技术的后裔”;“当今的运动控制系统是一个新的技术领域,它

包含电机、电力半导体器件、变换器电路、作为硬件的信号电子技术、自动控制理论和微型

计算机等众多学科;最近,更增添了甚大规模和超大规模集成电路,以及复杂的计算机辅助

设计技术。”[1][2] 由国家组织的开放式运动控制系统的研究始于 1987 年,美国空军在美国政府资助下发

表了著名的“NGC 研究计划”。为了用更开放、更加模块化的控制结构使制造系统更加具有柔

性、更加敏捷,从 1996 年开始,美国几大科研机构对 NGC 计划陆续发表了相应的研究成果,

如美国国家标准研究院研制的“增强型机床控制器(EMC)”。由于市场需求强劲,通用控制

技术发展迅速,应用广泛。这几年来,通用运动控制技术不断进步和完善,其市场规模也不

断扩大,根据 ARC 近期的一份研究,世界通用运动控制(General Motion Control GMC)市场

已超过 40 亿美元,并且在未来 5 年内其综合增长率有望达到 16.3%。[3] 随着时间的推移,运动控制系统正越来越广泛的被运用于航空航天、数控机床以及各种

民用系统中,以直流无刷电机、步进电机为执行部件的的运动控制系统的研究日益成为热点。

目前,国内的运动控制器生产商提供的产品大致可以分为 3 类: (1)以单片机或者 MCU 作为核心的运动控制器,其特点是受到单片机性能不够强大的影

响,运行速度较慢,尤其是精度不高。但是由于单片机的成本很低,所以对于一些只需要控

制低速运动和对轨迹要求不高的控制场合还有一定的市场。 (2)以专用芯片(比如 NOVA 运动控制芯片,专为步进电机和伺服电机而设计)作为核心

处理器的运动控制器。其结构简单,但是大部分的专用芯片只能输出脉冲信号,而且这种运

动控制器工作于开环控制方式。由于这种控制器没有办法提供高速连续插补,没有闭环,所

以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

制器的应用受到了很大的限制。 (3)“DSP+FPGA”的运动控制器。近年来随着技术的发展,DSP 优秀的数据处理能力得

到进一步的加强,而 FPGA 强大的逻辑处理能力也越来越完善,因此,利用“DSP+FPGA”设

计出的运动控制系统性能优越,适应能力强,已经越来越占据市场主流。同时,随着 ARM的不断发展,以 ARM 为内核的处理器在数据处理的能力上以及越来越接近于 DSP,而且其

控制能力远强于 DSP,成本上的优势也很明显,比如飞思卡尔公司的 K60。因此“ARM+FPGA”也是未来运动控制器的发展方向之一,值得我们关注。

从前文综述来看,运动控制系统的研究以及运动控制系统平台的搭建已经成为了业界的

研究热点之一。然而,运动控制对于高校学生来说仍然是一个新鲜的概念,区别于电机拖动,

运动控制有着更为丰富的内涵和更为广阔的发展前景,为了让高校学生能够更早的接触运动

控制这个概念,也为了电气工程系“运动控制系统综合实验”课程更好的开展,特编写本实验

指导书。本文详细介绍了飞思卡尔 MC56F8257 DSC 各个模块的功能,以便让同学们能够很

快的熟悉飞思卡尔 Code Warrior IDE 开发环境以及 Processor Expert 专家系统。同时,以

TWR8257 开发板和 500W 电机驱动板为平台,搭建了一套完整的基于“DSC+CPLD”的运动

控制系统,并且使用该运动控制系统驱动直流无刷电机,步进电机以及无位置传感器的直流

无刷电机。为了提高开发效率和速度,引入了两种人机交互软件:液晶 12864 以及飞思卡尔

公司特别为电机驱动所提供的 FreeMASTER。本实验指导书详细介绍了这两种工具,以便

于同学们提高学习效率,降低程序编写难度。 本实验指导书按照以下结构进行组织:

1 / 74

Page 5: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第一章为绪论,介绍了运动控制的研究背景、本实验指导书的主要工作。

第二章为实验一,介绍了 Code Warrior IDE 的使用方法入门,以及如何利用 PE 专家系统

构建一个完整的工程。

第三章依次为实验二到实验六,主要介绍了飞思卡尔 MC56F8257 DSC 的各个模块功能,

依次介绍了 GPIO 模块,定时器模块,ADC 模块,PWM 模块,通信模块(选做)。 第四章为实验七,重点介绍本次实验中使用的 500W 电机驱动板上各个功能电路,包括

电流测量电路,三相逆变桥主电路等,主要为课堂讲述。 第五章为实验八,实验九,实验十(选作)。实验八介绍了基于 MC56F8257 和 500W 功

率驱动板的直流无刷电机的驱动,介绍其驱动策略,程序编写方法。实验九介绍了无位置传

感器的直流无刷电机的驱动,着重介绍了使用反电动势过零点检测法的硬件电路的搭建。实

验十介绍步进电机的原理和驱动方式,同时编写程序实现了步进电机的驱动。 第六章为实验十一,介绍飞思卡尔公司所特有的 FreeMASTER 软件,具体介绍了在驱

动直流无刷电机的程序中添加 FreeMASTER bean,并且使用 FreeMASTER 观察电机转动过

程中的速度变量以及三个位置传感器变量的方法。 第七章为实验十二,着重介绍常用的人机交互工具液晶,介绍了液晶 12864 的特点,使

用方法以及如何使用 PE 来创建液晶程序。

2 / 74

Page 6: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第二章 实验一:CodeWarrior IDE 和 PE专家系统介绍

2.1 Code Warrior简易入门教程

Code Warrior 是业界享有盛誉的嵌入式开发工具,其特点是编译效率高,界面友好。但

同时 Code Warrior 也是一个复杂的商业应用程序,因此我们首先来了解它的各种各样的组件

和功能,通过了解这些能够为接下来的工作开一个好头,也会让编程有事半功倍的效果。 2.1.1工具条 启动 Code Warrior 后,和许多 Windows 下的程序一下一样,Code Warrior 也会显示如下

图所示的工具条。这个工具条(见图 2-1-1)包含了我们常用菜单项的快捷方式。开发公司

按照我们常用的标准的方式设置了 Code Warrior IDE 的菜单。

图 2-1-1 Code Warrior IDE 的工具条 (1)文件菜单 文件菜单用于创建、打开、另存为和保存文件等操作。 (2)编辑菜单 Code Warrior 的编辑菜单包括了剪切、复制和粘贴等操作,以及其他一些使得程序员能

够更方便地管理源码版面布局的选项。在编辑菜单中还有一个 Preferences 项(下文会详细

介绍 Preferences 项的各个设置)。 (3)查看菜单 用于安排工具条和其他窗口在 Code Warrior 环境中如何显示的选项。 (4)查找菜单 查找菜单用于在单个文件或工程的目录中查找指定的函数或者定义等。我们可以像在

Word 中一样,使用查找菜单的替换功能来方便地替换代码段,这对于大规模的替换变量很

有帮助。即使是小工程中使用这个工具也非常方便。打开的快捷方式为 Search->Find in Files(Control+Shift+M)。

(5)工程菜单 工程菜单用于管理CodeWarrior工程。一个工程包括组成程序的所有文件,包括头文件、

源代码和库文件。工程窗口显示了所有这些文件的名称。如图 2-1-2 所示,下图是一个典型

的利用 PE 专家系统(后面会详细介绍)创建的文件。

3 / 74

Page 7: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 2-1-2 利用 PE 创建的工程的工程窗口

几个常用按钮说明:

编译

下载

调试(当下载完成后这个按钮会亮起来变成绿色的小箭头) (6)调试菜单 这是在编制程序中最常用到的工具,下载完成后会跳出一个窗口,这个窗口里面集成了

运行,中断,停止等功能,具体如下图所示

图 2-1-3 调试窗口

说明:单击上图中的绿色小箭头,程序开始执行,右边的小方块表示 break, 表示 kill。

(7)Processor Expert 菜单 这个菜单只有在使用 PE 专家系统生成空工程时才会有,关于 PE 的内容下文中具体介绍。

4 / 74

Page 8: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(8)窗口菜单 用于在 CodeWarrior 环境管理窗口显示方式的菜单。 (9)帮助菜单 使用其可以方便的找到帮助。 2.1.2了解 CodeWarrior 集成开发环境的设置 Code Warrior IDE 提供了许多设置,可以定制自己的工作环境。当你选择了编辑菜单

(Edit)中的 Preferences 项时,你将会看到一个设置对话框(如图 2-1-4)。在该对话框中,有

控制 Code Warrior 编辑器、调试器和其他许多功能的界面和行为的选项:

图 2-1-4 设置对话框 (1)通用设置(General)

编译设置(Build Settings):选择是否在实行编译之前保存已打开的源文件,这一点挺

重要的,有可能修改程序还没来得及编译,结果出现了程序卡死等情况时,这个时候这个选

项就可以确保你的程序已经被保存了,当然这个选项也可以确定用多少内存进行编译工作; IDE 之外(IDE Extras):几个独立的设置。比如制定 Code Warrior 是否使用一个第三方

的文本编辑器,因为 Code Warrior 本身集成的编辑器并不一定每个人都习惯,在这里你就可

以指定一个你惯用的编辑器来代替它; IDE 启动(IDE Startup):可以设置 IDE 启动时打开先前打开的工; 插件设置(Plugin Settings):让插件开发商对他们开发的插件进行调试; 资料树(Source Trees):用于指定 Code Warrior 在编译程序时不使用的目录。

(2)编辑器设置(Editor) 编辑器设置(Editor Settings):用于定制编辑器显示、管理文本和窗口; 字体和制表符(Fonts and Tabs):设置编辑器中的文本大小、字体、制表符和其他显示

设置; 文本颜色(Text Colors):该选项用于指定特定语言元素(例如程序的注释)在编辑窗

口中的显示颜色;

5 / 74

Page 9: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(3)调试器设置(Debugger) 显示设置(Display Settings):定制调试器显示的设置项; 视窗化(Windowing):调整调试器的设定以便更好的管理它的窗口(比如隐藏所有打

开的编辑器窗口); 全局设置(Global Settings):几个用于定制调试器在全局层次如何工作的设置。

(4)RAD 工具 Layout 编辑器(Layout Editor):几个用于在 CodeWarrior 中定制快速应用程序开发工具

的使用的设置。

2.2 PE(Processor Expert)专家系统简介

每当接触一款新的 DSP 时,我们总会碰到的一个问题是如何配置各种各样的寄存器。

往往由于我们对于硬件系统的不熟悉,导致原本愉快的编程旅程纠结于没完没了的寄存器设

置。 Processor Expert(PE)是由捷克的 UNIS 公司开发的针对飞思卡尔单片机和 DSP的嵌入式

软件开发包,它集成在 Code Warrior 6.1 及其以上的版本中。PE 提供了各种类型的 Bean,包括 CPU 的内核 Bean、芯片集成接口 Bean 和常用的算法 Bean 等等,使的用户在不了解芯

片内部结构的情况下也能进行程序开发。换言之,PE 帮我们做好了底层的封装,我们只需

要知道某个模块的功能(比如 ADC 模块),并使用 PE 提供的函数就可以完成任务,从而可

以摆脱费时费力的寄存器设置。 虽然 PE 专家系统有那么多的好处,我们仍然需要按照一定的步骤来使用它,下面是使

用 PE 专家系统需要设计工项项目的基本步骤: (1)根据要求选择工程向导类型和芯片名称,建立工程项目; (2)在工程项目中添加所需要的模块,并进行相应的配置; (3)预编译,产生用户主程序; (4)用户编辑主程序中的代码; (5)编译和检查程序中是否存在错误,若有,及时修改; (6)编译通过后,通过断点、单步等手段调试程序; (7)程序调试成功,将程序下载到芯片上。 下文将按照基本步骤给出一个 LED 闪烁例程。

2.3 程序无法下载

程序无法下载到单片机是在实验过程中可能会碰到的问题,原因也不尽相同,现总结如

下: 建立工程时,选错了或者没有选择 CPU 型号; 工程路径不符合要求,主要是不能出现中文还有一些特殊的字符,建议以纯字母或数字

命名,即路径中不能有任何中文; Codewarrior 软件设置不对,在编译按钮旁边有一个“smm pROM”设置按钮,对其中

Remote Debugging 中的 Connection 设置为“56800E Local Hardware Connection”; 连接电脑主机的数据下载线可能接触不良或者损坏; 下载线连接到单片机的一端插反了;

6 / 74

Page 10: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

单片机和功率板的插口没正确对应。

7 / 74

Page 11: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第三章 MC56F8257各模块介绍

3.1 DSC概述

3.1.1 DSC 相关概念及飞思卡尔 DSC 概述

DSC(Digital Signal Controller,数字信号控制器),是包含能同时完成微控制器和数字

信号处理器功能的内核的专门微处理器,具有能适用于多种类型系统解决方案的内核处理能

力。

图 3-1-1 DSC

传统的 MCU(Micro Controller Unit,微控制器)是为中、低成本控制领域而设计和开

发的,它的位控能力强,I/O 接口种类繁多,片内外设和控制功能丰富,价格低,使用方便,

容易编程,但相比于 DSP,其信号处理速度较慢。DSP 能够高速、实时地进行数字信号处

理,具有强大的数据处理能力和高速运行速度,但是编程复杂,不适合于控制。DSC 融合

了 MCU 和 DSP 的优点,带有灵活的外围设备,将指令优化为适用于控制、数字信号处理

和矩阵操作,使用紧凑的汇编和 C 编译代码大小,容易编程,性能上可以运行复杂算法但

是系统成本比 MCU 要低。 在2000年左右,飞思卡尔公司推出DSP56F800系列和DSP56F820系列DSP。这两个系列

是飞思卡尔专门为电机控制而设计的16位定点处理器(表示小数时,小数点位置固定),内

核包括MCU和DSP两部分,可以同时实现控制和运算功能。

3.1.2 MC56F8200 系列 DSC 功能概述

MC56F8200系列DSC的内部结构框图见图3-1-2,主要特点简述如下:

8 / 74

Page 12: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图3-1-2 MC56F8200系列DSC功能框图

下面将对MC56F8200系列DSC的特点做详细介绍: 1) 内核 (1)双Harvard结构的56800E数字信号处理器(DSP) (2)60MIPS/60MHz (3)155条基本指令,20种寻址方式 (4)32位内部主要数据总线,支持8位、16位和32位数据转移、加、减和逻辑操作 (5)单周期16×16位并行倍乘-累加器(MAC) (6)4个包括扩展位的36位累加器 (7)32位算术和逻辑多位移位 (8)DSP寻址模式的并行指令集 (9)硬件DO和REP循环 (10)支持DSP和控制器功能的指令集 (11)适用于紧凑代码的控制器类型寻址模式和指令 (12)高效的C编译器和本地变量支持 (13)深度仅受限于存储器的软件子程序和中断栈 (14)独立于处理器速度的实时调试的JTAG/EOnCE 2) 芯片工作条件 (1)3.0V-3.6V(电源和I/O电压) (2)复位上电:大约2.7V-3.6V (3)室温操作范围:-40℃-105℃ 3) 存储器 (1)双Harvard机构,允许多达3个同时访问程序和数据存储器 (2)48KB-64KB片上Flash存储器,页大小为2KB (3)6KB-8KB片上按字节寻址RAM

9 / 74

Page 13: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(4)Flash的仿真EEPROM能力 (5)支持内部Flash和RAM存储器的60MHz程序执行 (6)阻止未授权用户访问内部Flash的Flash安全和保护机制 4) 中断控制器 (1)5个中断优先级 (2)中断嵌套:高优先级中断请求可以中断低优先级中断子程序 (3)可以分配给任何中断源的2个可编程快速中断 (4)通知系统集成模块(SIM)重启时钟,脱离等待和停止状态 (5)中断向量表的重定位 (6)中断优先级的屏蔽由DSP56800E内核管理。 5) 外设 (1)1个增强的Flex脉宽调制器(eFlexPWM)模块 (2)2个独立的12位模数转换(ADC) (3)内部模块交叉开关(XBAR) (4)3个模拟比较器(CMP) (5)1个12位数模转换(DAC) (6)2个4通道16位多用途定时器(TMR)模块 (7)带有LIN从机功能的2个队列串行通信接口(QSCI) (8)1个队列串行外围接口(QSPI)模块 (9)2个内部集成电路(I2C)端口 (10)1个MSCAN(飞思卡尔可扩展的控制器局域网)模块 (11)可以为看门狗COP定时器选择不同时钟源 (12)电源管理控制(PMC) (13)为内核和外设提供高速时钟的锁相环(PLL) (14)时钟源 (15)循环冗余校验(CRC)产生器 (16)多达54个通用I/O引脚 (17)实时调试的JTAG/EOnCE调试编程接口 6) 低功耗模式 (1)2个低功耗模式:wait模式和stop模式 (2)在任何的低功耗模式下为活跃的外设提供精确时钟的低功耗外部振荡器 (3)运行、等待和停止模式下,内部和外部时钟源使用的低功耗实时计数器 (4)从部分电源关闭模式下32us的典型唤醒时间 (5)每个外设可以单独关闭来达到低功耗效果

10 / 74

Page 14: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

3.1.3 TWR56F8257简介

图3-1-3 TWR-56F8257外形及片上外设

为了方便用户开发MC56F8257 DSC的产品,飞思卡尔公司推出了TWR-56F8257。该开

发板有如下主要特点: 塔式兼容微控制器模块,塔式结构为飞思卡尔公司开发板的一大特点,其优势就是兼容

性好 多种供电方式,包括USB供电,圆柱形连接器供电,电机控制板供电,塔式系

统供电 9盏LED灯,其中6盏可用于观察六路PWM波形发出的情况 有电机控制板接口,便于同500W电机驱动板进行连接 下载方式主要有三种:OSBDM(通过MC9S08JM60芯片,直接使用USB连接

即可进行仿真,该芯片同时承担着DSC MC56F8257的SCI通信的功能,由跳帽进行选择),

并口下载,USBTAP(使用飞思卡尔公司开发的USBTAP下载工具进行下载),后两种

的下载速度较快 具体内容请参见飞思卡尔公司TWR-56F8257 User Manual和原理图,此处不再赘述。

3.2 实验二: 通用输入输出模块(GPIO)

3.2.1通用 I/O 接口基本概念及连接方法

3.2.1.1 I/O接口的概念

I/O接口,即输入输出接口,是DSC同外界进行交互的重要通道。在嵌入式系统中,接

口千变万化,种类繁多,有显而易见的人机交互接口,如操纵杆、键盘、显示器;也有无人

介入的接口,如网络接口、机器设备接口。 3.2.1.2 通用I/O

11 / 74

Page 15: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

通用I/O,即GPIO(General Purpose I/O),它是I/O的最基本形式。当设置为输入引脚

时,飞思卡尔DSC可以通过端口寄存器读取该引脚的电平。即通过获取开关量输入,确定该

引脚是“1”(高电平)或“0”(低电平)。同理,当设置为输出引脚时,飞思卡尔DSC通过

端口寄存器使该引脚输出“1”(高电平)或“0”(低电平),即开关量输出。飞思卡尔

DSC的GPIO都可以通过PE专家系统或者寄存器设置把GPIO口的工作方式定为输入或输出,

视具体情况而定。 3.2.1.3上拉下拉电阻与输入和输出引脚的基本接法 芯片输入引脚的外部有三种不同的连接方式:带上拉电阻、带下拉电阻和“悬空”。简

而言之,若DSC的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。

与之相对应,若DSC的某个引脚通过一个电阻接到地(GND)上,则该电阻被称为“下拉

电阻”。这种做法使得悬空的芯片引脚被上拉电阻或下拉电阻初始化为高电平或低电平。根

据实际情况,上拉电阻与下拉电阻可以取值在1KΩ~10KΩ之间,其阻值大小与静态电流及

系统功耗相关。 图 3-2-1 给出了一个 DSC 的输入引脚的三种外部连接方式。假设 DSC 内部没有上拉或

下拉电阻,图中的引脚 I3 上的开关 K3 采用悬空方式连接就不合适,因为 K3 断开时,引脚

I3 的电平不确定。在图 3-2-1 中,R1>>R2,R3<<R4,各电阻的典型取值为:R1=20KΩ,R2=1KΩ,

R3=10KΩ,R4=200KΩ。

图 3-2-1 I/O 口输入电路

作为通用输出引脚,DSC内部程序向该引脚输出高电平或低电平来驱动器件工作,即开

关量输出。

3.2.2 MC56F8257 的 GPIO 寄存器

64引脚的MC56F8257有6个通用I/O口,即A口、B口、C口、D口、E口、F口。这些引脚

中的大部分具有多重功能,比如当做中断捕捉口等。本小节着重介绍它们的普通I/O功能。

该芯片有54个引脚具有通用I/O功能,其中A、B、E、有8个引脚,C口有16个引脚,D口有5个引脚,F口有9个引脚。

普通I/O口的每一个引脚都可通过“数据方向寄存器”独立地设置为输入或输出。当引脚

被定义为输入时,可通过“上拉使能寄存器”设置其有无内部上拉电阻。当定义为输出时,

一律无上拉电阻,但可以根据功耗要求,设置成正常输出或低功耗输出。 作为通用I/O,所有的口都有12个寄存器,分别是:上拉使能寄存器、数据寄存器、数

据方向寄存器、外设使能寄存器、中断触发寄存器、中断使能寄存器、中断极性寄存器、中

断挂起寄存器、中断边沿敏感寄存器、推挽模式寄存器、原始数据寄存器、驱动能力控制寄

12 / 74

Page 16: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

存器。至于具体每个寄存器的功能,可以参考MC56F8257的Datasheet,这里不再赘述。

3.2.3 GPIO 实验内容设计

3.2.3.4 实验目的 为了便于同学们熟悉 CodeWarrior 和 PE 的使用以及 MC56F8257 的 GPIO 模块,学会在

PE 下 GPIO 模块的配置和使用方法,尤其注意 GPIO 口作为中断触发源时其使用方法。 3.2.3.5 实验内容 给出使用 PE 配置一个 GPIO 口,闪烁小灯的样例。要求同学们使用延时的方法完成流

水灯实验。 以下详细介绍如何使用 CodeWarrior IDE 创建一个空工程(按照上文中提及的 PE 创建工

程基本步骤):

图 3-2-3 选择 Processor Expert Stationary

13 / 74

Page 17: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-2-4 选择芯片型号(MC56F8257)

图 3-2-5 出现软件功能画面

点击图 3-2-5 中红色圆圈中的 符号,即“make”,会出现图 3-2-6,即出现空的程

序框架。

14 / 74

Page 18: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-2-6 空程序框架 主程序块“main”中红色圆圈中的中括号里面写主程序。右键点击 Component,选择

add,出现 ComponentLibrary 的对话框

图 3-2-7

选择要添加的 Component,本例中选择 E 口的一位,选择:On-Chip Prph->I/O port: GPIOE ->Bit0。

15 / 74

Page 19: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-2-8

配置 BitIO 如下图所示,选择 GPIOE0_PWM0B 单个端口作为 output 口(该口连接着

LED 灯,可方便的观察输出情况),完成后点击 编译一次。其中的“no pull resistor”也

可以拉出选择 pull up/pull down 等选项。Open drain 选项选择 push-pull(推挽输出可提高输出

能力)。Direction 选择 Output(表示该端口是输出端口,下拉选项中包括 Input 和 Input/output,视具体情况选用,如图 3-2-9 所示)。

图 3-2-9

下图为点“make”编译过后得到的 LED.c:main 程序,其中我们在 PE 中做的相关配置

体现在初始化函数:PE_low_level_init();中

16 / 74

Page 20: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-2-10 点开 Bit1:BitIO 会出现如下图所示的各种函数,将鼠标移至各函数处就会自动出现各

函数的功能说明,便于了解该函数的用法。本例中选择SetVal和NegVal(也可以使用CtrlVal,具体如何使用该函数可参看该函数的功能说明)。可直接选择函数并拖动到主函数中。图

3-2-11 中 NegVal 函数左边显示的为 ,表示该函数不可用,需要双击它使其变成可用,

双击后会变成和 SetVal 左边一样的 。

图 3-2-11

主程序段(因工作任务而异)完成后再次编译,如果不报错,则可以直接下载进单片机

中。一个简单的 LED 灯闪烁程序就此完成,如图 3-2-12。

17 / 74

Page 21: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-2-12

注意:其中 Cpu_Delay100US();为系统自带的延时函数,看名字就可以看出他的意思是

延时 100US,当然需要给参数,比如例程中给出的 Cpu_Delay100US(5000)就表示

5000*100US=0.5S,该函数可以在 CPUs->CPU:MC56F8257 中找到,如图 3-2-13 所示。

图 3-2-13

18 / 74

Page 22: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

3.3 实验三:定时器(Timer)模块

3.3.1概述

MC56F8257 带有两个定时模块。每个定时器模块(TMR)包含四个相同的计数器/定时

器组。每个 16 位计数器/定时器组包含一个预分频器(提供不同的时间基准),计数器,负

载寄存器(当计数器达到计数的最大值时,给计数器提供初始值),保持寄存器(捕捉其他

计数器的值当其他计数器被读的时候,这个特性主要用于级联的计数器),捕捉寄存器(允

许其他信号对计数器的电流值进行“快照”),两个比较寄存器,两个状态寄存器和控制寄存

器,和一个控制寄存器。除了预分频器以外,所有的寄存器都是可读可写的。单个定时/计数器的结构如下图所示:

图 3-3-1 定时/计数器结构框图

定时模块功能的特点: 4 个 16 位定时/计数器; 计数器有递增计数和递减计数功能; 计数器可级联使用; 计数的模数值可编程; 对于外部时钟,最高计数率等于外围时钟的 1/2; 对于内部时钟,最高计数率等于外围时钟; 可单次或重复计数; 计数器可重装载; 计数器可共享输入引脚; 每个计数器都有单独的前分频器; 每个计数器都有捕获和比较功能;

3.3.2定时器实验内容设计

3.3.2.1 实验目的

19 / 74

Page 23: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

为了同学们能够熟悉定时器中断的使用,并使用定时器中断编写程序实现流水灯;同时

了解定时器的输入捕捉功能。

3.3.2.2 实验要求

例程给出使用定时中断实现控制 LED 闪烁程序,在此基础上要求同学们编写完成使用定

时中断的流水灯实验。

如下图 3-3-1 所示为一个定时中断的配置。

图 3-3-1 TimerInt 的配置,

图 3-3-1 中 Interrupt period 表示每隔多少时间进入该中断,点击其右边其上有省略号的

按键,会进入下面的界面,在这里可以选择时间比如图中选择的 139.808ms。

图 3-3-2 Interrupt period 详细配置

20 / 74

Page 24: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

也可以自己定义一个比如 100ms:

图 3-3-3 点“ok”后确认。

3.4 实验四:模数转换(ADC)模块

3.4.1 ADC 通用知识

3.4.1.1 ADC 基本问题 (1)转换精度 集成 ADC 用分辨率和转换误差来描述转换精度。 (2)分辨率 指数字量变化一个最小量时模拟信号的变化量,AD 的位数越高,数字量变化一个最小

量时对应的模拟信号的变化量就越小,对信号的分辨能力就越高。 例如:输入的模拟电流的变化范围为 0~3.3A,当 AD 为 8 位时,可以分辨的最小模拟

电流为 3.3A/28=12.89 mA;当AD为 12位时,可以分辨的最小模拟电压为 3.3A/212≈0.81mA。 (3)量化误差 不管 AD 的分辨率多高,其始终是有上限的。量化误差就是由于分辨率有限而引起的。 (4)转换速度 完成一次模数转换所需要的时间称为转换时间。大多数情况下,转换速度是转换时间的

倒数。ADC 的转换速度主要取决于转换电路的类型,并联比较型 ADC 的转换速度最高(转

换时间可小于 50 ns,但容易受干扰),逐次逼近型 ADC 次之(转换时间在 10~100μs 之间,也容易受干扰),双积分型 ADC 转换速度最低(转换时间在几十毫秒至数百毫秒之间,

有较好的抗干扰性能)。 3.4.1.2 ADC 转换器 (1)积分型 ADC 转换器

21 / 74

Page 25: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(2)Flash Converter ADC (3)逐次逼近型 ADC 转换器 逐次逼近型(SAR)型 ADC 是采样速率低于 5MHz 的中高分辨率应用的常见结构,SAR

型 ADC 的分辨率一般为 8~16 位,具有低功耗、小尺寸等特点,因此其具有较宽的应用范

围。工作原理如下:

图 3-4-1 SAR 型 ADC 工作原理(a)

(b)

(c)

22 / 74

Page 26: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(d)

(e)

(f)

23 / 74

Page 27: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(g)

3.4.2 MC56F8257 的 ADC 模块介绍

MC56F8257 的 AD 模块具有两个双采样保持器,各有 8 个通道。

图 3-4-2 MC56F8257 的 AD 模块

3.4.3 ADC 模块编程方法与实例

由于有了 PE 专家系统,ADC 模块的初始化已经编程就变得非常简单。 (1) ADC 初始化。ADC 的初始化集成在了 PE_low_level_init()函数中 (2)启动 ADC。调用 AD1_Start() (3)获得 ADC 结果。 AD1_GetChanValue16(0,&v_dc_bus); v_dc_bus 为一变量,用于存储采样得到的直流供电电压值。

24 / 74

Page 28: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

3.4.4 ADC 实验内容设计

3.4.4.1 实验目的

深入理解 SAR(逐次逼近)型 ADC 工作原理和特点,熟悉在 PE 下的 MC56F8257 的 ADC

模块的配置方法。

3.4.4.2 实验要求 通过对 ADC 模块的配置,采样功率板上的 24V 直流供电电压。

如下图所示为一个 ADC 模块的配置:

图 3-4-3ADC 模块的配置

图中 A/D channels 为选择 AD 采样的通道,图中只开一个通道。A/D resolution 可选择

AD 的位数,当然最高可选择 12 位,在不需要特别高的精度而且追求高速的情况下可选择

适当减小 AD 位数。Conversion time 表示转换的时间,可尝试选择不同的值观察所得结果有

无不同。 在此实验的设计和实现中需要注意的问题: (1)采样口的确定。24V 直流电压的采样口为 GPIOA2。 (2)PE 的配置和 bean 中函数的使用。前面两个实验 PE 的配置都相对简单,不会碰到什

么大问题,但是 AD 的配置相对就比较麻烦。主要需要注意的地方上面已经详细介绍,不再

赘述。ADC bean 中的 AD1_GetChanValue16(0,&v_dc_bus)函数的使用也是一个大问题,主

25 / 74

Page 29: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

要是关于 C 语言中“引用”的用法同学们可能已经不太熟悉,可以提醒同学们查找工具书

去解决。

3.5 实验五:脉冲宽度调制(PWM)和 eFlexPWM 模块

3.5.1 脉冲宽度调制(PWM)简介

脉冲宽度调制(Pulse Width Modulation),简称为脉宽调制,它将模拟信号转换为脉冲

波,一般转换后脉冲波的周期固定,但是占空比可以改变。在模拟电路中,模拟信号的值可

以连续变化,但是其缺点为容易受干扰。与模拟电路不同的是,数字电路在任何时刻的输出

的电平非高即低,没有过渡状态,具有很强的抗干扰能力,这也是其在通信行业得到广泛运

用的原因之一。通过使用高分辨率的计数器来调制方波的占空比,可以实现对模拟信号电平

的编码,在实际使用中,PWM 的调制频率一般在 1KHz 到 200KHz 之间。

3.5.2 Freescale eFlexPWM 模块概述

飞思卡尔公司的 MC56F8257 有 PWM 控制器,可以选择接通时间和周期。脉冲宽度调

制器(PWM)模块包含子模块,每个子模块都可用来控制一个半桥。PWM 模块可以产生不

同的开关模式,包括一些复杂的波形。它可以用来控制所有已知类型的电动机。下图为该模

块的方框图。

26 / 74

Page 30: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-5-1PWM 模块框图

图 3-5-2 eFlexPWM 子模块的详细框图

3.5.3 MC56F8257 的 eFlexPWM 模块主要特性

4 对互补的 PWM 信号或 8 路独立的 PWM 信号。8 路 PWM 信号通道可作为 8 路不互

补的独立通道模式,或者配对 8 路独立通道模式、1~4 对的互补通道与独立通道的混合使用

模式;在互补通道模式下能实现: 可编程死区插入 通过电流的状态输入或软件来进行独立的上桥臂、下桥臂通道脉宽校正 中心对齐的 PWM 模式,不对称的 PWM 模式;独立的上桥臂、下桥臂极性控制 边沿对齐或中心对齐的脉宽产生方式; 15 位计数精度; 半周期参数重装载能力; 从 1 到 16 整数重装载频率; 独立的软件控制 PWM 输出; 可编程出错保护功能; 极性控制; PWM 引脚具有 10mA 或 20mA 的电流吸入能力(灌电流能力); 带有寄存器写保护功能。 (1)对齐模式

边沿对齐:

27 / 74

Page 31: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-5-3 边沿对齐的 PWM 产生方式

中心对齐:

图 3-5-4 中心对齐的 PWM 产生方式 (2)周期

PWM 计数周期是写入 PWM 计数周期寄存器(PWMCM)的值来决定的。在中心对齐

模式下,PWM 计数器是一个增/减计数器。在这种模式下,PWM 的最高输出精度为 2 倍的

IP 总线时钟。PWM 时钟周期是 PWM 输出周期的一半。 PWM 周期=(PWMCM)*(PWM 时钟周期)*2 在边沿对齐模式下,计数器是一个增量计数器。PWM 的最高输出精度就是 IP 总线时钟

周期。PWM 时钟周期的模和 PWM 输出周期相等。 PWM 周期=(PWMCM)*(PWM 时钟周期) (3)占空比

写到 PWM 计数寄存器的 16 位带符号数是以 PWM 时钟周期单位的 PWM 生成器的输

出脉冲宽度。占空比计算式为 占空比=(PWM 值寄存器(PWMVal)的值/PWM 计数周期寄存器的值)*100 (4)独立通道模式和互补通道模式

互补通道模式通常用于驱动电动机的逆变电路中的上桥臂输出和下桥臂输出功率开关

28 / 74

Page 32: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

器件,在本次实验中非常有用,需要多加学习和注意。 在互补通道模式下,有三个可设置的附加特性: 插入必要的死区 上下桥臂两通道脉冲宽度独立校正,用来消除输出波形的畸变,这种波形畸变是由

插入的死区和电机特性所致 上下桥臂两通道输出记性独立控制 (5)死区生成器

为了防止电机驱动电路的 DC 电源线瞬间短路而击穿功率开关器件,必须保证上桥臂功

率开关器官和下桥臂功率开器件的导通在时间上没有重叠。然而由于功率开关器件的特性,

它的关断时间比导通时间要长些。为了保护功率开关器件上下桥臂功率开关器件直通烧毁,

所在在向功率开关器件发送信号前插入死区来保护不被击穿。下图为死区生成器的结构框图:

图 3-5-5 死区生成器结构框图

3.5.4 PWM 和 eFlexPWM 实验内容设计

3.5.4.1 实验目的 深入理解 PWM 波形生成的原理,熟悉 MC56F8257 的 PWM 模块和 eFlexPWM 模块,完

成其 PE 的配置。

3.5.4.2 实验要求 eFlexPWM 为驱动电机的核心模块,必须深入了解,所以设计三个实验内容: (1)利用 PWM 模块发出一路 PWM 波形,并能够通过按键改变占空比; (2)利用 eFlexPWM 模块发出 6 路互补或者独立的可调占空比的 PWM 波; (3)利用发出的 PWM 波与 LED 相联系,完成呼吸灯程序。 以下为 PWM 模块和 eFlexPWM 模块配置的详细介绍: PWM 模块如下图所示:

29 / 74

Page 33: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-5-6 PWM 模块的配置

PWM 模块的配置相当简单,只需要设置 Output pin,period,Starting pulse width 即可,

不再赘述。 较复杂的 eFlexPWM 模块如下图所示:

图 3-5-7 eFlexPWM 模块总体 总共分成四个大类一下,以下分别展开详细介绍: (1) Settings

30 / 74

Page 34: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-5-8 Settings 模块 Settings 里面包含有四个子模块和一个故障保护设置。

图 3-5-9 子模块 0 里面的详细设定

Clock setting 里面有几个比较重要的参数 PWM clock source 选择 IP Bus clock 表示使用系统总线时钟,但注意当使用多个子模块

时应该使用 submodule 0 的时钟,表示继承 submodule 0 的时钟。 Init counter value PWM value0 –half cycle point PWM value1 –counter modulo 以上三个参数可参见图 3-5-3,图 3-5-4。分别代表着计数器计数的开始,中间和顶点。

合理的选择这三个参数就可以改变 PWM 波的频率。

31 / 74

Page 35: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-5-10 channel settings 里面的 channel A 设定 我们知道一个 submodule 可以发出两路互补(Complementary)或者独立(independent)

的 PWM 波,分别为 channel A 和 channel B。这里我们以 channel A 为例进行说明。 Mode of PWM chA and B: 可选择发出互补波或者独立波; Complementary PWM source : 表示如果是互补的话是以 PWM23 为基准还是以 PWM45

为基准; PWM value2 和 PWM value3:可参见图 3-5-3,图 3-5-4; Channel masked:是否屏蔽该通道,如果选择 Yes 则该通道始终输出 0; Channel output:选择 enabled 表示允许通道输出,选择 disabled 表示不允许通道输出; Disable by fault 0~3:表示是否会被故障中断; Output polarity:表示是否需要将输出反相。 (2) Pins

图 3-5-11 Pins 模块详细内容 Pins 模块总有 SM0~SM3 共四个引脚设置和一个 PWM Faults 引脚设置,正常情况下把

32 / 74

Page 36: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

Channel A 和 Channel B 都 Enabled 即可。

图 3-5-12 PWM Faults 的具体引脚

注:故障输入引脚中的 Fault 2 和霍尔信号输入的引脚有冲突,需要重新选择管脚。 (3) Interrupts/DMA

图 3-5-13 中断的具体设置(可以不做任何改动)

(4) Initialization

图 3-5-14 初始化

33 / 74

Page 37: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

3.6 实验六:串行通信模块

3.6.1 概述

MC56F8257 内部集成了串行通信模块,串行通信模块采用标准规范基础上简化了的无

握手信号的二线式的串行通信方式,能与异步通信设备或其他控制器进行数据传送。其特点

如下: 全双工/半双工运行; 标准不归零(NRZ)数据格式; 可编程的 13 位波特率; 可编程的 8 或 9 位数据格式; 相互独立的发送移位寄存器和接收移位寄存器; 独立的接收移位寄存器和发送移位寄存器中断请求; 发送移位寄存器和接收移位寄存器具有可编程的极性; 两个接收启动方法:空闲线标志和地址线标志 7 个标志的中断驱动操作; 发送终止 发送空闲 接收移位寄存器满 接收错误 噪声错误 帧错误 奇偶校验误差 接收帧错误检测; 硬件极性检测; 1/16 位的位时间噪声检测;

3.6.2 功能介绍

MC56F8257 的串行通信模块结构如图 3-6-1 所示:

34 / 74

Page 38: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 3-6-1 SCI 模块的结构图 SCI 模块允许在 DSP 和远程控制器(包括其他的 DSP)之间进行全双工,异步不归零

的通信。发送移位寄存器和接收移位寄存器独立操作,它们使用相同的波特率发生器。DSC 内核会检查串行通信模块的状态,写入需传送的数据和处理接收到的数据。

当初始化串行通信模块时,如果需要串行通信模块和通用输入输出多路复用,应该确保

准确设定输入/输出寄存器中的外设使能位和任何上拉使能位的有用字节。 具体的功能请参考 MC56F8257XRM。

3.6.3 使用 PE 配置串行通信模块

3.6.3.1 在 Components Library->On-Chip Prph>56F8257->Serial channel:QSCI0->AsynchroSerial 中添加 SCI 模块。

3.6.3.2 PE 的配置,AsynchroSerial bean 如下图所示:

图 3-6-2 AsynchroSerial bean 本例程中未将 Interrupt service/event 使能,使用了中断的例程详见提供的例程文件夹中。

RxD 位选择 GPIOF8,TxD 位选择 GPIOC2,可以根据自己的需要随时在下拉菜单中改选。 3.6.3.3 程序编写 作为一个示意性的例程,本例程实现的功能就是不断将字母 a 发往 PC 端的 SSCOM 软

件中显示。所以程序的编写只需要在 for 循环中不断调用 AS1_SendChar('a')函数即可。 3.6.3.4 具体使用时需要注意的问题 本次实验需要使用到串口转 USB 线。 3.6.4 实验说明 本次实验为演示性实验,仅仅是为了让学生初步了解飞思卡尔 DSC 串行通信模块,串

行通信模块的会在 FreeMASTER 中继续使用

35 / 74

Page 39: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

36 / 74

Page 40: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第四章 实验七 500W电机控制系统硬件介绍

4.1 功能介绍及驱动原理

4.1.2 IR2110 工作原理 IR2110 是一个工作在高电压环境里、高速度的功率 MOSFET 和 IGBT 驱动芯片。逻辑

输入引脚可以是标准的 COMS 或者 LSTTL 输出,能够接受 3.3V 电平启动;输出驱动电流

可达 2A。对于控制的 MOSFET 或 IGBT 所在主电路可以达到 500 至 600V。

图 4-1-1 IR2110 管脚图

图 4-1-2 IR2110 工作电路图 VDD 是芯片的逻辑供电电压,VCC 为低端供电电压,HIN 与 LIN 分别为上半桥与下半

桥的驱动信号。当 SD 端输入为低时,HIN 和 LIN 的电平高底和 HO(上半桥驱动输出)和

LO(下半桥驱动输出)一样。COM 是与强电电路中的 GND 相连的,VCC 相对于 COM 的

电平就是 MOSFET 的驱动门极电压,为了打开上半桥的 MOSFET,我们需要搭建一个自举

电路,下面将详细介绍。下半桥 MOSFET 的驱动原理则较为简单,当 LO 输出高电平时即

可打开。

37 / 74

Page 41: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 4-1-3 自举电路 自举电路指的就是上半桥控制部分:VB,VS,HO 以及外部连接的电容和二极管 C1,VD1 分别为自举电容和抗高压二极管,C2 为系统电源 VCC 的滤波电容。假定在

S1 关断期间,S2 的导通使 C1 已充到足够的电压 VCC-VD1。当 HIN 为高电平时 VM1 开通,

VM2 关断,电容 C1 上的电压加到 S1 的门极和发射极之间,C1 通过 VM1,Rg1 和 S1 门极

栅极电容 Cg 放电,Cg 被充电,这个时候自举二极管是关断的。 4.1.2 三相逆变主电路

图 4-1-4 电机驱动的三相逆变主电路 本次实验所使用的 500W 电机驱动板上的驱动电机的主电路为三相电压桥式逆变电路,

两两导通,每相导通 120 度,并且使用的是 H-ON-L-PWM 的导通方式。

38 / 74

Page 42: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 4-1-5 电机控制系统功能

如上图所示为一个为一个完整的电机控制系统,包括整流电路,三相桥式逆变电路,电

压检测(形成速度闭环),电流检测(形成电流闭环),温度检测电路,控制器部分包括 A/D转换,PWM 波形生成以及故障保护(由检测到的电压、电流和温度形成故障综合信息),

外设(包括显示和键盘)以及通信模块(包括与上位机通信和与其他外设通信)。

4.2 测量系统

4.2.1 位置信号检测电路 如图 4-2-1 所示,以 H1 为例,由于上拉电阻的存在,使得 DSC 检测到的初始状态为 1。

当 H1(红色的 H1)输入为零时,GPIO 口将检测到低电平,当 H1 输入为 1 时,GPIO 口将

检测到高电平。上拉电阻的存在确定了输入的状态,不存在不确定的状态。

图 4-2-1 直流无刷电机位置传感器信号

39 / 74

Page 43: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

4.2.2 电流测量电路 ACS712 是一款基于霍尔效应的线性电流传感器芯片,电路如图 4-2-2 所示。其中 AVCC

为 4.8V 时,Vout 为 0.5*AVCC=2.4V,也就是说当 AC712 的输出为 2.4V 时,电流为零。而

且该芯片线性度很好,测量电流和输出电压的关系为 Vout=2.4±(0.185)Ip。例如当电流正向

为 5A 时,Vout=2.4+0.925=3.325V,当电流反向达到 5A 时,Vout=2.4-0.925=1.475V。电

压输出后经过一个用OPA2340搭成的加减法运算电路(图 4-2-2所示),其中Vref1为 1.4732V,

当 Vout 为 2.4V 时,输出为 1.529V,表示电流为零。使用这样一个电流测量电路的目的在于

提高 DSC 的 ADC 的分辨率和去掉共模干扰,因为 ADC 的参考电压为 3.3V,经过 ACS712芯片和加减法运算电路,将本来有正有负的电流整体向上移动了 1.4732V,小于 1.529V 表

示电流小于 0,大于 1.529V 表示电流大于 0,同时加减法运算电路有效的减少了共模干扰。

图 4-2-2 电流测量传感器电路

4.3 总结

本章主要介绍了 500W 电机控制系统的工作原理,包括 MOSFET 驱动器 IR2110 的原理,

电机驱动的三相主电路以及测量和保护电路。了解这些芯片包括各个功能电路的工作原理,

有利于电机驱动程序的编写以及当硬件发生一定问题时能够通过自己的调试得以解决。深入

的理解硬件电路,对于编程会有很大的帮助。

40 / 74

Page 44: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第五章 直流无刷电机和步进电机

5.1 实验八:直流无刷电机的驱动

5.1.1 概述

无刷直流电机由电动机主体和驱动器组成,它的转子采用永磁材料励磁、重量轻、体积

小、结构简单、运行可靠。电动机的定子绕组多做成三相对称星形接法,为了检测电动机转

子的极性,在内部装有位置传感器。无刷直流电机高效节能、易于控制,现在已经广泛用于

汽车、航空航天、家电、办公自动化设备等领域。

5.1.2 驱动策略和原理

要驱动电机,首先 MC56F8257 根据位置传感器(一般为霍尔传感器)感应到的电机转

子所在位置,决定开启(或关闭)MOSFET 的顺序,如图 5-1-1 中 MOSFET 中的 T1、T3、T5(称

为上桥臂 MOSFET)及 T2、T4、T6(称为下桥臂 MOSFET),使电机线圈产生顺向(或逆向)旋

转磁场,并与转子的磁铁相互作用,这样就能使电机顺时针或者逆时针转动。当电机转子转

动,使霍尔传感器感应出另一组信号的位置时,MC56F8257 再发出下一组指令,开下一组

MOSFET,循环往复使电机按照一定方向转动,如果需要停止电机转动则 MC56F8257 停止

发出指令即可。

下面举例来说明实验中 MOSFET 的开关顺序:T1、T4 一组→T1、T6 一组→T3、T6 一

组→T3、T2 一组→T5、T2 一组→T5、T4 一组。但绝不能开成 T1、T2 或 T3、T4 或 T5、

T6。此外,在 MOSFET 开和关时要考虑响应时间,否则会造成上、下桥臂直通短路而使

MOSFET 烧毁,因此在写程序时要设定死区时间,或者在驱动电路的硬件上设定死区时间。

图 5-1-1 三相逆变桥及控制部分

41 / 74

Page 45: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

前面的介绍仅为让大家对于直流无刷电机的驱动控制有一个初步的了解。下面将进一步

详细介绍。

实际使用中,我们可以先根据电机旋转的原理确定 BLDC 三个定子绕组 A、B、C 中电流

的流向,然后根据三个绕组某一时刻的电流,确定每组桥臂上下两个 MOSFET 的开关状态。

再根据每个 MOSFET 的开关状态确定每个 PWM 模块的工作方式。

图 5-1-2 直流无刷电机示意图 图 5-1-3 直流无刷电机霍尔示意

(1)如图 5-1-2,5-1-3 假设转子在某一时段从图 5-1-2 旋转到图 5-1-2,这一过程中我们认

为转子的位置在扇区 Habc=011 当中。我们知道,转子(永磁体)是跟着定子绕组合成的磁

场进行旋转的。为了得到最大的力矩,在本过程中,定子磁场的方向应该是水平向左(与转

子磁场的方向近似垂直)。为了使得定子磁场方向水平向左,电流必须从 B 流进,从 C 流出,

而绕组 A 上不通过电流。

(2)现在根据绕组 A,B,C 中的电流确定 6 个 MOSFET 的开关状态。如图 5-1-4:

图 5-1-4 直流无刷电机驱动电路

由于在扇区 Habc=011 内,电流从 B 流入,C 流出,所以 A 桥,上下两个功率管均关闭;B

桥的上桥导通,下桥关闭;C 桥的上桥关闭,下桥导通。

(3)根据步骤(2)中六个功率管状态的结论可以得到 3 个 PWM 块的工作方式:

PWM0A 和 PWM0B 都是低电平;

PWM1A 是高电平,PWM1B 是低电平;

42 / 74

Page 46: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

PWM2A 和 PWM2B 工作在互补模式,发出互补的两路 PWM 波分别给 C 桥的上下两个

功率管。

采用互补模式的目的一方面是为了降低功率管的损耗,另一方面减小功率管上的电压降。

以上我们通过(1)(2)(3)步确定了转子在扇区 Habc=011 的位置时,3 个 PWM 模块

的工作方式。类似的我们还可以得到转子在其余 5 个扇区内的 PWM 工作方式。具体的编程

方法将在下文中介绍。

5.1.3 直流无刷电机实验内容设计

5.1.3.1 实验目的 学习直流无刷电机的驱动原理和策略以及尝试闭环调节(速度环和电流环)。

5.1.3.2 实验要求 实现直流无刷电机的稳定转动(包括闭环),做到基本的可变向,加减速等功能。

5.1.4 直流无刷电机 A、B、C三相的确定

实验室现有的直流无刷电机 A、B、C 三相是没有标识的,所以在接线之前需要对电机

三相进行检测(霍尔传感器的五根线是固定的接法,无需检测)。首先将霍尔传感器插头接

到功率板上,假设三相导线的颜色为白、黄、蓝,先制作一张 7×6 的表格,第一行写上三相

导线的颜色、霍尔传感器标号 a、b、c。然后将三相中的两相接 1V(如果电机转子阻力较

大可以适当增大,但要注意不能太大,以免烧坏电子,因为这时等效于在电机绕组加直流电

压,电流比较大)电源的正极、另一相接负,则电机会转到某一个位置,用电压表测霍尔传

感器的状态,记录到表格中。再换相操作,最后得到的表格与图三比较即可确定三相对应的

颜色,然后按此接线即可。

图 5-1-5 直流无刷三相通电状态与霍尔状态图

5.1.5 直流无刷电机驱动程序的编写

下面介绍驱动直流无刷电机的三种主要的程序思路: 从上面的驱动策略的介绍中我们知道,要驱动直流无刷电机,关键是要利用好位置传感

器。从位置传感器中得到电机转子的位置,再通过 DSC 读取位置状态信息改变 PWM 控制

波形。所以第一种方法比较直接,就是在主函数的 for 循环中不断的读取霍尔传感器传来的

位置信号,并根据不同的信号发出不同的波形即可。

43 / 74

Page 47: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第二种方法和第一种方法思路几乎一样,考虑到在 for 循环中不断读取信息太浪费 DSC的性能,所以改在定时中断中读取信息,可以有效的节省 DSC 资源。定时中断的时间不能

设置的太短,大概 0.1s 进一次中断即可。 第三种方法重点介绍。第一种和第二种方法都存在理论上的换相错误的可能,在实际使

用过程中,表现为电机脉动较大。考虑到读取霍尔传感器返回信号的是三个 GPIO 口,分别

为 C3,C4,C6。所以分别开三个定时器捕捉中断,即当信号电平改变时进入中断,可选择

上升沿和下降沿同时进入(注意如果选用 external interrupt 的话只能是上升沿或者下降沿触

发,而不能两者同时触发),在中断中选择六路 PWM 波(根据前文介绍的通过转子位置即

三个霍尔传感器状态来确定三相逆变桥的 6 个 MOSFET 的工作状态,从而确定六路 PWM波状态)的发出状态,具体如下图所示。需要注意的图中没有画出互补的 PWM 波形,实际

上我们使用的是互补波形,比如当 PWM0B 发出 PWM 波时,PWM0A 的波形应该为与其互

补的 PWM 波形。

图 5-1-6 霍尔传感器信号状态对应的六路 PWM 波状态 也就是说,以 Hall a 为例,当检测到上升沿时,证明下一个位置为 120~180 之间,应该发出

state3 状态的波形,当检测到下降沿时,证明下一个位置为 300~360 之间,应该发出 state6的波形。其余依次类推。使用这种方法时,注意初始速度不应该太高,否则容易换相失败。

下面具体介绍实现过程: 5.1.4.1 图 5-1-7 为程序中使用的 PE bean 以及整体框架

44 / 74

Page 48: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 5-1-7 PE bean 的使用情况和程序整体框架

5.1.4.2 根据图 5-1-6 中的六个状态封装 6 个函数,每个函数包括了 6 路 PWM 波

形的状态 void state1(void) { //SM0,将 E0,E1 均置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0000);//E1,PWM0A PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000);//E0,PWM0B //SM1,将 E3 置高,E2 置低 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); //SM2,将 E4,E5 设置为互补的 PWM 波,PWM_Value 表示 PWM 占空比 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, PWM_Value); } void state2(void) { //SM0,将 E0,E1 设置为互补的 PWM 波 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, PWM_Value); //SM1,将 E3 置高,E2 置低

45 / 74

Page 49: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); //SM2,将 E4,E5 均置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); } void state3(void) {// SM0,将 E0,E1 设置为互补的 PWM 波 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, PWM_Value); //SM1,将 E2,E3 均置低 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); //SM2,将 E5 置高,E4 置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); } void state4(void) { // SM0,将 E0,E1 均置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000); // SM1,将 E2,E3 设置为互补的 PWM 波 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, PWM_Value); // SM2,将 E5 置高,E4 置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); } void state5(void) { // SM0,将 E1 置高,E0 置低

46 / 74

Page 50: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000); // SM1,将 E2,E3 设置为互补的 PWM 波 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, PWM_Value); // SM2,将 E4,E5 均置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); } void state6(void) { // SM0,将 E1 置高,E0 置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0FFF); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000); // SM2,将 E2,E3 均置低 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); // SM2,将 E4,E5 设置为互补的 PWM 波 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_COMPLEMENTARY); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, PWM_Value); }

5.1.4.3 电机的启动 通过读取电机转子的初始状态,发出一组 PWM 波,让电机启动,然后发生位置转变后

进入中断,flag0,flag1,flag2 的作用是标定电机位置。 Hall_State = PESL(GPIOC, GPIO_READ_RAW_DATA, NULL);//读取电机转子的初始位置,

即 C3,C4,C6 的初始状态 Hall_State= Hall_State & 0x0058; //位操作,取出 GPIOC 端口寄存器中第三位,第四位和第

六位的值 switch(Hall_State)//读取霍尔值,并根据读到的不同状态设置标志位 { //PART 1 011 case 0x0050: state1(); //封装好的状态函数 Flag0=0;Flag1=1;Flag2=1;//设定标志位 break;

47 / 74

Page 51: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

//PART 2 001 case 0x0040: state2(); Flag0=0;Flag1=0;Flag2=1; break; //PART 3 101 case 0x0048: state3(); Flag0=1;Flag1=0;Flag2=1; break; //PART4 100

case 0x0008: state4(); Flag0=1;Flag1=0;Flag2=0; break; //PART5110 case 0x0018: state5(); Flag0=1;Flag1=1;Flag2=0; break; //PART6 010 case 0x0010: state6(); Flag0=0;Flag1=1;Flag2=0; break; } //LDOK,将值写入寄存器 PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE);

5.1.4.4 中断程序的编写 每换一次状态,其实 C3,C4,C6 中只有一个状态会改变。比如图 4-6-2 中的状态图中,

从 011(状态 1)变为 001(状态 2)时,只有 C4 状态发生改变,此时 capture interrupt 捕获

到 C4 状态的跳变,进入 Cap2_OnCapture()中断,进入后首先对 Flag2 取反,表示状态已经

改变。再根据改变后的 Flag2 状态发出相应的 PWM 波形,比如从状态 1(011)变为状态 2(001)时,Flag2 原来的值为 1,进入了中断代表 Flag2 发生了改变。根据这样的原理,不

断捕获跳变,从而获得电机位置,驱动电机。 /* ** =================================================================== ** Event : Cap3_OnCapture (module Events) ** ** Component : Cap3 [Capture] ** Description : ** This event is called on capturing of Timer/Counter actual ** value (only when the bean is enabled - <Enable> and the

48 / 74

Page 52: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

** events are enabled - <EnableEvent>.This event is available ** only if a <interrupt service/event> is enabled. ** Parameters : None ** Returns : Nothing ** =================================================================== */ #pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers'

property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */ void Cap3_OnCapture(void) { Flag0=1-Flag0; if(Flag0) {//011

state1(); count++; } else {//100

state4(); } PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); } #pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers'

property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */ void Cap2_OnCapture(void) { Flag1=1-Flag1; if(Flag1) {//110

state2(); } else {//001

state5(); } PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); } #pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers' property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */

49 / 74

Page 53: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

void Cap1_OnCapture(void) { Flag2=1-Flag2; //改变标志位 if(Flag2) //针对不同的标志位给下一个对应的状态 {//101

state3(); }

else {//010

state6(); }

PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); }

5.1.4.5 测速以及速度闭环的实现 测速的原理是当 DSC 两次发出同一个 PWM 波形时,代表电机转动了一圈(需要考虑

电机极数,本次实验使用的电机包括两种,一种为两极,一种为四极,也就是说分别发出四

次波形和八次波形时才算转过了一圈),可以在中断添加一个 count 值,每发一次波就加一,

同时开一个定时中断,0.1s 进入一次中断,读取 count 的值,按照一定的运算规律即可算出

转速,程序如下: #pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers'

property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */ void TI2_OnInterrupt(void) {

speedtmp=speed;//speedtmp 代表上一次测得的转速 speed=count*5; //speed=(count/0.1)*2,使用的为二极电机

count=0; PWM_Value+=20*(speed-speedtmp);//速度闭环

}

50 / 74

Page 54: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

5.2 实验九:无位置传感器的直流无刷电机的驱动

5.2.1 概述

传统的直流无刷电机需要位置传感器得到转子位置信号对三相绕组进行换相控制,但位

置传感器增大了电机的体积和成本,同时不能适应高温、高湿等恶劣的工作环境,维修起来

也比较困难。比如在空调中的压缩机电动机,因为压缩机和电动机装在一起,不但没有位置

用来安装传感器,而且由于压缩机的工作温度很高,远超出了一般位置传感器的线性工作范

围,使位置传感器无法正常工作。同时传感器连线较多,易受外界信号干扰,降低了电机运

行的可靠性。因此,无位置传感器控制成为直流无刷电机控制系统的一个重要发展方向。 目前,反电动势过零点检测法是检测直流无刷电机转子位置的主要方法,本次实验采用

的也是这种方法。实验使用的三相无刷直流电机具有梯形反电动势波形,电机驱动系统采用

两两导通、三相六状态的 PWM 调制方式。如图 4-9-1 所示为直流无刷电机定子段一相的等

效电路及反电动势波形。其中 L 是相电感,R 是相电阻,E 是反电动势,Vn是电机定子绕组

中性点对地电压,VA、VB、VC为每相输出端对地电压即端电压。依图 5-2-1 建立的三相端电

压平衡方程为

VA = Ria + L diadt

+ EA + Vn(1)

VB = Rib + L dibdt

+ EB + Vn(2)

VC = Ric + L dicdt

+ EC + Vn(3)

图 5-2-1 电机绕组等效电路及其反电动势波形

由于采用两两导通方式,因此在每一时刻都只有两相导通。设 A 相和 C 相导通,且 A+(V1),C-(V2),如图 5-2-2 所示。这时 A、C 两相电流的大小相等,方向相反,B 相电流

则为零,则式(2)可简化为 VB = EB + Vn (4)

所以有

EB = VB − Vn (5) 将(1)和(3)式相加得到

Vn = 12(VA + VC) (6)

所以 B 相反电动势为

51 / 74

Page 55: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

EB = VB −12(VA + VC) (7)

A 相和 C 相的反电动势方程同理可得[4]。

图 5-2-2 三相逆变桥等效电路原理图

5.2.2 无位置传感器直流无刷电机驱动方法

5.2.2.1 硬件设计

图 5-2-3 无位置传感器控制板原理图 如上图所示,从电机驱动板的 A,B,C 三相中分别取出端电压,经过一个电阻电容网

络进行分压滤波,然后经过一个运算放大器进行电压跟随,得到隔离的三相端电压VA、VB、VC。以 A 相为例说明接下来的电路(如图 4-9-3),VA接入正相输入端,VB、VC分别接入反

相输入端,进行一次加减法运算,此时有:

EA = VA −VB+VC

2 (8)

52 / 74

Page 56: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

此时得到EA即为 A 相的反电动势。

图 5-2-4 反电动势运算电路 为了精确的得到过零点,得到 A,B,C 三相的反电动势之后,分别经过一个 LM393 电压比

较器(LM393 可以使方波的上升沿和下降沿都变抖,便于 DSC 读取),而后再经过光耦实

现强弱电隔离,得到位置信号传给单片机。 5.2.2.2 软件设计 软件的设计没有什么太大的难点,为了实现启动,先按照一定延时(需要多尝试几次,

选择一个比较合适的延时)按顺序发出六路 PWM 波,电机转动起来以后,产生反电动势,

然后就可以通过硬件电路测得反电动势过零点,得到电机转子位置,延时 30 度换相,使电

机正常运转。

5.2.3 存在的问题

本次对于无位置传感器直流无刷电机驱动的探究,虽然能够使电机转动起来,但是仍然

有许多需要解决的问题,列举如下: (1)采用反电动势过零点检测法,当电机有负载时,电机的起动不再适合用转子位置估

计法来进行,需要采用新的方法,如文献中有提及的短脉冲起动法; (2)延时 30 度换相我采用的其实也只是估计时间的方法,下一步的改进可以在引入闭环

的基础上得到转速,从而根据 CpuDelay100US(10000/(speed*24))的方法确定延时,其中 speed代表转速,单位为 r/s。再考虑实验使用的电机为二极电机,那么转动一圈其实每个位置都

经过了两次,speed*720/30=speed*24,那么 10000/(speed*24)就代表转过 30度所需要的时间,

其中 10000 是因为延时函数是以 100 微秒为单位。 (3)当然最好的方法是不需要硬件电路,而只需要软件算法,不断采样电机端电压,通

过软件算法得到电机的反电动势过零点,这个值得进一步探究。 (4)驱动无位置传感器的直流无刷电机还有其他方法,比如三次位置谐波检测法,扩展

卡尔曼滤波法等,这些方法各有利弊,可以做进一步的探究。

53 / 74

Page 57: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

5.3 实验十:步进电机的驱动

5.3.1 步进电机概述 步进电机是电机中的“婴儿”,它从20世纪60年代早期才开始流行。步进电机是脉冲电

机的一种,它是一种具有小齿状相契合的定子和转子,通过切换定子线圈中的电流,以一定

的角度(根据步进电机的相数决定)逐步转动的电机。步进电机控制简单,没有积累误差,

已经广泛运用于计算机外围设备,工业控制等领域。步进电机又分为反应式(Variable Reluctance,VR)、永磁式(Permanent Magnet,PM)和混合式(Hybrid Stepping,HS)。 混合式步进电机结合了反应式和永磁式的有点,定子上有多相绕组而转子则采用永磁材料,

目前混合式步进电机的应用最为广泛,本次实验也采用两相混合式步进电机。 5.3.2 驱动策略和原理

5.3.2.1 步进电机的静态指标

(1)拍数 完成一个磁场周期性变化所需脉冲数,或者指转子转过一个齿距角所需的脉冲数,可以

简单的理解为电机转子转过一周所走的步数。比如两相四拍步进电机的运行方式,即 A-B-(-A)-(-B)。

(2)步距角 步距角表示控制芯片每发出一个脉冲信号,电机转子所转过的角度。计算公式如下:

𝜃𝜃𝑏𝑏 =360°

𝑁𝑁 ∙ 𝑍𝑍𝑟𝑟

𝑍𝑍𝑟𝑟一电机转子齿数;N 一运行拍数,通常为步进电机相数的整数倍,即 N=k.m,m 为

步进电机相数。以本次实验使用的步进电机为例,其转子齿为 50 齿,四拍运行时步距角为

1.8 度。[5] (3)相数 表示产生不同对极 N、S 磁场的激磁线圈对数,常用 m 表示。 (4)保持转矩(Holding Torque) 指步进电机虽然通电但是没有转动时,定子用来锁住转子的力矩,通常步进电机在低速

时的力矩接近保持转矩。保持转矩是步进电机很重要的参数,值得我们注意。例如,我们经

常可以在步进电机的标签上面看到2N.m的字样,在没有特殊说明的情况下就是该步进电机

的保持转矩。 5.3.2.2 步进电机的动态指标 (1)失步 电机实际运转时经过的步数和理论上的不熟不一样,称之为失步。 (2)动态转矩 步进电机在运行时的输出力矩称动态转矩。由于步进电机在转动时,各相绕组电感将形

成一个反电动势,频率越高,反电势越大,在它的作用下,动态转矩随速度升高而衰减。 (3)最大空载启动频率 指步进电机在空载的情况下能够正常启动的脉冲频率。如果启动频率高于该值,则步进

电机无法启动,本次实验使用的步进电机空载启动频率大概在25KHz左右。 (4)最大空载运行频率 步进电机在某种驱动形式下,在额定电压和额定电流时不带负载达到的最高转速时的频

54 / 74

Page 58: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

率。 5.3.3 步进电机的工作原理 步进电机的特征是可以开环运行,不需要编码器或者位置传感器,换言之,要驱动步进

电机,不需要像直流无刷电机那样获取转子位置,而后根据所获得的转子位置来决定

MOSFET的开断,只需要按照一定的规律发出PWM波,再配以合适的延时(该延时决定了

步进电机的转速),步进电机即可正确的随脉冲波信号而转动,可以做到相当精确的位置和

速度控制,且稳定性好。具体驱动方法在下文驱动程序的编写中详细介绍。 当然步进电机也可以采用闭环控制,但是加入闭环势必会提高产品成本,因此在对成本

比较敏感的工业应用场合,且不要求精度特别高的情况下,一般都采用开环控制。 步进电机细分驱动是20世纪70年代发展起来的一种驱动步进电机的新技术,它能够有效

的提高步进电机的运行性能,至20世纪90年代已经基本发展成熟,细分驱动主要优点为可以

明显提高步进电机的输出转矩,提高分辨率,使控制精度提高。

5.3.4 步进电机实验内容设计

5.3.4.1 实验目的 深入理解混合式步进电机的各项参数以及工作方式,实现步进电机的开环驱动。 5.3.4.2 实验要求 在理解步进电机闭环工作的基础上,开环驱动步进电机。同时,尝试细分控制等方法驱

动步进电机。

5.3.5 步进电机驱动程序的编写

5.3.5.1 步进电机的接线方法。 实验中使用的混合式步进电机型号为 57BYGHM,如下图为使用的步进电机接线图,在

实际使用中将绿色和蓝色接头短接,然后与黑色,红色分别接入 500W 电机控制板的 A,B,

C 三相中。

图 6-2-2 步进电机接线图

5.3.5.2 本次实验采用四拍控制法,控制方法很简单,一言以蔽之,是要通

过编写程序控制三相桥的通断,使电机内部形成一个旋转的四拍磁场,下面为四

拍的状态(每一函数中都包括了这一拍时三相桥中 6 个 MOSFET 的通断状态): UWord16 PWM_Value=0x1000; void state1()

55 / 74

Page 59: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

{//SM0,将 E1 置高,E0 置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x8000);//E1 PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000);//E0 //SM1,将 E3 置低,E2 置高 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0000);//E3 PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x8000);//E2 //SM2,将 E4,E5 均置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0000);//E5 PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000);//E4 //LDOK,将寄存器的值写入 PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); } void state2() {//SM0,将 E1,E0 均置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000); //SM1,将 E3 置高,E2 置低 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x8000); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); //SM2,将 E5 置低,E4 置高 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x8000); PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); } void state3() { //SM0,将 E1 置低,E1 置高 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0000);

56 / 74

Page 60: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x8000); //SM1,将 E3 置高,E2 置低 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x8000); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x0000); //SM2,将 E5,E4 均置低、 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); } void state4() {//SM0,将 E1,E0 均置低 PESL(eFPWM1_DEVICE,PWM_SM0_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM0_WRITE_VALUE_REG5, 0x0000); //SM1,将 E3 置低,E2 置高 PESL(eFPWM1_DEVICE,PWM_SM1_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG3, 0x0000); PESL(eFPWM1_DEVICE, PWM_SM1_WRITE_VALUE_REG5, 0x8000); //SM2,将 E5 置高,E4 置低 PESL(eFPWM1_DEVICE,PWM_SM2_SET_CHANNEL_AB_OPERATION,PWM_INDEPENDENT); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG3, 0x8000); PESL(eFPWM1_DEVICE, PWM_SM2_WRITE_VALUE_REG5, 0x0000); PESL(eFPWM1_DEVICE,PWM_SET_LDOK,PWM_SM0_ENABLE|PWM_SM1_ENABLE|PWM_SM2_ENABLE); }

5.3.5.3 主程序的写法 在 for 循环中不断按顺序调用四拍的状态函数即可。注意延时的大小决定了步进电机的

转速。 state1();

Cpu_Delay100US(10); state2();

Cpu_Delay100US(10); state3();

Cpu_Delay100US(10);

57 / 74

Page 61: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

state4(); Cpu_Delay100US(10);

58 / 74

Page 62: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第六章 实验十一 10W高压电机控制系统硬件介绍

6.1 电机驱动原理图

图 6-1-5 电机控制系统功能

如上图所示为一个为一个完整的电机控制系统,包括整流电路,三相桥式逆变电路,电

压检测(形成速度闭环),电流检测(形成电流闭环),温度检测电路,控制器部分包括 A/D转换,PWM 波形生成以及故障保护(由检测到的电压、电流和温度形成故障综合信息),

外设(包括显示和键盘)以及通信模块(包括与上位机通信和与其他外设通信)。

6.2 测量系统

6.2.1 直流高压电压检测电路

图 6-2-1 感应电机驱动直流高压测量电路

59 / 74

Page 63: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

对直流电压进行分压取样,测得电压按照比例计算出高压直流电压,从而可以得知输出

三相正弦波电压的有效值。

6.2.2 电流测量电路 ACS712 是一款基于霍尔效应的线性电流传感器芯片,电路如图 6-2-2 所示。其中 AVCC

为 4.8V 时,Vout 为 0.5*AVCC=2.4V,也就是说当 AC712 的输出为 2.4V 时,电流为零。而

且该芯片线性度很好,测量电流和输出电压的关系为 Vout=2.4±(0.1)Ip。例如当电流正向为

10A 时,Vout=2.4+1=3.4V,当电流反向达到 10A 时,Vout=2.4-1=1.4V。电压输出后经过

一个用 OPA2340 搭成的加减法运算电路(图 6-2-2 所示),其中 Vref1 为 1.4V,当 Vout 为2.4V 时,输出为 1.65V,表示电流为零。使用这样一个电流测量电路的目的在于提高 DSC 的ADC 的分辨率和去掉共模干扰,因为 ADC 的参考电压为 3.3V,经过 ACS712 芯片和加减

法运算电路,将本来有正有负的电流整体向上移动了 1.4V,小于 1.65V 表示电流小于 0,大

于 1.65V 表示电流大于 0,同时加减法运算电路有效的减少了共模干扰。

图 6-2-2 电流测量传感器电路

6.3 编写 SPWM控制软件

按照 SPWM 规律和相差 120⁰编写程序,要遵循分段同步调制的原则。

60 / 74

Page 64: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第七章 实验十二:FreeMASTER 的使用

7.1 FreeMASTER 软件简介

FreeMASTER 是一款用于嵌入式应用系统的联机应用软件,它最初是作为电动机控制

应用的开发工具,但同样也可以作为其他应用软件的开发。 FreeMASTER 软件的特点: 图形化界面 导航易于理解 在窗口中可以看到实时数据 通过集成记录器获得数据的快速变化曲线 通过用户定义的文本信息来解释变量 内置支持标准变量类型(位、整型数、浮点数) 变量自动从 Code Warrior 链接器输出文件(MAP、ELF)中提取

7.2 FreeMASTER在 PE 中的使用

以直流无刷电机驱动程序为例,介绍如何在程序中添加 FreeMASTER,如何配置 PE,如何使用 FreeMASTER。

(1)添加 FreeMaster bean Component->Categories->CPU External Devices->Display->FreeMaster

61 / 74

Page 65: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-1 添加 FreeMaster bean

(2)配置 FreeMaster bean FreeMaster bean 的配置共分为两级菜单,第一级菜单如图 7-2-2 所示,第二级菜单如图

7-2-3 所示。第一级菜单中有几个比较重要的变量需要注意: Oscilloscope:需要 Enable; Recorder: Enable、disable 均可; 窗口最下方的 Data Buffer length:调整成 128 或者更大; 第二级菜单为选择通信端口,点击第一级窗口中 Device->Init_SCI0 下拉键旁边的按键

进入。 Device:可选择 QSCI0 或者 QSCI1,视情况选择。 Settings->Clock setting: SCI baud rate 由 Baud rate divisor(粗调)和 Fractional baud rate divisor(细调)决

定。决定方式为:SCI baud rate=3750000/(B+F/8) B 代表 Baud rate divisor F 代表 Fractional baud rate divisor 本次实验选择 19200 Bd 的通信速率。 Pins 中可选择通信的发送端和接收端,视具体硬件连接情况而定,本次实验中选择

GPIOF8 为 RxD,GPIOC2 为 TxD。 其余配置按照默认即可。

62 / 74

Page 66: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-2 FreeMaster bean 第一级菜单

图 7-2-3 FreeMaster bean 的二级菜单

63 / 74

Page 67: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

(3)软件写法 软件中只需在主程序的 for 循环中不断调用 FMSTR1_Poll()即可 (4)FreeMASTER 软件的配置和使用 打开 FreeMASTER 软件,在工具栏中找到 Project->Options 下面通过图片来逐步说明我们是如何使用FreeMASTER来实现对于PWM_Value值的观

测。

图 7-2-4 选择“Direct RS232”,波特率 38400

图 7-2-5 Default symbol 在创建的程序的 output 中找,File 选择如图所示的选项即 elf文件

64 / 74

Page 68: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-6 创建变量

图 7-2-7 操作示意图 创建名为 pwmtest 的示波器,Period 和 Buffer 的意思为在屏幕上每 250s 显示 1000 个采

样点。可通过调节该参数来改变可观察的点数。

65 / 74

Page 69: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-8 操作示意图

图 7-2-8 表示在示波器属性的 Setup 中创建 PWM_Value 变量,便于后面观察。注意 Y轴选+择 auto 模式,以免由于对 PWM_Value 值大小的不了解导致观测不到 PWM_Value 的

值。

图 7-2-9 设定初始值后,让电机转起来

从图中我们可以观测到平直的波形,表示电机按照预定的速度转动起来,并且转速相对

平稳。

66 / 74

Page 70: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-10 按降低速度的按键,电机速度降低

图中 PWM_Value 值降低的原因为我们在配置 eFlexPWM 模块的过程中将 PWM_Value极性反相了,这点需要多注意。

图 7-2-11 创建变量观察,在 Variable 的 Address 中选择 PWM_Value

67 / 74

Page 71: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-12

转换到 Modifying 窗口,Modifying mode 中选择第二个或者第三个,并且根据需要设定最大

值,最小值,步进值

图 7-2-13 操作示意图,改变 PWM_Value 值 最后出来的效果图,我们既可以通过按键来改变电机的转速,也可以通过在计算机上修

改 PWM_Value 值来改变转速,十分方便。 需要注意的是这边只是以观察 PWM_Value 为例进行说明,实际使用中我们在示波器以

及变量观察窗中加入诸如速度,转向控制等变量,可以方便的控制电机进行加减速和转向灯

操作。

68 / 74

Page 72: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 7-2-14 Hall State 的状态变换图(改变 FreeMaster 中显示的变量)

另外一个例子,观察霍尔传感器的变量变化。

69 / 74

Page 73: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

第八章 实验十三:图形液晶显示模块(12864 LCD)与

MC56F8257 接口编程

8.1 图形液晶显示模块(12864LCD)简介

由于液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等诸多其他显示器无法比

拟的优点,使其在工业自动化设备中的运用越来越广泛。点阵图形式 LCD 不仅可以显示字

符、数字,还可以显示各种图形、曲线及汉字,并且显示自由度大,可以实现屏幕上下左右

滚动、动画功能、分区开窗口、反转、闪烁、文本特性显示等功能。 12864 LCD 是一种很常用的液晶模组。带中文字库的 12864 具有 4 位/8 位并行、2 线或

3 线串行多种接口方式。12864 LCD 采用被动矩阵驱动方式,由于 12864 LCD 的这种驱动方

式,在显示字符和图形时,需要考虑它和 DDRAM 以及 GDRAM 的对应关系。它是一种点

阵图形液晶模块,内置 8192 个 16*16 点汉字,和 128 个 16*8 点 ASCII 字符集。该液晶模

块与其他液晶模块相比,具有显示程序简洁,同时硬件电路结构也比较简单,价格相对于其

他的液晶比较低廉的特点,因此其应用较为广泛。低电压和功耗相对较低也是其显著特点。 液晶 12864 的基本特性,模块接口,控制指令等内容请参见 12864 的中文资料,此处

不再赘述。 使用前的准备:将 LCD12864 模块和 MC56F8257 上的液晶接口相连,调节 LCD 的对比

度,使其显示出黑色的底影。此过程可以初步检测 LCD 有无缺段现象。

8.2 软件设计

2.1 建立带有 PE功能的工程,添加以下 component:3 个 BitIO、1 个 ByteIO。

分别配置如下: (1) BitIO:选择 GPIOA7_ANA7 口。重命名其为 LCD_E。如图 8-2-1 所示:

图 8-2-1 LCD_E 的配置方式

选择 GPIOA5_ANA5 口。重命名其为 LCD_RS。如图 8-2-2 所示:

70 / 74

Page 74: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

图 8-2-2 LCD_RS 的配置方式

选择 GPIOA6_ANA6 口。重命名其为 LCD_RW。如图 8-2-3 所示:

图 8-2-3 LCD_RW 的配置方式

(2)ByteIO:选择 GPIOF_LOW,重命名为 LCD_DB。如图 8-2-4 所示。

图 8-2-4 LCD_DB 的配置方式

配置完成后点击 make,完成 PE 配置,生成工程代码。

71 / 74

Page 75: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

2.2 程序清单:(主要代码) //8 位并口方式带字库的 LCD12864 初始化函数 void LCD_init(void) { LCD_write_command(0x30);//功能设定:8 位数据、基本指令操作 Cpu_Delay100US(1); //等待时间>100us LCD_write_command(0x30);//功能设定:8 位数据、基本指令操作 LCD_write_command(0x0C);//显示设定:整体显示、游标关、不反白 LCD_write_command(0x01);//清屏指令 LCD_write_command(0x06);//进入点设定:地址指针加 1 Cpu_Delay100US(40); } //写命令函数 void LCD_write_command(UWord8 command) { //F 口设置为输出 LCD_DB_SetOutput(); LCD_RS_PutVal(0);//指令 LCD_RW_PutVal(0);//写入 LCD_E_SetVal(); LCD_DB_PutVal(command); Cpu_Delay100US(20); LCD_E_ClrVal(); LCD_DB_SetInput(); } //写数据函数 void LCD_write_data(UWord8 dat) { LCD_DB_SetOutput(); LCD_RS_PutVal(1);//指令 LCD_RW_PutVal(0);//写入 LCD_E_SetVal(); LCD_DB_PutVal(dat); Cpu_Delay100US(20); LCD_E_ClrVal(); LCD_DB_SetInput(); } //显示一个字母 void display_char(UWord8 addr,char cha)

72 / 74

Page 76: 《运动控制系统应用综合实验》 实验指导书®ž验教学...由于这种控制器没有办法提供高速连续插补,没有闭环,所 以没有前瞻功能,对于大量的小线段连续加工的场合,加工精度比较差,使得这类的运动控

{ LCD_write_command(addr); //initial address

LCD_write_data(cha); }

73 / 74