在测量行业中,一个非常关键的功能模块是可编程增益放大器(PGA)。如果您是电子发烧友或大学生,则可能已经看到了万用表或示波器非常珍贵地测量非常小的电压,因为该电路具有内置的PGA和强大的ADC,可帮助进行精确的测量过程。
如今,现成的PGA放大器提供了一种基于运放的,具有用户可编程增益因子的同相放大器。这种类型的设备具有非常高的输入阻抗,宽带宽以及内置于IC中的可选输入参考电压。但是所有这些功能都是有代价的,对我而言,将这种昂贵的芯片用于通用应用程序是不值得的。
因此,为了克服这些情况,我提出了一种由运算放大器,MOSFET和Arduino组成的方案,通过该方案,我可以通过编程方式更改运算放大器的增益。因此,在本教程中,我将向您展示如何 使用LM358运算放大器和MOSFET来构建自己的可编程增益放大器,并且我将在测试的同时讨论电路的优缺点。
运算放大器的基础
要了解该电路的工作原理,了解运算放大器的工作原理非常重要。通过遵循此运算放大器测试仪电路,了解有关运算放大器的更多信息。
在上图中,您可以看到一个运算放大器。放大器的基本工作是放大输入信号,以及放大,运算放大器还可以执行各种操作,例如求和,微分,积分等。在此处了解有关求和放大器和差分放大器的更多信息。
运算放大器只有三个端子。带(+)号的端子称为同相输入,带(-)号的端子称为反相输入。除了这两个端子外,第三个端子是输出端子。
运算放大器仅遵循两个规则
- 没有电流流入或流出运算放大器输入。
- 运算放大器试图将输入保持在相同的电压电平。
因此,在清除了这两个规则之后,我们可以分析以下电路。此外,还可以通过各种基于运算放大器的电路来了解有关运算放大器的更多信息。
可编程增益放大器工作
上图为您提供了有关我的原始PGA放大器的电路布置的基本概念。在该电路中,运算放大器被配置为同相放大器,众所周知,通过同相电路,我们可以通过改变反馈电阻或输入电阻来改变运算放大器的增益,从上述电路结构可以看出,我只需要一次切换一个MOSFET即可改变运算放大器的增益。
在测试部分,我只是一次开关一个MOSFET,然后将测量值与实际值进行比较,您可以在下面的“测试电路”部分中观察结果。
所需组件
- Arduino纳米-1
- LM358 IC-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 3毫米-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代码,所以我们不需要包含任何库。但是我们确实需要定义一些常量和输入引脚,如代码所示。
的 空隙的设置() 是其中对于所有的输入和输出的读取和写入操作都按规定执行的主要功能块。
#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 = 0 int debounce_counter = 0; void setup(){pinMode(BS170_WITH_50K_PIN,OUTPUT); pinMode(BS170_WITH_24K_PIN,输出); pinMode(BC548_WITH_24K_PIN,输出); pinMode(BC548_WITH_50K_PIN,输出); pinMode(LED_PIN1,输出); pinMode(LED_PIN2,输出); pinMode(BUTTON_PIN,INPUT); } void loop(){bool val = digitalRead(BUTTON_PIN); //读取输入值if(val == LOW){debounce_counter ++;如果(debounce_counter> PRESSED_CONFIDENCE_LEVEL){debounce_counter = 0; button_is_pressed ++; } if(button_is_pressed == 0){digitalWrite(BS170_WITH_50K_PIN,HIGH); digitalWrite(BS170_WITH_24K_PIN,LOW);digitalWrite(BC548_WITH_24K_PIN,LOW); digitalWrite(BC548_WITH_50K_PIN,LOW); digitalWrite(LED_PIN1,LOW); digitalWrite(LED_PIN2,LOW); } if(button_is_pressed == 2){digitalWrite(BS170_WITH_24K_PIN,HIGH); digitalWrite(BS170_WITH_50K_PIN,LOW); digitalWrite(BC548_WITH_24K_PIN,LOW); digitalWrite(BC548_WITH_50K_PIN,LOW); digitalWrite(LED_PIN1,LOW); digitalWrite(LED_PIN2,HIGH); }如果(button_is_pressed == 3){digitalWrite(BC548_WITH_24K_PIN,HIGH); digitalWrite(BC548_WITH_50K_PIN,LOW); digitalWrite(BS170_WITH_24K_PIN,LOW); digitalWrite(BS170_WITH_50K_PIN,LOW); digitalWrite(LED_PIN1,HIGH); digitalWrite(LED_PIN2,HIGH); }如果(button_is_pressed == 1){digitalWrite(BC548_WITH_50K_PIN,HIGH); digitalWrite(BS170_WITH_50K_PIN,LOW); digitalWrite(BS170_WITH_24K_PIN,LOW); digitalWrite(BC548_WITH_24K_PIN,LOW); digitalWrite(LED_PIN1,HIGH);digitalWrite(LED_PIN2,LOW); }如果(button_is_pressed> = 4){button_is_pressed = 0; }}}
可编程增益放大器的计算
PGA放大器电路的测量值如下所示。
Vin = 4.99V R7 = 220.8ΩR6 = 6.82KΩ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用作开关,将所有电流通过电阻传递到地面,这就是为什么温度影响不确定的原因,并且由于我的工具和测试设备有限,我无法向您展示温度变化对温度的影响。电路。
与MOSFET一起使用BJT的目的是因为我想向您展示BJT对于这种应用可能有多糟糕。
反馈电阻和输入电阻的值必须在KΩ范围内,这是因为电阻值较低时,会有更多电流流过MOSFET,因此,MOSFET两端的电压降会降低,从而导致无法预测的结果。
进一步增强
可以进一步修改电路以改善其性能,就像我们可以添加滤波器来抑制高频噪声一样。
由于在此测试中使用了LM358软糖豆运算放大器,因此运算放大器的失调误差在输出电压中起主要作用。因此,可以通过使用仪表放大器而不是LM358进一步加以改进。
该电路仅用于演示目的。如果您想在实际应用中使用该电路,则必须使用斩波型运算放大器和高精度0.1欧姆电阻来获得绝对的稳定性。
希望您喜欢本文并从中学到新东西。如有任何疑问,可以在下面的评论中提问,也可以使用我们的论坛进行详细讨论。