PWM 脉宽跟随方案介绍

news2024/11/28 10:56:44

1. 前言

数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。

2. Push-pull + Balance Idle + Auto Enable 脉宽跟随方案

高精度定时器的 push-pull 模式本身就是用于推挽拓扑的控制,保证同一定时器的两路输出脉宽一致,以 timer A 的两路输出 TA1 和 TA2 为例,该模式实现时通过将 TA1 与 TA2 的set/reset 触发源配置为相同的事件,一般定时器本身的周期事件或是比较事件。
在这里插入图片描述
但是如果在 PWM 的 set/reset 触发源中添加 EEVx 事件,比如将过流事件映射到 EEVx,利用 EEVx 触发 CBC 保护,由于 EEVx 发生点具有随机性,那么将无法保证 TA1 和 TA2 的脉冲宽度完成一致,如下的实测波形所示。
在这里插入图片描述
在这里插入图片描述
为了解决以上的问题,可以 Push-pull 模式的基础上使能 Balance Idle + Auto Enable 功能。

如下图所示的 Balance Idle 模式,外部 EEV 事件导致 PWM 关闭的情况下,脉宽被复制输出,保证了输出脉宽一致。叠加 Auto Enable 后,PWM 输出不会一直保持在 Idle 模式,而是在下一个计数周期立即恢复输出。
在这里插入图片描述

以上方案的实现配置和实测波形如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过以上的方案,无论异步事件发生在 TA1 还是 TA2 输出期间,接下来的脉冲都能跟随之前的脉冲宽度输出。

3. Auto Delay 脉宽跟随方案

Auto Delay 是利用高精度定时器的捕获功能,指定的事件发生的时间点叠加 CMP2/4 中设定的延时值作为最终的 CMP2/4 比较值,如下图所示。
在这里插入图片描述
在滞后臂与超前臂或是从路与主路的相位差固定的情况下,将该相位差写入 CMP2/4 中,作为比较延时时间,只需要捕获超前臂或是主路 PWM 的关断点,即可让滞后臂或是从路的 PWM实现脉宽跟随。
基于以上的描述,以 TA1 和 TB1 为例,TB1 中设置捕获功能,对 TA1 的关断时刻进行捕获,假设二者的相差为 180°,实现 TB1 跟随 TA1 的配置和实测波形如下:

TA1 的 PWM 输出配置:
在这里插入图片描述
TB1 的 PWM 输出配置:
在这里插入图片描述
在这里插入图片描述
以上的方案虽然可以实现脉冲宽度的跟随,但是存在一定的限制,即 TB1 相对于 TA1 的移相值加上 TA1 脉宽值不能超过定时器所设定的周期值,因为该情况下 Auto Delay 的比较事件CMP2/4 无法产生,也就无法控制 TB1 的关断,比如以上的例程中,移相值为 15000,则 TA1 的脉宽值不能超过 15000,二者之和不能超过定时器的周期值 30000。

4. 小结

本文基于 STM32 的高精度定时器介绍了两种实现 PWM 脉宽跟随的方案,可以被用于桥式电路或是交错拓扑中需要滞后驱动脉宽严格跟随超前驱动脉宽的方案设计中。


本文档参考ST官方的《【用户手册】LAT1346_PWM脉宽跟随方案介绍_v1.0》文档。
参考下载地址:https://download.csdn.net/download/u014319604/88905681

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1576927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式浅析(十一) ·状态模式

设计模式浅析(十一) 状态模式 日常叨逼叨 java设计模式浅析,如果觉得对你有帮助,记得一键三连,谢谢各位观众老爷😁😁 状态模式 概念 状态模式 Java中的状态模式(State Pattern)是一种行为型…

Web漏洞-文件上传常见验证

后缀名:类型,文件头等 后缀名:黑白名单 文件类型:MIME信息 文件头:内容头信息 常见黑名单(明确不允许上传的格式后缀):asp、php、jsp、aspx、cgi、war (如果没有完整…

绿联 安装Frpc内网穿透并使用Nginx反向代理

绿联 安装Frpc内网穿透并使用Nginx反向代理 1、前言 服务器官网:雨云 - 新一代云服务提供商 本教程使用Frps与Frpc进行内网穿透,其中Frps需要自购服务器安装,若无法购买服务器则本教程对你无用; 另外还需拥有自己的域名&#xf…

什么是数据库?如何安装SQL Server(超详细版)

文章目录 什么是数据库数据库与数据库管理系统数据库系统之间的区别和联系数据库在生活中的应用 安装SQL Server数据库系统要求 安装步骤(超详细)安装前的准备 安装SSMS 什么是数据库 数据库,顾名思义,是存储数据的“仓库”。它不仅仅是简单的数据存储&…

软件验收流程

验收环节,甲方需要做哪些事情?这些事情的流程是什么?做这些事情能给甲方带来什么好处? 软件验收阶段,甲方要做的事情: 验收环节介绍 1. 开始 目的:启动验收流程,为后续工作做好准…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-航班时间

#include<iostream> using namespace std;int getTime(){int h1, h2, m1, m2, s1, s2, d 0;//d一定初始化为0&#xff0c;以正确处理不跨天的情况 scanf("%d:%d:%d %d:%d:%d (%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d);return d …

【随笔】Git 高级篇 -- 相对引用2 HEAD~n(十三)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

matlab使用教程(37)—求解数值积分(2)

1多项式积分的解析解 本示例显示如何使用 polyint 函数对多项式求解析积分。使用此函数来计算多项式的不定积分。 1.1定义问题 考虑实数不定积分&#xff0c; 其中 k 是积分常量。由于没有指定积分限值&#xff0c; integral 函数族不太适合求解这个问题。 1.2用向量表示多…

量子计算领域迎来了一项令人振奋的突破。

近日&#xff0c;量子计算领域迎来了一项令人振奋的突破。Quantinuum公司与科技巨头Microsoft宣布&#xff0c;双方在容错量子计算方面取得了显著成果。这一成就原本预计需要数年时间才能实现&#xff0c;但两家公司的紧密合作使得这一目标提前达成。 Quantinuum的新一代量子计…

js笔记(学习存档)

JS的调用方式与执行顺序 使用方式 HTML页面中的任意位置加上<script type"module"></script>标签即可。 常见使用方式有以下几种&#xff1a; 直接在<script type"module"></script>标签内写JS代码。直接引入文件&#xff1a;…

2024-4-7 QT day1作业

myWidget.cpp #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口标题this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\张谦\\Desktop\\pictrue\\qq.png"));//设…

V R沉浸式体验的应用|R主题馆加盟|V R游戏体验馆加盟

《探索未知世界&#xff0c;沉浸式VR体验引领未来》 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正逐渐走进人们的生活&#xff0c;并为我们带来前所未有的沉浸式体验。下面让我们一起探索一下&#xff0c;VR沉浸式体验的应用领域和魅力所在。 虚…

安卓开机启动流程

目录 一、整体框架二、流程代码分析2.1 Boot ROM2.2 Boot Loader2.3 Kernel层Kernel代码部分 2.4 Init进程Init进程代码部分 2.5 zygote进程zygote代码部分 2.6 SystemServer进程SystemServer代码部分 2.7 启动Launcher与SystemUI 三、SystemServices3.1 引导服务3.2 核心服务3…

15个最流行的STL模型修复工具

如果你进行 3D 打印&#xff0c;可能遇到过可怕的“无法打印 STL”问题&#xff1a;你的 STL 文件看起来很棒&#xff0c;但它会导致切片机出现问题或导致奇怪的打印错误或完全失败。 无论确切原因是什么&#xff0c;这些问题的根源通常归结为 STL 用于表示 3D 模型的连接三角形…

day 74 js

JS的作用&#xff1a; 修饰 HTML 标签&#xff08;CSS&#xff09;设置 HTML 标签的动作&#xff08;JS&#xff09;JS特点&#xff1a;基于对象的编程语言&#xff0c;通过浏览器解释执行作用&#xff1a;表单验证、改变标签样式、获取和设置标签属性值 1 表单验证: <fo…

Java常用API_正则表达式_字符串的替换和截取方法——小练习

我将通过一个练习题来展示这两个方法 练习题&#xff1a; 有一段字符串&#xff1a;小张qwertyuiop123小李asdfghjkl456小王 要求1&#xff1a;把字符串中三个姓名之间的字母替换成vs 要求2&#xff1a;把字符串中的三个姓名切割出来 编写代码&#xff1a; public class Tes…

MacBook运行缓慢?揭秘一键释放内存的有效秘诀!

当 MacBook 出现运行缓慢的现象&#xff0c;很大程度上可能是由于内存资源耗尽所致。内存&#xff08;RAM&#xff09;作为计算机的核心临时存储区域&#xff0c;负责承载当前活跃的应用程序及其相关数据。一旦内存容量达到饱和&#xff0c;MacBook将不得不依赖交换文件机制&am…

大话设计模式——11.桥接模式(Bridge Pattern)

简介 将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化。 UML图&#xff1a; 应用场景&#xff1a; 系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 示例…

Linux系统下关闭Java进程

关闭Java进程具体分为两步&#xff1a; 1.ps查进程ID 2.kill杀进程 具体的命令如下&#xff1a; ps查进程ID&#xff1a;ps -ef | grep java kill杀进程&#xff1a;kill -9 对应进程号 linux下解除被占用的端口号&#xff1a; 1.查看8088端口是否被占用&#xff1a; netsta…

设计模式之责任链模式讲解

概念&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。 责任链模式只有两个角色&#xff…