直流无刷电机控制器 - 图文

更新时间:2024-04-07 16:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业论文

无刷直流电动机控制系统

——基于Freescale Cortex-M4

姓名 专业 毕业院校 所属部门 指导老师

李可以

电子信息科学与技术 河南科技大学 工程技术支持中心 范林云/吴帆/洪浩高

i

摘要

传统的有刷直流电机采用机械换向,导致换向不良,严重时会产生火花,调速范围较窄,维护量大。而无刷直流电机以电子线路代替电刷进行换向,具有结构简单、运行可靠、易于控制等优点,因此在无刷直流电机方面做出积极的研究是很有意义的。

本文先对无刷直流电机控制系统的相关背景、研究该课题的意义和目的、现阶段国内外无刷直流电机的研究现状进行了简要介绍。接着介绍和分析了整个无刷直流电机控制系统的整体功能和架构。然后介绍了系统的硬件系统,并对关键的模块进行分析。最后,对软件系统的原理进行了分析、说明。

最终可通过触摸按键操作ZTM串口屏,对无刷电机的各种参数进行设置,稳定可靠地控制电机工作。

【关键词】触摸按键、串口屏、无刷直流电机

ii

Abstract

The traditional brush dc motor adopts mechanical commutation, leading to the bad reversing . It may come into being sparks when serious , besides it has a narrow range of speed regulation requiring large amount of maintenance.The brushless dc motor commutation replaces the brush with electronic circuit, which has the advantages of simple structure, reliable operation, easy control, etc. Therefore, it is very meaningful to make a positive research on brushless dc motor.

First, the article introduces the relevant background, research meaning and purpose of the subject of the brushless dc motor control system as well as the domestic and foreign research status of brushless dc motor at present.Second, it introduces and analyses the whole function and architecture of the brushless dc motor control system . Third,it explains the principle of software system.

Finally various parameters’ settings for brushless motor can be operated by touching buttons on the ZTM serial interface screen, controlling motor’s movement stably and reliably.

【KeyWord】Touch buttons, serial interface screen, brushless dc motor

iii

目 录

摘要................................................................................................................................ ii Abstract ........................................................................................................................ iii 第1章 概述 .............................................................................................................. 1

1.1 1.2

无刷直流电机控制系统的背景和意义 ....................................................................... 1 国内外研究现状 ........................................................................................................... 2

第2章

2.1 2.2

系统架构设计 .............................................................................................. 3

系统设计思路 ............................................................................................................... 3 系统功能 ....................................................................................................................... 3 2.2.1 基本功能 ........................................................................................................... 3 2.2.2 扩展功能 ........................................................................................................... 3 2.3 系统整体工作流程 ....................................................................................................... 3 2.4 小结 ............................................................................................................................... 4

第3章

3.1

系统硬件设计 .............................................................................................. 5

硬件整体设计 ............................................................................................................... 5

3.1.1 硬件设计思路 ................................................................................................... 5 3.1.2 硬件整体框图 ................................................................................................... 5 3.1.3 各硬件模块功能 ............................................................................................... 5 3.2 各模块设计与分析 ....................................................................................................... 6

3.2.1 MCU模块 ......................................................................................................... 6 3.2.2 显示模块 ........................................................................................................... 7 3.2.3 电源模块 ........................................................................................................... 8 3.2.4 触摸按键模块 ................................................................................................. 10 3.2.5 三相桥驱动模块 ............................................................................................. 11 3.2.6 驱动桥模块 ..................................................................................................... 12 3.2.7 霍尔信号处理模块 ......................................................................................... 13 3.2.8 反电势信号处理模块 ..................................................................................... 13 3.2.9 电流检测模块 ................................................................................................. 14 3.3 小结 ............................................................................................................................. 14

第4章

4.1

系统软件设计 ............................................................................................ 15

软件整体设计 ............................................................................................................. 15

4.1.1 设计思路 ......................................................................................................... 15 4.1.2 设计流程 ......................................................................................................... 15 4.1.3 设计框图 ......................................................................................................... 15 4.1.4 软件特点 ......................................................................................................... 16 4.2 有感驱动模块程序设计 ............................................................................................. 16

4.2.1 有感驱动转子位置检测 ................................................................................. 16 4.2.2 有感驱动启动 ................................................................................................. 17 4.2.3 有感驱动换相 ................................................................................................. 17 4.2.4 有感驱动速度测量 ......................................................................................... 18 4.3 无感驱动模块程序设计 ............................................................................................. 19

4.3.1 无感驱动转子位置检测 ................................................................................. 19 4.3.2 无感驱动换相 ................................................................................................. 21 4.4 触摸按键模块程序设计 ............................................................................................. 22

iv

4.4.1 触摸按键底层驱动程序设计 ......................................................................... 23 4.4.2 触摸按键应用层程序设计 ............................................................................. 26 4.5 显示模块底层驱动程序设计 ..................................................................................... 27 4.6 菜单管理的架构设计 ................................................................................................. 27 4.7 菜单组织结构图 ......................................................................................................... 29 4.8 菜单切换流程 ............................................................................................................. 30

4.8.1 主界面菜单切换的流程 ................................................................................. 30 4.8.2 电机控制台菜单切换的流程 ......................................................................... 31 4.8.3 电机参数设置菜单切换的流程 ..................................................................... 35 4.8.4 系统设置菜单切换的流程 ............................................................................. 37 4.9 菜单界面图片的设计 ................................................................................................. 37 4.10 小结 ............................................................................................................................. 38

第5章

5.1 5.2 5.3

系统测试 .................................................................................................... 40

无刷直流电机控制系统功能测试 ............................................................................. 40 可靠性测试 ................................................................................................................. 45 小结 ............................................................................................................................. 45

结论.............................................................................................................................. 47

参考文献...................................................................................................................... 48

v

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

第1章 概述

1.1 无刷直流电机控制系统的背景和意义

自1831年法拉第发现电磁感应现象以来,电能开始走进人们的生活,法国人皮克西应用电磁感应原理制成最初的电动机,1866年德国发明家西门子发明了实用的直流发电机,1870年比利时人格拉姆发明了电动机,发电机和电动机的出现拉开了第二次工业革命的帷幕,电机深入到人们生活的每一个角落。

有刷直流电机以其优良的转矩特性在运动控制领域得到了广泛的应用,但是,机械电刷却是有刷直流电机的一个致命的弱点,机械换向导致换向不良,严重时会产生火花,调速范围较窄,维护量大。为了解决这一问题,早在本世纪30年代,就有人开始研究以电子线路代替电刷机械换向的直流无刷电动机,直到1955年,美国D.哈利森等人申请了应用晶体管换向代替电动机机械换向器的换向专利,这就是现代直流无刷电动机的雏形。后又经过人们多年的努力,借助霍尔元件来实现换向的直流无刷电动机终于在1962年问世。

无刷直流电动机保留了有刷直流电机的优良调速性能,又省去了机械电刷和换器。它采用一种位置检测器和电子开关变换器替代电刷和换向器,既有传统直流电机的优良特性,又有交流电机的结构简单、运行可靠、寿命长的优点。在电磁结构上,无刷直流电动机和有刷直流电机一样,但是它的电枢绕组放在定子上,转子上放置永磁磁钢。无刷直流电动机的绕组像交流电机的绕组一样,采用多相形式,经由逆变器接到直流电源上,定子各相逐次接通电流,和转子磁场相互作用,产生转矩。和其它几种电机相比较如表1.1所示。

表1.1 几种电机性能的比较

电机类型 直流电动机 交流电动机 开关磁阻电动机 无刷直流电动机 效率 较高 低 较低 高 体积 小 大 较小 小 控制特性 好 一般 较好 较好 结构寿命 短 长 长 长 和其它类型的电动机相比,无刷直流电动机不仅较为可靠而且损耗较小,它的电枢在定子上,直接与机壳相连,散热条件好,热传导系数大,具有调速性能优越、体积小、重量轻、转动惯量小、不存在励磁损耗问题等优点,不仅保持了传统直流电机良好的动、静态调速特性,而且结构简单、运行可靠、易于控制。因此无刷直流电机的应用范围日益扩大,从最初的军事工业,向航空航天、医疗、信息、家电以及工业自动化领域迅速发展。1984年,美国通用电气公司推出了一种智能电动机,这种电机是一种用微处理器控制的无刷直流电机,其具有非常宽的调速范围(20~10000r/min),且噪声低、效率高、可实现一定的“智能”操作,可以用于吊扇上,实现无级调速,也可以在洗衣机、空调器、冰箱等家电产品中应用,使这些家电实现省电、多功能、自动控制等功能,如定时,定温,自然调节等。据美国通用电气公司预测,若用无刷电机取代传统的异步电动机在家电中的应用,其效率可以提升百分之二十,而全美国1年可节电2.2百万KW。

因此,直流无刷电机的应用和研究受到了高度的重视,而电力电子技术和微处理器以及现代控制理论的发展,为无刷直流电机的电子换向以及复杂的控制算法提供了软硬件保障。机电一体化的进程在加快,融合机械技术,电子技术和信息技术,目前BLDC的应用越来越普遍,国内近年来在无刷直流电机的设计和控制方面有很多研究,但与国外成熟的产品相比还是有很多地方需要提高。在BLDC方面做出积极的研究是很有意义的。

1

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

1.2 国内外研究现状

电动机作为机电能量转换装置,其应用范围已遍及国民经济的各个领域以及人们的日常生活之中。传统直流电机采用机械机构(电刷)进行换向,因而存在机械摩擦,并由此带来电磁噪声、换向火花以及寿命短等缺点,再加上制造成本高、维修困难,从而极大的限制了它的发展和应用范围。

针对上述传统有刷直流电动机的弊病,早在20世纪30年代,就有人开始研制以电子换向代替电刷机械换向的无刷直流电动机,并取得了一定成果。但由于当时大功率电子器件仅处于初级发展阶段,没能找到理想的电子换向元器件。使得这种电动机只能停留在实验室研究阶段,而无法推广使用。1955 年,美国D.哈利森等人首次申请了应用晶体管换向代替电动机机械换向的专利,这就是现代无刷直流电动机的雏形。但由于该电动机尚无起动转矩而不能产品化。尔后又经过人们多年努力,借助于霍尔元件来实现换向的无刷直流电动机终于在 1962年问世。

在此之后,又相继出现了新型永磁材料钐钴、钕铁硼,它们具有高剩磁密度,高矫顽力以及高磁能积等优异磁性能,使永磁电机有了较大发展。进入九十年代以来,随着电力电子工业的飞速发展,许多高性能半导体功率器件,如 GTR、MOSFET、IGBT 等相继问世,以及微处理器、大规模集成电路技术的发展,逆变装置也发生了根本性的变化。这些开关器件本身向着高频化、大容量、智能化方向发展,并出现集半导体开关、信号处理、自我保护等功能为一体的智能功率模块(IPM)和大功率集成电路,使无刷直流电动机的关键部件之一——逆变器的成本降低,且向高频化、小型化发展。同时,永磁材料的性能不断提高和完善,特别是钕铁硼永磁材料的热稳定性和耐腐蚀性的改善,加上永磁电机研究和开发经验的逐步成熟,无刷直流电动机的应用和开发进入一个新阶段,目前正朝着超高速、高转矩,高功能化。

由于无刷直流电动机的优异性能,使得世界上许多科研机构和公司都投入到这一技术领域,使无刷直流电动机的技术得到了充分展示和更加广泛的应用。据美国MTT预测公司的报告,就1986年美国市场而言,无刷直流电机的销售量为560万在全部电机中占7%;在1991年无刷直流电机的消费量达到2600万台,在全部电机中占16%,增长速度最快。 电机分为直流电机、同步电机和异步电机,在我国三种电机的生产分工较为明确,无刷直流电机是三种电机的集合,是电机发展的高层次产品,代表电机的发展方向。目前无刷直流电机研究刚刚起步,主要集中在高等学校,如浙江大学、北京航空航天大学、上海交通大学等,均在进行1.5kw以下样机的研究试验,清华大学正在做15KW电机的样机实验,中科院正在做28 KW电机的样机实验。在企业中生产高性能、大容量这种电机的厂家还没有,只有生产结构简单、性能较低、容量在0.2KW以下、用于电动自行车电机的厂家。国际发达国家对无刷直流电机的研制与中国大体相当,但像美国、日本在无刷直流电机控制方面比中国先进。

2

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

第2章 系统架构设计

2.1 系统设计思路

设计采用自上而下的设计方法。首先,通过查阅相关资料,了解无刷直流电机的发展现状,确定了系统所需要实现的功能后,将系统的整体框架定下来。然后,根据确定的功能,将系统分为若干个模块,分别对各个模块进行分析,方案对比,确定各模块器件的选型和硬件框架。接着,对各个模块进行硬件设计,并编写驱动程序分别进行调试。最后,将调试好的各个模块进行整合,调试,确定最终的硬件电路和系统软件。

根据系统的整体框架,本系统要实现无刷电机的有感控制和无感控制,以及研究触摸按键如何在强电磁干扰下稳定工作,由于触摸按键以前从没接触过,重点放在如何设计触摸按键的外形及抗干扰措施,研究触摸按键算法;为了稳定地控制电机,研究无刷电机算法,最终实现触摸按键在电机这种强电磁干扰下稳定地接受用户的输入,无刷电机快速准确地达到用户设定的速度。

2.2 系统功能

2.2.1 基本功能

系统要实现的基本功能如下:

? 实现无刷直流电机的有感驱动方式和无感驱动方式。用户可通过触摸按键操作串口屏菜单界面,在参数设置界面根据用户的需求在有感驱动方式和无感驱动方式之间进行切换;

? 电机转速可调,并可以用开环和闭环(PID)控制。用户可通过触摸按键操作串口屏菜单界面,在参数设置界面,如果用户选择开环控制,则用户可调节电机的占空比来进行速度调节;如果用户选择闭环控制,则用户可设定期望的速度;

? TFT屏幕显示电机速度曲线。用户通过触摸按键进入波形显示界面,可实时观察电机的速度曲线;

? 触摸按键调节电机转速。如果用户选择开环控制,则用户可调节电机的占空比来进行速度调节;如果用户选择闭环控制,则用户可设定期望的速度; ? 可驱动24V/50W电机。 2.2.2 扩展功能

? 速度曲线放大缩小。为了方便用户观察,在波形显示界面设计了波形放大和波形缩小两个按钮,方便用户观察波形;

? 坐标自适应。本系统可在参数设置界面选择是否启用坐标自适应,如果选择坐标自适应,在用户进行速度调节时,速度坐标可根据当前的速度进行自适应调节; ? 串口屏背光亮度调节。用户可在系统设置界面对串口屏进行100级亮度调节; ? 串口屏背光时间调节。用户可在系统设置界面对串口屏背光时间进行调节,在无人操作的时候关闭串口屏背光,降低功耗。

2.3 系统整体工作流程

无刷直流电机控制系统由微处理器、电机驱动器、触摸按键模块、液晶显示、位置检测模块组成。位置检测模块检测电机转子位置,将信息传给微处理器,微处理器根据电机位置信息,输出相应的PWM控制信号,通过MOS管构架的全桥驱动电路驱动电机。

3

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

通过触摸按键操作菜单界面,选择开始进入电机控制界面,点击启动按钮即可启动电机,此时可通过滑动滑条进行加减速,或者点击波形放大缩小按钮进行波形的放大和缩小,点击参数设置按钮,可进入电机参数设置界面,在此界面可进行电机有感控制和无感控制、开环控制和闭环控制、正转和反转的切换,同时可设定期望速度,系统框图如图2.1所示。

图2.1 系统框图

2.4 小结

本章主要对系统的设计思路和功能进行了介绍。系统采用自上而下的方法进行设计,在确定了整体功能后,分为多个模块分别进行设计、调试,最后将各个模块进行整合,在实现了系统的基本功能后,再实现系统的扩展功能,最后介绍了系统的整体工作流程。

4

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

第3章 系统硬件设计

3.1 硬件整体设计

3.1.1 硬件设计思路

一个电路最基本的部分是电源,本系统外接24V直流电源适配器,经过集成稳压芯片后输出一系列不同的电压,为系统的不同模块提供合适的电压和电流。常用的集成稳压芯片根据工作原理的不同分为开关稳压芯片和线性稳压芯片,开关稳压芯片输出电压波纹大,应用电路复杂,而线性稳压芯片输出电压稳定,应用时只需外接滤波电容即可工作,工作电路简单,最终选择线性稳压芯片,根据不同模块所需的电压和电流,选择所需的稳压芯片。 直流无刷电机驱动需要驱动电路,现在常用的是三相桥驱动电路,由MOS管搭建;MOS管驱动有多种方案可供选择,如光耦驱动,三极管驱动,专用MOS管驱动芯片等。本系统PWM频率为20KHz,普通的光耦会使PWM输出变形,如选用光耦驱动方案,则需高速光耦,高速光耦一般价格较高,增加了系统的成本,光耦驱动不具有防死区功能,增加了软件的复杂度。MOS管栅极具有一定的电容,如选用三极管驱动方案,三极管对MOS管栅极的充放电同样会使PWM变形,影响驱动性能,同时三极管驱动方案也不具有防死区功能,稳定性不高。综合考虑稳定性、成本等因素,最终选择MOS管专用驱动芯片。 本系统选用的微控制器MK10DN32自带触摸感应输入模块(TSI),只需要将一定面积的覆铜连接到TSI引脚即可。需要根据系统的需求设计确定触摸按键的形状,查阅相关资料得知,任何形状的按键均可用于电容感应式触摸中,不同的形状不会影响感应的性能,仅与板子的美观程度有关。根据本系统的要求,需要三个按键,一个确定按键,两个选择按键,同时需要一个滑条按键,滑动滑条即可实现电机的加减速,滑条按键可与两个选择按键复用。 3.1.2 硬件整体框图

无刷直流电机控制系统硬件框图如图3.1所示。

图3.1 系统硬件框图

3.1.3 各硬件模块功能

5

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

系统各模块简述如下:

? MCU模块:作为系统的大脑,负责处理系统数据,控制各模块协调工作;

? 电源模块:将输入系统的单一电压转换为系统各模块需要的各种电压,为系统提 供稳定的电源,保证系统稳定可靠的工作;

? 霍尔信号处理模块:将无刷直流电机输出的5V霍尔信号经分压网络降为MK10DN32可接受的3.3V电平信号,同时对输出的霍尔信号进行滤波整形; ? 反电势信号处理模块:将无刷直流电机输出的反电势信号经分压网络降为MK10DN32可接受的3.3V电平信号,同时对输出的反电势信号进行滤波整形; ? 电流检测模块:测量电机任意时刻流过两相电流的大小,同时具有过流保护功能; ? 驱动桥模块:无刷电机的动力来源,驱动无刷电机旋转;

? 三相桥驱动模块:为MK10DN32输出的PWM信号提供驱动,可靠的控制MOS管工作;

? 触摸按键模块:接受用户的输入,实现转速设定,调整电机控制模式;

? 显示模块:作为人机交互窗口,显示用户在操作过程中的相关信息及电机的转速曲线等,是用户的操作平台。 无刷直流电机控制系统硬件配置如表3.1所示。

表3.1 系统硬件配置

模块 MCU模块 电源模块 电流检测模块 驱动桥模块 三相桥驱动模块 显示模块 MK10DN32VLH5 LM317T、SPX1117-5.0V、SPX1117-3.3V LMC7101 NTD32N06 NCP5106B ZTM480272S43 型号 3.2 各模块设计与分析

3.2.1 MCU模块

1. MCU模块分析

由表3.2可知,飞思卡尔公司的MK10DN32具有绝对的性能优势,性价比是最高的, MK10DN32微控制器是飞思卡尔公司推出的首款基于ARM Cortex-M4内核的微控制器,MK10DN32微控制器具有高性能高精度的混合信号处理能力、宽广的互联性、低功耗感应触摸传感接口,强大的FlexTimer支持PWM和电机控制功能等。所以选择基于Cortex-M4的MK10DN32作为主控芯片。

表3.2 MCU方案对比

方案 ARM7 51单片机 基于Cortex-M4的MK10DN32 优势 具有丰富的片内资源,性能较高 操作简单,价格低 片内资源丰富,性价比高,具有触摸感应模块(TSI),功耗低 劣势 操作较为复杂,成本相对较高 资源不够丰富,数据处理能力不足 操作较为复杂 MK10DN32可用于高集成度和低功耗的嵌入式应用,该控制器性能卓越、简单易用、

6

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

功耗低,更重要的是,它能显著降低所有8/16位应用的代码长度。ARM Cortex-M4是新一代内核,它提供了一个简单的指令集,方便对其进行编程和开发。

MK10DN32的资源包括: ? ? ? ? ? ? ? ? ?

高达32kB的Flash、8kB的数据存储器;

ARM Cortex-M4内核带DSP指令,性能可达1.25DMIPS/MHz;

多达32通道的DMA可用于外设和存储器数据传输并减少CPU干预;

快速、高精度的16位ADC,提供强大的信号调节、转换和分析性能的同时降低了系统成本;

低功耗感应触摸传感接口在所有低功耗模式下均可工作,同时具有多达16个电容 触摸感应输入引脚;

强大的FlexTimers支持通用、PWM和电机控制功能; l5V容限的GPIO带引脚中断功能; 带有JTAG/SWD调试功能; 供电电压3.3V,拥有三种节能模式:睡眠、深度睡眠和深度掉电,能有效降低功耗。

3.2.2 显示模块

1. 显示模块分析

表3.3 显示屏方案对比

方案 1602 12864 优势 操作简单、成本低、适合低端应用 操作简单、成本较低、适合中低端应用 操作相对复杂、成本一般、具有丰富的色彩、可带触摸屏功能、适合中高端应用 操作简单、具有丰富的色彩、具有触摸屏功能、内置FPGA控制器、开发快捷 劣势 屏幕小、显示内容不丰富、色彩不丰富、不能显示汉字 颜色单一、色彩不丰富、非触摸屏、需要I/O口较多 在不使用操作系统的情况下,控件的建立和页面切换复杂、占有MCU的资源较多、需要I/O口多 成本相对较高 普通显示屏 串口屏 显示屏是人机交互的重要窗口,其界面美观以及操作的简便性十分重要,由表3.3可以

对比出,显然1602和12864不能满足界面美观的要求,因此1602和12864的方案可以排除。

再对比普通的显示屏和串口屏。

普通的显示屏成本虽然较低,但是其操作复杂,且占用MCU的资源多。首先,普通的显示屏占用MCU的速度资源。普通的显示屏虽然一般会有现成的程序驱动库,但是在不跑操作系统时,触控按键都需要在程序中一一配置,并且对控件的响应也要花费资源,屏幕图片的显示也要MCU控制,这样势必影响了MCU处理其它任务的速度。其次,普通的显示屏占用MCU的I/O口资源多,需要十多个I/O。最后,普通的显示屏需要大容量的Flash资源。我们知道,普通的画点、画线函数是不能画出很美观的操作界面,要想操作界面美观,就要使用图片,而图片就需要较大的存储空间,一般的MCU自带的Flash空间不足以存放多张图片,这样就需要拓展Flash用以存储图片,这样就增加了设计的难度和设计的成本。 串口屏内置高容量Flash存储单元(多达40M),大容量的内置Flash存储单元能存放的图片数目足以满足设计要求。更重要的是,串口屏内置FPGA高速控制器,能高速地对屏

7

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

幕的显示和切换做处理。串口屏顾名思义其控制只需要一个串口即可,仅占用MCU两个I/O口,且操作简便。虽然串口屏的成本相对较高,但是在综合对比之下,最终选择此方案。

2. 串口屏模块设计

设计中串口屏采用的型号是ZTM480272S43,如图3.2所示。它是针对TFT应用需求而开发的智能显示终端,具有控制简单、开发便捷、高性能及高可靠性等特点。该智能显示终端给MCU提供了容易操作的串行数据接口,为8位、16位及32位MCU的TFT驱动设计提供了良好的解决方案,供电电压为DC4.5V~DC6.5V,通信接口采用RS-232C串行接口,具有图片自动播放、光标显示、鼠标显示等强大的功能。ZTM480272S43具有65K真彩色的4.3寸TFT液晶屏,显示图片十分细腻。

ZTM480272S43的一个重要特点就是开发便捷,MCU对其控制只需要通过串口通信发送一定格式的控制命令即可。无刷电机控制系统界面的图片可存放到ZTM480272S43内部的Flash中,需要显示的时候,MCU发送显示命令即可显示图片,占用MCU的时间极少。 串口屏界面采用彩色图片,美观大方,提供大众化的操作界面,显示直观明了。4.3寸的屏幕足以满足用户的需求,屏幕背光可控制,在一定程度上可以减少电路的功耗。用户在操作时,串口屏和主控芯片保持通信,及时更改操作界面和系统数据,保证系统的可靠运行。

图3.2 ZTM480272S43

3.2.3 电源模块

1. 电源模块分析

由表3.4可知,DC-DC稳压芯片输出电压波纹大,应用电路复杂,而本系统的触摸按键需要稳定的电压,线性稳压芯片输出电压波纹小,应用电路简单,同时本系统对电源转换效率要求不高,所以最终选择线性稳压电源。

表3.4 电压转换方案对比

方案 线性稳压 DC-DC稳压 优点 成本低、电路简单、输出电压纹波小 功耗小、转换效率高、输出电流较大、 缺点 转换效率不高、需要散热片 成本较高、输出电压纹波较大、对电路有一定干扰,应用电路复杂 本系统共需DC-15V、DC-5V、DC-3.3V三种电源,查阅各芯片的数据手册可知,ZTM480272S43的最大工作电流为250mA,单运放芯片LMC7101最大工作电流为0.95mA,MOS管驱动芯片IR2101S最大工作电流为5mA,共需三个,MK10DN32的最大工作电流为50mA,则整个系统的最大工作电流为316mA,其1.2倍为380mA。LM317最大可提供1.5A的电流,输入输出压差可达40V,因此可用作产生15V电压,SPX1117-5V最大可提供800mA

8

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

的电流,可用作产生5V电压,SPX1117-3.3V最大可提供800mA的电流,可用作产生3.3V电压。

2. 电源模块设计

本系统外接24V直流电源适配器,DC-24V到DC-15V采用LM317。电路如图3.3所示。

图3.3 15V电源电路

LM317是安森美半导体生产的三端可调节线性稳压器,在输出电压范围为1.2V到37V时能够提供超过1.5A的电流,输入输出压差可达40V,LM317非常易于使用,只需要两个外部电阻来设置输出电压,此外还使用内部限流、热关断和安全工作区补偿使之基本能防止烧断保险丝。

根据LM317的数据手册可知,其输出电压公式为:Vout?1.25(1?R2),数据手册建议R1R1取值240?左右,则R5可取值237?,计算可得R6为2.6K?,电容C2和C3作为初级滤波,电解电容C2用于滤掉较低频的杂波,瓷片电容用于滤掉较高频的杂波。

DC-15V到DC-5V采用SPX1117-5V。电路如图3.4所示。

图3.4 5V电源电路

SPX1117-5V最高能承受12V的电压输入,同时考虑压差不能太大,可选取一定阻值的电阻串接在SPX1117-5V的输入端,产生一定的压降,分担一部分LM317的功耗。

DC-5V到DC-3.3V采用SPX1117-3.3V。电路如图3.5所示。

图3.5 3.3电源电路

D4为电源指示灯,R9为限流电阻。

9

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

由于本系统驱动模块等模拟部分电路和微控制器等数字部分电路做到同一块电路板上,在数字电路中一般的频率会比模拟电路中的频率要高,而且它们本身的信号会跟地平面形成一个回流(因为在信号传输中,铜线与铜线之间存在着各种各样的电感和分布电容),如果我们把地线混合在一起,那么这个回流就会在数字和模拟电路中相互串扰,因此必须做好模数的隔离。在画电路板时要分别覆数字地和模拟地,同时数字地和模拟地通过0?电阻相连后单点接地,电路如图3.6所示。图中,D3为肖特基二极管,用于防止输入电源接反,选取肖特基二极管是因为其导通的压降(0.4V左右)比普通的二极管(0.7V以上)小,这样就可以减小电路功耗。

图3.6 模数分离电路

3.2.4 触摸按键模块

1. 触摸按键模块分析

触摸感应输入作为一种新型的人机交互方式,不同于传统的机械式按键,用户只需轻触感应板即可向处理器发出控制信号,甚至可以使处理器感应到更丰富的动作,如感应滑动和旋转触摸等,目前已经越来越广泛地应用到人机交互设备的设计当中。传统的触摸按键设计需要搭建外围硬件电路,而Freescale Kinetis系列微控制器的触摸感应输入模块(TSI)提供电容感应输入接口,只需要将一定面积的覆铜连接到TSI引脚,大大简化了硬件电路,当有感应物体接近与TSI引脚相连的电极时,通过TSI模块可以检测到电极板的电容值的变化,为判断触摸感应提供依据。

本系统所选的微控制器MK10DN32自带触摸感应输入模块(TSI),具有如下特点: ? ? ? ?

具有多达16个输入的电容触摸感应式引脚和独立结果寄存器; 具有可编程的阈值上下限,自动检测电极电容量的改变;

在运行模式和低功耗模式下,自动周期扫描单元会有不同的占空比; 可编程的电极振荡器和TSI参考振荡器可以实现模块灵敏度高,扫描 时间短和功耗低的功能;

? 为了实现键盘触摸、旋转、滑动,完全支持FSL触摸感应SW库(TTS)。

MK10DN32自带的触摸感应输入模块(TSI)由电极电容测量单元、电极扫描单元、触摸检测单元三部分组成。电极电容测量单元由两个振荡器构成,一个为参考振荡器,另外一个振荡器与外部电极相连,外部电极电容的改变引起振荡器频率的改变,参考振荡器的周期计数值可以衡量引脚的电容量;电极扫描单元负责启动激活的电极的扫描,可配置为软件触发和周期触发;触摸检测单元可以检测到引脚上的电容量的改变,这个单元把结果寄存器中的引脚电容量值和预先配置阈值的上下限做比较,如果电容量的结果寄存器的值超过被定义的阈值和范围,触摸检测单元将会产生一个超出范围标志,表示一个引脚的电容量发生了改变。

2. 触摸按键模块设计

由于MK10DN32自带触摸感应输入模块(TSI),只需要将一定面积的覆铜连接到TSI引脚,大大简化了硬件电路,所以触摸按键设计的关键是根据系统的需求设计触摸按键的外形,同时在画PCB时要特别注意触摸按键的走线以及抗干扰措施。根据本系统对用户界面的操

10

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

作,共需三个按键和一个滑条按键,分别为确定键、两个选择按键和一个进行加减速的滑条按键,经过分析,滑条按键可与两个选择按键复用,即滑条按键的两端可分别作为两个选择按键。查阅资料可知,任何形状的按键均可用于电容感应式触摸中,不同的形状不会影响感应的性能,仅与板子的美观程度有关。为了直观形象,确定按键设计成方形的,滑条按键如图 3.7所示。在其它条件都相同的情况下,通常按键越大越好,小的按键因其表面积小,触摸电容也很小,相应地灵敏度会较差,按键过大并不会显著提高触摸电容。但是,将按键面积增大至与触摸物相当,则会显著提高触摸电容。所以对于手指感应,确定按键设计成10X10mm,滑条按键为了增加滑动的手感,长度适当增大,最终设计成10X50mm大小。

图 3.7 触摸按键

触摸电极与MCU的连接不是随便连起来就行,必须遵守一定的规则,否则触摸按键可能会出现不灵敏,容易受外界干扰等问题。走线时要注意的几条规则如下:

? ? ? ?

至电极的走线应尽可能短;

在PCB工艺可达到的情况下,线宽应尽可能小(推荐3~4mil); 对于触摸按键,与相邻按键走线的间距应至少1mm以上;

如果在触摸电极的下面覆铜,则地层必须使用十字交叉形以保证铜的覆盖率小于40%,覆铜的线和传感器连接线不能平行,这样可减少寄生电容;

? 触摸电极至MCU的走线尽量不和触摸电极处于同一层,保证触摸电极电容的变化来自于触摸电极。 本系统触摸按键走线和覆铜如图3.8所示,触摸电极至MCU的走线位于底层,可保证触摸电极电容的变化来自于触摸电极,触摸按键的底层铺网状覆铜,提高抗干扰能力。

图3.8 触摸按键覆铜

3.2.5 三相桥驱动模块

1. 三相桥驱动模块分析

本系统PWM频率为20KHz,普通的光耦会使PWM输出变形,如选用光耦驱动方案,

11

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

则需高速光耦,高速光耦一般价格较高,增加了系统的成本,光耦驱动不具有防死区功能,增加了软件的复杂度。MOS管栅极具有一定的电容,如选用三极管驱动方案,三极管对MOS管栅极的充放电同样会使PWM变形,影响驱动性能,同时三极管驱动方案也不具有防死区功能,稳定性不高。综合考虑稳定性、成本等因素,最终选择MOS管专用驱动芯片。

2. 三相桥驱动模块设计

本系统三相桥驱动用到了三片安森美的NCP5106B,该芯片组成的驱动电路具有驱动功率损耗小,外围电路简单,元器件少,提高了驱动电路的可靠性的优点。具有自动防止上下桥臂同时导通的功能,当上下桥都输入有效时,能自动关断上下桥臂。在上下桥同时切换导通时,能自动添加死区时间100ms时间。此外,该芯片还有耐高压,传导延迟短,输出跳变时间短等优点。

MOS管驱动电路如图3.9所示,当驱动芯片的HIN输入低电平,LIN输入高电平,此时与LO管脚相连的MOS管就会导通;当驱动芯片的HIN输入高电平,LIN输入低电平,此时与HO管脚相连的MOS管就会导通。

图3.9 MOS管驱动电路

3.2.6 驱动桥模块

1. 驱动桥模块分析

表3.5 驱动管方案对比

方案 优势 劣势 IGBT 开关速度高,开关损耗小,具有耐脉冲电流冲击的能力,通态压降较低,输入阻抗高,为电压驱动,驱动功率小 电压、电流容量大,适用于大功率场合,具有电导调制效应,其通流能力很强 开关速度低于MOS管,电压,电流容量不及GTO GTO 电流关断增益很小,关断时门极负脉冲电流大,开关速度低,驱动功率大,驱动电路复杂,开关频率低 MOS管 开关速度快,输入阻抗高,热电流容量小,耐压低,一般只稳定性好,所需驱动功率小且适用于功率不超过10kW的驱动电路简单,工作频率高,电力电子装置 不存在二次击穿问题 如表3.5所示,综合本系统设计的要求,选择MOS管最为适合。因为MOS管是用栅极电压来控制漏极电流的,因此它的第一个特点就是驱动电路简单,需要的驱动功率小。其二显著特点就是开关速度快,工作频率高。另外MOS管的热稳定性优于GTO。同时MOS

12

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

管不存在二次击穿的问题。但是MOS管的电流容量小,耐压低,一般只适用于功率不超过10kW的电力电子装置。而本系统设计的就是小功率的无刷直流电机调速,故满足系统的要求。

2. 驱动桥模块设计

驱动桥电路如所示,六个功率开关管为安森美的NTD32N06,该功率管最大耐压值为60V,最大电流达32A,有极低的导通阻抗:26m?。C23滤除高频的干扰,R27是电流采样电阻,把电流转换成电压输送给电流信号处理电路处理,然后反馈到微控制器。Q1、Q2、Q3为上桥臂,输入PWM波,Q4、Q5、Q6为下桥臂,输入高电平或低电平。

图3.10 三相桥电路

3.2.7 霍尔信号处理模块

对于直流无刷电机的有感控制模式,微控制器需要读入无刷电机输出的霍尔信号,判断电机的位置,输出相应的相序,使电机平稳地转动。如图3.11所示,霍尔传感器输出5V的电平信号,而微控制器工作电压为3.3V,为了使微控制器安全可靠地工作,需要对霍尔信号进行降压处理,这里选择了电阻分压进行降压,R35与R37组成分压网络,使输出至微控制器的电压是3.3V,C33对输入微控制器的霍尔信号进行滤波处理。

图3.11 霍尔传感器信号处理

3.2.8 反电势信号处理模块

反电势信号处理模块主要是直接对电机三端的电压进行分压,滤波后送入微控制器的ADC进行模数转换,获取电机的端电压,从而换算出电机的反电势,并判断出反电势的过

13

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

零点。如图3.12所示,此款无刷电机的额定电压是24V,选取分压电阻R34和R36,使输出至微控制器的电压是3.3V,C32对输入微控制器的反电势信号进行滤波处理。

图3.12 反电势信号处理

3.2.9 电流检测模块

1. 电流检测模块分析

电机启动和堵转时会产生一个很大的峰值电流,当电流超过功率管的最大流过电流时,会将功率管烧坏或者击穿,所以电路设计中必须加一电流检测电路,当检测到电流超过其额定电流时,通过微控制器MK10DN32关断PWM输出,进而保护电路。

通常对电机三相电流进行控制需要三个独立的电流闭环,而无刷直流电机采用两相导通方式,即电机三相定子绕组在某一时刻只有两相通电,导通的两相绕组的电流大小相等,方向相反,因此任意时刻只需控制一个电流量。

电流采样方式可采取直接采样两相电流的方法或采样直流母线电流的方法。对于无刷直流电机多采用后一种方法。采样直流母线电流有两种方法,一种是在待测电路上串入一个小电阻,用小电阻上的压降反映电流的大小;另一种是采用电流传感器。在电流较大,或要求电隔离的情况下,可以采用磁场平衡式霍尔电流传感器。考虑到本控制系统的成本问题,本系统采用第一种电流采样方式。

2. 电流检测模块设计

如图3.13所示,电机主回路电流信号经采样电阻获得,R28与C31构成低通滤波器,对采得的电压进行滤波,经采样电阻获得的电压太小,再次经过运放LMC7101放大后输入微控制器的ADC引脚。

图3.13 电流检测电路

3.3 小结

通过各种方案的对比,考虑性能、设计复杂度、价格几个因素,系统最终选择MK10DN32作为主控芯片,ZTM480272S43作为人机交互平台,LM317结合SPX1117-5V和SPX1117-3.3V作为电源模块,利用MK10DN32自带的触摸感应输入接口(TSI)设计触摸按键,选择NCP5106B作为MOS管驱动芯片,由六个NTD32N06构成三相全桥,对霍尔信号和反电势信号经分压网络降压后输入微控制器,由采样电阻和运放构成电流检测电路。

14

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

第4章 系统软件设计

4.1 软件整体设计

4.1.1 设计思路

软件设计与硬件设计的设计方法类似,采用自上而下的设计方法。首先,根据系统所要实现的功能,确定整体软件架构,确定核心的算法(本设计的核心算法要解决的是操作界面的切换处理和电机的控制),将整体软件进行划分成各个模块进行分别设计和调试,最终利用核心算法将各个功能模块进行整合、调试。

如图4.1所示,所有的程序文件呈金字塔分布,分为三层:顶层主函数文件、中层应用函数文件、底层驱动函数文件,每个软件模块都对应一个应用函数和一个驱动函数。部分应用函数和部分底层驱动函数通过数据手册或参考资料从底层开始编写函数,部分函数通过调用模块相配套的库程序修改实现。

图4.1 程序文件架构图

4.1.2 设计流程

如图 4.2所示,软件设计流程分三条线路进行:一、串口屏相关的软件设计;二、触摸按键相关的软件设计;三、电机控制模块的软件设计。下面分别简要介绍三条路线的设计过程,详细的设计将在下文介绍。

图 4.2 软件设计流程图

4.1.3 设计框图

软件整体框图如图4.3所示,图中箭头方向表示信号方向。

15

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.9 过零点判断流程

3. 位置检测电路方案选择

由以上三种方案对比可知,方案一直接将位置信息转换为逻辑电平信号,减少了对处理器的依赖,但需要外接比较器;方案二要用到ADC模块,由于MK10DN32含有高速ADC模块,不用增加任何硬件就可以达到很好的效果,故本系统采用方案二。 4.3.2 无感驱动换相

无感驱动换相流程图如所示,每次PWM触发了ADC进行采样后,PWM会在PWM计数器计数到零时产生PWM中断,在PWM中断里读取上次触发采样的ADC结果,然后进行反电势过零点的判断。由于中断总是以20KHz频率发生,每进入一次PWM中断都有一个计数器进行计数,这个计数器可以用来计算电机的换相时间,也可以作为电机在获得反电

21

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

势过零点后延时30°的延时计数器。当发现了过零点时,把计数器记录下来,这样就记录下上次换相到发生过零点的时间了。然后再以过零点作为起点再次重新继续计时,延迟转过30°电角度的时间,就是电机下次应该换相的时刻了。

图4.10 无感驱动换相流程图

4.4 触摸按键模块程序设计

触摸按键使用的软件设计原理基于K10的TSI(Touch sense input)模块,TSI有以下几大寄存器。

? 通用控制和状态寄存器(TSIx_GENCS)可以配置触摸感应输入的电极扫描次数,

电机振荡器的分频,扫描结束中断,超出范围中段、TSI中断使能功能等等。 ? 扫描控制寄存器(TSIx_SCAN)可以配置扫描模式,比如参考振荡器充电电流选

择、外部振荡器充电电流、扫描模数等等。 ? 引脚使能寄存器(TSIx_PEN)在低功耗模式下选择哪个输入引脚处于激活状态,

非低功耗模式可以设置多个引脚处于激活状态。 ? 计数寄存器(TSIx_CNTRn)触摸感应通道n计数器值的高16位用来保存通道n

22

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

的扫描结果,低16位用来保存通道n-1的扫描结果。

? 通道n阈值寄存器(TSIx_THRESHLDn)的高16位是阈值上限,低16位是阈值

下限,K10只有一个通道阈值寄存器。 图4.11显示电极电容量如何测量的简化结构图。这个模块基于双振荡器架构。其中一个振荡器和外部电极阵列连接,根据电极电容器震荡;而其他振荡器则根据内部参考电容器进行振荡。在可配置的外部电极振荡器振荡期间,参考振荡器的周期计数值可以衡量引脚的电容量。为了适应电极电容量的不同大小,电极振荡器使用一个可编程的电流源对引脚电容进行充电和放电,该电流源由SCANC[EXTCHRG]位进行选择。电极振荡器频率在和参考振荡器比较之前,先经过一个分频器和模数计数器,这样可以减少它的频率,增加测量精度和噪声鲁棒性。

电极电容测量单元能感应一个TSI引脚的电容量变化和输出一个16位结果,我们可以据此编写触摸按键底层驱动函数。

图4.11 电极电容测量单元

4.4.1 触摸按键底层驱动程序设计

触摸按键扫描程序配置成每隔10ms扫描一次,每次扫描结束引发扫描结束中断,在扫描结束中断里,根据各个通道的阈值来确定按键是否按下。本系统共有3个按键,被设置为确认键,左方向键,右方向键,但是左方向键和右方向键构成了滑条,所以还有两个状态:向左滑动,向右滑动。所以底层驱动程序共需要设置五个标志位,这五个标志位可以用一个INT8U型变量保存,表4.2 按键状态标志是本软件设计时使用的方法,描述了变量的各个位的意义。

表4.2 按键状态标志

标志位段(Field) 7保留位 6保留位 5保留位 4确认键标志 3左方向键标志 描述(Description) 这个位段保留并且总是保持0 这个位段保留并且总是保持0 这个位段保留并且总是保持0 0:确认键没有按下 1:确认键按下 0:左方向键没有按下 23

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

1:左方向键按下 2右方向键标志 1向右滑动标志 0向右滑动标志 0:右方向键没有按下 1:右方向键按下 0:没有向右滑动 1:在向右滑动 0:没有向左滑动 1:在向左滑动 在设计按键程序时,使用了上位机观察,触摸按键状态切换时的波形变换,对与电容触摸按键有一个直观的印象,根据波形更容易设计出算法,图4.12是用上位机观察到的波形,红色波形代表确认键计数器值的变化,蓝色波形代表左键计数器值的变化,绿色波形代表右键计数器值的变化,黄色波形是左键计数器和右键计数器的差值,用来考虑实现识别滑动的算法上。

图4.12 触摸按键状态切换时计数器值的改变

4. 独立触摸按键的识别算法

由图4.12看出,当人的手指按在触摸按键上时,计数器的值的改变是很大的,而且很明显,所以本系统在设计触摸按键模块程序时采用了固定阈值法,固定阈值法简单,实用,而且响应迅速。固定阈值法的算法伪代码如程序清单4.2所示。

程序清单4.2 固定阈值算法伪代码

if(Raw > Threshold)

Button is pressed. else

Button is released.

5. 触摸按键滑动的识别算法

触摸按键滑动的识别是算法设计中的难点,图4.13本系统采用所示的硬件设计,所以要算法的设计考虑到了硬件的特性。

24

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.13 滑动按键设计示意图

同样用上位机观察,滑动时左按键和右按键的计数器的值,由图4.14可以看出,从左往右滑动是左按键的计数器的值在减少,而右按键计数器的值在增加,但是由于波动的存在,软件设计无法利用这种特性,但是可以看到滑动过程中,左按键和右按键的差值(黄色曲线,后文简称差值)在从高到低的变化,从右向左滑动则相反。

图4.14 滑动时按键计数器值的变化

分析可知,只要设置定两个阈值(这个阈值和TSI模块的通道阈值不同),一个上限阈值,一个下限阈值,如图4.15所示,假如检测到按键按下时差值大于上限阈值,而按键释放时差值又小于下限阈值,则说明在向右滑动。假如检测到按键按下时差值小于下限阈值,而按键释放时差值又大于上限阈值,则说明在向左滑动。当系统检测到滑动时将开启一个定时器,这样当按键释放掉的时候,就可以知道滑动的速度,根据滑动速度的不同,应用层程序可以做出不同响应,增加了用户体验的丰富程度。根据阈值的不同,可以决定是否识别短距离滑动,本系统软件把短距离滑动识别为单独按键。

25

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.15 滑动识别算法

4.4.2 触摸按键应用层程序设计

应用层的程序根据底层驱动设置的标志位来处理按键,本系统设计采用状态机思想,状态机流程如图4.16所示,这个状态机实现了消抖,按键释放识别,从状态2到状态0可以有两种切换方式,第一种是按键码不同则跳转,第二种是按键全部释放则跳转,第一种方法可以实现最先按键优先级最高,第二种方法则是最后释放按键优先级最高,在设计时采用了第二种方法。按键处理程序根据键值的不同回调菜单函数。

26

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.16 按键状态机流程图

4.5 显示模块底层驱动程序设计

本模块直接采用周立功串口屏的底层驱动,周立功底层驱动程序提供了现成的API函数(应用程序接口),在移植驱动库时,只需重写如表4.3 底层驱动库所示的底层函数,并且对驱动库的头文件作相应修改即可,无需修改应用层函数,本系统重写了四个底层函数。

表4.3 底层驱动库

底层函数 UART初始化函数 UART字符发送函数 UART中断服务函数 终端繁忙状态查询函数 描述 初始化微控制器的UART接口、UART通信参数 用于发送单个字符。应用函数调用UART字符发送函数发送显示终端的控制指令 用于处理UART接收中断等 查询显示终端是否繁忙

4.6 菜单管理的架构设计

在编写应用程序界面时,可以用菜单管理的思想,也可以不用菜单管理的思想,假如不使用菜单管理的思想将增加编程的复杂性,在判断按键功能或者消息功能时,需要大量的switch-case语句,而且增加功能,删除功能十分复杂。

假如使用菜单管理的思想,可以移植已经存在的GUI(Graphical User Interface,图形用户接口),比如miniGUI,ucGUI等等,但是需要大量的RAM和ROM空间(小型系统RAM需要100字节,ROM需要10-25K。大型系统包含窗口管理以及各种控件RAM需要2-6Kb,ROM需要30-60Kb),本电机控制器使用飞思卡尔K10控制器,RAM有32Kb,ROM只有8Kb,无法满足需求。

软件需要灵活的菜单管理,但是又不需要太多复杂的消息处理,所以可以自己编写一个简易的菜单管理,综上,软件界面设计的三种方案以及优缺点对比如表4.4所示。

表4.4 软件界面设计方案比较

软件界面设计方案比较 不使用菜单管理方法 优点 在功能很少,并且不需要扩展时容易编写 有实用的窗口,控件管理机制,支持消息处理 适用于中小型软件,易于编自己写简易的菜单管理 写,添加删除功能,有一定的管理机制 缺点 不易扩展,编写复杂,大中型软件基本不用这种方法 占用大量的空间,并且需要移植经验,不容易上手 对消息处理的支持比较弱,稳定性不如现存的GUI那样经过多种测试,有一定的局限型 使用现存的GUI方案 使用菜单管理方法 良好的菜单架构设计能极大的方便程序的编写,清晰的层次结构。程序编写人员能方便

的增加菜单,删除菜单,只需要增加或者删除一个.c和.h文件,这证明这种菜单架构有方便的移植性,即免去了空间不足的缺点,也适合一个团队成员分模块编写,然后组合,易于开发。

本软件采用的菜单管理的架构设计示意图如图4.17所示。

27

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.17 菜单管理架构示意图

每一个椭圆圈代表一个菜单,一个菜单结构体包含以下属性

? 菜单属性,比如菜单在屏幕的起始坐标,高度,宽度,背景图片等等。

? 菜单的左右兄弟(同级菜单中的不同菜单选项),以及父亲(上一级菜单),儿子(下

一级菜单)。可以使用双向链表实现。 ? 菜单功能函数,比如处理按键消息,绘制自己等等。

菜单管理中用到了“层级菜单”和“当前活动菜单”的概念,“层级菜单”是当前菜单

所在的层级,通过进入父菜单或者进入子菜单进行越级访问。系统初始界面在层级零。“当前活动菜单”是用户从初始菜单通过一定的操作到达的某一级菜单的某一菜单,当前的活动操作都是针对当前活动菜单,按键消息也由当前活动菜单捕捉。

如图4.17所示,菜单使用层级结构,但是并不是简单的树形结构,而是有向图,在这个有向图中,信息沿着箭头的方向流动。比如现在在一级菜单的第四个菜单上,那么向左将访问一级菜单中的第三个菜单,向右将访问一级菜单中的第五个菜单,确认键进入第二级菜单,然后左右键又将访问二级菜单的各个菜单,按下确认键,当前活动菜单可以执行一定的功能,比如进入子菜单,返回父菜单等等。菜单的切换流程如图 4.18所示。

图 4.18 菜单切换流程图

在由于本硬件系统只有三个按键,所以当按键发生时,将调用当前活动菜单的处理函数,

28

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

而不会调用其他菜单的处理函数,所以想增加菜单非常容易,只需要在增加一个结构体变量,并且组织好和其他菜单的关系,然后编写消息处理函数,那么一个菜单就添加到软件系统中了。

以上菜单的切换流程都是在编程中确定的,但是本软件系统还使用了另外一种动态的技术,为了处理一些系统信息,使用了Windows程序设计中的对话框的思想。设计软件过程中把对话框作为一种菜单来处理,这减小了编程的复杂度。对话框主要处理系统出错信息,比如电机启动失败、电机运行堵转、速度设置过大等等,也可以说对话框的出现是随机的,这需要使用一定的技术才能实现,如图4.19所示首先保存当前活动菜单的地址,把对话框的父级菜单设置为当前活动菜单,然后把对话框切换为当前活动菜单,当用户看到对话框信息并且处理对话框后,对话框退出时将返回父菜单,也就又切换到原来的活动菜单。

图4.19 对话框处理流程图

4.7 菜单组织结构图

图4.20是简要的电机控制器的主界面的组织结构图,详细的界面切换请参考下面的介绍,图中加速/减速,放大波形/缩小波形的功能放在一级菜单,是因为控制电机加减速,以及放大电机速度曲线和电流曲线是常用的功能,为了方便用户快速、简便的进行设置。本组织结构图4.20隐藏了许多实际的菜单选项,将在下文进行详细介绍。

29

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.20 电机控制器主界面组织结构

4.8 菜单切换流程

菜单切换流程图用于表示用户操作时界面的切换,说明了整个操作界面是如何进行切换的,是界面图片制作和以及程序编写的重要参考。由于本程序菜单较多,菜单切换流程图较复杂,因此将其分为几个部分的切换流程图,分别如下。 4.8.1 主界面菜单切换的流程

当系统启动时,软件主界面进入默认初始菜单,用户可以用左右键来选择六个菜单,执行相应的操作。左键可以选择同一层级的下一菜单,右键可以选择同一层级的上一菜单,按下确认键或者进入下一菜单,或者执行相应的功能。如在“开始”菜单点击确认键,将进入主控制台菜单,而在“休眠”菜单点击确认键,将进入休眠状态关闭串口屏。

如图4.21所示,流程图中菜单并没有循环检测按键是否按下,因为菜单的架构决定了这一特点,当没有按键事件发生时,菜单程序是不会占用CPU的,只有按键事件发生时,按键处理函数将会回调当前活动菜单(参考4.6节给出的概念。)提供的处理函数,而且所有同级菜单处理左右按键的函数都是一样的,在这里再一次看到这种菜单架构设计的优点。

30

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.21 软件主界面切换流程图

4.8.2 电机控制台菜单切换的流程

电机控制台窗口是能实时控制电机的运转,并且能实时显示电机的当前信息的窗口。控制电机的运转包括电机启动和停止,电机加速和减速,电机开环和闭环、正转和反转、有感和无感控制。实时显示电机当前信息包括显示电机转速曲线,电流曲线,电机实时转速值,电机目的转速值,以及当前电流值、占空比值。

当动态显示电机信息时用到了一个“当前绘画层”的概念,当前绘画层和当前活动菜单了类似,电机的实时信息只有在当前绘画层的时候才会显示,假如系统检测到当前菜单应该绘制电机的实时信息,那么系统就会绘制,否则不绘制。当前绘画层用一个变量表示,当变量值为0时,系统绘制显示电机信息,变量值为其他值时,系统不绘制电机信息。系统初始化时当前绘画层的值为0。当前会话层的值有三种改变的方式:启动停止电机时,弹出退出对话框时,还有切换到其他菜单界面时。三种改变的方式如图4.22所示。

31

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.22 当前绘画层改变示意图

6. 电机启动停止的流程

菜单选项中的启动电机和停止电机的选项并不是真正的启动或者停止电机,而是向电机驱动程序模块发送命令,改变电机的状态,当电机驱动程序检测到状态的改变时,才真正的改变电机的状态。这种设计方法增加了模块的独立性,减小了模块之间的耦合,所以模块和模块之间可以独立编写,然后方便的整合,这正是现代程序设计所推荐的方法。电机的启动过程如图4.23所示。

图4.23 电机启动流程图

电机的关闭比较简单,首先向电机发送停止命令,然后把电机图标变成未启动状态,然后把当前绘画层加一,停止动态更新电机信息。

7. 电机加速减速的流程

控制电机加速和减速的方式和启动停止电机的方式一样,菜单管理程序并不正真的去控制电机的加速或减速,而是只改变一次状态,然后由电机驱动程序真正改变转速。 图4.24是电机加速时的流程图,首先只有在电机运行状态下,此功能才会被响应。由于电机有开环和闭环状态,所以在开环状态改变转速是通过改变占空比,每按一次加速按钮,占空比增加10,在闭环状态,改变转速是改变电机的目标转速,然后通过PID调节来改变实际转速。每按一次按钮,速度之增加一百。电机的转速有上限,所以为了保护电机,本系统将最大目标速度设置为4500rpm,占空比最高为100。

32

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.24 加速过程流程图

图4.25是电机减速时的流程图。和加速设置一样,开环状态下,每按一次减速按钮,占空比减少10,在闭环状态下,每按一次减速按钮,目标速度值减少100rpm。由于电机转速不能过低,所以为了保护电机的低速运转,减速时只能减到设置的最小值,本系统中开环下最小占空比为10%,闭环有感模式最小转速为200rpm,闭环无感模式最小转速为500rpm。

图4.25 减速过程流程图

8. 速度波形放大缩小的流程

速度波形放大缩小的流程十分类似,在电机运行和停止状态都可以放大或缩小波形进行方便的观察。波形放大按钮通过减小坐标轴最大值和最小值之间的差距来使波形放大,波形

33

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

缩小按钮通过增加坐标轴最大值和最小值之间的差距来使波形缩小。波形放大和缩小菜单函数并没有实际改变波形,而是发送“改变波形”的命令给能真正改变波形的函数,系统会自动根据坐标轴最大值和最小值来调整波形的显示,这里再次体现了本系统程序设计的优点。 在波形放大缩小的设计中遇到了一些要解决的问题,如图4.26所示,假设当前速度值在2000rpm上下波动,(以下,“最大值”指速度坐标轴的最大值,“最小值”指速度坐标值的最小值)而最大值为5000rpm,最小值为0rpm,放大波形就是减少最大值和最小值之间的差距,假如每执行一次波形放大,最大值减少500rpm,变为4500rpm,最小值增加500rpm,变成500rpm。

图4.26 波形放大示意图

第一个问题是必须编程判断最小值是否小于当前速度值,最大值是否大于当前速度值,因为波形显示要实时跟踪当前速度曲线,要把波形放到能观察的范围。所以如上例最小值加3次500rpm之后,为1500rpm,就不能再加了,而最大值减5次500rpm之后,为2500rpm,就不能再减了。增加了编程判断的复杂性。

第二个问题是波形放大不够精细,通过上例发现,我们放大波形能放大的最大程度就是最大值为2500rpm,最小值为1500rpm,如图4.26(b)所示。当然可以通过改变增加的值来调整精细度,比如若最小值每次增加100rpm,最大值每次减少100rpm,然后我们波形能放大的最大程度就是最大值为2100rpm,最小值为1900rpm,如图4.26(c)所示。然而实际问题没有解决,那就是编程时还是要指定每次的改变值,而一旦指定就不能改变。而且这样的设计带来新的问题,假如以50rpm为基数,那么从最大值5000rpm调整到2050rpm要调整58次,这样的设计给用户带来很大的不变,用户可能希望只通过几次按键就把波形放大到他们想要的状态,而且不会有放大程度的限制。

解决方案也很简单,只需要最大值减去最大值与当前速度差值的二分之一,而最小值加上当前速度与最小值相差的二分之一就可以,这种二分法最小值永远不会大于最大值,省去了判断的麻烦,而且在最大值和当前速度差值大的时候,很快的放大,而差值小的时候,又慢慢放大。关键代码如程序清单4.3所示,GsMMrecord是记录波形最大值最小值的结构体,ssHmaxspeed是历史记录中速度最大值,ssHminspeed是历史记录中速度的最小值。GsMoter.usActAvgSpeed是当前电机速度。扩展思考一下,我们可以用三分法,四分法等等。

程序清单4.3 波形放大时坐标轴调整的部分代码

GsMMrecord.ssHmaxspeed -= /* 坐标轴最大值调整 */

((GsMMrecord.ssHmaxspeed - GsMoter.usActAvgSpeed - 20) >> 1);

GsMMrecord.ssHminspeed += /* 坐标轴最小值调整 */

34

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

((GsMoter.usActAvgSpeed - GsMMrecord.ssHminspeed -20) >> 1);

在实际应用中,因为速度曲线会一直波动的原因,对波形放大的程度做了一定的限制,波形缩小的方法和波形放大的方法类似。

9. 全屏非全屏切换的流程

由于串口屏大小的限制,又在控制界面加了一些控制选项,所以非全屏状态下,显示波形的界面显得比较小,所以提供了一个全屏的功能,在全屏状态下,控制菜单被隐藏,能显示更多的速度信息,这是一个比较实用的功能。

在从非全屏状态到全屏状态的相互切换的过程中,会遇到问题,怎么通信告诉绘制速度曲线的函数,以及绘制时间坐标轴的函数现在是在全屏状态还是非全屏状态。

方案一是编写函数的时候用if判断语句,但是这样对全屏和非全屏就要进行两种处理,增加了编程的复杂度。

方案二是编写一个巧妙的宏映射机制,这种编程思想借鉴MFC中处理MESSAGE_MAP的方法,模仿MFC定义几个精妙的宏来实现\消息映射\。免去了switch-case或者if-else的麻烦。

本系统软件设计使用方案二,程序中大量使用了宏映射的机制,减少了编程复杂性,而且理论上编译会生成更少的代码,执行速度会更快。

10. 退出控制台的流程

图 4.27是退出控制台的流程图,当电机正在运行时,用户试图退出控制台,将会提醒用户先把电机关闭,然后才能退出控制台,增加了安全保障。

图 4.27 退出控制台的流程图

4.8.3 电机参数设置菜单切换的流程

图4.28是电机参数设置菜单的流程图。在控制台窗口上面,都是一些经常用到的功能,电机参数设置属于高级设置,在这个界面可以设置电机开环闭环的速度控制方式,顺时针和逆时针的运行方向,以及有感和无感的控制方式。当速度闭环时可以设置具体转速,当速度开环时可以设置占空比,当用户在开环和闭环之间切换时,会有对话框提醒用户当前可以设置转速还是占空比,减少了用户的疑惑,增加了软件的友好性。软件还对速度上限和速度下限进行了保护,防止不当的操作。

35

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.28 电机参数设置项流程图

电机参数设置界面,还允许设置坐标轴的匹配模式以及控制台波形背景颜色,这些小功

36

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

能提供给了用户更丰富的体验。因为电机参数设置菜单功能比较多,所以图4.28中用了省略号省略掉了“速度设置”和“占空比设置”的菜单选项。下面详细介绍。

11. 速度设置流程

速度设置会有最大值最小值限制,最大值为4500rpm,假如用户设置的转速大于这个速度,那么将弹出对话框警告用户允许设置的范围。最小值在有感状态下为200rpm,在无感状态下为500rpm。

12. 占空比设置流程

占空比的设置和速度设置类似,占空比设置也有最小值设置,最小值10%,假如用户设置的占空比小于10%,会提醒用户不允许设置过小的占空比。 4.8.4 系统设置菜单切换的流程

系统设置中可以设置屏幕背光亮度、屏幕背光时间、触摸按键自检、按键声音开关、以及系统主题(暂未实现)。这些选项简单易懂,方便用户操作,为用户贴心设计。

4.9 菜单界面图片的设计

界面图片统一采用Win8最新的iMetro风格,iMetro风格简单、大气、美观,一经推出就引领了UI(User Interface,用户界面)设计的新潮流。

系统使用周立功串口屏,串口屏大小为480x272像素,具有配套的开发软件,可以在计算机上设计好图片,然后通过开发软件下载到串口屏里,本菜单界面使用Adobe Flash CS3 Pro开发设计。

图4.29为程序的主界面,在左右选择菜单时,界面有3D的旋转效果,给用户耳目一新的感觉,给用户提供新鲜的体验。

图4.29 电机控制器主界面图片

图4.30是电机控制器的主控台界面,具有简洁的界面,实用的菜单按钮,加速,减速,波形放大,波形缩小这些功能比较常用,所以放在主控台,而一些模式控制,比如无感和有感的切换,开环和闭环的切换,顺时针和逆时针的切换,这些功能因为不太常用,所以放在参数设置里,这是对用户体验进行思考后为方便用户而设计的。

在控制台的正上方,能实时的显示电流值和占空比,在控制台的右上方,能实时显示实际速度和目标速度。主控台可以实时显示速度曲线和电流曲线。

37

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图4.30 电机控制器主控台界面图片

所有的图片在用Flash CS3 Pro制作完成后,使用串口屏配套的智能显示终端软件(Smart Display Terminal 2.0)利用PC机的串口进行下载,软件界面如图4.31所示。该软件除了可以下载图片到串口屏中,还是用来对串口屏进行调试。另外,该软件还能制作Icon图标文件,触控文件,文本文件等功能(本系统未使用这些方法)。图片下载完成后,MCU即可通过向串口发送相应的指令,让串口屏显示特定序号的图片。

图4.31 智能显示终端软件界面

4.10 小结

系统软件的设计主要包括三部分:电机控制程序设计、界面设计、触摸按键程序设计。由于软件中没有移植操作系统,所以系统的主程序使用回调函数的方式,只有在事件发生时才执行相应的程序。系统的界面采用了图片制作和智能串口屏配套软件相结合的设计方式,

38

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

以iMetro为主色调,凸显用户界面简单易用,风格统一的主题,十分人性化。另外程序还实现了主界面的三维旋转效果。

39

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

第5章 系统测试

5.1 无刷直流电机控制系统功能测试

图5.1为系统整体的实物图。

图5.1 系统整体实物图

图5.2为系统主界面,具有3D立体效果。

图5.2 系统主界面

图5.3为电机波形显示界面,点击启动按钮即可启动电机,如图5.4所示;加速减速按钮可方便对电机速度进行调节,如果在参数设置界面设置为开环控制方式,则对占空比进行调节,一次加减10%,如果设置为闭环控制方式,则对电机速度进行调节,一次速度值加

40

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

减100,波形放大和波形缩小按钮可实现对波形放大或缩小,方便用户观察波形;点击参数设置界面,则进入电机参数设置界面;点击全屏按钮,可实现全屏显示速度曲线,如图5.5所示,此时按下任意按键,则返回此界面;如果电机正在运行,此时按下退出按钮,则会弹出警告,如图5.6所示,此时必须暂停电机则可退出该界面。

图5.3 电机波形显示界面

图5.4 电机启动界面

41

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图5.5 全屏显示界面

图5.6 退出电机波形界面警告

图5.7为电机参数设置界面,可进行电机有感控制和无感控制、开环控制和闭环控制、正转和反转的切换;并可设置具体的速度值和占空比,当设置为开环控制时,此时只能设置占空比,当设置为闭环控制时,可设置速度值;如果选择自动调整坐标,在用户进行速度调

42

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

节时,速度坐标可根据当前的速度进行自适应调节;图5.5为示波器背景原色效果,如果选择为示波器背景反色,则效果如图5.8所示。

图5.7 电机参数设置界面

图5.8 电机波形显示背景反色界面

图5.9为系统设置界面,在此界面可进行屏幕背光亮度的调节,屏幕背光时间的调节,触摸按键校准,设置是否有按键音。

43

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图5.9 系统设置界面

当电机未成功启动时,弹出如图 5.10所示的对话框。

图 5.10 电机未成功启动界面

当电机因负载过重而堵转时,弹出如图 5.11所示的对话框,点击确定按钮则重启电机,点击取消按钮则关闭电机。

44

广州周立功单片机科技有限公司 基于Freescale Cortex-M4单片机的三相无刷直流电机驱动器

图 5.11 电机负载过重对话框界面

5.2 可靠性测试

如图5.12所示,将电机靠近触摸按键,对电机进行加速,电机依然能够准确地响应,此时触摸按键也稳定地工作。

图5.12 触摸按键抗干扰测试

5.3 小结

本文设计的系统调试成功,与预期制定的功能一致。系统操作界面美观,主界面的菜单切换过程具有3D立体效果,通过在菜单界面中对电机参数的设置,无刷电机能够准确地

45

本文来源:https://www.bwwdw.com/article/kh8r.html

Top