在测量行业中,一个非常关键的功能块是可编程增益放大器 (PGA)。如果您是电子爱好者或大学生,您可能已经看到非常宝贵的万用表或示波器测量非常小的电压,因为该电路具有内置 PGA 和强大的 ADC,有助于进行精确的测量过程。 如今,现成的 PGA 放大器提供基于运算放大器的非反相放大器,具有用户可编程的增益因子。这种类型的器件具有非常高的输入阻抗、宽带宽和内置于 IC 中的可选输入电压基准。但是所有这些功能都是有代价的,对我来说,将这么昂贵的芯片用于通用应用程序是不值得的。 因此,为了克服这些情况,我想出了一个由运算放大器、MOSFET 和 Arduino 组成的装置,通过它我能够以编程方式改变运算放大器的增益。因此,在本教程中,我将向您展示如何 使用 LM358 运算放大器和 MOSFET 构建您自己的可编程增益放大器,并在测试的同时讨论该电路的一些优缺点。 运算放大器的基础知识 要了解该电路的工作原理,了解运算放大器的工作原理非常重要。按照此运算放大器测试器电路了解有关运算放大器的更多信息。 在上图中,您可以看到一个运算放大器。放大器的基本工作是放大输入信号,除了放大之外,运算放大器还可以执行各种运算,如求和、微分、积分等。在此处了解有关求和放大器和差分放大器的更多信息。 运算放大器只有三个端子。带(+)号的端子称为同相输入,带(-)号的端子称为反相输入。除了这两个端子之外,第三个端子是输出端子。 运算放大器只遵循两个规则 没有电流流入或流出运算放大器输入。 运算放大器试图将输入保持在相同的电压电平。 因此,清除了这两个规则后,我们可以分析以下电路。此外,通过各种基于运算放大器的电路了解更多关于运算放大器的信息。 可编程增益放大器工作 上图让您对我的 crud PGA Amplifier 的电路布置有一个基本的了解。在这个电路中,运算放大器被配置为同相放大器,众所周知,在同相电路布置中,我们可以通过改变反馈电阻或输入电阻来改变运算放大器的增益,从上面的电路布置中可以看出,我只需要一次切换一个 MOSFET 来改变运算放大器的增益。 在测试部分,我只是一次切换一个MOSFET,并将测量值与实际值进行比较,您可以在下面的“测试电路”部分观察结果。 所需组件 Arduino 纳米 - 1 LM358 集成电路 - 1 LM7805 稳压器 - 1 BC548 通用 NPN 晶体管 - 2 BS170 通用 N 沟道 MOSFET - 2 200K 电阻 - 1 50K 电阻 - 2 24K电阻 - 2 6.8K电阻 - 1 1K 电阻 - 4 4.7K电阻 - 1 220R, 1% 电阻 - 1 轻触开关通用 - 1 琥珀色 LED 3mm - 2 面包板通用 - 1 通用跳线 - 10 电源±12V - 1 原理图,示意图 对于可编程增益放大器的演示,电路在原理图的帮助下构建在无焊面包板上;为了减少面包板的内部寄生电感和电容,所有组件都尽可能靠近放置。 如果你想知道为什么我的面包板上有一簇电线?让我告诉你这是为了建立良好的接地连接,因为面包板中的内部接地连接非常差。 这里电路中的运算放大器配置为非反相放大器,来自 7805 稳压器的输入电压为 4.99V。 电阻 R6 的测量值为 6.75K,R7 为 220.8R,这两个电阻构成一个分压器,用于为运算放大器生成输入测试电压。电阻器R8 和 R9用于限制晶体管 T3 和 T4 的输入基极电流。电阻 R10 和 R11用于限制 MOSFET T1 和 T2的开关速度,否则会引起电路振荡。 在这篇博客中,我想向您展示使用MOSFET而不是 BJT 的原因,以及电路布置。 PGA 的 Arduino 代码 这里 Arduino Nano 用于控制晶体管的基极和 MOSFET 的栅极,并且使用万用表来显示电压电平,因为 Arduino 的内置 ADC 在测量低电平时做得很差电压水平。 该项目的完整 Arduino 代码如下所示。由于这是一个非常简单的 Arduino 代码,我们不需要包含任何库。但是我们确实需要定义一些常量和输入引脚,如代码所示。 void setup()是主要功能块,其中所有输入和输出的读写操作都根据要求执行。 #define BS170_WITH_50K_PIN 9 #define BS170_WITH_24K_PIN 8 #define BC548_WITH_24K_PIN 7 #define BC548_WITH_50K_PIN 6 #define BUTTON_PIN 5 #define LED_PIN1 2 #define LED_PIN2 3 #define PRESSED_CONFIDENCE_LEVEL 5000 int button_is_pressed = 0; int debounce_counter = 0; 无效设置(){ pinMode(BS170_WITH_50K_PIN,输出); pinMode(BS170_WITH_24K_PIN,输出); pinMode(BC548_WITH_24K_PIN,输出); pinMode(BC548_WITH_50K_PIN,输出); pinMode(LED_PIN1,输出); pinMode(LED_PIN2,输出); pinMode(BUTTON_PIN,输入); } 无效循环(){ bool val = digitalRead(BUTTON_PIN); // 读取输入值 如果(val == LOW){ debounce_counter++; if (debounce_counter 》 PRESSED_CONFIDENCE_LEVEL) { debounce_counter = 0; button_is_pressed++; } 如果(button_is_pressed == 0){ 数字写入(BS170_WITH_50K_PIN,高); 数字写入(BS170_WITH_24K_PIN,低); 数字写入(BC548_WITH_24K_PIN,低); 数字写入(BC548_WITH_50K_PIN,低); 数字写入(LED_PIN1,低); 数字写入(LED_PIN2,低); } 如果(button_is_pressed == 2){ 数字写入(BS170_WITH_24K_PIN,高); 数字写入(BS170_WITH_50K_PIN,低); 数字写入(BC548_WITH_24K_PIN,低); 数字写入(BC548_WITH_50K_PIN,低); 数字写入(LED_PIN1,低); 数字写入(LED_PIN2,高); } 如果(button_is_pressed == 3){ 数字写入(BC548_WITH_24K_PIN,高); 数字写入(BC548_WITH_50K_PIN,低); 数字写入(BS170_WITH_24K_PIN,低); 数字写入(BS170_WITH_50K_PIN,低); 数字写入(LED_PIN1,高); 数字写入(LED_PIN2,高); } 如果(button_is_pressed == 1){ 数字写入(BC548_WITH_50K_PIN,高); 数字写入(BS170_WITH_50K_PIN,低); 数字写入(BS170_WITH_24K_PIN,低); 数字写入(BC548_WITH_24K_PIN,低); 数字写入(LED_PIN1,高); 数字写入(LED_PIN2,低); } 如果 (button_is_pressed 》= 4) { button_is_pressed = 0; } } } 可编程增益放大器的计算 PGA 放大器电路的测量值如下所示。 输入电压 = 4.99V R7 = 220.8 Ω R6 = 6.82 KΩ R5 = 199.5K R4 = 50.45K R3 = 23.99K R2 = 23.98K R1 = 50.5K 笔记!显示电阻器的测量值是因为通过测量电阻器值,我们可以密切比较理论值和实际值。 现在分压器计算器的计算如下所示, 分压器的输出为0.1564V 计算 4 个电阻的同相放大器的增益 当R1为选定电阻时的Vout Vout = (1+ (199.5 / 50.5) ) * 0.1564 = 0.77425V 当R2为选定电阻时的Vout Vout = (1+ (199.5 / 23.98) ) * 0.1564 = 1.45755V 当R3为选定电阻时的Vout Vout = (1+ (199.5 / 23.99) ) * 0.1564 = 1.45701V 当R4为选定电阻时的Vout Vout = (1+ (199.5 / 50.45) ) * 0.1564 = 0.77486V 我所做的一切都是为了尽可能地比较理论值和实际值。 完成所有计算后,我们可以继续进行测试部分。 可编程增益放大器电路的测试 上图显示了MOSFET T1导通时的输出电压,因此电流流过电阻器 R1。 上图显示了晶体管 T4导通时的输出电压,因此电流流过电阻器 R4。 上图显示了MOSFET T2导通时的输出电压,因此电流流过电阻器 R2。 上图显示了晶体管 T3导通时的输出电压,因此电流流过电阻器 R3。 从原理图中可以看出,T1、T2 是 MOSFET,T3、T4 是晶体管。因此,当使用 MOSFET 时,误差在 1 到 5 mV 范围内,但当晶体管用作开关时,我们会在 10 到 50 mV 范围内得到误差。 从以上结果可以看出,MOSFET是此类应用的首选解决方案,而理论上和实际中的误差可能是由于运放的失调误差造成的。 笔记!请注意,我添加了两个 LED 只是为了测试,您在实际原理图中找不到它们,它显示二进制代码以显示哪个引脚处于活动状态 可编程增益放大器的优缺点 由于该电路便宜、简单且简单,因此可以在许多不同的应用中实现。 这里 MOSFET 用作开关,将所有电流通过电阻器接地,这就是为什么温度的影响不确定的原因,并且由于我有限的工具和测试设备,我无法向您展示不同温度对电路。 将 BJT 与 MOSFET 一起使用的目的是因为我想向您展示 BJT 对于此类应用的性能有多差。 反馈电阻和输入电阻的值必须在 KΩ 范围内,这是因为电阻值越小,流过 MOSFET 的电流就越多,因此 MOSFET 上的压降越大,导致不可预知的结果。 进一步增强 可以进一步修改电路以提高其性能,就像我们可以添加滤波器来抑制高频噪声一样。 由于本测试使用的是 LM358 果冻豆运算放大器,因此运算放大器的失调误差在输出电压中起主要作用。所以它可以通过使用仪表放大器而不是LM358来进一步改进。 该电路仅用于演示目的。如果您考虑在实际应用中使用此电路,则必须使用斩波型运算放大器和高精度 0.1 欧姆电阻来实现绝对稳定性。 (责任编辑:admin) |