在项目开发过程中,手头上的单片机没有带DAC资源,但又刚好需要使用到DAC。或者你的单片机确实具有DAC,但只有一个或两个通道,这明显是不够用的。与单片机的模式转换器(ADC)外设不同,集成ADC外设通常包含一个多路复用器,允许一个ADC模块转换连接到多个甚至数十个的模拟信号。
如果你的单片机没有数模转换器(DAC),只需使用脉宽调制信号和低通滤波器即可进行替代使用,下面我们来介绍一下具体操作。
一、需要的材料:脉宽调制、电阻、电容
这里最少需要一个电阻器、一个电容器和脉宽调制功能。接下来,只需要一种对PWM信号进行低通滤波的方法,如果你不介意输出上有一些纹波,那么基本的单极RC滤波器就可以了。它的成本低到什么程度呢?就算电路板或预算只能容纳一个电阻器和电容器,那么使用PWM改为DAC仍然是可行的选择。
我们先来介绍PWM的基础知识
看到这里的,肯定已经知道什么是脉宽调制。不过,这里还是简要回顾一下基本概念,以确保在了解低通滤波器如何准确地将数字信号转换为可编程模拟电压时拥有坚实的基础。
典型的数字时钟信号是一系列周期,其中逻辑高电压的持续时间等于逻辑低电压的持续时间。相反,PWM信号一系列周期中,其中逻辑高(或逻辑低)电压的持续时间根据外部条件而变化,并且这些变化可用于传输信息。举个例子,如果你熟悉无线电电路,你就会知道信息是通过应用某种调制的正弦信号来传输的。这种情况就类似于PWM的功能,我们使用脉宽调制代替幅度或频率调制,原理其实差不多。通过首先调制载波,然后以消除干扰的方式处理接收到的信号,可以将模拟音频信号从天线传输到收音机,并恢复原始音频信息。同样,我们可以通过对数字载波进行脉宽调制,然后将该调制信号“传输”到低通滤波器来生成可编程模拟电压。
在上图中,逻辑高电平被标识为“ON”或活动状态,逻辑低电平被标识为“OFF”或非活动状态。在第一周期中,活动状态的持续时间等于非活动状态的持续时间。然后,在接下来的两个周期中,活动状态持续时间增加一个网格宽度。这意味着非活动状态持续时间必须减少一个网格宽度,因为PWM载波频率(以及PWM周期)是恒定的。在PWM DAC的背景下,我们实际上不需要知道绝对的活动和非活动持续时间。重要的是持续时间之间的比率,我们根据PWM占空比进行讨论:
从占空比到模拟电压
在低通滤波器输出端观察到的DAC标称电压仅由两个参数决定,即占空比和PWM信号的逻辑高电压。在图中,这个逻辑高电压用A表示“幅度”。占空比、幅度和标称DAC电压之间的关系相当直观:在频域中,低通滤波器会抑制输入信号的高频分量。这种效果在时域中的等效效果是平滑或平均,因此,通过对PWM信号进行低通滤波,我们可以提取其平均值。假设占空比为50%(即活动持续时间等于非活动持续时间),并且我们使用3.3V逻辑。你可能会猜测DAC标称电压为:1.65V,因为信号一半时间处于3.3V,一半时间处于0V,因此平滑后的版本将位于中间。我们可以将其概括如下:
二、PWM转DAC的分辨率怎么样?
选择DAC时首先要考虑的规格之一是“分辨率”,它通常以“位”单位表示。我们所说的“分辨率”的真正含义是“DAC可以生成多少个不同的输出电压(或电流)?”“位数”是指控制数模电路的数据寄存器,因此10位DAC可以生成2^10=1024个不同的输出电压。那么PWM转DAC的等效分辨率,大概又是多少呢?
8个不同脉冲宽度
我们假设图中所示的PWM信号仅限于一个网格的倍数的脉冲宽度。这意味着占空比可以采用8个不同的值:0%、~14%、~29%、~43%、~57%、~71%、~86% 和 100%。每个占空比对应一个特定的输出电压,所以我们这里有一个3位DAC,因为 2^3 = 8。
要确定实际PWM转DAC的分辨率,只需应用相同的分析:你可以生成多少个不同的占空比?回答这个问题通常不太困难,因为标准PWM硬件模块的核心元件是控制脉冲宽度的N位计数器,这意味着等效DAC分辨率为2^N。
以上就是金沙js5线路单片机开发工程师分享的如何将单片机PWM作为DAC使用方法。金沙js5线路专注单片机应用方案设计与开发,提供8位单片机、32位单片机。