PWM通过RC低通滤波器模拟DAC
当我们电路需要DAC而单片机并没有DAC外设时,则可采用PWM通过RC低通滤波器来模拟实现DAC功能。
RC低通滤波器
当采用低通滤波器模拟DAC时,PWM频率应远大于RC低通滤波电路的截止频率fc=1/2πRC(10倍以上)。输出电压为Vout=Vcc*Duty。
在使用此电路时,应注意:
1、一般情况下,当电容C较小,电阻R较大时,输出电压损耗较小,纹波较大;当电容C较大,电阻R较小时,输出电压损耗较大,纹波较小。所以,为了获取线性度较高的精确DA转换,一般采用较小电容并尽量不要使用电解电容。
2、为了提高输出的驱动能力,一般会在RC低通滤波器器之后还会加一级高性能的电压跟随,并在跟随器输出的地方加上一个滤波用的电解电容,使输出电压进一步变得光滑。但是需要注意的是,这时的输出电压里可能含有较多的交流 谐波成分,如果处理不当,电压跟随器有可能自激。解决的办法就是使用一个小的去藕电容。而且这里电容的放置顺序必须是电解电容在前,去藕电容在后!
RC低通滤波器+电压跟随器
3、如果输出电压精度和线性度要求不高,但是对纹波要求却很高,或者这个电压比较固定时,可以使用电容较大的滤波组合。因为,虽然大电容的直流损耗较大,但是我们可以通过调节PWM占空比来达到要求的输出电压,或者通过一级AD转换的反馈来实现精确的固定电压输出。只是这里仍然要加一级电压跟随器,以便于后级采集电路使用,且AD采集点放置在跟随器输出处。
4、如果一级RC低通滤波器达不到效果,则可使用多级RC低通滤波器进一步提高输出平滑度。
二级RC低通滤波器
PWM通过RC低通滤波器模拟DAC的更多相关文章
- 比例阀驱动电路后级PWM滤波尖刺如何消除?PWM通过RC低通滤波器模拟DAC
双头比例阀驱动电路,采用单片机输出2路PWM,分别驱动功率器件(U100的2和4脚),经过U100的8和10脚输出供电电源的高压PWM波形,这个高压PWM经过R104和R114分别采样后经过电流放大器 ...
- 一阶RC低通滤波器详解(仿真+matlab+C语言实现)
文章目录 1 预备知识 2 simulink 仿真 3 simulink 运行结果 4 matlab实现 5 matlab运行结果 6 C语言实现 7 C语言运行结果 如果本文帮到了你,帮忙点个赞: ...
- PWM,SBUS,PPM信号转模拟电压的方案
PWM,SBUS,PPM信号转模拟电压的方案 -----------------本文由"麦粒电子"撰写,并提供相应产品服务.---------------- 案例场景 有个内部采用 ...
- Arduino101学习笔记(五)—— 模拟IO
1.配置IO管脚 //***************************************************************************************** ...
- SAE J1850 VPW PWM, SAE J2411 SWC, ISO 11898 CAN, SAE J1708, Chrysler CCD 接口芯片电路
SAE J1850 VPW 接口芯片电路 SAE J1850 PWM 接口芯片电路 SAE J2411 SWC 接口芯片电路 ISO 11898 CAN 接口芯片电路 CANH 和CANL 上的电容 ...
- The Secret Mixed-Signal Life of PWM Peripherals
The Secret Mixed-Signal Life of PWM Peripherals Pulse-width modulation (PWM) peripherals have enjoye ...
- RC滤波器
1.一阶RC低通滤波器 RC低通滤波器的电路及其幅频.相频特性如下图所示,输入电压为ex,输出电压为ey 其中ζ=RC,截止频率f=1/2πRC. 2.一阶RC高通滤波器 其中ζ=RC,截止频率f=1 ...
- 浅浅的分析LED呼吸灯的实现和PWM的关系
前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸灯的效果,实验进行的很成功,但是机器当仅输出高/低电平的时候是怎么样才能做到渐亮渐暗(输出电压)的变化呢?在这里 ...
- M451 PWM对照数据手册分析
PWM_T Struct Reference Control Register » Pulse Width Modulation Controller(PWM) typedef struct { ...
随机推荐
- 随机生成uuid序号
function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); ...
- 【LeetCode】862. 和至少为 K 的最短子数组
862. 和至少为 K 的最短子数组 知识点:单调:队列:前缀和 题目描述 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K . 如果没有和至少为 K 的非空子数组,返回 -1 . 示例 ...
- ms sql 带自增列 带外键约束 数据导入导出
1,生成建表脚本 选中要导的表,点右键-编写表脚本为-create到 ,生成建表脚本 2,建表(在新库),但不建外键关系 不要选中生成外键的那部分代码,只选择建表的代码 3,导数据,用SQL STU ...
- 1 行Python代码能干哪些事,这 13个你知道吗?
首先你要了解一下Python之禅,一行代码输出"The Zen of Python": python -c "import this"""& ...
- DP 习题
一.简单基础dp 这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的.主要包括递推.背包.LIS(最长递增序列),LCS(最长公共子序列),下面针对这几种类型,推荐一下比较好的学 ...
- jquery监听动态添加的input的change事件
使用下面方法在监听普通的input的change事件正常 $('#pp').on('change', 'input.videos_poster_input', function () { consol ...
- mysql5.5根据条件进行排序查询 TP5
用到了 order by if 和 count 使用的是TP5.0 $sql = Db::name('teacher') ->alias('t') ->join('user u', 'u. ...
- 创建一个 Orchard Core CMS 站点
本文通过引用项目模板的方式创建Orchard CMS站点. 创建项目有不同的方式可以为Orchard Core创建站点和模块.你可以在这里了解更多关于它们的信息.在本指南中,我们将使用我们的" ...
- 事项同步事项编码(mt_code)长度超过数据库限制的varchar(32)线上问题
改下长度限制重新同步下,可以恢复正常!
- verifycode验证码模版
# -*- coding:utf-8 -*- from django.shortcuts import HttpResponse def verifycode(request): # 引入绘图模块 f ...