减轻 PWM 的滤波要求

news2024/11/14 15:15:56

经典脉宽调制器 (PWM) 发出 H 个连续逻辑高电平(1),后跟 L 个连续逻辑低电平(0)的重复序列。每个高电平和低电平持续一个时钟周期 T = 1/F (Hz)。结果的占空比可定义为 H/N,其中 N = H+L 时钟周期。N 通常是 2 的幂,但 N 可以是任何大于 0 的整数。 PWM 必须面对的一个挑战是通过过滤流的动态 AC 部分进行衰减,同时保留其平均 DC 值。在整个输出序列范围内,经典 PWM 的频率分量 F/N 也是的,因此难衰减。幸运的是,这个设计理念引入了一个简单的技巧,可以缓解这一挑战。

在讨论这个技巧之前,有必要快速回顾一下其他交流能量缓解技术,所有这些技术都像经典技术一样,采用某种计数器作为其驱动引擎。我几年前读过但找不到参考的一种方法涉及 N = 2 M -1 状态的 M 位伪随机序列生成器,其每个位都连接到数字比较器的一个输入 [1]。剩余的输入以数字W表示。当生成器的数量小于W时,比较器输出1;当生成器的数量小于W时,比较器输出1。否则,输出零。当发生器被计时时,结果是 W 个 1、N-W 个 0 和 W/N 占空比的随机流。结果的频谱“白噪声”性质比传统 PWM 的 F/N 主要成分更容易过滤。

一些 SAM D Microchip 微控制器的硬件中内置了更有效的缓解措施 [2]。这些 PWM 修改8 位经典 PWM 序列的2 X 个连续周期,以产生长度为 2 X+8的更长重复序列。这里 X = 4、5 或 6。对于 K / 2 X+8的占空比,0 ≤ K < 2 X+8,每个八位序列至少具有 K/2 X的整数部分。剩余的 K 个模 2 X尽可能均匀地分布在 2 X八位序列中。结果是占空比调制的八位序列的长序列,在频率 F/2 X+8处或附近具有非常小的频谱能量生成的 Hz 大部分位于 F/2 8附近,并且滤波问题得到了简化。

这些方法的硬件支持并不总是可用。幸运的是,大多数微控制器都可以轻松实现上述技巧,其描述如下。一旦完成 N = 2、3 或 4…多 2 8 个(甚至 2 16 个)状态计数器驱动 PWM 的初始设置,无需软件干预“设置它(占空比),然后就可以忘记它” PWM操作触手可及。当占空比确实需要改变时,所需的 H 值被写入输出比较寄存器 (OCR)。在大多数情况下,两个具有独立占空比的 PWM 可用,通常由同一计数器驱动。考虑一下利用这些功能组合可以实现什么目标。

在一个示例中,计数器可配置为 N = 16。 PWM 的占空比可为 1/16、2/16、3/16,一直到 15/16。剩余状态将为 0/16 或 16/16。两个 PWM 输出由两个电阻按 1:16 的比例串联组合连接。在这两个电阻的连接处,有 2 4 ×2 4 = 2 8个可能的平均值,就像单个 PWM 呈现 2 8个不同状态一样。影响交流衰减的简单方法是在该结点和地之间连接一个电容器(图 1是完整电路的示例。)

加倍并减轻 PWM 的滤波要求



图 1完整电路代表了实现交流衰减的简单方法,其中电容器连接在 PWM 输出端的两个电阻器与地之间的连接点之间。

但这种技术和传统 PWM 都可以受益于更复杂的网络,该网络具有更多数量的电阻器和电容器,甚至还可以选择使用运算放大器来缓冲结果。运算放大器还可以实现包含复杂极点对的滤波器,而不是仅限于实极点,实极点是可获得的极点。前一种类型更有效地化滤波器稳定时间和残余交流能量大小的乘积。(早期的设计理念中已经给出了这样的一个例子。)

我使用 ATmega16 微控制器来实现图 1 电路。尽管可以使用更高的时钟频率,但 F 设置为 1MHz。PWM 1 和 PWM 2 配置为以两种不同的模式运行:前面描述的两个四位单元具有独立值的输出,以及作为具有相同输出的八位单元。这对于两种操作模式都保持相同的 RC 滤波器时间常数。表 1列出了每种模式的 OCR 重复序列。

加倍并减轻 PWM 的滤波要求


表 1四位和八位 PWM 模式用于生成图 2 波形的 OCR 值。

图 2显示了两种模式之一的示波器捕获;两种模式的屏幕截图无法区分,分辨率约为 18 mV。(必须在 R1-R2-C1 结点和负直流电压之间连接一个额外的电阻(未显示)。在不影响 R1-R2 比率的情况下,这会将波形的电压移至接近接地的电压,以便示波器可以显示它具有高分辨率。)

加倍并减轻 PWM 的滤波要求

图 2通过对表 1 中列出的四位和八位 PWM 模式的 OCR 进行编程而生成的波形。两种模式的结果看起来相同,因为示波器以 200 ms/div 扫描速率平均交流能量。

两个四位 PWM 的频率均为 F/16 = 62.5 kHz;八位的频率为 F/256 = 3.90625 kHz。该代码大约每 100 毫秒更改 OCR 寄存器。在图 2 的扫描速率下,示波器滤除 PWM 交流信号,并将其替换为平均值。在随后的图中,示波器以更快的扫描速率显示了它们的峰峰值幅度。图 3显示 8 位 PWM 的电压为 120 mV,而图 4显示 4 位 PWM 的电压仅为 7.5 mV。

加倍并减轻 PWM 的滤波要求


图 3图 1 八位 PWM 电路中电容器两端的交流能量。

 

加倍并减轻 PWM 的滤波要求



图 4图 1 电路中四位 PWM 电容器两端的交流能量。四位 PWM 的周期和幅度比八位 PWM 小 16 倍。

两种模式的步进分辨率均为 18 mV,四位峰峰值噪声在不到半步的情况下接近;任何更多的交流信号衰减都会不必要地增加 1 ms 半步稳定时间。在 1/16 频率下峰峰值为 120 mV(6.7 步长)时,八位 PWM 实现几乎无法使用。电容器值必须增加到 15μF,相关的稳定时间增加 15 倍,才能满足双四位 PWM 方法的能量衰减性能。找元器件现货上唯样商城

本示例中采用的方法非常强大。通过一对与 0.1% 电阻互连、比率为 256:1 的 8 位 PWM,(双八位)16 位 PWM 可以具有比传统 16 位 PWM 更容易过滤 256 倍的交流输出。位单位。小于 N = 2 16或 2 8级的 PWM 分辨率也可以同时减少 PWM 周期并简化相关的滤波要求。甚至还有带有三个或四个 PWM 的微控制器,其输出可以与合适的电阻网络相加。

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

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

相关文章

keil固件库的安装 库函数的配置

文章目录&#xff1a; 第一步&#xff1a;下载固件库文件 第二步&#xff1a;创建一个新的文件夹&#xff0c;用来保存固件库文件。在该文件夹下新建文件夹&#xff1a;CMSIS、Lib、Startup、User 第三步&#xff1a;把库文件中文件放入我们建立对应的文件中 1.CMSIS模块 …

【MIPI协议 C-PHY详解】

MIPI协议 C-PHY详解 前言一、C-PHY介绍1.1 C-PHY 与 D-PHY wire的区别1.2 3 wire的状态&#xff08;states&#xff09;变化1.3 C-PHY Data Mapping Between 7 Symbols and a 16-Bit Data1.3 C-PHY Lane States and Line Levels ~ LP Mode 二、C-PHY LP Package Format2.1 C-PH…

SQLI_LABS攻击

目录 Less1 首先来爆字段 联合注入 判断注入点 爆数据库名 爆破表名 information_schema information_schmea.tables group_concat() 爆破列名 information_schema.columns 爆值 SQLMAP Less-2 -4 Less -5 布尔 数据库 表名 字段名 爆破值 SQLMAP Less-6 …

​LeetCode解法汇总142. 环形链表 II

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣 描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如…

ssl单向证书和双向证书校验测试及搭建流程

零、前提准备 说明&#xff1a; 50.50.1.118作为服务端&#xff0c;系统是 linux&#xff0c;openssl版本是&#xff1a;OpenSSL 1.1.1f 31 Mar 2020。 50.50.1.116是客户端&#xff0c;系统是Windows&#xff0c;openssl版本是&#xff1a;OpenSSL 3.0.5 5 Jul 2022 (Library…

Day07-作业(MySQL查询设计)

作业1: 根据如下需求完成SQL语句的编写 【仔细阅读题目需求】 数据准备&#xff1a; 创建一个数据库 db02_homework 执行如下SQL语句&#xff0c;准备测试数据 -- 员工管理(带约束) create table tb_emp (id int unsigned primary key auto_increment comment ID,username …

这款轻量级规则引擎,真香!

大家好&#xff0c;我是老三&#xff0c;之前同事用了一款轻量级的规则引擎脚本AviatorScript&#xff0c;老三也跟着用了起来&#xff0c;真的挺香&#xff0c;能少写很多代码。这期就给大家介绍一下这款规则引擎。 简介 AviatorScript 是一门高性能、轻量级寄宿于 JVM &…

阿里云率先荣获容器集群稳定性先进级认证

7 月 25 日&#xff0c;由中国信通院发起的“2023 稳保体系”评估结果在可信云大会现场公布&#xff0c;阿里云容器服务 ACK 成为首批通过“云服务稳定运行能力-容器集群稳定性”评估的产品&#xff0c;并荣获“先进级”认证。 云原生技术正在激活应用构建新范式&#xff0c;构…

数据结构初阶--树和二叉树的概念与结构

目录 一.树 1.1.树的概念 1.2.树的相关概念 1.3.树的表示 1.4.树在实际中的运用 二.二叉树 2.1.二叉树的概念 2.2.特殊的二叉树 满二叉树 完全二叉树 2.3.二叉树的性质 2.4.二叉树的存储结构 顺序存储 链式存储 一.树 1.1.树的概念 树是一种非线性的数据结构&am…

【SVN】merge 合并trunk branch代码,解决冲突

在命令行模式下进入待merge的项目根目录 1.将指定url上的代码merge到本地当前文件夹下&#xff08;--dry-run表示test merge&#xff09; E:\project\ry\trunk\ees-tem>svn merge http://192.168.0.2/svn/repo/ProD/JinZay/EE S/code/ees-tem/branches/develop -c 1149491 …

5个方法!轻松提升Windows Server 2016性能!

​Windows Server 2016性能降低 ​“我们在使用Windows Server 2016时遇到了卡顿不流畅的问题&#xff0c;服务器&#xff08;300GB硬盘、16GB内存、4核CPU&#xff09;主要用于使用Office&#xff08;Word、Outlook、Excel&#xff09;和上网&#xff0c;客户表示很慢&…

顺序表小项目---通讯录的实现

文章目录 前言一、静态通讯录的需求分析与实现1.通讯录的结构体需求2.通讯录的功能需求3.通讯录的主函数创建4.通讯录的所用函数的实现1.通讯录的初始化2.通讯录的增加联系人3.通讯录的查找联系人4.通讯录的删除联系人5.通讯录的修改联系人6.联系人的排序 二、静态通讯录的需求…

使用Debate Dynamics在知识图谱上进行推理(2020)7.31+8.1

使用Debate Dynamics在知识图谱上进行推理 摘要介绍背景与相关工作我们的方法状态行为环境policiesDebate Dynamics 摘要 我们提出了一种新的基于 Debate Dynamics 的知识图谱自动推理方法。 其主要思想是将三重分类任务定义为两个强化学习主体之间的辩论游戏&#xff0c;这两…

n位的二进制可以表示多少个小数?

文章目录 导论推理过程结论练习 导论 首先来思考一个十进制小数是如何被转化成二进制的。它使用的方式&#xff1a;乘基取整。你想把它化成n进制&#xff0c;基数就是n。以小数0.6875为例&#xff0c;将它化成二进制 那么它化成二进制0.1101。以原码或补码表示成01101。 并不…

Gis入门,使用起止点和两个控制点生成三阶贝塞尔曲线(共四个控制点,线段转曲线)

前言 本章讲解如何在gis地图中使用起止点和两个控制点(总共四个控制点)生成三阶贝塞尔曲线。 二阶贝塞尔曲线请参考上一章《Gis入门,如何根据起止点和一个控制点计算二阶贝塞尔曲线(共三个控制点)》 贝塞尔曲线(Bezier curve)介绍 贝塞尔曲线(Bezier curve)是一种…

用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单

用Delphi编写的简单视频格式转换程序&#xff0c;它使用TComboBox、TOpenDialog和TSaveDialog组件来选择转换格式、选择源视频文件和选择目标视频文件。程序还使用TEdit组件允许用户输入参数&#xff0c;然后将这些组件中的信息拼接成转换命令并在DOS窗口中运行它。 procedure…

认识springboot 之 了解它的日志 -4

前言 本篇介绍springboot的日志&#xff0c;如何认识日志&#xff0c;如何进行日志持久化&#xff0c;通过日志级别判断信息&#xff0c;了解Lombok插件的使用&#xff0c;通过Lombok自带注释更简洁的来完成日志打印&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0…

动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)

目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …

【PWN · 栈迁移】[BUUCTF][Black Watch 入群题]PWN

记一道栈迁移题目 前言 【PWN 栈迁移】[BUUCTF]ciscn_2019_es_2_Mr_Fmnwon的博客-CSDN博客 一、代码审计 总结信息如下&#xff1a; 1. 第12行存在栈溢出漏洞&#xff0c;刚好可以溢出覆盖到ebp和ret 2. 第9行可输入大量数据到bss段 二、思路过程 1.栈迁移 进能够覆盖e…

Nodejs 第八章(npm搭建私服)

构建npm私服 构建私服有什么收益吗&#xff1f; 可以离线使用&#xff0c;你可以将npm私服部署到内网集群&#xff0c;这样离线也可以访问私有的包。提高包的安全性&#xff0c;使用私有的npm仓库可以更好的管理你的包&#xff0c;避免在使用公共的npm包的时候出现漏洞。提高…