在測量行業(yè)中,一個非常關(guān)鍵的功能塊是可編程增益放大器 (PGA)。如果您是電子愛好者或大學(xué)生,您可能已經(jīng)看到非常寶貴的萬用表或示波器測量非常小的電壓,因為該電路具有內(nèi)置 PGA 和強大的 ADC,有助于進(jìn)行精確的測量過程。
如今,現(xiàn)成的 PGA 放大器提供基于運算放大器的非反相放大器,具有用戶可編程的增益因子。這種類型的器件具有非常高的輸入阻抗、寬帶寬和內(nèi)置于 IC 中的可選輸入電壓基準(zhǔn)。但是所有這些功能都是有代價的,對我來說,將這么昂貴的芯片用于通用應(yīng)用程序是不值得的。
因此,為了克服這些情況,我想出了一個由運算放大器、MOSFET 和 Arduino 組成的裝置,通過它我能夠以編程方式改變運算放大器的增益。因此,在本教程中,我將向您展示如何 使用 LM358 運算放大器和 MOSFET 構(gòu)建您自己的可編程增益放大器,并在測試的同時討論該電路的一些優(yōu)缺點。
運算放大器的基礎(chǔ)知識
要了解該電路的工作原理,了解運算放大器的工作原理非常重要。按照此運算放大器測試器電路了解有關(guān)運算放大器的更多信息。
在上圖中,您可以看到一個運算放大器。放大器的基本工作是放大輸入信號,除了放大之外,運算放大器還可以執(zhí)行各種運算,如求和、微分、積分等。在此處了解有關(guān)求和放大器和差分放大器的更多信息。
運算放大器只有三個端子。帶(+)號的端子稱為同相輸入,帶(-)號的端子稱為反相輸入。除了這兩個端子之外,第三個端子是輸出端子。
運算放大器只遵循兩個規(guī)則
沒有電流流入或流出運算放大器輸入。
運算放大器試圖將輸入保持在相同的電壓電平。
因此,清除了這兩個規(guī)則后,我們可以分析以下電路。此外,通過各種基于運算放大器的電路了解更多關(guān)于運算放大器的信息。
可編程增益放大器工作
上圖讓您對我的 crud PGA Amplifier 的電路布置有一個基本的了解。在這個電路中,運算放大器被配置為同相放大器,眾所周知,在同相電路布置中,我們可以通過改變反饋電阻或輸入電阻來改變運算放大器的增益,從上面的電路布置中可以看出,我只需要一次切換一個 MOSFET 來改變運算放大器的增益。
在測試部分,我只是一次切換一個MOSFET,并將測量值與實際值進(jìn)行比較,您可以在下面的“測試電路”部分觀察結(jié)果。
所需組件
Arduino 納米 - 1
LM358 集成電路 - 1
LM7805 穩(wěn)壓器 - 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
輕觸開關(guān)通用 - 1
琥珀色 LED 3mm - 2
面包板通用 - 1
通用跳線 - 10
電源±12V - 1
原理圖,示意圖
對于可編程增益放大器的演示,電路在原理圖的幫助下構(gòu)建在無焊面包板上;為了減少面包板的內(nèi)部寄生電感和電容,所有組件都盡可能靠近放置。
如果你想知道為什么我的面包板上有一簇電線?讓我告訴你這是為了建立良好的接地連接,因為面包板中的內(nèi)部接地連接非常差。
這里電路中的運算放大器配置為非反相放大器,來自 7805 穩(wěn)壓器的輸入電壓為 4.99V。
電阻 R6 的測量值為 6.75K,R7 為 220.8R,這兩個電阻構(gòu)成一個分壓器,用于為運算放大器生成輸入測試電壓。電阻器R8 和 R9用于限制晶體管 T3 和 T4 的輸入基極電流。電阻 R10 和 R11用于限制 MOSFET T1 和 T2的開關(guān)速度,否則會引起電路振蕩。
在這篇博客中,我想向您展示使用MOSFET而不是 BJT 的原因,以及電路布置。
PGA 的 Arduino 代碼
這里 Arduino Nano 用于控制晶體管的基極和 MOSFET 的柵極,并且使用萬用表來顯示電壓電平,因為 Arduino 的內(nèi)置 ADC 在測量低電平時做得很差電壓水平。
該項目的完整 Arduino 代碼如下所示。由于這是一個非常簡單的 Arduino 代碼,我們不需要包含任何庫。但是我們確實需要定義一些常量和輸入引腳,如代碼所示。
void setup()是主要功能塊,其中所有輸入和輸出的讀寫操作都根據(jù)要求執(zhí)行。
#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;
無效設(shè)置(){
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,輸入);
}
無效循環(huán)(){
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){
數(shù)字寫入(BS170_WITH_50K_PIN,高);
數(shù)字寫入(BS170_WITH_24K_PIN,低);
數(shù)字寫入(BC548_WITH_24K_PIN,低);
數(shù)字寫入(BC548_WITH_50K_PIN,低);
數(shù)字寫入(LED_PIN1,低);
數(shù)字寫入(LED_PIN2,低);
}
如果(button_is_pressed == 2){
數(shù)字寫入(BS170_WITH_24K_PIN,高);
數(shù)字寫入(BS170_WITH_50K_PIN,低);
數(shù)字寫入(BC548_WITH_24K_PIN,低);
數(shù)字寫入(BC548_WITH_50K_PIN,低);
數(shù)字寫入(LED_PIN1,低);
數(shù)字寫入(LED_PIN2,高);
}
如果(button_is_pressed == 3){
數(shù)字寫入(BC548_WITH_24K_PIN,高);
數(shù)字寫入(BC548_WITH_50K_PIN,低);
數(shù)字寫入(BS170_WITH_24K_PIN,低);
數(shù)字寫入(BS170_WITH_50K_PIN,低);
數(shù)字寫入(LED_PIN1,高);
數(shù)字寫入(LED_PIN2,高);
}
如果(button_is_pressed == 1){
數(shù)字寫入(BC548_WITH_50K_PIN,高);
數(shù)字寫入(BS170_WITH_50K_PIN,低);
數(shù)字寫入(BS170_WITH_24K_PIN,低);
數(shù)字寫入(BC548_WITH_24K_PIN,低);
數(shù)字寫入(LED_PIN1,高);
數(shù)字寫入(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
筆記!顯示電阻器的測量值是因為通過測量電阻器值,我們可以密切比較理論值和實際值。
現(xiàn)在分壓器計算器的計算如下所示,
分壓器的輸出為0.1564V
計算 4 個電阻的同相放大器的增益
當(dāng)R1為選定電阻時的Vout
Vout = (1+ (199.5 / 50.5) ) * 0.1564 = 0.77425V
當(dāng)R2為選定電阻時的Vout
Vout = (1+ (199.5 / 23.98) ) * 0.1564 = 1.45755V
當(dāng)R3為選定電阻時的Vout
Vout = (1+ (199.5 / 23.99) ) * 0.1564 = 1.45701V
當(dāng)R4為選定電阻時的Vout
Vout = (1+ (199.5 / 50.45) ) * 0.1564 = 0.77486V
我所做的一切都是為了盡可能地比較理論值和實際值。
完成所有計算后,我們可以繼續(xù)進(jìn)行測試部分。
可編程增益放大器電路的測試
上圖顯示了MOSFET T1導(dǎo)通時的輸出電壓,因此電流流過電阻器 R1。
上圖顯示了晶體管 T4導(dǎo)通時的輸出電壓,因此電流流過電阻器 R4。
上圖顯示了MOSFET T2導(dǎo)通時的輸出電壓,因此電流流過電阻器 R2。
上圖顯示了晶體管 T3導(dǎo)通時的輸出電壓,因此電流流過電阻器 R3。
從原理圖中可以看出,T1、T2 是 MOSFET,T3、T4 是晶體管。因此,當(dāng)使用 MOSFET 時,誤差在 1 到 5 mV 范圍內(nèi),但當(dāng)晶體管用作開關(guān)時,我們會在 10 到 50 mV 范圍內(nèi)得到誤差。
從以上結(jié)果可以看出,MOSFET是此類應(yīng)用的首選解決方案,而理論上和實際中的誤差可能是由于運放的失調(diào)誤差造成的。
筆記!請注意,我添加了兩個 LED 只是為了測試,您在實際原理圖中找不到它們,它顯示二進(jìn)制代碼以顯示哪個引腳處于活動狀態(tài)
可編程增益放大器的優(yōu)缺點
由于該電路便宜、簡單且簡單,因此可以在許多不同的應(yīng)用中實現(xiàn)。
這里 MOSFET 用作開關(guān),將所有電流通過電阻器接地,這就是為什么溫度的影響不確定的原因,并且由于我有限的工具和測試設(shè)備,我無法向您展示不同溫度對電路。
將 BJT 與 MOSFET 一起使用的目的是因為我想向您展示 BJT 對于此類應(yīng)用的性能有多差。
反饋電阻和輸入電阻的值必須在 KΩ 范圍內(nèi),這是因為電阻值越小,流過 MOSFET 的電流就越多,因此 MOSFET 上的壓降越大,導(dǎo)致不可預(yù)知的結(jié)果。
進(jìn)一步增強
可以進(jìn)一步修改電路以提高其性能,就像我們可以添加濾波器來抑制高頻噪聲一樣。
由于本測試使用的是 LM358 果凍豆運算放大器,因此運算放大器的失調(diào)誤差在輸出電壓中起主要作用。所以它可以通過使用儀表放大器而不是LM358來進(jìn)一步改進(jìn)。
該電路僅用于演示目的。如果您考慮在實際應(yīng)用中使用此電路,則必須使用斬波型運算放大器和高精度 0.1 歐姆電阻來實現(xiàn)絕對穩(wěn)定性。
評論