在測量行業中,一個非常關鍵的功能塊是可編程增益放大器 (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 歐姆電阻來實現絕對穩定性。
評論
查看更多