如何使用LM358和MOSFET构建可编程增益放大器

模拟技术

2414人已加入

描述

在测量行业中,一个非常关键的功能块是可编程增益放大器 (PGA)。如果您是电子爱好者或大学生,您可能已经看到非常宝贵的万用表或示波器测量非常小的电压,因为该电路具有内置 PGA 和强大的 ADC,有助于进行精确的测量过程。

如今,现成的 PGA 放大器提供基于运算放大器的非反相放大器,具有用户可编程的增益因子。这种类型的器件具有非常高的输入阻抗、宽带宽和内置于 IC 中的可选输入电压基准。但是所有这些功能都是有代价的,对我来说,将这么昂贵的芯片用于通用应用程序是不值得的。

因此,为了克服这些情况,我想出了一个由运算放大器、MOSFET 和 Arduino 组成的装置,通过它我能够以编程方式改变运算放大器的增益。因此,在本教程中,我将向您展示如何 使用 LM358 运算放大器和 MOSFET 构建您自己的可编程增益放大器,并在测试的同时讨论该电路的一些优缺点。

运算放大器的基础知识

要了解该电路的工作原理,了解运算放大器的工作原理非常重要。按照此运算放大器测试器电路了解有关运算放大器的更多信息。

MOSFET

在上图中,您可以看到一个运算放大器。放大器的基本工作是放大输入信号,除了放大之外,运算放大器还可以执行各种运算,如求和、微分、积分等。在此处了解有关求和放大器和差分放大器的更多信息。

运算放大器只有三个端子。带(+)号的端子称为同相输入,带(-)号的端子称为反相输入。除了这两个端子之外,第三个端子是输出端子。

运算放大器只遵循两个规则

没有电流流入或流出运算放大器输入。

运算放大器试图将输入保持在相同的电压电平。

因此,清除了这两个规则后,我们可以分析以下电路。此外,通过各种基于运算放大器的电路了解更多关于运算放大器的信息。

可编程增益放大器工作

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

原理图,示意图

MOSFET

对于可编程增益放大器的演示,电路在原理图的帮助下构建在无焊面包板上;为了减少面包板的内部寄生电感和电容,所有组件都尽可能靠近放置。

MOSFET

如果你想知道为什么我的面包板上有一簇电线?让我告诉你这是为了建立良好的接地连接,因为面包板中的内部接地连接非常差。

这里电路中的运算放大器配置为非反相放大器,来自 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

笔记!显示电阻器的测量值是因为通过测量电阻器值,我们可以密切比较理论值和实际值。

现在分压器计算器的计算如下所示,

MOSFET

分压器的输出为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

上图显示了MOSFET T1导通时的输出电压,因此电流流过电阻器 R1。

MOSFET

上图显示了晶体管 T4导通时的输出电压,因此电流流过电阻器 R4。

MOSFET

上图显示了MOSFET T2导通时的输出电压,因此电流流过电阻器 R2。

MOSFET

上图显示了晶体管 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 欧姆电阻来实现绝对稳定性。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分