NXP电机文档-三相无刷直流电机无感控制应用(上)

三相无刷直流电机无感控制应用

参考文档第三章的软件设计部分 3.4、3.5、3.6

一、无刷直流电机控制

基于反电动势电压的无位置传感器 BLDC 电机控制方法需要一个可测量值反电动势电压。该电压与实际转子转速成正比,因此在零和非常低的速度。为了启动和运行 BLDC 电机,控制算法必须经过通过以下状态:

  • 对齐:转子初始位置设定
  • 启动:开环模式下的强制换向
  • 运行:通过 BEMF 采集进行闭环控制。

下图显示了各个 BLDC 电机控制状态的时序
图1:无刷直流电机控制状态
在这里插入图片描述

1、对齐

如前面讨论的,无刷直流电动机无传感器控制的主要任务是位置估计。然而,在启动电机之前,转子的位置是不知道的。
对准状态的目的是对准转子到一个已知的位置。此已知位置允许启动轴沿所需方向旋转,并在启动期间产生最大扭矩。
在对齐状态下,所有三相均通电,以获得所需的转子位置-对齐向量。A 相和B相用正电压供电,C相用负电压供电。对准时间取决于电机的机械常数,包括负载,以及施加的电机电流。在这种状态下,电机电流(转矩)由 PI 控制器控制。

2、启动

在启动状态下,电机换向以开环模式控制,没有任何转子位置反馈。 只有在轴速足够高时才需要开环启动(大约为额定电机速度的 3-10%)以产生可识别的反电动势电压。 开环换相周期根据所需的启动加速参数和数量计算启动换向次数是预定义的常数。

3、运行

运行状态框图如下图所示。 它包括带有反电动势集成的 BEMF 采集,以控制换向。 电机转速基于换流时间段。 要求的速度和估计的速度之间的差异被反馈给速度 PI 控制器。 速度 PI 控制器的输出与施加到控制器的电压成正比。无刷直流电机。 电机电流在快速环路 ISR 中测量和滤波,并用作反馈到电流控制器。 电流 PI 控制器的输出限制了速度 PI 控制器的输出。速度 PI 控制器输出的限制保护电机电流不超过最大允许的电机电流。

图2:速度控制与电流限制
在这里插入图片描述

二、电机控制算法同步

电机控制算法与 PWM 模块同步。 电机算法每次 PWM 重载都会计算控制。
下图显示了 PWM 信号的同步。 用户可以观察顶部和电机的底部 MOSFET PWM 信号,测量所需量的点,以及计算算法的点。 中断周期取决于硬件设置。 为了更多信息,请参阅 Kinetis KV 上的无传感器 BLDC 控制(文档 AN5263)。
图3:应用时间表
应用时间表

三、算法调用

整个 BLDC 电机控制应用程序设计为仅在中断服务程序中运行。 在主程序,只有微控制器的初始化、应用程序初始化和一个带有 FreeMASTER 轮询功能的无限循环来控制和监视应用程序。 应用程序使用三个具有不同时序需求的中断:

  • 快速控制循环 - ADC ISR:在每个 PWM 周期执行。
  • 慢速控制循环 - ISR:以 1 ms 周期执行。
  • 时间事件 ISR:根据当前应用程序需要执行。
    具有主要流程的应用程序数据流程图如下图所示。 这中断服务程序在下一章详细介绍

在这里插入图片描述

快速控制循环 ISR 和时间事件 ISR 使用相同的中断优先级。
慢速控制回路 ISR 使用低于前两个 ISR 的优先级。
执行应用程序状态机功能在快速和时间事件中断服务程序中

1、输入输出值处理

此应用程序使用单独的 MCU 特定部分代码的概念,并且独立于硬件 BLDC 电机控制算法。 硬件相关代码从外设读取输入值模块(定时器计数器、ADC 结果和其他),将它们缩放为小数表示,如果需要,并存储为输入变量。 然后在软件的硬件独立 BLDC 电机控制算法部分处理这些输入变量。 同样,BLDC 算法输出变量在硬件相关代码中被处理和更新到各自的外围模块中。

2、输入应用值

输入应用程序变量在相应的中断服务程序开始时更新:

  • ui16TimeCurrent — 实际时间值。 如果定时器用于计时目的,实际的定时器计数器寄存器值存储在此变量中
  • ui16TimeCurrentEvent — 上次时间事件的时间。 如果定时器用于此计时目的,则定时器值寄存器存储在此变量中
  • f16IDcBusFilt — 以小数表示的滤波后的直流母线电流值存储在这个 16 位变量中。 -1 表示最大负直流母线电流; +1 表示最大正直流母线电流。
  • f16DcBusCurrentOffset — 以小数表示的直流母线电流偏移值为存储在这个 16 位变量中。 该值是在应用程序初始化后的校准状态期间测量的
  • f16UDcBusFilt — 以小数表示的滤波后的直流母线电压值存储在这个 16 位变量中。 0 表示 0 伏,+1 表示最大可测量直流母线电压。
  • f16UPhase — 以小数形式表示的相电压值存储在这个 16 位变量中。 0 表示 0 伏,+1 表示最大可测量直流母线电压。
  • f16UPhaseBemf — 以小数形式计算的反电动势电压值存储在这个 16 位变量中。 使用以下等式计算该值(f16UDcBusFilt / 2 被认为是电机绕组的中点)
    在这里插入图片描述
    反电势电压 = 相电压 - 母线电压滤波值的一半

3、输出应用函数

执行 BLDC 电机控制算法后,可能会有硬件输出更新的挂起请求。 为此,执行以下功能

  • MCDRV_FtmSetPwmOutput:根据转子位置应用正确的换向矢量。
    • 对齐时为对齐向量。 如果发生故障,PWM 输出将被禁用
  • MCDRV_FtmSetDutyCycle:更新由 PWM 模块生成的占空比。
    • 在变量 f16DutyCycle 中,以小数表示形式存储了占空比的新值。 <-1 范围内的小数数值; +1) 然后在适当的 PWM 驱动器函数中进行处理和缩放,以适应实际的 PWM 模块配置
  • MCDRV_FtmCmtSet:设置时间事件的新时间。
    • 在变量 ui16TimeNextEvent 中存储了要设置的新时间。 如果定时器用于计时目的,定时器值寄存器将更新为 ui16TimeNextEvent 的值

参考文档

DRM144-3 Phase BLDC Sensorless Motor Control Application

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Stark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值