您的位置 首页 新能源

高档电机操控中的软件设计准则

运行在300W以下的小功率电机被广泛应用于各类应用,例如汽车系统、打印机、复印机、碎纸机、玩具、工厂自动化、测试设备、机器人技术、航空航天与军工以及其他应用。最流行的小功率电机类型是DC电机、无刷DC

工作在300W以下的小功率电机被广泛运用于各类运用,例如轿车体系、打印机、复印机、碎纸机、玩具、工厂自动化、测验设备、机器人技能、航空航天与军工以及其他运用。最盛行的小功率电机类型是DC电机、无刷DC电机和步进电机。电机的产值大致与功率巨细成反比。量产的小功率电机数量远远高于大功率电机数量。

专用于电机操控的DSP规划旨在满意大型离线式电机的需求。离线电机一般为AC感应或无刷DC电机,工作在110-480VAC和1/4-100HP。专用于电机操控的DSP关于小功率电机操控体系来说本钱太高。

本文展现了运用C8051F3xx MCU操控各类电机的软件示例。尽管这些示例相对简略,可是他们为各类电机展现了有用的解决方案。一个传统的电机操控体系一般要求额定特性而且具有更高的杂乱度。这些软件示例能够作为开发更杂乱电机驱动体系的起点。

DC电机操控

DC电机在小功率电机中是最常见和最廉价的。在本文中,术语“DC电机”特指有刷换向永磁DC电机。

DC电机的特性使得它成为变速体系中运用的最简略电机。DC电机的转矩—速度特性如图1所示。DC电机的非负载速度与电机电源电压成线性联系。驱动安稳扭矩负载、线性负载或指数负载的DC电机的电压—速度特性也是接连的、正斜率的和可猜测的。因而,在大多数状况下运用开环操控是可行的。

1.jpg

图1-DC电机特性

简略地改动经过电机的电压,任何人都能够操控电机的速度。PWM能够用于改动电机供电电压。加载到电机的均匀电压与PWM占空比成正比例联系(这儿疏忽电机自感和不接连工作导致的非必须影响)。

运用F3xx MCU供给简略的DC电机速度操控的一个简略的比如。在这个示例中运用ADC读取电位器的方位信息,而且运用PCA 8位PWM形式输出对应的PWM信号。硬件装备如图2所示。

2.jpg

图2-DC电机驱动电路

单个N沟道功率MOSFET Q1用于驱动DC电机。功率MOSFET应当根据特定的电机电压和电流需求进行挑选。单导游通的二极管D1跨连到DC电机。当MOSFET封闭时,电流经过电机自感持续活动。MOSFET漏极电压将上升到超越电机电源电压的一个二极管压降。然后,电流经过单导游通二极管持续活动。

大多数低压电机驱动电路运用肖特基功率整流器完成单导游通二极管。肖特基整流器具有较低的正向电压和极短的反向恢复时刻。这两者在电机驱动运用中都是十分重要的参数因子。

功率MOSFET由反向门驱动器驱动。F300的端口引脚默许装备为输入引脚,而且使能弱的100k欧姆上拉电阻。在端口被装备而且交叉开关器和外设使能之前,端口引脚一向坚持高电平。当复位引脚坚持低电平时,端口引脚也会被装备为弱上拉使能的输入引脚。经过运用反向驱动器,功率晶体管在默许状况下处于封闭状况。假如运用非反相器驱动,10k欧姆下拉电阻应当衔接端口引脚和地之间。

为了运用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上没有开关损耗,在二极管上也没有丢失。仅有的功率损耗是功率MOSFET中的传导损耗。假如电机估计在大部分时刻里都处于全速工作,那么100%的最大占空比是合理的。100%的占空比能够经过铲除PCA0CPM0 SFR中的ECOM0位来完成。

带回转才能的DC电机

永磁DC电动机一般被用于需求回转电机方向的运用中。为了回转旋转方向,需求回转电机上电压的极性。这需求运用H桥。如图3所示,H桥有4个晶体管。当在正方向驱动电机时,Q4翻开,PWM信号运用于晶体管Q1。在反方向上驱动电机,Q3翻开,PWM信号运用于晶体管Q2。在这个示例中,下部的晶体管被用于PWM速度操控,上部的晶体管被用于转向。运用这种拓扑结构,能够在两个方向上供给变速操控。

3.jpg

图3-DC电机全桥电路

在图3中,N沟道功率MOSFET被用于低压侧晶体管,P沟道功率MOSFET被用于高压侧晶体管。关于驱动20V以下的DC电机来说,运用互补功率MOSFET是十分契合本钱效益的。如图3所示,低压侧门驱动器带有反相器,而高压侧门驱动器没有反相器。门驱动器极性被挑选以保证当端口引脚在弱上拉使能的复位装备形式下,功率晶体管处于封闭状况。

该示例软件构建在根本示例代码上。主循环现在包括一个if句子查看回转开关SW1的状况。当回转按键被按下时,PWM制止,一起一切P0输出制止。当按键开释后,电机将回转方向。

除了添加额定的推挽式输出引脚装备之外,示例软件中的初始化函数类似于示例1。

调用reverse()函数回转电机方向。标志位Fwd用于保存电机状况。Fwd位被切换用于判别哪些输出需求激活。

回转电机还存在一个潜在的问题。当回转开关SW1被按下时,电机或许由于电机惯性而持续旋转一些时刻。当电机正在滚动时,它将产生与电机速度成比例联系的反向电动势。假如电机中止旋转之前反向按键被开释,电机反向电动势将经过上部晶体管而短路,如下所述。

参阅图4,假定开端时Q4处于翻开状况,电机正在正方向上旋转。假定电机正在工作,而且反向电动势大约为6V。现在回转开关被按下,一切4个晶体管被封闭。电机右侧将比左边高约6V。然后开关开释,翻开Q3。电机左边被上拉到电源电压,电机的反向电动势经过Q4的内部二极管而短路。

终究的结果是,电机中止,在电机机械惯性中贮存的一切能量被注入Q4。回转过程中很简略损坏上部晶体管。在一些具有较大摩擦力负载的运用中,一个固定推迟时刻能够保证电机有满意时刻中止。而在其他运用中,电机或许需求花费几秒钟才彻底中止。这个问题的通用解决方案,如图4所示。

4.jpg

图4–DC电机回转损害

带有软回转才能的DC电机

这个用于DC电机的软件示例根据第二个示例,供给软回转才能。为了安全的回转DC电机,咱们需求判别电机是否还处于工作中。

确认电机是否依然处于旋转状况的简略而有用办法是丈量跨接在电机端子上的电压差。ADC能够被装备去丈量模仿多路挑选器中的恣意两个输入引脚上的差分电压。可编程的窗口检测器也能够用于判别差分电压是否归于预设极限。在这个示例软件中,假如差分电机电压在100ms内坚持在满量程的3%以下,那么电机开端回转。

带有电压感应功用的DC电机驱动的硬件完成类似于在电机端子上别离添加两个电阻分压器,如图5所示。

5.jpg

图5–带有电压感应才能的DC电机驱动

主循环现已被改善用来检测电机是否中止。detectStop()函数首要装备ADC去丈量差分电压。ADC和窗口检测器都适用于查询形式。假如ADC值在预设窗口范围内,那么计数器添加。运用完成10ms推迟的定时器T0设置采样时刻。任何在窗口之外的采样值将重置计时器。退出while循环之前,它将运用10个接连的采样值。回来到主循环之前,detectStop()函数将重新装备ADC去丈量速度电位器。

无刷DC电机操控

无刷DC(BLDC)电机具有一些传统有刷换向DC电机所没有的优势。电子和传感器有用地代替了电刷的人物,供给更长的寿数,削减保护操作,而且没有电刷噪声。正确整流的BLDC电机的扭矩—速度特性彻底相同于如图1所示的DC电机。

因而,无刷DC电机展现出与DC电机相同的满意需求的质量,十分适用于变速操控。这个示例为运用霍尔效应传感器操控电机换向的BLDC供给简略的开环操控。BLDC电机的速度运用简略的电位器操控。在这种方法下的BLDC电机操控的特色类似于经典DC电机操控示例。

这个示例的硬件完成如图6所示。由于BLDC电机需求额定的输出,因而引荐C8051F330这个MCU。假如运用需求更多的存储资源,C8051F336也是不错的挑选,由于它有较大的16kB代码存储空间,而且代码兼容C8051F330。电机由6个功率晶体管驱动,构成三相桥式结构。下部的晶体管Q1-3是N沟道功率MOSFET。上部的3个晶体管是P沟道功率MOSFET。这样就简化了门驱动器办理。此外,互补门驱动器的运用使得在默许状况下功率晶体管处于封闭状况。

6.jpg

图6–无刷DC电机驱动

霍尔效应传感器有开集电极输出,需求上拉电阻。查看电机规范保证霍尔效应传感器是合适装备的。开集电极输出一般是3V兼容的。但是,霍尔效应传感器也需求一个偏置电源,一般需求超越3V。在大多数体系中,霍尔效应传感器能够封闭电机电源电压或许门驱动器电源电压。

运用断点调试软件或许会将电机和MOSFET置于不良状况。当MCU遇到一个断点时,引脚被及时有用地冻住,而且能够留下PWM输出处于激活状况。这儿引荐的流程是在进行单步调试或许运用断点之前,一向断开电机电源衔接。BLDC电机在跨过绕组时将会满电压失速。BLDC电机失速电流只是与绕组的内阻相关。这很或许损坏功率MOSFET。

BLDC电机示例软件包括许多新的元素,如下所述。

PORT_Init()函数对交叉开关器和输出引脚分配进行设置。额定的操控引脚为3相操控而设置为推挽式输出,为读取霍尔传感器而设置为输入。

可编程计数器阵列时基选用160ns,发动计数器。但是,模块0形式SFR没有初始化为8位PWM。在霍尔效应方位被确认之前,没有电机驱动被发动。

main()函数首要初始化相关资源,设置start标志位。主循环首要运用hallPosition()函数检测霍尔效应传感器的方位。假如start标志位被设置或许霍尔方位现已改动,电机经过调用commutate()函数进行换向。接下来,速度输入被读取,速度设置被写入PWM输出。

hallPosition()函数在过错状况时回来0。这产生在霍尔效应输入全为高或全为低时。假如过错产生了,主循环经过调用coast()函数使一切输出无效。开始位也在过错条件产生时置位,然后迫使换向产生鄙人一个合法的霍尔方位读数时。

readHalls()函数在霍尔效应输入端口引脚上读取而且去除霍尔效应编码颤动。该函数等候三个接连的相同的读数。当霍尔编码正在改动时,这种方法能够下降过错读数的或许性。

hallPosition()首要经过上面描绘的readHalls()函数读取霍尔效应编码。霍尔编码形式被贮存在常量数组hallPattern[]中。为了匹配霍尔效应编码,一个带有后递减的单行for循环被用于寻觅对应的索引。hallPosition()函数假如发现一个匹配的形式,则回来1-6中的一个值。假如没有发现匹配,hallPosition()函数回来0值。

commutate()函数用来在发动时初始化输出,当霍尔方位改动时改动输出状况,而且在检测到霍尔过错后重新发动电机。commutate()函数首要制止PWM和上部的晶体管。然后,它才运用从hallPosition()函数中取得的索引。

关于霍尔效应形式或许整流形式来说没有一致的规范。用户需求阅读你所运用的特定电机的制造商所供给的数据手册。根据制造商的数据手册细心核对两种形式。也要查看霍尔效应形式和整流形式之间的通讯。必要时需求改动两种形式之间的位移。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/294520.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部