- Grundlagen des Operationsverstärkers
- Programmierbarer Verstärker funktioniert
- Erforderliche Komponenten
- Schematische Darstellung
- Arduino Code für PGA
- Berechnungen für programmierbaren Verstärker
- Testen der programmierbaren Verstärkerschaltung
- Vor- und Nachteile eines programmierbaren Verstärkungsverstärkers
- Weitere Verbesserung
In der Messbranche ist ein programmierbarer Verstärkungsverstärker (PGA) ein sehr wichtiger Funktionsblock. Wenn Sie ein elektronischer Enthusiast oder ein Student sind, haben Sie wahrscheinlich ein Multimeter oder Oszilloskop gesehen, das sehr kleine Spannungen sehr kostbar misst, da die Schaltung neben einem leistungsstarken ADC über einen integrierten PGA verfügt, der den präzisen Messvorgang unterstützt.
Heutzutage bietet der handelsübliche PGA-Verstärker einen Operationsverstärker-basierten, nicht invertierenden Verstärker mit einem vom Benutzer programmierbaren Verstärkungsfaktor. Dieser Gerätetyp hat eine sehr hohe Eingangsimpedanz, eine große Bandbreite und eine im IC integrierte wählbare Eingangsspannungsreferenz. Aber all diese Funktionen sind mit Kosten verbunden, und für mich lohnt es sich nicht, einen Chip für eine generische Anwendung so teuer zu machen.
Um diese Situationen zu überwinden, habe ich eine Anordnung aus einem Operationsverstärker, einem MOSFET und einem Arduino entwickelt, mit der ich die Verstärkung des Operationsverstärkers programmgesteuert ändern konnte. In diesem Tutorial werde ich Ihnen zeigen, wie Sie Ihren eigenen programmierbaren Verstärkungsverstärker mit einem LM358-Operationsverstärker und MOSFETs bauen, und ich werde neben dem Testen einige Vor- und Nachteile der Schaltung diskutieren.
Grundlagen des Operationsverstärkers
Um die Funktionsweise dieser Schaltung zu verstehen, ist es sehr wichtig zu wissen, wie ein Operationsverstärker funktioniert. Weitere Informationen zu Operationsverstärkern finden Sie in dieser Testschaltung für Operationsverstärker.
In der obigen Abbildung sehen Sie einen Operationsverstärker. Die grundlegende Aufgabe eines Verstärkers besteht darin, ein Eingangssignal zu verstärken. Neben der Verstärkung kann der Operationsverstärker auch verschiedene Operationen wie Summen, Differenzieren, Integrieren usw. ausführen. Erfahren Sie hier mehr über den Summierverstärker und den Differenzverstärker.
Der Operationsverstärker hat nur drei Anschlüsse. Das Terminal mit dem Vorzeichen (+) wird als nicht invertierender Eingang und das Terminal mit dem Zeichen (-) als invertierender Eingang bezeichnet. Neben diesen beiden Anschlüssen ist der dritte Anschluss der Ausgangsanschluss.
Ein Operationsverstärker folgt nur zwei Regeln
- Es fließt kein Strom in die Eingänge des Operationsverstärkers hinein oder aus diesen heraus.
- Der Operationsverstärker versucht, die Eingänge auf den gleichen Spannungspegeln zu halten.
Wenn diese beiden Regeln geklärt sind, können wir die folgenden Schaltkreise analysieren. Erfahren Sie mehr über Operationsverstärker, indem Sie verschiedene auf Operationsverstärkern basierende Schaltkreise durchlaufen.
Programmierbarer Verstärker funktioniert
Die obige Abbildung gibt Ihnen eine grundlegende Vorstellung von der Schaltungsanordnung meines Roh-PGA-Verstärkers. In dieser Schaltung ist der Operationsverstärker als nicht invertierender Verstärker konfiguriert, und wie wir alle mit einer nicht invertierenden Schaltungsanordnung wissen, können wir die Verstärkung des Operationsverstärkers durch Ändern des Rückkopplungswiderstands oder des Eingangswiderstands ändern. Wie Sie aus der obigen Schaltungsanordnung sehen können, muss ich nur die MOSFETs einzeln schalten, um die Verstärkung des Operationsverstärkers zu ändern.
Im Testabschnitt habe ich nur die MOSFETs einzeln geschaltet und die gemessenen Werte mit den praktischen Werten verglichen. Die Ergebnisse können Sie im Abschnitt "Testen der Schaltung" unten beobachten.
Erforderliche Komponenten
- Arduino Nano - 1
- LM358 IC - 1
- LM7805 Regler - 1
- BC548 Generischer NPN-Transistor - 2
- BS170 Generischer N-Kanal-MOSFET - 2
- 200K Widerstand - 1
- 50K Widerstand - 2
- 24K Widerstand - 2
- 6,8K Widerstand - 1
- 1K Widerstand - 4
- 4,7K Widerstand - 1
- 220R, 1% Widerstand - 1
- Tactile Switch Generic - 1
- Gelbe LED 3mm - 2
- Brotbrett generisch - 1
- Überbrückungsdrähte Generisch - 10
- Stromversorgung ± 12V - 1
Schematische Darstellung
Zur Demonstration eines programmierbaren Verstärkungsverstärkers wird die Schaltung mit Hilfe des Schaltplans auf einem lötfreien Steckbrett aufgebaut. Um die interne parasitäre Induktivität und Kapazität des Steckbretts zu verringern, wurden alle Komponenten so nahe wie möglich platziert.
Und wenn Sie sich fragen, warum sich in meinem Steckbrett eine Gruppe von Drähten befindet? Lassen Sie mich Ihnen sagen, dass es wichtig ist, eine gute Erdungsverbindung herzustellen, da die internen Erdungsverbindungen in einem Steckbrett sehr schlecht sind.
Hier ist der Operationsverstärker in der Schaltung als nicht invertierender Verstärker konfiguriert und die Eingangsspannung vom Spannungsregler 7805 beträgt 4,99 V.
Der gemessene Wert für den Widerstand R6 beträgt 6,75 K und R7 beträgt 220,8 R. Diese beiden Widerstände bilden einen Spannungsteiler, der zur Erzeugung der Eingangstestspannung für den Operationsverstärker verwendet wird. Die Widerstände R8 und R9 werden verwendet, um den Eingangsbasisstrom der Transistoren T3 und T4 zu begrenzen. Die Widerstände R10 und R11 werden verwendet, um die Schaltgeschwindigkeit der MOSFETs T1 und T2 zu begrenzen, da sie sonst Schwingungen in der Schaltung verursachen können.
In diesem Blog möchte ich Ihnen den Grund für die Verwendung eines MOSFET anstelle eines BJT zeigen, daher die Schaltungsanordnung.
Arduino Code für PGA
Hier wird Arduino Nano verwendet, um die Basis des Transistors und das Gate der MOSFETs zu steuern, und ein Multimeter wird verwendet, um die Spannungspegel anzuzeigen, da der eingebaute ADC des Arduino eine sehr schlechte Arbeit leistet, wenn es darum geht, niedrig zu messen Spannungspegel.
Der vollständige Arduino-Code für dieses Projekt ist unten angegeben. Da dies ein sehr einfacher Arduino-Code ist, müssen wir keine Bibliotheken einschließen. Wir müssen jedoch einige Konstanten und Eingabepins definieren, wie im Code gezeigt.
Das void setup () ist der Hauptfunktionsblock, in dem Lese- und Schreibvorgänge für alle Ein- und Ausgänge gemäß den Anforderungen ausgeführt werden.
#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__ int debounce_counter = 0; void setup () {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); } void loop () {bool val = digitalRead (BUTTON_PIN); // Eingabewert lesen if (val == LOW) {debounce_counter ++; if (debounce_counter> PRESSED_CONFIDENCE_LEVEL) {debounce_counter = 0; button_is_pressed ++; } if (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); } if (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); } if (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); } if (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); } if (button_is_pressed> = 4) {button_is_pressed = 0; }}}
Berechnungen für programmierbaren Verstärker
Die gemessenen Werte für die PGA-Verstärkerschaltung sind unten gezeigt.
Vin = 4,99 V R7 = 220,8 Ω R6 = 6,82 KΩ R5 = 199,5 K R4 = 50,45 K R3 = 23,99 K R2 = 23,98 K R1 = 50,5 K.
Hinweis! Die gemessenen Werte des Widerstands werden angezeigt, da wir mit gemessenen Widerstandswerten die theoretischen und praktischen Werte genau vergleichen können.
Nun wird die Berechnung vom Spannungsteilerrechner unten gezeigt,
Der Ausgang des Spannungsteilers beträgt 0,1564V
Berechnung der Verstärkung des nichtinvertierenden Verstärkers für die 4 Widerstände
Vout, wenn R1 der ausgewählte Widerstand ist
Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425 V.
Vout, wenn R2 der ausgewählte Widerstand ist
Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755 V.
Vout, wenn R3 der ausgewählte Widerstand ist
Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701 V.
Vout, wenn R4 der ausgewählte Widerstand ist
Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486 V.
Ich habe das alles getan, um die theoretischen und praktischen Werte so genau wie möglich zu vergleichen.
Nachdem alle Berechnungen durchgeführt wurden, können wir mit dem Testabschnitt fortfahren.
Testen der programmierbaren Verstärkerschaltung
Das obige Bild zeigt Ihnen die Ausgangsspannung, wenn der MOSFET T1 eingeschaltet ist, daher fließt Strom durch den Widerstand R1.
Das obige Bild zeigt Ihnen die Ausgangsspannung, wenn der Transistor T4 eingeschaltet ist, daher fließt Strom durch den Widerstand R4.
Das obige Bild zeigt Ihnen die Ausgangsspannung, wenn der MOSFET T2 eingeschaltet ist, daher fließt Strom durch den Widerstand R2.
Das obige Bild zeigt Ihnen die Ausgangsspannung, wenn der Transistor T3 eingeschaltet ist, daher fließt Strom durch den Widerstand R3.
Wie Sie dem Schema entnehmen können, sind T1, T2 MOSFETs und T3, T4 Transistoren. Wenn also MOSFETs verwendet werden, liegt der Fehler im Bereich von 1 bis 5 mV, aber wenn Transistoren als Schalter verwendet werden, erhalten wir einen Fehler im Bereich von 10 bis 50 mV.
Mit den obigen Ergebnissen ist klar, dass der MOSFET die Lösung für diese Art von Anwendung ist, und die theoretischen und praktischen Fehler können aufgrund des Offsetfehlers des Operationsverstärkers verursacht werden.
Hinweis! Bitte beachten Sie, dass ich nur zu Testzwecken zwei LEDs hinzugefügt habe und Sie diese im aktuellen Schaltplan nicht finden können. Es wird Binärcode angezeigt, um anzuzeigen, welcher Pin aktiv ist
Vor- und Nachteile eines programmierbaren Verstärkungsverstärkers
Da diese Schaltung billig, leicht und einfach ist, kann sie in vielen verschiedenen Anwendungen implementiert werden.
Hier wird der MOSFET als Schalter verwendet, um den gesamten Strom durch den Widerstand nach Masse zu leiten, weshalb der Einfluss der Temperatur nicht sicher ist. Mit meinen begrenzten Werkzeugen und Testgeräten konnte ich Ihnen die Auswirkungen unterschiedlicher Temperaturen nicht zeigen die Rennbahn.
Das Ziel der Verwendung eines BJT neben MOSFETs ist, dass ich Ihnen zeigen möchte, wie schlecht ein BJT für diese Art von Anwendung sein kann.
Die Werte der Rückkopplungswiderstände und der Eingangswiderstände müssen im KΩ-Bereich liegen. Dies bedeutet, dass bei niedrigeren Widerstandswerten mehr Strom durch den MOSFET fließt und somit mehr Spannung über den MOSFET abfällt, was zu unvorhersehbaren Ergebnissen führt.
Weitere Verbesserung
Die Schaltung kann weiter modifiziert werden, um ihre Leistung zu verbessern, wie wir den Filter hinzufügen können, um hochfrequente Geräusche zu unterdrücken.
Da in diesem Test der Jelly Bean-Operationsverstärker LM358 verwendet wird, spielen die Offset-Fehler des Operationsverstärkers bei der Ausgangsspannung eine wichtige Rolle. So kann es weiter verbessert werden, indem ein Instrumentenverstärker anstelle eines LM358 verwendet wird.
Diese Schaltung dient nur zu Demonstrationszwecken. Wenn Sie diese Schaltung in einer praktischen Anwendung verwenden möchten, müssen Sie einen Chopper-Operationsverstärker und einen hochpräzisen 0,1-Ohm-Widerstand verwenden, um absolute Stabilität zu erzielen.
Ich hoffe, Ihnen hat dieser Artikel gefallen und Sie haben etwas Neues daraus gelernt. Wenn Sie Zweifel haben, können Sie in den Kommentaren unten nachfragen oder unsere Foren für detaillierte Diskussionen nutzen.