0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PWM + R2R DAC,性能惊人!

电子设计 来源:网络整理 作者:工程师吴畏 2018-06-06 16:01 次阅读

将PWM和小型R-2R梯形DAC相结合可同时提高双方的性能,它能显著减小PWM纹波,还能提高数模转换器(DAC)的分辨率。

本设计实例利用一个八电阻阵列和三个引脚,将底部的2R从连接到地改为连接到PWM输出,对R-2R梯形DAC进行了重构(图1)。

PWM + R2R DAC,性能惊人!

图1:混合式PWM/R-2R DAC。

在梯形结构中,VCC分为8段,每一级(0% PWM)到相邻更高级(100% PWM)的空隙由PWM填充。这种方法可以将纹波减小到1/8,同时分辨率也会增加额外3个高阶比特。或者你也可以从原始PWM占空比值的顶部拿走这3个比特,然后将其时钟速率乘以8。这样仍能实现8:1的纹波减小,但时钟速率的增加会将PWM噪声进一步压到滤波器的底部,得到更大的衰减。

仿真

我对这种混合方法进行了仿真。

PWM + R2R DAC,性能惊人!

图2:比较/仿真电路。

要与传统的简单低通滤波器(图2)进行比较,你应记得R-2R梯形结构的输出电阻是R,因为我建议将阵列中的两个电阻并联起来形成R(单个电阻是2R),一个10kΩ的阵列产生5kΩ的输出电阻。这就是我在传统方法中使用的电路,其中的1µF电容是相同的。我将PWM设为50%的占空比,因为这时会产生最差的纹波。仿真结果(图3)显示传统方法有约4mV的波纹,而第一种方法(在原8比特基础上增加3个新的比特)生成的纹波是493µV,相当于传统方法的1/8。第二种方法(将PWM时钟提高8倍,总比特数仍然是8)产生的纹波仅61µV,大约是原始纹波的1/65。

PWM + R2R DAC,性能惊人!

图3:仿真结果。

图4a(PWM+低通)和图4b(11位混合)是将电压从0V缓慢地一步步调到5V的复杂仿真结果。滤波器中的电容特意选用了很小的值,以便我们能看清这种情况下的纹波。在正常的R-2R梯形中增加一个阶梯状图形(图4b中的红色),以便显示PWM是如何从一级移动到下一级,甚至越过R-2R梯形顶部直到5V。

PWM + R2R DAC,性能惊人!

图4:仿真得到的基本PWM DAC(图4a,上)和混合DAC(图4b,下)的纹波。

用数字控制振荡器(NCO)技术代替PWM也一样可行。数控振荡器(增加一个值到累加器并输出进位)比PWM更有优势,因为它可以减小50%设置点附近的纹波(通过增加转换频率),这是简单PWM表现最差的地方。

用任何其它的DAC也行得通:只需将PWM/NCO/任何信号连接到最低有效位。

测试

下面是一些测试结果:我本来打算使用容差是±2%的电阻阵列,±1%甚至±½%的电阻阵列也找得到,不过我手头没有,所以我就用单个精度为1%的电阻。我将运行于16MHz的ATmega328处理器定时器timer1设定为给8位PWM使用,并使用10位ADC开展测量。由于PWM、R-2R和ADC参考的都是VCC,我们可以忽略这个因素,针对8级中的每一级只检查从ADC读取的值,PWM则设为0%和100%。理想情况下,第一步的100%输入对下一步应该没有任何影响。

PWM + R2R DAC,性能惊人!

这些值看起来非常合理。然后我使用了一种技术,借助ATmega328的功能,使用与生成PWM相同的定时器来设定模数转换,我把这种技术称之为“Slow-scilloscope”。这样我们就可以测量给定PWM周期内的纹波。图5是带低通滤波器的传统PWM(绿色)和混合(黑色+红色)的合成图。这两种方案都使用了非常小的电容,以便能看清纹波。

PWM + R2R DAC,性能惊人!

图5:测量得到的PWM和混合式DAC的纹波。

图6显示了在每种混合设置下的非同步模数转换的曲线,允许结果中的纹波作出(或多或少)随机的变化。这次使用了一个较大的电容以便获得更加真实的结果。

PWM + R2R DAC,性能惊人!

图6:测量得到的混合数模转换器纹波,电容为最终值。

总之,我们已经看到,PWM可以填充R-2R DAC阶跃之间的空隙,R-2R梯形结构可以显著减小通常由PWM加上低通滤波器产生的纹波,或者两者兼有。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4896

    浏览量

    209876
  • dac
    dac
    +关注

    关注

    43

    文章

    1971

    浏览量

    189482
收藏 人收藏

    评论

    相关推荐

    STM32G474RE DMA没有更新DAC3的DHR12R1寄存器数据,进而无波形产生怎么解决?

    实验平台:Nucleo-STM32G474RE开发板 验证功能:希望利用DMA把数据传到DAC3的DAC_DHR12R1寄存器产生波形,再通过运放的跟随输出到外部管脚 问题描述:DMA没有更新
    发表于 04-17 08:18

    stm32l4r5zip如何实现pwm脉冲调制?

    stm32l4r5zip如何实现pwm脉冲调制
    发表于 04-10 06:11

    R2R和电阻串DAC架构之间的差异分析

    同样,对于大多数人来说,DAC 只不过是一个输入端为数字信号数据而输出端为模拟信号数据的“黑匣子”。只有为数不多的人知道其在架构方面的区别,以及与 R2R 梯形架构相比一个电阻串架构所具有的优点和缺点。了解他们之间的不同之处并了解这些通用
    发表于 02-15 16:45 261次阅读
    <b class='flag-5'>R2R</b>和电阻串<b class='flag-5'>DAC</b>架构之间的差异分析

    AD5752R双极性输出电压不对怎么解决?

    是参考ExampleCode_DAC_AD5754.zip(根据AD5752R相应地修改),问题一直没有得到解决,不知道是哪出现的问题,求懂的前辈解答,谢谢!
    发表于 12-19 07:01

    使用STM32F103与AD5754R通过SPI2进行通讯没有输出是为什么?

    使用STM32F103与AD5754R通过SPI2进行通讯,时序通过示波器来检查都正确,但是没有输出。 1. 我的硬件电路如下图 2. 软件如下。 主函数如下 int main
    发表于 12-14 08:08

    AD5770R评估版没有输出是为什么?

    我购买了一块AD5770R的开发板,想控制其DAC0和DAC1输出可控电流,我已经配置了0x14 CHANNEL_ CONFIG寄存器,关闭了DAC0和
    发表于 12-04 08:12

    AD3551R LTSPICE模型和datasheet中的引脚无法一一对应怎么解决?

    AD3551R LTSPICE 模型和datasheet中的引脚无法一一对应, 1.在仿真过程中,输入端应该怎样配置才能输出特定波形。 2.AD3551R模型是否可以找到官方仿真参考电路? 3.VDAC 是DAC数字供电吗?
    发表于 11-30 06:59

    如何提高PWM-DAC的输出精度

      昨天发了一篇TI的技术文章,里面提到了一个比较有意思的电路,就是用多路PWM并联来提高PWM-DAC的输出精度。比如组合两路8bit的PWM来组合为16bit的PWM-DAC
    的头像 发表于 11-18 16:30 935次阅读
    如何提高<b class='flag-5'>PWM-DAC</b>的输出精度

    pwm相比dac有哪些优势?

    pwm相比dac的优势有么?
    发表于 10-28 07:49

    CC2640R2的外设功能介绍

    本文档详细介绍 CC2640R2 的外设功能,例如 UART,GPIO,I2C,SPI,PWM,ADC 等等,以帮助开发者快速熟悉外设的使用。通过本文档的学习,开发者能够快速进行外设的使用。 1.1
    发表于 09-22 07:30

    Si24R2F+畜牧 耳标测体温开发资料

    、自动唤醒间隔功能;发射功率由7dBm增加到12dBm,距离更远;关断电流由700nA降到500nA,功耗更低。可兼容Si24R2E,性能更加强悍。
    发表于 09-05 14:48

    Evatronix R8051XC/R8051XC2 CPU核心的配置功能

    应用程序注释 告诉您如何配置 Evatronix R8051XC/ R8051XC 2 的 Keil 8051 开发工具 。 R8051XC/ R
    发表于 09-04 06:13

    如何获取ADC电压并由DACPWM发送

    应用程序: 获取 ADC 电压, 由 PWM DAC 发送 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-ETM-M487 此示例代码显示如何获取
    发表于 09-01 06:31

    如何获取ADC电压并由DACPWM发送

    应用程序: 获取 ADC 电压, 由 PWM DAC 发送 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-ETM-M487 此示例代码显示如何获取
    发表于 08-23 07:55

    第44期-高级PWM定时器-输出8路PWM控制8个舵机SG92R-STC32系列#STC32G12K128

    PWM
    学习电子知识
    发布于 :2023年07月16日 23:46:26