集成运放应用分析(中篇) ---电压输出型DAC的运放使用

一、电压输出型DAC实际应用举例

假设现在要将MCU端的幅值在3.3V的PWM转换成对应占空比输出电压0-10V可调:

3.3V PWM 转 0-10V 模拟电压的DAC设计思路

设计目标分析:
  • 输入:3.3V 逻辑电平的PWM信号,频率固定(例如10kHz),占空比(0% - 100%)可变。

  • 输出:与PWM占空比成线性比例的0V至10V直流电压。

  • 核心任务:1. 低通滤波(将PWM转换为平滑的直流电压)。 2. 放大与电平移位(将0-3.3V的范围变换到0-10V)。本例子不需要考虑电平移位。

两级设计思路:

第一级:无源或有源低通滤波(缓冲与初步滤波)

  • 目的:将PWM方波转换为纹波较小的直流电压,并提供高输入阻抗,避免给MCU的PWM输出引脚带来负担。

  • 电路选择简单RC无源滤波 + 电压跟随器

    • 一个简单的RC滤波器(例如R=10kΩ, C=10μF,截止频率 ~1.6Hz)可以滤除大部分高频分量。

    • 为什么加电压跟随器? 根据戴维宁定理,当负载阻抗(Z_load)远高于滤波器的输出阻抗(R)时,负载对输出电压的影响很小,电压跌落可以忽略不计。

    • 反之,如果负载阻抗很低(与R可比或更低),负载会从滤波器吸取较大电流,导致输出电压下降(电压跌落),同时滤波器的截止频率也会因为负载阻抗而改变(因为负载阻抗与电容C并联,改变了滤波时间常数)

    • RC滤波器的输出阻抗等于电阻R(10kΩ),这在低阻抗负载下会导致电压跌落和滤波效果变差。加入一个单位增益的电压跟随器,利用其高输入阻抗、低输出阻抗的特性,可以完美地隔离RC网络和后级电路,保持滤波效果。

  • 本级输出:一个比较平滑的 0 ~ 3.3V 直流电压(V_in_pwm * DutyCycle)。

第二级:同相放大器(执行核心的缩放与移位)

  • 目的:将0-3.3V的输入线性地映射到0-10V的输出。

  • 电路选择同相运算放大器电路。这是最关键的一步。

  • 设计计算

    • 我们需要一个输出关系:V_out = A * V_in + B

    • 当 V_in = 0V 时, V_out = 0V => 0 = A * 0 + B => B = 0

    • 当 V_in = 3.3V 时, V_out = 10V => 10 = A * 3.3 => A = 10 / 3.3 ≈ 3.03

    • 同相放大倍数公式:A = 1 + Rf / R1 = 3.03

    • 因此,我们需要 Rf / R1 = 2.03。选择标准电阻值,例如 R1 = 10.0kΩRf = 20.3kΩ(可以用20kΩ固定电阻和500Ω可调电阻串联,用于微调增益)。

  • 为什么用同相不用反相放大器?

  1. 高输入阻抗:同相放大器的高输入阻抗是第一级RC滤波器所需要的,可以保证滤波效果不因负载而改变。

  2. 简单的正增益:我们需要一个 Gain = 3.03 的正增益来将0-3.3V映射到0-10V。如前面所讨论,用同相放大器实现 Vout = A * Vin 是最直接的方式。如果用反相放大器实现 Vout = -3.03 * Vin,还需要额外一级电路来反相,增加了复杂性和误差。

电源要求
第二级运放的正电源电压必须高于10V,例如选择±12V或+15V的单电源运放,以确保输出能达到10V而不饱和。第一级运放如果使用同一芯片(双运放),则共享同一组电源。

完整信号链总结
MCU_PWM -> RC滤波器 -> 电压跟随器(缓冲) -> 同相放大器(Gain≈3.03) -> 0-10V Output

优点 of this Approach:

  • 高输入阻抗:第一级的缓冲器保护了MCU的PWM输出。

  • 优秀的滤波:RC + 缓冲的方案提供了干净、稳定的直流电压。

  • 线性度好:运放电路提供了良好的线性放大。

  • 易于调整:通过调节Rf可以精确校准满量程10V输出。

  • 成本效益高:通常一颗双运算放大器芯片(如TL082, LM358(注意LM358是单电源运放,输出无法完全到0V,需注意)或更精密的OPA2172)就能实现整个电路。

比较两种结构:

  • 方案A(原方案):PWM -> RC滤波 -> 电压跟随器 -> 同相放大器

  1. RC滤波器的负载:电压跟随器具有极高的输入阻抗(>100MΩ)。这意味着RC滤波器(R=10kΩ)几乎是空载的。其滤波效果(截止频率 fc=1/(2πRC))非常精确,不会因为后级负载而改变。滤波后的电压信号无衰减。

  2. 同相放大器的输入:电压跟随器具有极低的输出阻抗(<100Ω)。这意味着它可以轻松地驱动后级同相放大器所需的输入电流,而不会引起信号压降。同相放大器从此获得了了一个“强壮”、“干净”的理想信号源。

  3. 总结:此方案优先保证了信号调理的精度

  • 方案B(变换后):PWM -> RC滤波 -> 同相放大器 -> 电压跟随器

  1. RC滤波器的负载:RC滤波器直接连接到同相放大器的高输入阻抗上。这其实和方案A中跟随器的作用类似,滤波效果依然很好,信号无衰减。在这一步,方案A和B几乎没有区别。

  2. 同相放大器的输出:同相放大器的输出阻抗本身已经较低(通常几十到几百欧姆)。但如果它需要驱动重负载(例如一个长的电缆、一个低阻抗的执行器、或多个并联的设备),其输出电流能力可能不足,导致输出电压下降(负载调节率差)。

  3. 跟随器的作用:此时,在放大器后增加一个电压跟随器,是作为一个功率缓冲器(Buffer) 使用。它的低输出阻抗可以轻松提供更大的电流,确保在连接重负载时,输出电压也能稳定在预设值。

使用建议(不在乎成本的情况下)

  • 如果后级负载是固定的、高阻抗的(例如,只连接到一个PLC的模拟输入端口,输入阻抗在100kΩ以上),那么方案A更优。它结构清晰,用最少的元件完成了信号调理和放大。同相放大器自身的输出能力足以驱动此类负载。

  • 如果后级负载是变化的、或低阻抗的(例如,需要驱动一个500Ω的负载,或者需要连接多个设备),那么方案B更优,或者需要在方案A的基础上再在最后增加一个缓冲器。此时的跟随器主要目的是提供电流驱动能力,防止负载影响放大器的输出精度。

最终结论:原方案(A)是标准且通用的设计,优先保证了信号完整性。将跟随器放到最后(B)是一种针对高驱动需求场景的特定优化。在不确定负载情况时,最稳健的做法是采用“A+B”的组合:RC滤波 -> 跟随器 -> 同相放大器 -> 跟随器,用三个运放实现滤波、放大和驱动的全功能。

### 电压DAC的工作原理 #### 数字信号到模拟信号的转换过程 电压DAC的核心功能是将输入的数字信号转化为对应的模拟电压输出。其基本工作流程如下:接收一组二进制编码形式的数字数据,经过内部电路计算和调整后,生成一个与该数值成比例关系的直流电压输出[^1]。 #### 工作机制中的关键组件 为了完成上述任务,典电压DAC通常由以下几个部分组成: - **权电阻网络** 或者 **R-2R梯形网络**:这是实现数字量向模拟量转化的主要结构之一。它利用不同阻值的比例分配来加权各比特位的影响程度,从而形成最终叠加后的总电流或电压- **运算放大 (Op-Amp)**:作为缓冲级存在,能够提高负载能力并降低输出阻抗。同时还能增强线性度以及稳定性等方面的表现性能[^2]。 #### 输出特性的描述 当给定N位分辨率时,则理论上可以获得\(2^N\)种不同的离散电平状态;实际应用当中由于受到噪声干扰等因素制约可能会有所减少。每一个新增加的有效地址都会使可分辨最小步长减半,进而提升整体精度水平。例如对于8bit的产品而言,在满刻度范围内总共会有256阶均匀分布的小台阶状变化趋势呈现出来[^3]。 ```python import numpy as np from matplotlib import pyplot as plt def dac_output(digital_value, v_ref=5.0, n_bits=8): max_val = 2 ** n_bits - 1 analog_voltage = digital_value / max_val * v_ref return analog_voltage digital_values = range(256) analog_voltages = [dac_output(val) for val in digital_values] plt.figure(figsize=(10, 6)) plt.plot(digital_values, analog_voltages, label="DAC Output", color='blue') plt.title('Digital to Analog Conversion Example with an 8-bit DAC', fontsize=14) plt.xlabel('Digital Input Value', fontsize=12) plt.ylabel('Analog Output Voltage(V)', fontsize=12) plt.grid(True, linestyle='--', alpha=0.7) plt.legend(fontsize=10) plt.show() ``` 此段代码展示了理想条件下简单版本的数模变换逻辑,并绘制出了相应曲线图以便更直观理解两者间映射关联规律特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值