根据此原理图,在 VCC/2 处使用 12V 供电,我原本预计 ADC_IN 接近 0V,但实际约为 0.75V。理想情况下,当反相和非反相输入相等时,ADC_IN 将为零。这将用于测量 4-20mA 的电流,将其转换为 0-1V 输出,但这个偏移量太高了。LM358 是否不合适?
\endgroup
最佳答案
4
如果该电路正常工作,那么负反馈将确保反相和非反相输入具有相同的电位,在本例中约为 +3V。你会期望五欧电视= 0伏五哦乌电视=0五V_{OUT}=0V然后,运算放大器必须通过 R24 吸收所有电流,即:
I_{R24} = \frac{V_{INV}-V_{OUT}}{R_{24}} = \frac{(+3V)-(0V)}{1k\Omega} = 3mA
事实上,对于这款运算放大器或许多运算放大器来说,这实在是太多了。即使它们声称具有“轨到轨”输出,或“包括地”的输出电压范围,当吸收超过微安的电流时,它们根本无法使其输出接近地。
(第 16 页)的图 5-12 中,我们可以看到 LM358 输出在吸收电流时可以离地有多近:
如你所见,当吸收 3mA 电流时,输出不会下降太多五−+ 1伏= + 1伏五−+1五=+1五V_- + 1V=+1V,这正是您的经历。
不幸的是,除非你给这个运算放大器提供一个负电源,比如 -2V 或更大,否则你不可能实现让这个运算放大器输出零伏的目标。如果没有这样的负电源,你可以接近零伏,但仍然无法达到零伏,有两种简单的方法:
-
通过增加反馈电阻 R24 和所有其他外围电阻来降低输出电流要求。如果它们都是 10kΩ,输出电流将减少 10 倍。无论你最终采用哪种解决方案,你都应该这样做,因为 1kΩ 对于此类应用中的电阻来说太低了。事实上,尝试使用R21=R22=R23=R24= 100千欧姆R21=R22=R23=R24=100钾ΩR_{21}=R_{22}=R_{23}=R_{24}=100k\Omega,看看 LM358 的输出在实际生活中能达到多低。做好失望的准备吧。
-
通过在运算放大器输出和地之间添加一个电阻来完成部分工作,可以减轻吸收所有电流的责任。如果您愿意,可以将其称为“下拉”电阻。当输出应该超过 +3V 时,该电阻不应使输出过载,因此请根据某个最大输出电流(例如 5mA)进行计算:
R磷乌LL DOW否=+ 3.3伏5米≈ 680 ΩR磷乌大号大号德哦西否=+3.3五5米一个≈680ΩR_{PULLDOWN}=\frac{+3.3V}{5mA} \approx 680\Omega
如果运算放大器的负电源为 0V,则根本无法使其输出 0V ,对此你也无能为力。显而易见的解决方案是使用远低于0V 的真正负电源为运算放大器供电。
驱动 ADC 时,最简单的解决方案就是妥协。如果您知道运算放大器的输出电压下限为 +0.1V(如果输出电流只有微安,这是合理的),那么设计系统以产生精确的电压,而不是更低的电压,并在软件中补偿偏移。当然,您会损失 0.1V 的 ADC 转换范围,但与仅为单个运算放大器构建负电源相比,这只是一个小小的代价。
我不确定,但我相信这是 4-20mA 标准的制定者选择停止在 4mA 而不是零的原因之一。这意味着电流检测放大器永远不需要输出 0V(或更低),因此可以由单端电源供电。另一个原因是,当系统发现电流明显小于 4mA 或根本没有电流时,它可以识别故障情况(可能是传感器断开连接)。
\endgroup
1
-
\begingroup
感谢您的详细解释。发布后,今天早上我考虑添加负电源,但我真的想避免这样做,因为 PCB 上没有其他东西需要它。我会按照您的建议进行修改。干杯。
\endgroup
–
|
LM358 的负电源引脚V-
4 连接至GND
。
查看 TI LM358负轨 (V–) 的V O 电压输出摆幅与轨参数的关系为:
这意味着,当输出电流为 5 mA 时,LM558 输出通常只能达到负轨 (本例中为 GND) 的 0.75 V 以内。当输出电流较低时,输出电压可以更接近负轨。
一个选择是将V-
负电源改为小于 0 V。
类似问题有另一种建议:
您可以在线搜索“单电源”运算放大器。有些运算放大器带有“微调选项”,可帮助消除任何电压输出摆动 –
\endgroup
|
LM358 是不是不合适?
这是合适的,只要了解它的工作原理。LM358 有一个 B 类输出级,带有 100μA 电流吸收负载。输出级不会吸收低于 0.7V 的电流 – 所有电流都由 100μA 吸收器提供。
因此,为了通过 ADC 的明显负载将电压降至 0V,您需要一个下拉电阻,或者更好的是,需要一个配置为略大于 0.1mA 电流的下拉电流源。
实际上,双晶体管电流吸收器工作良好,因为吸收器两个分支上的集电极电压大致相同(0.7V 对 0V..3V – 对澳大利亚来说已经足够好了)。
对于 358 的弱输出来说,1kΩ 电阻有点太低 – 我建议改用 10kΩ。
因此,像这样的电路可以正常工作:
– 使用
这将用于测量 4-20mA 电流,并将其转换为 0-1V 输出
鉴于电路目前配置为基本不执行任何操作,我不确定这将如何工作。但我可以建议一个略有不同的方法,它将工作得相当好:
电流与电压的关系是负的,但这不是问题,而且很容易在固件中解决。范围的两端都向 0.5V 移动了一点,这样它们就完全在 0.000V 到 1.000V ADC 范围内了:
该电路的特点如下:
-
输入电压为恒定的 1V – 足够低,可以容纳几乎任何 4-20mA 传感器。
-
运算放大器在其线性范围内运行良好,输出负载最小。这最大化了其直流增益,从而最大化了响应的线性度。
-
ADC 的输入端有一个相对较低的电阻源。这对于大多数 ADC 来说都是理想的。
-
对于 0mA 或更高的输入电流,ADC 输入电压本质上限制在 0V..1.5V 范围内。
-
不存在依赖于严格电阻匹配的共模误差。传统的单、双和三运算放大器仪表/差分放大器存在该问题。
通过在传感器和输入之间添加串联电阻以及基于晶体管的钳位,可以进一步保护电路免受输入电源短路的影响。
1.01V 电源可来自 ADC 参考电压,或任何其他合适的参考电压,例如通过分压古老的 TL431 的输出。
在所有此类电路中,每个设备中的静态增益和偏移都必须校准。即您需要将受控的 4mA 和 20mA 应用于输入,并让 MCU 将 ADC 读数存储在非易失性存储器中。然后这些范围端点将用于将 ADC 读数转换为电流。
基于固件的校准比调整电阻器更容易处理。R1、R2、R3 和 R4 应为 1% 或更好的金属或薄膜。R5 和 R6 可稳定运算放大器,并且不太敏感。5% 厚膜就足够了。
\endgroup
1
-
\begingroup
“我不确定这会如何工作,因为电路目前配置为基本上不做任何事情。”是的,我修改了原理图(并进行了测试),以演示两个(基本上)相同的电压导致 0.75V 偏移的问题。实际电路包括分流电阻等,这不会对这个问题产生影响。谢谢。
\endgroup
–
|
如果将电阻 R21 至 R24 从 1k 欧姆增加到 250k 欧姆,内部电流吸收器(,但通常要高得多)将能够将输出降至 200mV 以下。如果我们将最大 Ios 设为 150nA,则由于电阻增加而导致的最大输出误差(将表现出温度敏感性并因单位而异)将为 38mV。这比运算放大器 Vos 差 10 倍左右,但对您来说可能已经足够了。
\endgroup
|
|