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