减轻 PWM 的滤波要求

经典脉宽调制器 (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.mzph.cn/news/18127.shtml

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

相关文章

【面试】某公司记录一次面试题

文章目录 框架类1. Spring boot与 spring 架相比&#xff0c;好在哪里?2. Spring boot以及 Spring MVC 常用注解(如requestingMapping&#xff0c;responseBody 等)3. 常用的java 设计模式&#xff0c;spring 中用到哪些设计模式4. SpringIOC是什么&#xff0c;如何理解5. AOP…

设计模式之外观模式

外观模式 本质&#xff1a; 封装交互&#xff0c;简化调用 何时使用外观模式 相关模式 外观模式经典代码&#xff1a; package com.tao.design.facade;/*** projectName: DesignMode* package: com.tao.design.facade* className: ServiceA* author: TT_Hugo* description…

替换linux的文泉驿正黑fonts-wqy-zenhei字体 替换linux默认中文字体

WSL 怎么替换 linux 的文泉驿正黑 fonts-wqy-zenhei 字体 WSL 怎么替换 linux 默认中文字体 在 wsl 中默认是没有 gnome 界面或者 xface 的&#xff0c;但是我需要使用 wsl 开发 electron 或者使用 chrome 浏览器。这个时候系统就会调用默认的系统字体了。 我使用的是 debian…

Android 9系统源码_音频管理(一)按键音效源码解析

前言 当用户点击Android智能设备的按钮的时候&#xff0c;如果伴随有按键音效的话&#xff0c;会给用户更好的交互体验。本期我们将会结合Android系统源码来具体分析一下控件是如何发出按键音效的。 一、系统加载按键音效资源 1、在TV版的Android智能设备中&#xff0c;我们…

Linux - gcc/g++工具使用

gcc/g是用于编译C/C程序的编译器 1.编译过程 1. 预处理&#xff08;头文件展开&#xff0c;条件编译&#xff0c;进行宏替换&#xff0c;去注释等) 2. 编译&#xff08;C语言汇编语言) 3. 汇编&#xff08;汇编->可重定位目标二进制文件&#xff0c;不可以被执行的&#xff…

【LLM系列之指令微调】长话短说大模型指令微调的“Prompt”

1 指令微调数据集形式“花样”太多 大家有没有分析过 prompt对模型训练或者推理的影响&#xff1f;之前推理的时候&#xff0c;发现不加训练的时候prompt&#xff0c;直接输入模型性能会变差的&#xff0c;这个倒是可以理解。假如不加prompt直接训练&#xff0c;是不是测试的时…

kafka集群搭建(Linux环境)

zookeeper搭建&#xff0c;可以搭建集群&#xff0c;也可以单机&#xff08;本地学习&#xff0c;没必要搭建zookeeper集群&#xff0c;单机完全够用了&#xff0c;主要学习的是kafka&#xff09; 1. 首先官网下载zookeeper&#xff1a;Apache ZooKeeper 2. 下载好之后上传到…

IP 监控软件

IP 监控软件可帮助管理员主动监控网络资源。随着各种设备连接到网络&#xff0c;监控设备和接口可能很复杂&#xff0c;为管理员提供这些设备的IP监控&#xff0c;了解其各种性能指标和问题。 使用有效的 IP 监控软件的优势 使用有效的 IP 监控系统和一套全面的 IP 监控工具&…

qt子进程和父进程读写数据通信

进程A&#xff08;例如主程序&#xff09;创建了一个QProcess B&#xff0c;这个B就称为A的子进程&#xff0c;而A称为B的父进程。 这也称为进程间通信&#xff0c;有多种方式&#xff1a; TCP/IPLocal Server/Socket共享内存D-Bus &#xff08;Unix库&#xff09;QProcess会…

Moonbeam:开发者的多链教科书

了解波卡的技术架构&#xff0c;只需掌握3个关键词&#xff1a; Relay Chain&#xff08;中继链&#xff09;&#xff1a;Polkadot将自身视作多核计算机&#xff0c;承载区块链底层安全架构的辐射中心。Parachain&#xff08;平行链&#xff09;&#xff1a;在“Layer 0”架构…

Postman如何导出接口的几种方法

本文主要介绍了Postman如何导出接口的几种方法&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 前言&#xff1a; 我的文章还是一贯的作风&#xff0c;简确用风格&#xff08;简单确实有用&#xff09;&am…

【从零开始学习JAVA | 三十四篇】IO流

目录 前言&#xff1a; IO流介绍&#xff1a; IO流的常见方法&#xff1a; 1.字节流类&#xff1a; 2.字符流类&#xff1a; 总结&#xff1a; 前言&#xff1a; IO流就是存入和读取数据的解决方案&#xff0c;并且他是一个知识点很多的章节&#xff0c;因此我们关于IO流…

Jmeter —— jmeter接口自动化测试操作流程

在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

ES开启身份认证

文章目录 X-Pack简介之前的安全方案ES开启认证ES服务升级https协议开启集群节点之间的证书认证 X-Pack简介 X-Pack是Elastic Stack扩展功能&#xff0c;提供安全性&#xff0c;警报&#xff0c;监视&#xff0c;报告&#xff0c;机器学习和许多其他功能。 X-Pack的发展演变&am…

Pytest学习教程_测试报告生成pytest-html(三)

前言 pytest-html 是一个用于生成漂亮的 HTML 测试报告的 pytest 插件。它可以方便地将 pytest 运行的测试结果转换为易于阅读和理解的 HTML 报告&#xff0c;提供了丰富的测试结果展示功能和交互性。 一、安装 # 版本查看命令 pytest版本&#xff1a; pytest --version pyte…

VGN N75pro说明书

VGN N75pro说明书 1、封面和最后一页 2、第01、02、03 3、第04 4、第05

面试总结-Redis篇章(十)——Redis哨兵模式、集群脑裂

Redis哨兵模式、集群脑裂 哨兵模式哨兵的作用服务状态监控 Redis集群&#xff08;哨兵模式&#xff09;脑裂解决办法 哨兵模式 为了保证Redis的高可用&#xff0c;Redis提供了哨兵模式 哨兵的作用 服务状态监控 Redis集群&#xff08;哨兵模式&#xff09;脑裂 假设由于网络原…

344.翻转字符串+387.字符串中的第一个唯一字符

目录 一、翻转字符串 二、字符串中的第一个唯一字符 一、翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverseString(vector<char>& s) {int start0;int end s.size()-1;while(start < end){swap(s[sta…

3ds MAX 绘制喷泉

首先绘制一个小圆柱体当做喷头&#xff1a; 在粒子系统内选择【超级喷射】&#xff0c;并设置对应的参数&#xff1a; 轴和平面的扩散代表了我们看到的水柱能占据多大的面积 另外比较重要的参数是粒子运动和粒子计时 前者是粒子移动的时间也就是喷射的速度 后者代表了喷射出的…

构建语言模型:BERT 分步实施指南

学习目标 了解 BERT 的架构和组件。了解 BERT 输入所需的预处理步骤以及如何处理不同的输入序列长度。获得使用 TensorFlow 或 PyTorch 等流行机器学习框架实施 BERT 的实践知识。了解如何针对特定下游任务(例如文本分类或命名实体识别)微调 BERT。为什么我们需要 BERT? 正…