×
嵌入式 > 嵌入式开发 > 详情

掌握MCU软件设计准则 实现直流马达控制精准度提升

发布时间:2020-09-30 发布时间:
|
300瓦以下的小功率马达适合以MCU做为控制方案,在各家MCU硬件规格差异化日渐缩小之下,软件演算设计就显得相形重要,若能掌握MCU控制各种直流马达的软件设计原则,将能大幅提升马达控制的精准度。
运作在300瓦(W)以下的小功率马达被广泛应用于各类应用,例如汽车系统、打印机、复印机、碎纸机、玩具、工厂自动化、测试设备、机器人技术、航空航天与军工等。最流行的小功率马达类型是直流(DC)马达、无刷直流马达(BLDC)和步进马达。马达的产量大致与功率大小成反比,量产的小功率马达数量远远高于大功率马达数量。
专用于马达控制的数字信号处理器(DSP)设计主要在满足大型脱机式马达的需求。脱机马达通常为交流(AC)感应或无刷直流马达,运行在110-480VAC和1/4-100马力(HP)。专用于马达控制的DSP,对于小功率马达控制系统来说,成本太高。
本文提供使用微控制器(MCU)控制各类马达的软件范例。虽然这些范例相对简单,但其针对各类马达提供有效的解决方案。一个传统的马达控制系统通常要求额外特性并具有更高的复杂度。这些软件范例能够做为开发更复杂马达驱动系统的基础。
借助软件演算DC有刷马达功耗下降
DC马达在小功率马达中是最常见和最便宜的。在本文中,DC马达主要指的是有刷换向永磁直流马达。
DC马达的特性使其成为变速系统中最简单易使用的马达。DC马达的转矩-速度特性如图1所示,DC马达的非负载速度与马达电源电压成线性关系。驱动稳定扭矩负载、线性负载或指数负载的DC马达的电压-速度特性也是连续的、正斜率的和可预测的,因此,在大多数情况下,使用开放回路控制系统是可行的。简单地改变通过马达的电压,任何人都能够控制马达的速度。脉宽调变(PWM)能够用于改变马达供电电压,加载到马达的平均电压与PWM工作周期比成正比例关系(这里忽略马达电感和不连续运行导致的次要影响)。


图1DC马达特性


这里提供一个以MCU控制DC马达的简单例子。在这个范例中,使用模拟数字转换器(ADC)读取电位器的位置信息,并使用PCA 8位PWM模式输出对应的PWM信号(图2)。


图2DC马达驱动电路


单个N通道功率金属氧化物半导体场效晶体管(MOSFET)Q1用于驱动DC马达。功率MOSFET应当根据特定的马达电压和电流需求进行选择。飞轮二极管的D1跨接到DC马达。当MOSFET关闭时,电流通过马达自感继续流动,MOSFET漏极电压将上升到超过马达电源电压的一个二极管压降,然后,电流经由飞轮二极管继续流动。
大多数低压马达驱动电路利用萧特基功率整流器实现飞轮二极管,萧特基整流器具有较低的正向电压和极短的反向恢复时间。这两者在马达驱动应用中都是非常重要的参数因子。
功率MOSFET由反向闸极驱动器驱动。F300的端口引脚默认配置为输入引脚,并且启用弱的100k上拉电阻。在端口被配置而且交叉开关器和周边启用之前,端口引脚一直保持高电平。当复位接脚保持低电平时,端口接脚也会被配置为弱上拉启用的输入接脚。透过使用反向驱动器,功率晶体管在预设状态下处于关闭状态。如果使用非反相器驱动,10k下拉电阻应当端口引脚和接地。
为使用3伏特(V)微控制器,闸极驱动器应当具有3V相容的输入电平临界值。如果马达电压在5-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可配置为160奈秒(ns)频率周期和24kHz频率。
ADC0_Init()函数配置ADC为查询模式。ADC增益设定为1,并且为ADC频率选择1MHz保守频率。重要的是,这里也要初始化电压参考,配置ADC使用VDD满量程。
函数readADC()采用查询模式读取电压值一次,并返回ADC值。函数avgADC()调用readADC()函数,并且返回六十四个采样值的平均值。平均化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上没有开关损耗,在二极管上也没有损失,唯一的功率损耗是功率MOSFET中的传导损耗。如果马达预计在大部分时间里都处于全速运作,100%的最大工作周期比是合理的。100%的工作周期比,可以经由清除PCA0CPM0 SFR中的ECOM0位来实现。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM入门篇之(一)概念