查看: 2038|回复: 1

[分享] 基于LPC51U68 SCTimer/PWM的BLDC电机控制方案

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32004
    最后登录
    2024-4-9
    发表于 2020-11-12 14:43:04 | 显示全部楼层 |阅读模式
    基于LPC51U68 SCTimer/PWM的BLDC电机控制方案


    无刷直流电机(BLDC)是一种以直流电为能源,采用电子控制换相,反电动势波形为梯形波的将电能转换为机械动能的装置。
    无刷直流电机以其线性机械特性、宽电压范围、宽调速范围、高效率、响应快、可控性好、安全性高、可靠性高以及易于维护的优点被广泛应用于计算机外围设备、办公自动化设备、数码电子消费品、工业控制、汽车电子、医疗设备、家用电器、无人机等领域。本文介绍一种以LPC51U68为主控制器的双状态机BLDC电机控制方案。

    总体概述


    本方案的硬件采用LPCXpresso51U68评估板(OM40005),FRDM-MC-LVBLDC电机驱动板和无刷直流电机(型号45ZWN24-40,24V,40W)。


    LPC51U68作为系统主控制器,主要用于读取BLDC电机的霍尔传感器输出检测电机位置并根据电机位置和转动方向进行换相,产生PWM信号驱动FRDM-MC-LVBLDC电机驱动板,并提供电机方向,转速,启停控制。
    FRDM-MC-LVBLDC电机驱动板接受来自LPC51U68 PWM信号的控制产生驱动BLDC的功率输出。运行于PC端的运行时调试监控工具FreeMASTER提供BLDC电机控制界面用于电机状态如方向、速度和启停以及其他电机控制参数的查看和控制。
    功能框图如下图所示:
    11.png
    图 1 LPC51U68 BLDC电机控制总体概况

    关键外设功能


    本方案所使用的关键片上外设包括USART(通用同步异步收发)、ADC(模数转换)、PINT(引脚中断)、SCTimer/PWM(状态可配置定时器/脉宽调制)。


    如图1所示,运行于PC端的运行时调试监控工具FreeMASTER和LPC51U68主控板之间通过USART接口进行数据传输。ADC的通道3和通道4分别用于将来自FRDM-MC-LVBLDC电机驱动板的直流母线电压(DCB_Voltage)和直流母线电流(DCB_Current)转换为数字量,LPC51U68主控利用这两个数字量进行过压、欠压、过流故障检测。PINT工作于模式匹配引擎(PME)模式,用于检测电机的霍尔传感器输出是否发生电平变化,从而判断电机是否需要换相。


    SCTimer/PWM是NXP独有的一种定时器。这种定时器可以完成普通定时器/计数器的功能。但是,其独到之处在于定时器中引入了状态机的概念。也就是说,这个状态机是个硬件状态机,而且状态机一旦配置完成之后,只需启动SCT,状态机不需要MCU处理器核的干预,自动进行状态切换。


    一方面,本方案使用SCT产生带有死区时间的6路互补PWM驱动控制FRDM-MC-LVBLDC电机驱动板产生功率输出,进而驱动BLDC电机。另一方面,PME检测到电机霍尔传感器的输出信号产生变化后,产生SCT中断请求。这样,SCT中断服务程序SCT0_IRQHandler得以执行进行换相处理。

    硬件接口


    本方案的硬件接口定义如下表所示并且相同行的两项是连接关系,例如LPCXpresso51U68的J1-16和FRDM-MC-BLDC的J3-15是需要连接在一起的。
    12.png
    表 1 LPCXpresso51U68评估板与FRDM-MC-LVBLDC驱动板硬件接口定义与连接
    13.png
    表 2 LPCXpresso51U68评估板内部硬件接口定义与连接

    带死区时间的PWM生成状态机


    本方案采用如图2所示的,基于SCTimer/PWM的可配置硬件状态机功能生成3对6路互补PWM,用于驱动FRDM-MC-LVBLDC电机驱动板进而驱动电机。


    这个状态机包含3个状态和8个事件。
    IDLE状态是默认状态同时也是初始状态。
    Transient状态用于更新6路PWM输出实现换相。
    Active状态用于生成带死区时间的6路互补PWM。


    事件EV0在IDLE状态和Active状态下,当BLDC电机的霍尔传感器输出变化时产生。当EV0事件发生时,BLDC需要完成换相以保证电机可以连续转动,同时状态机进入Transient状态。
    Transient状态包含两个事件EV1和EV2,分别用于驱动PWM输出为低电平和高电平。当EV2事件发生后, 状态机切换到Active状态。
    Active状态包含事件EV3,EV4,EV5,EV6和EV7,其中EV3-EV6与产生带死区时间的互补PWM有关,对应关系如图3所示。其中,EV3与时间起点Time Start的时间差和EV5与EV4的时间差都等于死区时间。EV6作为一个Limit事件,决定PWM的周期。EV4和EV5决定PWM的占空比。
    14.png
    图 2基于SCTimer/PWM的PWM生成状态机
    15.png
    图 3带死区时间的互补PWM

    应用状态机


    应用状态机实现BLDC电机的总体控制,用于初始化外设如时钟、GPIO、PINT、ADC、SCTimer、USART,初始化FreeMASTER并根据来自FreeMASTER的命令控制电机的启动/停止、转动方向和转速,其状态转换图如图4所示。


    INIT状态是初始状态,其状态函数AppInit用于初始化与电机控制有关的变量,调用MC_INIT初始化PINT(工作在PME模式)、SCTimer并启动上文所述的PWM生成状态机。AppInit执行完成后调用AppInitToStop,使得状态机切换到STOP状态。


    STOP状态的状态函数AppStop通过判断电机启停标志ui8AppStartFlag决定状态机是否进入START状态。如果该标志为1,表明启动电机,通过调用AppStopToStart,使状态机进入START状态。ui8AppStartFlag是由运行在PC端的FreeMASTER图形界面设置。


    START状态的状态函数AppStart启动SCTimer/PWM定时器,同时PWM生成状态机也随即启动。SCTimer/PWM定时器启动之后,通过调用AppStartToRun使状态机切换到RUN状态。


    RUN状态是BLDC的运行状态,其状态函数AppRun根据当前转速和目标转速调整PWM占空比达到调整转速的目的。然后,判断电机启停标志ui8AppStartFlag决定电机是否停止,如果停止则调用AppRunToStop使状态机返回INIT状态。
    22.png
    图 4应用状态机状态转换


    BLDC电机控制图形界面


    BLDC电机控制由图5显示的运行于PC端的基于FreeMASTER的图形用户界面完成。FreeMASTER是一种用户友好的实时调试监视器和数据可视化工具,可用于运行时配置和调试嵌入式软件应用,支持对正在运行的系统上的变量进行非侵入式监视,可以在示波器式显示器上以标准小部件(仪表、滑块等)或文本形式的数据形式显示多个变量,从而提供易于使用的数据记录器。


    表3列举了一些在界面中与电机控制有关的重要变量,如果需要在界面中查询或设置其他变量,可以将所需要的变量自行添加到界面中。
    23.png
    图 5 BLDC电机控制界面
    24.png
    表 3 FreeMASTER变量和BLDC电机控制的关系

    调试模式下运行BLDC应用


    通常情况,BLDC应用运行于正常模式,也就是非调试模式。但是,如果工作在调试模式,会发生什么情况呢?如果BLDC应用进入调试模式,并以无断点全速方式运行。如果施加断点或者点击IDE暂停调试按钮,暂停BLDC应用程序运行。但此时,由于SCTimer并没有因为调试暂停而停止,这使得驱动FRDM-MC-LVBLDC电机驱动板的PWM没有停止。一种可能结果如图6所示,PWM_2P和PWM_2N是一对互补PWM,PWM_3N保持高电平,其余为低电平。


    如图7所示,PWM_2P和PWM_2N施加到N沟道MOS管Q2T和Q2B,PWM_3N施加到Q3B。某一时刻,如果PWM_2P为高电平,PWM_2N为低电平,PWM_3N为高电平,那么就会在FRDM-MC-LVBLDC功率输出级和BLDC电机B相和C相绕组线圈产生电流。一般认为当这个电流达到2安培(A),即可使电机短时间大量发热。
    25.png
    图 6调试暂停情形下的PWM输出
    26.png
    图 7调试暂停情形下的相电流


    如何解决这个问题呢?一种方法就是不在调试模式下运行BLDC应用。


    当然,如果一定要在调试模式下运行,本文可以给出一种解决办法。参考LPC51U68用户手册(UM11071),版本号为1.2。我们可以通过Fig 27. SCT connections可知,debug halted可以作为SCTimer的输入。而当BLDC应用进入调试模式之后暂停,debug halted有效。如果在BLDC应用中将debug halted作为事件的产生源,并且设置当此事件产生时停止SCTimer并且全部6路PWM输出为低电平,那么图7所示的电流回路就不存在,进而BLDC电机绕组线圈因电流长时间流过而产生的发热问题也就得到解决。

    总结


    本文介绍了一种包含双状态机的BLDC控制方案。该控制方案包括一个软件状态机-应用状态机和一个硬件状态机-PWM生成状态机。应用状态机完成BLDC的总体控制,包括启停控制、转速控制、转向控制以及控制器LPC51U68与运行于PC端的基于FreeMASTER的控制界面的通信。硬件状态机由SCTimer实现,主要用于PWM信号的产生以及BLDC换相。应用状态机在完成相关初始化并启动SCTimer之后,PWM生成状态机开始按照预先的设置运行。


    本文只是从总体上对此方案进行介绍,更多的技术细节可以参考应用笔记-How to use SCT togenerate PWM and control BLDC motor on LPC51U68以及与此应用笔记配套的基于IAR Workbench IDE开发的应用程序。


    同时,本文也对BLDC应用运行在调试模式产生的问题和相应解决方法进行了分析。为解决这个问题,而进行的SCTimer设置代码可以参考与应用笔记-How to use SCT to generate PWM and control BLDC motor onLPC51U68配套的应用程序。

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2020-11-13 09:03:16 | 显示全部楼层
    我就是觉得型号带“U”的就要应用USB接口,否则就是选其它的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-20 23:12 , Processed in 0.121054 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表