新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 掌握MCU软件设计准则 实现直流马达控制精准度提升

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

作者: 时间:2016-12-02 来源:网络 收藏


MCU软件襄助 永磁DC马达更适于反转应用
永磁DC马达通常被用于须要反转马达方向的应用中。为了反转旋转方向,须要反转马达上电压的极性。这须要使用H桥电路(图3),H桥电路有四个晶体管。当在正方向驱动马达时,Q4打开,PWM信号应用于晶体管Q1。在反方向上驱动马达,Q3打开,PWM信号应用于晶体管Q2。在这个范例中,下部的晶体管被用于PWM速度控制;上部的晶体管被用于转向,使用这种拓扑结构,可以在两个方向上提供变速控制。


图3 DC马达全桥电路


在图3中,N通道功率MOSFET被用于低压侧晶体管,P通道功率MOSFET被用于高压侧晶体管。对于驱动20V以下的DC马达来说,利用互补功率MOSFET是非常符合成本效益的。如图3所示,低压侧闸极驱动器带有反相器;而高压侧闸极驱动器没有反相器。闸极驱动器极性被选择,以确保当端口引脚在弱上拉?动的重置配置模式下,功率晶体管处于关闭状态。
该范例软件建构在基本范例代码上。主回路现在包括一个if语句检查反转开关SW1的状态。当反转按键被按下,PWM停止运作,同时所有P0输出也同样被禁止。当按键释放后,马达将反转方向。范例软件中的初始化函数类似于DC有刷马达控制,只是除了增加额外的推挽式输出引脚配置之外。
调用reverse()函数反转马达方向。标志位Fwd用于保存马达状态,Fwd位被切换用于判断哪些输出须要启动。
反转马达还存在一个潜在的问题。当反转开关SW1被按下时,马达可能由于马达惯性而继续旋转一段时间。当马达正在转动时,它将产生与马达速度成比例关系的反向电动势;如果马达停止旋转之前反向按键被释放,马达反向电动势将透过上部晶体管而短路,如下所述。
参考图4,假设开始时Q4处于打开状态,马达正在正方向上旋转;假设马达正在运行,并且反向电动势大约为6V。现在反转开关被按下,所有四个晶体管被关闭,马达右侧将比左侧高约6V;然后开关释放,打开Q3,马达左侧被上拉到电源电压,马达的反向电动势必透过Q4的内部二极管而短路。


图4 DC马达反转危害


最终的结果是,马达停止,在马达机械惯性中储存的所有能量被注入Q4。反转过程中很容易损坏上部晶体管,在一些具有较大摩擦力负载的应用中,一个固定延迟时间可以确保马达有足够时间停止。而在其他应用中,马达可能须要花费几秒钟才完全停止,这个问题的通用解决方案,如图4所示。
软件防护法助力 DC马达反转控制更安全
这个用于DC马达的软件范例基于第二个范例,提供软件防护方法。为了安全的反转DC马达,我们须要判断马达是否还处于运转中。
确定马达是否仍然处于旋转状态的简单而有效方法,是测量跨接在马达端子上的电压差。ADC能够被配置,去测量模拟多路选择器中的任意两个输入引脚上的差动电压。可程序设计的窗口检测器也可以用于判断差动电压是否属于默认极限。在这个范例软件中,如果差动马达电压在100毫秒(ms)内保持在满量程的3%以下,那么马达即开始反转。具备电压感应功能的DC马达驱动的硬件实现,类似于在马达端子上分别添加两个电阻分压器(图5)。


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


主回路已经被改进用来检测马达是否停止。detectStop()函数首先配置ADC去测量差动电压,ADC和窗口检测器都适用于查询模式。如果ADC值在默认窗口范围内,那么计数器增加。使用实现10ms延迟的定时器T0设置采样时间,任何在窗口之外的采样值将重置定时器,退出while回路之前,它将使用十个连续的采样值;返回到主回路之前,detectStop()函数将重新配置ADC去测量速度电位器。


评论


技术专区

关闭