应用笔记
直播中

vvg

13年用户 7898经验值
擅长:嵌入式技术,控制/MCU
私信 关注
[控制/MCU]

以软件技巧打造高效马达控制设计

执行于300W以下的小功率马达已普及于各类应用中,例如汽车系统、打印机、复印机、碎纸机、玩具、工厂自动化、测试设备、机器人技术、航天与军工等应用。最普遍的小功率马达类型是直流(DC)马达、无刷直流(BLDC)马达和步进马达。马达的产量大致与功率大小成反比。量产的小功率马达数量远多于大功率马达数量。
专用于马达控制的DSP设计旨在满足大型脱机式马达的需求。脱机马达通常是执行于110-480VAC且范围在1/4-100HP的AC感应或BLDC马达。专用于马达控制的DSP对于小功率马达控制系统来说成本太高。
本文展示以C8051F3xx MCU控制各类马达的软件示例。虽然这些示例相对简单,但是为各类马达展示了有效的解决方案。传统的马达控制系统通常要求额外特性且具有更高的复杂度。这些软件示例可作为开发更复杂马达驱动系统的起点。


文档下载:
以软件技巧打造高效马达控制设计.docx (141.9 KB)
(下载次数: 10, 2014-8-26 20:51 上传)


DC马达控制
DC马达是小功率马达中最常见且最便宜的。在本文中,‘DC马达’专指直流的有刷永磁马达。
DC 马达的特性使得它成为变速系统中最易用的马达。DC马达的转矩-速度特性如图1所示。DC马达的非负载速度与马达电源电压成线性关系。驱动稳定转矩负载、 线性负载或指数负载的DC马达电压-速度特性也是连续、正斜率且可预测的。因此,在大多数情况下使用开环控制是可行的。
简单地改变通过马达的电压,就能控制马达的速度。PWM能够用于改变马达供电电压。加载于马达的平均电压与PWM工作周期成正比。

图1:DC马达的特性。
在使用F3xx MCU提供简单DC马达速度控制的简单示例中,使用ADC读取电位器的位置信息,并且以PCA 8位PWM模式输出对应的PWM讯号。硬件设置如图2所示。
单 个N信道功率MOSFET Q1用于驱动DC马达。功率MOSFET应根据特定的马达电压和电流需求进行选择。飞轮二极管D1跨连至DC马达。当MOSFET关闭时,电流通过马达自感继续流动。MOSFET漏极电压将上升到超过马达电源电压的一个二极管压降。然后,电流通过飞轮二极管继续流动。
大多数低压马达驱动电路利用萧特基功率整流器实现飞轮二极管。萧特基整流器具有较低的正向电压和极短的反向恢复时间。二者在马达驱动应用中都是非常重要的参数因子。

图2:DC马达驱动电路
功 率MOSFET由反向闸极驱动器驱动。F300端口接脚默认配置为输入接脚,并且启动100 k上拉电阻。在端口进行配置且交叉开关器和外围设备启动之前,埠接脚一直保持高电平。当重设接脚保持低电平时,埠接脚也会被配置为弱势上拉实现的输入接脚。透过使用反向驱动器,功率晶体管在预设状态下处于关闭状态。如果使用非反相器驱动,10 k下拉电阻应当端口接脚和接地之间。
为 了使用3V微控制器,闸极驱动器应当具有3V相容的输入电平临界值。如果马达电压在5V和15V之间,闸极驱动器能够直接切断马达电源电压。如果马达电压 超过15V,则必须分开闸极驱动器的电源电压,通常为5V或者12V。当采用低于10V的闸极驱动器电源电压时,应当使用逻辑电平功率MOSFET。
软件建置非常简单。main()函数初始化频率、埠和外围设备,然后进入while(1)循环。在while(1)中使用avgADC()函数读取电位器电压值,然后输出这个值到8位PWM。
PORT_Init()函数配置端口I/O、外围设备,以及启动数字交叉开关器。在此为8位PWM启动输出接脚,为闸极驱动器实现推挽式输出接脚。
系统频率SYSCLK被配置执行在24.5MHz最大速率,这允许8位PWM可配置为160ns频率周期和24kHz频率。
ADC0_Init()函数配置ADC为查询模式。ADC增益设定为1,并且为ADC频率选择1MHz保守频率。重要的是这里也要初始化电压参考,配置ADC使用VDD满量程。
函数readADC()采用查询模式读取电压值一次,并返回ADC值。函数avgADC()调用readADC()函数,并且返回64个采样值的平均值。平均化ADC读数可最小化噪声影响,减少PWM输出抖动。
当使用PCA 8位PWM模式时,在CEX0输出0x00值对应到100%的工作周期,输出0xFF值对应到0.39%的工作周期。0%的工作周期可透过清除PCA0CPM0 SFR中的ECOM0位来实现。
当使用反相驱动器时,这种关系是相反的。在MOSFET闸极驱动器上,0x00值对应到0%的工作周期,0xFF值对应到99.6%的工作周期。为了简单起见,本文中所有使用8位PWM的软件示例仅限于使用99.6%PWM。
还 有一些情况,100%的工作周期是可行的。100%工作周期能有效地消除开关损耗。由于MOSFET从不关闭,因而无开关损耗,也不至于在二极管造成损 失。唯一的功率损耗是功率MOSFET的传导损耗。如果预计马达在大部份时间都处于全速执行,那么100%的最大工作周期是合理的。100%的工作周期可 透过清除PCA0CPM0 SFR中的ECOM0位来实现。

图3:DC马达全桥电路
带反转能力的DC马达
永 磁DC马达通常用于需要反转马达方向的应用中。为了反转旋转方向,需要反转马达的电压极性。这需要使用H桥。如图3所示,H桥有4个晶体管。当在正向驱动 马达时,Q4开启,PWM讯号应用于晶体管Q1。反向驱动马达时,Q3开启,PWM讯号应用于晶体管Q2。在这个示例中,下方晶体管用于PWM速度控制, 上方晶体管则用于转向。使用这种拓扑结构,可双向提供变速控制。
在图3中,N通道功率MOSFET用于低压侧晶体管,P通道 功率MOSFET则用于高压侧晶体管。对于驱动20V以下的DC马达来说,利用互补功率MOSFET是非常符合成本效益的。如图3所示,低压侧闸极驱动器 具有反相器,而高压侧闸极驱动器则无反相器。选择闸极驱动器极性可确保当埠接脚在实现弱上拉的重设配置模式下,功率晶体管处于关闭状态。
该示例软件建构在基本示例程序代码上。主循环包括一个if语句检查反转开关SW1的状态。当反转按键被按下时,PWM停用,同时停用所有P0输出。当按键释放后,马达将反转方向。
除了增加额外的推挽式输出接脚配置之外,示例软件中的初始化函数类似于示例1。
调用reverse()函数反转马达方向。标志位Fwd用于保存马达状态。Fwd位被切换用于判断哪些输出需要启动。
反转马达还存在一个潜在的问题。当反转开关SW1被按下时,马达可能由于惯性而继续旋转一段时间。当马达正向转动时,将产生与马达速度成正比的反向电动势。如果马达停止旋转前释放反向按键,马达反向电动势将透过上部晶体管而导致短路。


图4:DC马达反转导致风险
参考图4,假设开始时Q4处于开启状态,马达在正向上旋转。假设马达执行时,反向电动势大约为6V。而在按下反转开关后,所有4个晶体管被关闭。马达右侧将比左侧高约6V。然后开关释放,开启Q3。马达左侧被上拉到电源电压,反向电动势通过Q4的内部二极管造成短路。
最终的结果是,马达停止,在马达机械惯性中储存的所有能量被注入Q4。反转过程中很容易损坏上部晶体管。在一些具有较大摩擦力负载的应用中,一个固定延迟时间可确保马达有足够时间停止。而在其他应用中,马达可能需要花费几秒钟才完全停止。


图5:具有电压感应能力的DC马达驱动

具有软反转能力的DC马达
针对DC马达的第二个软件示例,则着眼于软反转的能力。为了安全的反转DC马达,必须先判断马达是否还处于运转中。
确 定马达是否仍然处于旋转状态的简单而有效方法是测量跨接在马达端子的电压差。ADC能配置于测量模拟多任务选择器中的任意两个输入接脚上的差分电压。可程序设计窗口检测器也可用于判断差分电压是否属于默认极限。在这个示例软件中,如果差分马达电压在100ms内保持满量程的3%以下,那么马达开始反转。
具有电压感应功能的DC马达驱动硬件建置类似于在马达端子分别添加两个电阻分压器,如图5所示。
主 循环已经被改进用来检测马达是否停止。detectStop()函数首先配置ADC测量差分电压。ADC和窗口检测器都适用于查询模式。如果ADC值在预 设窗口范围内,那么计数器增加。使用建置10ms延迟的定时器T0设置采样时间。任何在窗口之外的采样值将重设定时器。退出while循环之前,它将使用 10个连续的采样值。返回主循环之前,detectStop()函数将重新配置ADC测量速度电位器。


BLDC马达控制
BLDC马达拥有传统有刷换向DC马达所没有的优势。电子和传感器有效地取代了电刷的角色,提供更长的寿命,减少维护作业,而且没有电刷噪声。正确整流的BLDC马达转矩-速度特性完全如图1所示的DC马达。
因此,BLDC马达展现出与DC马达相同要求的质量,非常适用于变速控制。这个示例针对使用霍尔效应传感器控制马达转向的BLDC提供简单的开环控制。BLDC马达的速度使用简单的电位器控制。在这种方式下的BLDC马达控制特点类似于典型的DC马达控制示例。
这 个示例的硬件建置如图6所示。由于BLDC马达需要额外的输出,因此推荐C8051F330这个MCU。如果应用需要更多的储存资源,C8051F336 也是不错的选择,因为它有较大的16kB程序代码储存空间,并且程序代码兼容C8051F330。马达由6个功率晶体管驱动,构成三相桥式结构。下部的晶体管 Q1-3是N通道功率MOSFET。上部的3个晶体管是P通道功率MOSFET。这样就简化了闸极驱动器管理。此外,互补闸极驱动器的使用使得在预设状态下功率晶体管处于关闭状态。

图6:BLDC马达驱动
霍 尔效应传感器具有开集(OC)极式输出,需要上拉电阻。必须检查马达规格确保霍尔效应传感器适于配置。开集极式输出通常是3V兼容的。然而,霍尔效应感测 器也需要一个偏置电源,通常需要超过3V。在大多数系统中,霍尔效应传感器能够关闭马达电源电压或者闸极驱动器电源电压。
使 用断点除错软件可能会让马达和MOSFET置于不良状态。当MCU遇到一个断点时,接脚被及时有效地冻结,而且可以留下PWM输出处于启动状态。此处 推荐的流程是在进行单步除错或者使用断点之前,一直断开马达电源连接。BLDC马达在跨越绕组电阻时将会满电压失速。BLDC马达失速电流仅与绕组的内部电阻有关,因而可能损坏功率MOSFET。
对于霍尔效应模式或者整流模式来说并没有统一的标准。用户必须先浏览马达制造商所提供的数据手册。依据制造商的数据手册仔细核查两种模式,以及检查霍尔效应模式和整流模式之间的通讯,必要时还得改变两种模式之间的权衡折衷。


(参考原文:Softwaretechniques for building more efficient motor control designs,by Ken Berringer, Silicon Labs)



回帖(3)

陆春生

2016-5-1 08:44:30
感谢楼主分享!
举报

焦山旺

2016-5-4 19:07:58
感谢楼主分享                                                         
举报

焦山旺

2016-7-16 10:12:37
感谢楼主分享                     
举报

更多回帖

发帖
×
20
完善资料,
赚取积分