用于极低电流的跨阻放大器

电器工程 跨阻抗 低噪声放大器
2022-01-21 16:38:44

我目前正在从事一个项目,该项目需要我测量来自电化学传感器的非常低的电流(大约在 100 pA 到 10 uA 的范围内)。

传感器是一种新方法,我去的大学仍在开发中,因此电流非常低。

我的任务是通过使用阻抗谱为传感器实现基于微控制器的读出电路。这就是我需要跨阻放大器 (TIA) 的原因。

我昨天搜索了网络和大学图书馆,但在这个当前范围内,我真的找不到太多关于 TIA 的信息。当然,我知道我可能会遇到各种噪声、寄生电容、振荡等问题,但它不一定是完美的,我只需要一些帮助来了解如何解决这个问题。

问题

  1. 宽输入电流范围
  2. 非常低的电流

问题 1 的解决方案
我认为最好的解决方案是像这样使用多个电阻器,通过预先手动设置引脚跳线或使其可由微控制器控制来选择增益电阻器。虽然我认为这种设置也有一些缺点,因为我认为如果我理解正确的话,它会进一步引入可能导致 TIA 振荡的寄生电容,但这是我目前唯一的想法。

在此处输入图像描述

问题 2 的解决方案

  • 具有电流前置放大器之类的多级放大器,因此普通的 TIA 可以处理它,但我没有类似的经验。我只能找到一些像这个那个一样模糊的电路,但在我深入分析如此复杂的电路之前,我希望获得一些更专业的意见。
  • 输入失调电流非常低的运算放大器,例如LMP7721,我从这个线程中得到的。这里的问题是我需要一个接近 10 GOhm 的精确电阻(这很荒谬,如果我在 PCB 上没有放置电阻,我可能会得到一个更低的电阻),并且运算放大器在模拟接近理想值时已经显示如下所示的一些问题

我从 LMP7721 产品网站上的示例计算中获得的使用值。问题是如果我降低 C1 的值,输出开始振荡,如果我增加该值,输入电流和输出电压之间的相移会变大,这对阻抗谱非常不利。此外,频率也会影响相移和稳定性。

  • 各种芯片制造商的集成解决方案,但我能找到这样一个芯片的最高增益约为 5*10^5。

我期望我的问题没有完全的解决方案,只是轻推或指向正确的方向或一些我还没有想到的想法。


编辑 1
澄清一下,因为我不确定我是否可以理解地解释它:我必须测量的电流取决于所使用的传感器类型。我为传感器提供一个幅度为 10mV 且没有偏移电压的正弦波。不同传感器的阻抗范围为 |Z| = 10^3 到 10^8 欧姆,但对我们来说最有趣的部分(因为大多数传感器都属于这一类)在 10^5 到 10^8 之间。因此,作为传感器的输出,我得到一个幅度为 100 pA 到 100 nA 的电流正弦波,具体取决于所使用的传感器类型。

因此,我特别感兴趣,例如,测量 0 到 100 pA 之间的电流,而不是 100 pA 到 100 nA 之间的电流,所以我的分辨率应该高于 100 pA。

如果我造成混乱,我很抱歉,但我不必在一次测量中测量 100 pA 到 100 nA 的电流。对于特定传感器,我必须能够正确测量 0 到 100 pA(分别为 -100 pA),而对于下一个传感器,我可能必须能够测量 0 到 100 nA 之间的范围。

一些关键数据点:

  • 电源:USB 5V,板载转换为 +/- 3.3V
  • 使用的微控制器:24 MHz 的 MSP430FR2355
  • 输入信号:10 mV 幅度正弦波,频率在 1 Hz 和 10 kHz 之间
  • 输出信号:100 pA 至 100 nA 幅度正弦波
  • 目标:将当前的正弦波(其幅度在测量过程中不变)转换为电压信号,以便我能够使用 ADC 将其读出。

编辑 2
我不会对 MSP430 进行任何复杂的计算。该芯片仅用于信号生成、信号采样和与 PC 通信。也许我会尝试在微控制器上实现信号平均,否则我会将原始 ADC 数据发送到 PC 并在那里进行计算。

4个回答

在我目前的工作中,我已经为这些乐器制作了一些。这是我一路上捡到的几件事:

不要直接使用多级放大器。如果你能在一个元素中获得你需要的收益,你会更好。如果这样做,请在第一阶段尽可能多地获得收益。

说到增益...尽量避免使用 1 GΩ 反馈电阻和无电容器。使用高质量的电阻器,不要只相信供应商的信息。我们必须测试很多,然后才能找到足够安静的。超过 1 GΩ 会导致各种麻烦。这应该足以让您将信号输入一个像样的 ADC。如果您小心布局/布线,您可以达到 10 GΩ。

我看到您已经确定需要非常低的输入偏置电流运算放大器。你有一个有点极端,可能有点松鼠。这可能就是您需要该反馈上限的原因。在这种情况下,我使用 AD549 运气不错。

保持一切清洁和物理隔离。不要让反馈电阻接触 PCB,让它在它的引线上粘一点。在这些级别上,指纹和污垢真的会毁了你的一天。

良好的 PCB 布局是必须的,使用保护环和接地层。

不要想太多。您只看到 5 个数量级的动态范围(1e-10 .. 1e-5 A)。此外,100 pA 的最低电流也不是那么具有挑战性。

所以为了简单起见,我推荐单级、固定增益、TIA。使用带有 JFET 输入的东西并选择反馈电阻器,以使 10µA 最大化您的输出电压范围。对于您要测量的电流,您的 10G 超出了上限。例如,对于 5V 参考,您的反馈电阻器可能是 500k,因此 10 µA 可以最大限度地扩大您的动态范围。

将它运行到一个标准的 24 位 ADC 中,你就完成了。

我建议不要将 CMOS 运算放大器用于精密任务,因为它们的频率噪声相当低。如果您确实需要轨到轨输出,请考虑 CMOS,但通常有办法绕过它。

我花了几年时间在 pA 范围内构建 TIA,带宽为 1kHz。需要注意的一件事是,模拟在这些值范围内分解。你必须测试一切一千次。模拟将指向答案,但您必须构建它。

我们使用 LTC6268(不是 -10 版本)作为主级 - 然后我有 LPF、偏移补偿和差分驱动器。但是主级使用了一个100M的反馈电阻,布局非常仔细。

在某个阶段,我订购了 1002 封装(长而薄)的定制 1G 电阻器,带有用于引线键合的单面端子。这是有关单面电阻器的更多信息。具有 3 面会增加寄生电容。我测量了标准 1206 1G 电阻与单面 1002 1G 电阻的 220fF 与 18fF,这有助于增加带宽。

布局必须非常仔细地考虑。我们在第一阶段的输出测量了 2mV 的偏移,但我们无法找出原因。我们追溯到 LTC6268由于低于标准的接地而在 1.5GHz 左右内部振荡。输出根本没有振荡,只是在内部振荡。我们通过使用电场探头发现了这一点。由于 LTC6268 有 500MHz 和 4GHz 两种类型,因此芯片上的区别在于 500MHz 上的补偿网络有助于以牺牲带宽为代价提高稳定性——这意味着运算放大器内部仍然具有振荡能力高于它可以输出的频率。

我要说的是,在如此低的电流下会发生奇怪的事情,并且要非常小心布局。LTC6268 数据表有一些出色的布局技巧。ADA4530-1 数据表也有此内容,以及如何在组装后正确清洁电路板的指南。无论如何,我建议通读两者。

好的,所以您想在 1Hz 到 10kHz 的范围内测量传感器的阻抗。从数字(10mV,100p1...100nA)来看,它介于 100kOhm 和 100MOhm 之间。

在数据采集方面,最简单的解决方案是使用 24 位 ADC,因此您有足够的动态范围来完全避免范围切换。如果您还想准确测量阻抗的相位,那么您需要足够高的采样率,以使 10kHz 正弦波看起来不会一团糟。生成测试信号的 DAC 还应具有足够高的采样率以产生干净的正弦波。CPU 还应该有足够的能力来处理数据。

如果您获得了足够的样本,那么您还可以使用平均来减少噪声。基本上,如果您获得几个正弦波周期,并将其与\$ e^{j \omega t} \$相乘,然后平均结果,那么您可以直接提取相位和幅度。通过使用平均,即使信号隐藏在噪声中,您也可以提取信号。

如果您的传感器检测到一些环境 50/60Hz 场,那么此方法将摆脱它们:因为它仅检测感兴趣频率的幅度和相位,它将拒绝其他频率的噪声和干扰。如果您只是在跨阻输出端测量电压,情况并非如此,您会得到更多的噪声。

您还可以使用更快的日志扫描。

我通过声卡获得了纳安级分辨率,而电流检测电阻只有几十欧姆。所以被测量的电压非常小,它通过一个仪表放大器,然后在一堆周期内取平均值。这种方法的好处是,它可以让您在时间与分辨率/噪声之间进行权衡。如果您发现需要更低的噪声和更高的分辨率,只需使用更长的采集时间。

这对于 MSP430 来说是相当困难的,但对于音频设备来说却很容易。音频 ADC/DAC 芯片会自动进行过采样。事实上,您可以使用 PC 或 Raspberry Pi 声卡作为数据采集硬件。大多数都是交流耦合的,因此您需要校准低频滚降或分流一些电容器,但这不是问题。此外,您可能不需要编写任何代码,因为已经有很多用于阻抗分析的 PC 软件......但是如果您确实想自己编写代码,使用 python 很容易。

所以问题是如何把这个微小的电流变成适合声卡输入的电压。

由于您仅使用交流电,因此运算放大器的输入偏移电流仅在它足够大以限制输出时才重要。但是,您的源阻抗和反馈阻抗非常高,因此您应该真正注意运算放大器的输入噪声电流及其 1 /f 角例如,LT1793具有相当低的输入电流噪声。

请注意问题中的模拟轨迹显示运算放大器正在削波。如果使用单电源,则其输入共模和输出电压范围需要包括地。

使用正电源和负电源可能会更容易,以避免在零输入电流处削波运算放大器,如果您得到一个偏移电压方向错误的样本。此外,如果您使用交流电流来测量阻抗,那么为运算放大器使用分离电源会容易得多。否则,您必须将电容器与电容器交流耦合到中间电源附近的某个参考电压,然后考虑电容器的泄漏电流等。

其他答案提供了有关如何执行 TIA 部分的足够信息,因此我不会详细说明。


编辑:DSP的东西

要绘制阻抗的模量和相位与频率的关系,您可以使用两种方法:

这是经典测试,它扫描整个感兴趣的频率范围。详细的解释和数学在链接中,它大约是 1-2 页的 python 代码。由于它需要对整个波形进行 FFT,它必须适合内存,所以这对于微控制器是不可能的。如果您对整个频率范围感兴趣,这是最快的方法。

  • 运行多个单频测试,步进频率

这更简单。如果您只对几个频率点感兴趣,那么这是一个不错的选择。如果它花费更多时间平均一个频率,它可以比扫频正弦具有更低的噪声,但当然,如果您对整个频率范围感兴趣,它会慢得多,因为每个频率都必须独立测量,其中包括进入下一个频率后的稳定时间位。

它是这样工作的:

生成正弦波\$ Ao sin(\omega t) \$并用DAC播放

在被测设备上记录测量结果,它也将是具有不同幅度和相移的正弦波。假设记录的数据是\$ Ar sin(\omega t + \phi) \$,其中 Ar=记录的幅度和\$ \phi \$相对于原始正弦波的相移。

所以你计算\$ e^{j \omega t} = cos \omega t + j sin \omega t\$,将它与接收到的信号相乘,然后在整数个正弦周期上平均结果。正弦周期不必是整数个样本,但平均应该是整数个周期。

将这两者相乘并取平均值就像计算记录信号与\$ e^{j \omega t} \$的乘积的离散时间积分一样。如果你写下积分并求解它,你会注意到结果是一个复数,其幅度为 Ar,相位为\$ \phi \$

或者也许是\$ -\phi \$,我不记得了,但你明白了。

这基本上就是射频检测器的工作原理,它将入射波与正弦和余弦相乘,然后取平均值。

所以你得到一个复数\$ A(f) \$,它对每个频率的幅度和相位进行编码。扫过的正弦也以复数的形式给出结果,所以从现在开始,校准方法是一样的。您必须将结果保留为复数,因为这将很有用。

为了校准它,您必须关注这样一个事实,即您要测量的是在化学溶液中工作的电化学传感器与未浸入溶液中的相同传感器之间的差异。或者可能是别的东西,由你决定,但校准的目的是删除所有你不想成为测量的一部分的东西。

例如,您必须消除由于设置、DAC、ADC、采样延迟、缓冲等(不依赖于频率)引起的所有相移以及由电容和模拟滤波器引起的相移(依赖于频率) . 您还必须测量一个已知的电阻,以了解 ADC 幅度在模拟值方面的含义。

由于您要在高达 10kHz 时测量高达 100 Mohms 的电阻器,而 1pF 的寄生电容在 10kHz 时将具有 15Mohms 阻抗,因此您必须非常小心电容,否则它将完全淹没您的测量。消除电容是不可能的,但如果你让它保持不变,那么你可以校准它。如果皮法很重要,这意味着您不能使用可以设置为不同形状或不同间距的飞线,因为这会改变电容。你必须使用同轴电缆。或者,您也可以完全不使用电缆,例如,将 TIA 放在传感器旁边的小 PCB 上。

另一个不在您的 ADC 上使用多个量程的原因是您的设置可能至少有 10pF 与传感器并联,因此在 100pA 量程上的 10kHz 时,通过电容的电流将比您尝试测量的电流高很多,因此,如果您使用范围切换,它只会夹住运算放大器和 ADC。如果您使用具有大量位的 ADC,则没问题。

如果您设法使传感器电容恒定且可重复,那么您可以调整 TIA 反馈上限以在一定程度上对其进行补偿。它不会是完美的,除非您设法将所有传感器构建得完全相同,或者您将 TIA 制成传感器组件的一部分,以便每个传感器都可以拥有其个性化的反馈上限,但它应该会有所帮助。

要进行校准,您需要能够用电阻器替换传感器,因此您需要一个连接器。

因此,首先您移除传感器并测量开路,这将为您提供包括所有寄生电容在内的设置响应,因此为了准确,所有接线必须相同,只是传感器被移除。或者您可以使用没有液体的虚拟电化学传感器,因此它具有无限的电阻,但它仍然具有在化学溶液中使用时的电容。

然后您可以用已知的电阻值替换传感器并再次测量。或者,为了获得更好的结果,您可以将已知电阻值与未浸入溶液的传感器并联,因此唯一的变化是电阻,而不是电容。

该方法类似于 2 端口网络分析仪校准,但您可能可以忽略大部分术语,只使用两个校准点,即开路和“已知负载”。您可以查找相关文献,或者您可以绘制传感器、无传感器和校准电阻器的各种组合的示意图……然后计算其阻抗,在另一侧放置“=”符号和测量数据,并求解该方程组。

如果数学正确,最终结果只是测量数据和校准数据之间的一堆复杂的乘法、除法和减法,因此编程并不难。