- Grundlæggende om Op-Amp
- Programmerbar forstærker fungerer
- Komponenter, der kræves
- Skematisk diagram
- Arduino-kode til PGA
- Beregninger for programmerbar forstærker
- Test af programmerbar forstærkerkreds
- Fordele og ulemper ved programmerbar forstærker
- Yderligere forbedring
I måleindustrien er en meget vigtig funktionel blok en programmerbar forstærker (PGA). Hvis du er en elektronisk entusiast eller en universitetsstuderende, har du sandsynligvis set et multimeter eller oscilloskop, der måler meget små spændinger meget dyrebart, fordi kredsløbet har en indbygget PGA sammen med en kraftig ADC, der hjælper med den nøjagtige måleproces.
I dag tilbyder PGA-forstærker fra hylden en op-amp-baseret, en ikke-inverterende forstærker med en brugerprogrammerbar forstærkningsfaktor. Denne type enhed har meget høj indgangsimpedans, bred båndbredde og en valgbar indgangsspændingsreference, der er indbygget i IC'en. Men alle disse funktioner kommer med en pris, og for mig er det ikke værd at lægge det dyre af en chip til en generisk applikation.
For at overvinde disse situationer er jeg kommet med et arrangement bestående af en Op-amp, MOSFET og Arduino, hvorigennem jeg var i stand til at ændre forstærkningen af op-amp'en programmatisk. Så i denne vejledning skal jeg vise dig, hvordan du bygger din egen programmerbare forstærker med en LM358 op-amp og MOSFETS, og jeg vil diskutere nogle fordele og ulemper ved kredsløbet sammen med test.
Grundlæggende om Op-Amp
For at forstå funktionen af dette kredsløb er det meget vigtigt at vide, hvordan en operationsforstærker fungerer. Lær mere om Op-amp ved at følge dette op-amp testerkredsløb.
I ovenstående figur kan du se en operationsforstærker. Det grundlæggende job med en forstærker er at forstærke et indgangssignal, sammen med forstærkning kan op-forstærkeren også udføre forskellige operationer som sum, differentiere, integrere osv. Lær mere om summeringsforstærkeren og differentialforstærkeren her.
Op-amp har kun tre terminaler. Terminalen med (+) tegnet kaldes ikke-inverterende input, og terminalen med (-) tegnet kaldes inverterende input. Udover disse to terminaler er den tredje terminal udgangsterminalen.
En op-amp følger kun to regler
- Ingen strøm strømmer ind eller ud af op-amp-indgangene.
- Op-amp forsøger at holde indgangene på de samme spændingsniveauer.
Så med disse to regler ryddet op, kan vi analysere nedenstående kredsløb. Lær også mere om Op-amp ved at gennemgå forskellige Op-amp-baserede kredsløb.
Programmerbar forstærker fungerer
Ovenstående figur giver dig en grundlæggende idé om kredsløbet af min crud PGA forstærker. I dette kredsløb er op-amp konfigureret som en ikke-inverterende forstærker, og som vi alle ved med et ikke-inverterende kredsløbsarrangement, kan vi ændre forstærkningen af op-amp ved at ændre feedback-modstanden eller input-modstanden, Som du kan se fra ovenstående kredsløbsarrangement, skal jeg bare skifte MOSFET'erne en ad gangen for at ændre forstærkningen af op-amp.
I testafsnittet gjorde jeg netop, at jeg skiftede MOSFET'erne en ad gangen og sammenlignede de målte værdier med de praktiske værdier, og du kan observere resultaterne i afsnittet "test af kredsløbet" nedenfor.
Komponenter, der kræves
- Arduino Nano - 1
- LM358 IC - 1
- LM7805 regulator - 1
- BC548 generisk NPN-transistor - 2
- BS170 Generisk N-kanal MOSFET - 2
- 200K modstand - 1
- 50K modstand - 2
- 24K modstand - 2
- 6.8K modstand - 1
- 1K modstand - 4
- 4.7K modstand - 1
- 220R, 1% modstand - 1
- Taktil switch generisk - 1
- Gul LED 3mm - 2
- Brødbræt Generisk - 1
- Jumper Wires Generic - 10
- Strømforsyning ± 12V - 1
Skematisk diagram
For en demonstration af programmerbar forstærker er kredsløbet konstrueret på et loddet brødbræt ved hjælp af skematisk; For at reducere indvendig parasitisk induktans og kapacitans af brødbrættet er alle komponenterne placeret så tæt som muligt.
Og hvis du undrer dig over, hvorfor der er en klynge af ledninger i mit brødbræt? lad mig fortælle dig, at det er at skabe en god jordforbindelse, da interne jordforbindelser i et brødbræt er meget dårlige.
Her er op-amp i kredsløbet konfigureret som en ikke-inverterende forstærker, og indgangsspændingen fra 7805 spændingsregulatoren er 4,99V.
Den målte værdi for modstanden R6 er 6,75K og R7 er 220,8R. Disse to modstande danner en spændingsdeler, der bruges til at generere indgangstestspændingen til op-amp. Den Modstande R8 og R9 til at begrænse input basisstrøm i transistoren T3 og T4. De modstandene R10 og R11 til at begrænse skifte hastighed af MOSFET'erne T1 og T2, ellers kan det medføre svingning i kredsløbet.
I denne blog vil jeg vise dig grunden til at bruge en MOSFET snarere end en BJT, deraf kredsløbsarrangementet.
Arduino-kode til PGA
Her bruges Arduino Nano til at styre basen af transistoren og porten til MOSFET'erne, og et multimeter bruges til at vise spændingsniveauerne, fordi Arduino's indbyggede ADC gør et meget dårligt job, når det kommer til at måle lavt spændingsniveauer.
Den komplette Arduino-kode til dette projekt er angivet nedenfor. Da dette er en meget simpel Arduino-kode, behøver vi ikke medtage nogen biblioteker. Men vi er nødt til at definere nogle konstanter og inputstifter som vist i koden.
Den tomrum opsætning () er den vigtigste funktionelle blok, hvor læse- og skrive operation for alle ind- og udgange udføres som pr krav.
#definer BS170_WITH_50K_PIN 9 #definer BS170_WITH_24K_PIN 8 #definer BC548_WITH_24K_PIN 7 #definer BC548_WITH_50K_PIN 6 #definer BUTTON_PIN 5 #definer LED_PIN1 2 #definerer_FIND_defin. int debounce_counter = 0; ugyldig opsætning () {pinMode (BS170_WITH_50K_PIN, OUTPUT); pinMode (BS170_WITH_24K_PIN, OUTPUT); pinMode (BC548_WITH_24K_PIN, OUTPUT); pinMode (BC548_WITH_50K_PIN, OUTPUT); pinMode (LED_PIN1, OUTPUT); pinMode (LED_PIN2, OUTPUT); pinMode (BUTTON_PIN, INPUT); } ugyldig sløjfe () {bool val = digitalRead (BUTTON_PIN); // læs inputværdi, hvis (val == LOW) {debounce_counter ++; hvis (debounce_counter> PRESSED_CONFIDENCE_LEVEL) {debounce_counter = 0; button_is_pressed ++; } hvis (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); } hvis (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); } hvis (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); } hvis (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); } hvis (button_is_pressed> = 4) {button_is_pressed = 0; }}}
Beregninger for programmerbar forstærker
De målte værdier for PGA-forstærkerkredsen er vist nedenfor.
Vin = 4.99V R7 = 220.8 Ω R6 = 6.82 KΩ R5 = 199.5K R4 = 50.45K R3 = 23.99K R2 = 23.98K R1 = 50.5K
Bemærk! Modstandens målte værdier vises, fordi vi med målte modstandsværdier nøje kan sammenligne de teoretiske værdier og praktiske værdier.
Nu er beregningen fra spændingsdelerberegneren vist nedenfor,
Outputtet fra spændingsdeleren er 0,1564V
Beregning af forstærkningen af den ikke-inverterende forstærker for de 4 modstande
Vout når R1 er den valgte modstand
Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425V
Vout når R2 er den valgte modstand
Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755V
Vout når R3 er den valgte modstand
Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701V
Vout når R4 er den valgte modstand
Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486V
Jeg gjorde alt det for at sammenligne de teoretiske og praktiske værdier så tæt som muligt.
Med alle udførte beregninger kan vi gå videre til testafsnittet.
Test af programmerbar forstærkerkreds
Ovenstående billede viser udgangsspændingen, når MOSFET T1 er tændt, og derfor strømmer strøm gennem modstanden R1.
Ovenstående billede viser udgangsspændingen, når Transistor T4 er tændt, og derfor strømmer strøm gennem modstanden R4.
Ovenstående billede viser udgangsspændingen, når MOSFET T2 er tændt, og derfor strømmer strømmen gennem modstanden R2.
Ovenstående billede viser dig udgangsspændingen, når Transistor T3 er tændt, og derfor strømmer strøm gennem modstanden R3.
Som du kan se fra skematisk, at T1, T2 er MOSFET'er, og T3, T4 er transistorer. Så når MOSFET'er bruges, er fejlen i området 1 til 5 mV, men når transistorer bruges som afbrydere, får vi en fejl inden for området 10 til 50 mV.
Med ovenstående resultater er det klart, at MOSFET er den goto-løsning til denne type applikation, og fejlene i det teoretiske og praktiske kan skyldes årsagen til op-amp-offset-fejlen.
Bemærk! Vær opmærksom på, at jeg har tilføjet to lysdioder kun for testens skyld, og du kan ikke finde dem i det aktuelle skema, det viser binær kode for at vise, hvilken pin der er aktiv
Fordele og ulemper ved programmerbar forstærker
Da dette kredsløb er billigt, nemt og simpelt, kan det implementeres i mange forskellige applikationer.
Her bruges MOSFET som en switch til at føre al strøm gennem modstanden til jorden, hvorfor temperaturens effekt ikke er sikker, og med mine begrænsede værktøjer og testudstyr kunne jeg ikke vise dig virkningerne af varierende temperatur på kredsløbet.
Målet med at bruge en BJT sammen med MOSFET'er er, fordi jeg vil vise dig, hvor dårlig en BJT kan være for denne type applikationer.
Værdierne for feedbackmodstandene og inputmodstandene skal være i KΩ-området, det vil sige, at med lavere modstandsværdier strømmer mere strøm gennem MOSFET, og derved falder mere spænding over MOSFET, hvilket forårsager uforudsigelige resultater.
Yderligere forbedring
Kredsløbet kan ændres yderligere for at forbedre dets ydeevne, ligesom vi kan tilføje filteret for at afvise højfrekvente lyde.
Da LM358 jelly bean op-amp bruges i denne test, spiller off-ampets offset-fejl en stor rolle ved udgangsspændingen. Så det kan forbedres yderligere ved hjælp af en instrumentforstærker snarere end en LM358.
Dette kredsløb er kun lavet til demonstrationsformål. Hvis du overvejer at bruge dette kredsløb i en praktisk anvendelse, er du nødt til at bruge en helikopter-op-amp og 0,1 ohm modstand med høj præcision for at opnå absolut stabilitet.
Jeg håber, du kunne lide denne artikel og lærte noget nyt ud af den. Hvis du er i tvivl, kan du spørge i kommentarerne nedenfor eller bruge vores fora til detaljeret diskussion.