”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

发布于2024-11-07
浏览:258

Some time ago, I mentioned the IF electrostatic precipitator controller, I carefully analyzed the single-phase and three-phase SPWM drive time, completed the SPWM code writing on the STM32F103 processor, and tested the signals and waveforms with an oscilloscope and a logic analyzer.
The TIMER1 and TIMER2 of STM32F103 support complementary PWM outputs, and I chose CH1,CH2,CH3 of TIMER1 for A,B,C three-phase drive;
The clock frequency of the processor is 72MHz, and the dead time of the complementary PWM output is set to 4us by the following code;
SPWM_PWM_TIMER->BDTR = 0x80C4.

A half-cycle sinusoidal data table is generated, and based on the frequency of the sinusoidal signal and the value of the frequency of the PWM, the intervals in which the period of the sinusoidal signal needs to be divided are calculated, the average value of each sinusoidal signal data is calculated, and the duty cycle value of each interval is calculated based on the maximum sinusoidal data, and maximum duty cycle values of PWM signal;

When the frequency of the SPWM is 10kHz and the frequency of the sine signal is 50Hz, the output SPWM signal will be passed through two stages of low-pass filtering resistors with 1kΩ resistor + 0.1uF capacitor, and I can see a very perfect sine signal.

At first, I wanted to automatically set the duty cycle value calculated by SPWM to the CCR register of TIMER through DMA and realize the update of DMA cache in half-completion interrupt and completion interrupt, but because the frequency may also change during operation, which will lead to the dynamic change of the number of data in DMA, making the output of the sinusoidal signal of SPWM output incoherent and generating a high-frequency component.

Finally, the three-phase CCR register values are updated for each cycle of the PWM signal through the update interrupt of TIMER.

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

Implement the SPWM ase/ase inverter for electrostatic precipitator controller using STMMCU

版本声明 本文转载于:https://dev.to/zhangzhuyue/implement-the-spwm-3phase1phase-inverter-for-electrostatic-precipitator-controller-using-stm32103-mcu-129b如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 React 应用程序中嵌入带预览的链接
    如何在 React 应用程序中嵌入带预览的链接
    介绍 构建 Web 应用程序时,显示链接内容的预览通常很有用,就像社交媒体平台在共享 URL 时如何显示链接预览一样。因此,除了 url 文本之外,您还可以在 url 旁边显示图片和描述等信息。 在这篇文章中,我将引导您在 React 应用程序中嵌入链接,同时使用 axios 和 ...
    编程 发布于2024-11-08
  • 在 Sass 中使用 Mixin
    在 Sass 中使用 Mixin
    如果您深入研究前端开发世界,您很可能遇到过Sass(语法很棒的样式表)。 Sass 是一个强大的 CSS 预处理器,它通过提供 变量、嵌套、函数和 mixins 等功能来增强您的 CSS 工作流程。在这些功能中,mixins 作为游戏规则改变者脱颖而出,允许您有效地重用代码并保持样式表的一致性。 ...
    编程 发布于2024-11-08
  • PHP 5.3 中的 ?: 运算符是什么?
    PHP 5.3 中的 ?: 运算符是什么?
    PHP 5.3 中的 ?: 运算符PHP 5.3 引入了 ?: 运算符,这是以前可用的条件运算符的压缩形式。最初,条件运算符采用以下形式:expr ? val_if_true : val_if_false在 PHP 5.3 中,您可以省略中间部分,从而得到 ?: 语法。这相当于:expr ? exp...
    编程 发布于2024-11-08
  • 通过静态分析、映像初始化和堆快照提高性能
    通过静态分析、映像初始化和堆快照提高性能
    从整体结构到分布式系统世界,应用程序开发已经走过了漫长的道路。云计算和微服务架构的大规模采用极大地改变了服务器应用程序的创建和部署方式。我们现在拥有独立、单独部署的服务,而不是巨大的应用程序服务器 当需要时。 然而,可能影响这种平稳运行的新玩家可能是“冷启动”。当第一个请求在新产生的工作进程上处理时...
    编程 发布于2024-11-08
  • 增强 React 列表渲染:干净且可重用的模式
    增强 React 列表渲染:干净且可重用的模式
    作为 React 开发人员,我们都遇到过需要渲染数据列表的场景。虽然 .map() 方法效果很好,但每次渲染列表时重复相同的逻辑可能会让人筋疲力尽,并导致代码重复。幸运的是,有一种更干净、可扩展的方法来处理这个问题,使用可重用组件、高阶组件或自定义挂钩。 在本文中,我将分享一种改进 React 中列...
    编程 发布于2024-11-08
  • 前端与后端开发人员
    前端与后端开发人员
    海·德夫, 在Web开发中,有两个重要的角色:前端开发和后端开发。这两个学科对于任何成功的 Web 项目都是必不可少的,但它们具有不同的角色、技能和职责。在本博客中,我们将探索前端和后端开发的世界,比较它们的特点、所需的技能和挑战。因此,无论您是经验丰富的开发人员还是新手,请准备好探索前端与后端开发...
    编程 发布于2024-11-08
  • Pulsy 自述文件已更新
    Pulsy 自述文件已更新
    Pulsy - React 的轻量级状态管理库 Pulsy 是一个轻量级、灵活且易于使用的 React 状态管理库,提供持久性、中间件、记忆、计算和组合存储、时间旅行和 DevTools 集成等功能。它可以帮助您有效地管理 React 应用程序中的全局状态,而无需不必要的复杂性。 ...
    编程 发布于2024-11-08
  • 从命令行运行时,如何解决 Maven 中的“NoClassDefFoundError”问题?
    从命令行运行时,如何解决 Maven 中的“NoClassDefFoundError”问题?
    通过 Shade 插件解决 NoClassDefFoundError 的依赖关系在第一次使用 Maven 时,Eclipse 和命令行使用之间可能会出现不一致,原因是依赖管理。尽管在 Eclipse 中成功创建了 Maven 项目并添加了依赖项,但通过命令行执行项目可能会导致 NoClassDefF...
    编程 发布于2024-11-08
  • 如何在 Mac 上的 XAMPP 中安装 PHP 的国际扩展?
    如何在 Mac 上的 XAMPP 中安装 PHP 的国际扩展?
    Mac OS 上 XAMPP 的 PHP-intl 安装要解决在 Mac 上使用 XAMPP 时在 php 中安装 intl 扩展的问题,请按照以下步骤操作:确认PHP路径:执行哪个php来确定使用的PHP路径。对于 XAMPP,它应该是 /Applications/XAMPP/xamppfiles...
    编程 发布于2024-11-08
  • 如何在 Python 中删除列表元素的尾随字符?
    如何在 Python 中删除列表元素的尾随字符?
    拆分​​列表元素在编程中,经常需要将列表元素拆分为多个组件。一种常见的情况涉及删除尾随字符。假设您有一个字符串列表,其中每个元素都包含一个制表符 ('\t'),后跟其他文本。目标是消除此选项卡及其后面的所有内容,仅保留选项卡之前的文本。考虑以下列表:my_list = ['eleme...
    编程 发布于2024-11-08
  • 以下是根据您的具体要求为您的文章提供的一些标题选项:

* 为什么我的代码不起作用?理解 C++ 中的函数作用域
* C++ 中的函数作用域:为什么我的 HelloWorld() F
    以下是根据您的具体要求为您的文章提供的一些标题选项: * 为什么我的代码不起作用?理解 C++ 中的函数作用域 * C++ 中的函数作用域:为什么我的 HelloWorld() F
    C 中函数声明的范围 在您的代码中,您收到编译错误,因为 HelloWorld() 函数未在与调用它的范围相同。让我们深入研究一下函数作用域的概念并解决这个问题。函数原型,也称为声明,在不提供函数定义的情况下告知编译器函数的存在。在给定的代码中,您尝试调用 HelloWorld(),而不首先在当前作...
    编程 发布于2024-11-08
  • 深入研究 Monty Hall 问题项目:模拟和理解概率概念
    深入研究 Monty Hall 问题项目:模拟和理解概率概念
    欢迎来到 Monty Hall 问题模拟项目的迷人世界!这种实践学习经验将指导您创建基于网络的模拟,该模拟基于流行的游戏节目场景演示有趣的概率谜题。 揭开蒙蒂霍尔问题之谜 蒙蒂·霍尔问题是一个著名的概率难题,几十年来一直让人们感到困惑和着迷。通过参与这个项目,您不仅有机会实现模拟,还...
    编程 发布于2024-11-08
  • 如何在 PHP 中验证 MySQL DELETE 查询是否成功?
    如何在 PHP 中验证 MySQL DELETE 查询是否成功?
    验证 MySQL DELETE 查询是否成功执行 DELETE 操作时,确定其成功执行至关重要。在 PHP 中,您可以采用各种方法来确定 DELETE 查询是否成功。MySQLi 和 PDO使用 MySQLi 或 PDO、mysql_query() 和 PDO::成功删除查询后,exec() 返回不...
    编程 发布于2024-11-08
  • 如何在 Node.js 中提前退出 forEach 循环?
    如何在 Node.js 中提前退出 forEach 循环?
    如何中断 Node.js forEach 循环在需要递归遍历嵌套数据结构并对每个元素执行操作的情况下,您可以使用递归和forEach 的组合。但是,在某些情况下,您可能需要提前退出 forEach 循环。与带有 break 或 continue 语句的常规循环不同,forEach 缺乏停止迭代的内置...
    编程 发布于2024-11-08
  • Day f Brylnt:Next.js 与 Remix
    Day f Brylnt:Next.js 与 Remix
    大家好!我知道这与 Brylnt 的制作并不直接相关,但在决定使用哪个框架时我遇到了一些问题,我想我应该分享一下我对两个流行竞争者的想法:Next.js 和 混音. 这两个框架都很优秀,根据项目的不同,任何一个都可能是正确的选择。由于我使用的是 T3 Stack,其中包括 Next.js,我自然倾向...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3