news 2026/7/8 3:34:31

无刷直流电机双闭环仿真:稳定运行与制动工况下的调制探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
无刷直流电机双闭环仿真:稳定运行与制动工况下的调制探索

无刷直流电机稳定运行和制动工况双闭环仿真,PWM-ON-PWM,PWM-OFF-PWM调制方式。 图一为拓扑图,图二为调制方式,图三为转速和电磁转矩波形,图四和图五为三相电流和电磁转矩放大和整体图,换相区间电磁转矩幅值较小,说明以上调制方式的优点。 图六为霍尔波形。

在电机控制领域,无刷直流电机凭借其高效、可靠等诸多优点,广泛应用于各类场景。今天咱们就来聊聊无刷直流电机在稳定运行和制动工况下,基于双闭环仿真,并深入探讨 PWM - ON - PWM 和 PWM - OFF - PWM 这两种调制方式。

拓扑图(图一)

首先看看拓扑图,它就像是整个电机控制系统的“地图”,清晰地展示了各个元件之间的连接关系。在这个拓扑结构中,电源、功率变换器、无刷直流电机以及各种传感器等部件有序连接。功率变换器作为关键环节,负责将直流电源转换为电机所需的三相交流电,为电机的运转提供动力。例如,典型的三相全桥功率变换器电路,就像这样:

# 简单示意三相全桥功率变换器连接关系(伪代码) # 定义电源 power_source = DC_power() # 定义六个开关管 switch1 = MOSFET() switch2 = MOSFET() switch3 = MOSFET() switch4 = MOSFET() switch5 = MOSFET() switch6 = MOSFET() # 连接关系示意 motor_phaseA.connect(switch1, switch4) motor_phaseB.connect(switch2, switch5) motor_phaseC.connect(switch3, switch6)

这里通过简单的代码结构展示了功率变换器与电机三相绕组的连接逻辑,实际电路当然会复杂得多,还会涉及到驱动电路、保护电路等。

调制方式(图二)

PWM - ON - PWM 和 PWM - OFF - PWM 这两种调制方式是控制无刷直流电机的核心手段。

PWM - ON - PWM

PWM - ON - PWM 调制方式,简单来说,就是在一个控制周期内,先让功率开关器件处于开通状态一段时间(ON 时间),然后再进行 PWM 调制。这种方式在维持电机稳定运行方面有独特优势。假设我们用 Python 来模拟一下这个过程(简化版):

import time # 定义控制周期 control_period = 0.01 # ON 时间占比 on_ratio = 0.3 # PWM 频率 pwm_frequency = 1000 on_time = control_period * on_ratio pwm_period = 1 / pwm_frequency while True: # 开通阶段 time.sleep(on_time) # PWM 调制阶段 for _ in range(int(control_period / pwm_period)): # 这里简单假设高电平时间占 PWM 周期的 50% time.sleep(pwm_period * 0.5) time.sleep(pwm_period * 0.5)

在这段代码中,先有一个固定的开通时间ontime,之后在剩余的控制周期内进行 PWM 调制,通过改变onratio以及 PWM 占空比,可以灵活调整电机的电压和电流,从而控制电机转速。

PWM - OFF - PWM

PWM - OFF - PWM 则是先让功率开关器件处于关断状态一段时间(OFF 时间),然后再进行 PWM 调制。同样用代码模拟一下:

import time # 定义控制周期 control_period = 0.01 # OFF 时间占比 off_ratio = 0.2 # PWM 频率 pwm_frequency = 1000 off_time = control_period * off_ratio pwm_period = 1 / pwm_frequency while True: # 关断阶段 time.sleep(off_time) # PWM 调制阶段 for _ in range(int(control_period / pwm_period)): # 这里简单假设高电平时间占 PWM 周期的 50% time.sleep(pwm_period * 0.5) time.sleep(pwm_period * 0.5)

这种调制方式在制动工况下能更好地实现能量回馈,有效降低电机转速,同时回收部分能量。

波形分析

转速和电磁转矩波形(图三)

从转速和电磁转矩波形图中可以清晰地看到电机在不同工况下的表现。在稳定运行阶段,转速波形相对平稳,这得益于合理的调制方式以及双闭环控制系统。双闭环系统一般包括速度环和电流环,速度环根据设定转速与实际转速的偏差来调整电流环的给定值,电流环再控制功率变换器输出合适的电流。例如在速度环的控制算法中,常用的比例积分(PI)控制器代码如下:

class PI_Controller: def __init__(self, kp, ki): self.kp = kp self.ki = ki self.integral = 0 self.prev_error = 0 def update(self, setpoint, process_variable): error = setpoint - process_variable self.integral += error p_term = self.kp * error i_term = self.ki * self.integral output = p_term + i_term self.prev_error = error return output

在制动工况下,电磁转矩波形会迅速变化,以实现电机的快速制动。

三相电流和电磁转矩图(图四和图五)

三相电流和电磁转矩的放大及整体图,能让我们更细致地观察电机内部的运行情况。在换相区间,我们发现电磁转矩幅值较小。这恰恰体现了前面提到的两种调制方式的优点。PWM - ON - PWM 和 PWM - OFF - PWM 调制方式有效地减少了换相转矩脉动,使得电机运行更加平稳。比如在换相瞬间,通过合理调整调制方式的参数,就像我们在代码中调整onratiooffratio一样,可以优化电流的变化,从而减小转矩脉动。

霍尔波形(图六)

霍尔波形就像是电机的“心跳监测仪”,它反映了电机转子的位置信息。通过霍尔传感器输出的波形,我们能准确判断电机的换相时刻,进而及时调整功率变换器的开关状态,保证电机按照预定的方式运行。例如,当霍尔传感器检测到特定的波形变化时,就触发相应的换相逻辑:

# 假设霍尔传感器输出信号为 hall_signal def commutation_control(hall_signal): if hall_signal == "特定波形组合 1": # 执行 A 相换相逻辑 switch_control("A 相换相操作") elif hall_signal == "特定波形组合 2": # 执行 B 相换相逻辑 switch_control("B 相换相操作") elif hall_signal == "特定波形组合 3": # 执行 C 相换相逻辑 switch_control("C 相换相操作")

通过对无刷直流电机在稳定运行和制动工况下的双闭环仿真以及两种调制方式的分析,我们更深入地了解了电机的运行特性。希望这篇博文能为大家在无刷直流电机控制领域的研究和实践提供一些有益的参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 1:06:11

昇腾CANN从单算子到融合优化实战

目录 1 摘要 2 技术原理 2.1 架构设计理念解析 2.2 核心算法实现 2.2.1 三级流水线设计原理 2.2.2 Tiling策略与数据重用 2.3 性能特性分析 2.3.1 理论性能模型 2.3.2 实测性能数据 3 实战部分 3.1 完整可运行代码示例 3.2 分步骤实现指南 步骤1:环境配…

作者头像 李华
网站建设 2026/7/5 18:51:28

大数据项目阿里云抢占式服务器

一、学生有免费额度可以使用 查看是否有免费的额度: https://university.aliyun.com/?spm5176.29458888.J_9220772140.19.6e632868x2bj7D 或者: https://free.aliyun.com/?spm5176.28623341.J_9220772140.18.4c044519hKalBC 二、购买抢占式资源服务…

作者头像 李华
网站建设 2026/7/7 23:09:49

Flink源码阅读:如何生成JobGraph

前文我们介绍了 Flink 的四种执行图,并且通过源码了解了 Flink 的 StreamGraph 是怎么生成的,本文我们就一起来看下 Flink 的另一种执行图——JobGraph 是如何生成的。 StreamGraph 和 JobGraph 的区别 在正式开始之前,我们再来回顾一下 Stre…

作者头像 李华
网站建设 2026/7/8 3:25:25

21、GNU 开发实用工具:函数、变量与调试技巧

GNU 开发实用工具:函数、变量与调试技巧 1. 关联数组与命名栈 在开发过程中,关联数组和命名栈是非常实用的数据结构。对于关联数组,可使用 defined 函数来测试键是否存在。 defined Arguments: 1: Name of associative array2: The key to test Returns: $(true) if …

作者头像 李华
网站建设 2026/7/7 23:37:42

YOLOv8+PyQt5车辆类型检测(可以重新训练,yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

资源包含可视化的车辆类型检测系统,基于最新的YOLOv8训练的车辆类型检测模型,和基于PyQt5制作的可视化车辆类型检测系统,包含登陆页面、注册页面和检测页面,该系统可自动检测和识别图片或视频当中出现的21种车辆类型,包…

作者头像 李华
网站建设 2026/7/8 3:25:19

打开软件出现找不到vcruntime140.dll文件 无法运行的情况 下载修复解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华