17. Oktober 2024
Selbst die kostenlose Version von ChatGPT wird immer leistungsfähiger. Diese KI ist inzwischen in der Lage Schaltbilder, die in Form von Bilddateien vorliegen, zu lesen, zu analysieren und ihre Bauteilewerte zu berechnen. Selbstverständlich werden die Berechnungswege erklärt. Nicht immer liegt ChatGPT dabei richtig. Dennoch ist es ein mächtiges Werkzeug für die Ausbildung und die Reparatur. ChatGPT schlägt für die Instandsetzung sogar Ersatztypen von Halbleitern vor. ChatGPT gibt sogar Tipps für die systematische Fehlersuche. Schließlich wollte ich ein Berechnungsprogramm in Python erzeugt haben und eine Netzliste für eine Schaltungssimulation mit Spice. Alles kein Problem. Wohin wird die Entwicklung gehen?
ChatGPT wurde mit Unmengen von Fachliteratur für diese Aufgaben trainiert und arbeitet vereinfacht erklärt mit einer Wahrscheinlichkeitsrechnung, um die richtigen Antworten zu erzeugen. ChatGPT hat allerdings nicht logisch begriffen, wie Elektronik funktioniert. Es kann nur das adaptieren, mit dem es an Stoff „gefüttert“ worden ist. Inzwischen kann ChatGPT auch auf das Web zugreifen, um noch mehr Informationen zu erhalten.
Es ist nur noch eine Frage der Zeit, bis ChatGPT in Verbindungen mit bereits vorhandenen Tools wie Simulationsprogrammen für die Schaltungsentwicklung und Leiterplattenentwicklungsprogrammen die professionelle Entwicklung von Elektronikprojekten vereinfachen und beschleunigen wird.
Zum Einstieg ein einfaches Beispiel: Ich bat ChatGPT auf Grund einer Bilddatei von mir eine Transistorgrundschaltung zu erkennen und sie nach meinen Vorgaben zu dimensionieren. Nachfolgend die Schaltung
Seine Antwort: Das Bild zeigt eine typische Transistorverstärkerschaltung in Emitterschaltung (auch „common emitter“ genannt). Hier wird ein npn-Silizium-Kleinsignaltransistor (T1) verwendet, um ein Eingangssignal zu verstärken.
Aufbau und Funktion:
Rbo und Rbu (Basisspannungsteiler): Diese beiden Widerstände bilden einen Spannungsteiler, der die Basis des Transistors mit einer stabilen Vorspannung versorgt. Damit wird der Transistor in den aktiven Betriebsbereich gebracht.
Rc (Kollektorwiderstand): Dieser Widerstand begrenzt den Strom durch den Kollektor und legt zusammen mit der Stromverstärkung fest, wie stark das Eingangssignal verstärkt wird.
Re (Emitterwiderstand): Dieser Widerstand stabilisiert den Arbeitspunkt der Schaltung und verbessert die Temperaturstabilität. Er hat auch einen Einfluss auf die Verstärkung.
Ck (Koppelkondensator): Der Koppelkondensator trennt das Wechselstromsignal vom Gleichspannungsanteil am Eingang. Er lässt das Eingangssignal durch, blockiert aber die Gleichspannung.
Eingang und Ausgang: Das Eingangssignal wird am Kondensator Ck angelegt, das Ausgangssignal wird über den Kollektorwiderstand Rc abgegriffen.
Funktionsweise: Das Eingangssignal wird über den Koppelkondensator Ck zur Basis des Transistors geleitet.
Der Transistor verstärkt dieses Signal, indem er den Strom durch den Kollektor steuert. Der Verstärkungsfaktor hängt von der Dimensionierung der Widerstände ab.
Das verstärkte Ausgangssignal wird am Kollektor (Ausgang) abgenommen.
Dann bat ich ChatGPT die Schaltung zu berechnen: Berechne die Schaltung für Kollektorstrom = 2 mA, Speisespannung 12 Volt und Spannungsverstärkung 10 und der Transistor ist ein 2N2222. Nimm ein Stromverstärkungsfaktor von mindestens 200 an.
Seine Antwort:
Berechnungsprogramm mit Python: Es geht ja noch weiter. Nun bat ich ChatGPT ein Berechnunsprogramm in Python zu schreiben: „Könntest du mir in Python ein Berechnungsprogramm für diese Schaltung schreiben? Das Programm muss nur das umsetzen, was du an Berechnungen erklärt hast. Einzugeben wäre also die Betriebsspannung, der Stromverstärkungsfaktor des Transistors und die gewünschte Spannungsverstärkung der Schaltung und der gewünschte Kollektorstrom.“
Antwort von ChatGPT:
„Hier ist ein einfaches Python-Programm, das die Berechnungen für die angegebene Schaltung durchführt. Das Programm fragt nach der Betriebsspannung, dem Stromverstärkungsfaktor des Transistors, der gewünschten Spannungsverstärkung und dem Kollektorstrom. Anschließend berechnet es den Kollektorwiderstand, die Eingangs- und Ausgangsimpedanz, die maximale Eingangsspannung sowie die obere Grenzfrequenz der Schaltung.“
import math def berechnung_schaltung(U_bb, beta, A_v, I_C): # Konstanten R_e = 4700 # Emitterwiderstand in Ohm C_cb = 4e-12 # Kollektor-Basis-Kapazität in Farad C_be = 25e-12 # Basis-Emitter-Kapazität in Farad # Berechnungen R_C = (U_bb - 0.2) / I_C # Kollektorwiderstand R_in = R_e / (1 + beta) # Eingangswiderstand V_out_max = 2 * (U_bb - 0.2) * A_v # Maximale Ausgangsspannung V_in_max = V_out_max / A_v # Maximale Eingangsspannung # Miller-Kapazität C_M = C_cb * (1 + A_v) # Grenzfrequenz f_in = 1 / (2 * math.pi * R_in * C_M) # Grenzfrequenz in Hz # Ergebnisse ausgeben print(f"Kollektorwiderstand (R_C): {R_C:.2f} Ohm") print(f"Eingangsimpedanz (R_in): {R_in:.2f} Ohm") print(f"Maximale Ausgangsspannung (V_out_max): {V_out_max:.2f} V (pp)") print(f"Maximale Eingangsspannung (V_in_max): {V_in_max:.2f} V (pp)") print(f"Obere Grenzfrequenz (f_in): {f_in:.2f} Hz") # Benutzereingaben U_bb = float(input("Betriebsspannung (U_bb) in Volt: ")) beta = float(input("Stromverstärkungsfaktor (beta): ")) A_v = float(input("Gewünschte Spannungsverstärkung (A_v): ")) I_C = float(input("Kollektorstrom (I_C) in mA: ")) / 1000 # in A # Berechnungsfunktion aufrufen berechnung_schaltung(U_bb, beta, A_v, I_C)
Meine Anmerkung: Da sind leider Fehler drin. Nicht alle Widerstände berechnet! Das Programm muss ich mal Schritt für Schritt durchgehen ( https://elektronikbasteln.pl7.de/berechnung-einer-emitterschaltung-mit-wechselstrom-gegenkopplung ). Dieser Link von mir ist erprobt.
Hier die Version, die hoffentlich richtig ist:
def berechne_transistorschaltung(U_bb, I_C, V, beta): # Gegeben: Kollektorstrom in mA, Speisespannung in Volt, Spannungsverstärkung und Stromverstärkung V_be = 0.7 # Basis-Emitter-Spannung in Volt V_T = 25 # Temperaturspannung in mV, da wir mit mA und kOhm arbeiten # Berechnung des Kollektorwiderstands in kOhm R_C = (0.5 * U_bb / I_C) * (V / (V + 1)) # Berechnung des Emitterwiderstands in kOhm R_E = R_C / V # Basisvorspannung U_Basisvorspannung = V_be + (R_E * I_C) # Basisstrom in mA I_Basisgleichstrom = I_C / beta # Teilerströme in mA I_Rbu = 10 * I_Basisgleichstrom I_Rbo = 11 * I_Basisgleichstrom # Spannungen an den Teilerwiderständen U_Rbu = U_Basisvorspannung U_Rbo = U_bb - U_Basisvorspannung # Berechnung der Widerstände des Basisspannungsteilers in kOhm R_bo = U_Rbo / I_Rbo R_bu = U_Rbu / I_Rbu # Transkonduktanz (S) in mA/V S = I_C / V_T # Eingangswiderstand des Transistors in kOhm R_Eingang = beta * (R_E + (1 / S)) # Gesamter Eingangswiderstand als Parallelschaltung (in kOhm) R_gesEingang = 1 / ((1 / R_bo) + (1 / R_bu) + (1 / R_Eingang)) # Maximale unverzerrte Eingangsspannung in Volt U_einmax = (U_bb - V_be - (I_C * (R_C + R_E))) / V # Maximale unverzerrte Ausgangsspannung in Volt U_ausmax = V * U_einmax return R_C, R_bo, R_bu, R_E, R_gesEingang, U_einmax, U_ausmax # Benutzerinteraktion zur Eingabe U_bb = float(input("Geben Sie die Speisespannung (in Volt) ein: ")) I_C = float(input("Geben Sie den Kollektorstrom (in mA) ein: ")) V = float(input("Geben Sie die Spannungsverstärkung der gesamten Schaltung ein: ")) beta = float(input("Geben Sie den Stromverstärkungsfaktor des Transistors ein (z.B. 200): ")) # Berechnung durchführen R_C, R_bo, R_bu, R_E, R_gesEingang, U_einmax, U_ausmax = berechne_transistorschaltung(U_bb, I_C, V, beta) # Ergebnisse ausgeben print(f"\nBerechnete Werte:") print(f"Kollektorwiderstand RC: {R_C:.2f} kOhm") print(f"Emitterwiderstand RE: {R_E:.2f} kOhm") print(f"Widerstand R1 (oberer Spannungsteiler): {R_bo:.2f} kOhm") print(f"Widerstand R2 (unterer Spannungsteiler): {R_bu:.2f} kOhm") print(f"Eingangswiderstand des Verstärkers: {R_gesEingang:.2f} kOhm") print(f"Ausgangswiderstand des Verstärkers: {R_C:.2f} kOhm") print(f"Maximale Eingangsspannung: {U_einmax:.2f} Vs") print(f"Maximale Ausgangsspannung: {U_ausmax:.2f} Vs")
Das obige Script hat ChatGPT als fehlerfrei betrachtet. Daraus habe ich mir dann von ChatGPT eine HTML-Seite mit dem Berechnungsprogramm als JavaScript machen lassen:
Emitterschaltung_mit_Stromgegenkopplung
Den Link anklicken und das Berechnungsprogramm verwenden. Beim ersten Versuch hatte sich ChatGPT mit den Kommastellen verhaspelt. Es klappt selten auf Anhieb.
Zur Sicherheit die Schaltung mit PSpice simuliert:
Netzliste mit für Spice: Dann bat ich ChatGPT von der Schaltung eine Netzliste für Simulation in Spice zu erzeugen:
* Netzliste für Transistorschaltung mit 2N2222 * Knotenbezeichnungen: * VCC -> Betriebsspannung * Vin -> Eingang * Vout -> Ausgang * Bauteile V1 VCC 0 DC 12 ; Betriebsspannung (12V) R1 Vin 1 1k ; Eingangswiderstand (R_bo) C1 Vin 0 10n ; Eingangskondensator (C_k) R2 1 2 10k ; Basiswiderstand (R_bu) Q1 2 3 0 2N2222 ; NPN Transistor (2N2222) R3 3 Vout 1k ; Kollektorwiderstand (R_C) R4 3 0 4.7k ; Emitterwiderstand (R_e) C2 3 0 1u ; Kollektorkondensator (C_cb) C3 2 0 10n ; Basis-Emitter-Kondensator (C_be) * Knoten .model 2N2222 NPN (IS=1E-14 BF=200) .end
Was noch nicht ist, kann ja noch kommen.
Frequenzgang berechnen lassen: Meine Frage und die Antwort dazu:
import numpy as np import pandas as pd def berechnung_frequenzgang(U_bb, beta, A_v, I_C, R_e): f_range = np.logspace(0, 6, num=100) # Frequenzbereich von 1 Hz bis 1 MHz V_out = [] for f in f_range: # Berechnung der Miller-Kapazität C_cb = 4e-12 # Kollektor-Basis-Kapazität in Farad C_be = 25e-12 # Basis-Emitter-Kapazität in Farad C_M = C_cb * (1 + A_v) # Berechnung des Ausgangswiderstands R_C = (U_bb - 0.2) / I_C # Kollektorwiderstand # Berechnung der Grenzfrequenz f_cutoff = 1 / (2 * np.pi * R_C * C_M) # Ausgangsspannung in Abhängigkeit von der Frequenz if f < f_cutoff: V_out_value = A_v * (U_bb - 0.2) * (1 - (f / f_cutoff)) else: V_out_value = A_v * (U_bb - 0.2) * (f_cutoff / f) V_out.append(V_out_value) # Erstellen einer Tabelle mit Frequenz und Ausgangsspannung freq_table = pd.DataFrame({ 'Frequenz (Hz)': f_range, 'Ausgangsspannung (V)': V_out }) return freq_table # Benutzereingaben U_bb = 12 # Betriebsspannung in Volt beta = 200 # Stromverstärkungsfaktor A_v = 10 # Gewünschte Spannungsverstärkung I_C = 2e-3 # Kollektorstrom in A (2 mA) R_e = 4700 # Emitterwiderstand in Ohm # Frequenzgang berechnen frequenzgang_tabelle = berechnung_frequenzgang(U_bb, beta, A_v, I_C, R_e) # Tabelle ausgeben print(frequenzgang_tabelle)
Analyse eines UKW-Tuners: Der nachfolgende Schaltungsauszug stammt aus der Stereoanlage Tandberg TR-200. Diese Stereoanlage kam in den frühen 1970er Jahren auf den Markt.
Die Antworten von ChatGPT:
Ich habe dann noch weiter gezielt nachgefragt und weitere Vorschläge für die Berechnung erhalten. Leider erlaubt ChatGPT keine öffentliche Verlinkung des Themas, wenn der Nutzer Bilder zur Verfügung gestellt hat. Aber jeder kann es mit ChatGPT selbst ausprobieren und die Ergebnisse überprüfen. Sämtliche Berechnungen sind selbstverständlich ohne Gewähr.
Vorstellung des Schaltbildes eines klassischen Röhrenradios: Kann ChatGPT erkennen worum es hier geht? Nachfolgend das zu untersuchende Schaltbild:
Meine Bitte und die Reaktion von ChatGPT:
ChatGPT ist immer freundlich und bemüht. Es lieferte dann einige Vorschläge, die von der KI namens DALLE geschaffen werden. Das Programm verstand allerdings nicht, das ein Blockschaltbild aus beschrifteten Rechtecken besteht, die durch Pfeile verbunden sind, um die Signalwege zu verdeutlichen. Stattdessen lieferte ChatGPT künstlerisch interessante Darstellungen, die von einer blühenden Phantasie zeugen. Trotzdem darf ich die Bilder auf mein Nachfragen ausdrücklich veröffentlichen:
Mit Grafiken hat ChatGPT in Verbindung mit DALLE immer noch Schwierigkeiten. Offenbar wurde es nicht auf die Darstellung von ganz einfachen Blockschaltbildern, die aus Rechtecken bestehen, trainiert. Stattdessen bekommt man mehr oder weniger wirre Darstellungen, die keinen didaktischen Sinn machen. Aber immerhin sind die Darstellungen vom künstlerischen Standpunkt her interessant. ChatGPT versucht der Wahrscheinlichkeit nach das zu treffen, was nach seinen Trainingsdaten höchstwahrscheinlich passt. Den Sinn versteht es nicht. Warten wir ab, was ChatGPT in dieser Hinsicht in ein paar Jahren an positiven Überraschungen zu bieten hat.
Zusammenfassend lässt sich zu der Röhrenschaltung sagen, dass ChatGPT eine grobe Orientierung bieten kann, falls jemand diesen in Europa sehr verbreiteten Röhrensatz aus den späten 1950er Jahren noch nicht kennen sollte. Reparieren kann man mit seinen Informationen ohne Vorkenntnisse der speziellen Schaltungstechnik allerdings noch kein Röhrenradio. Mit entsprechenden Stichworten kann ChatGPT den groben Überblick liefern, um sich selbst in die Materie gezielter einarbeiten zu können.
ChatGPT erlaubte mir auf mein Nachfragen ausdrücklich die Bilder und Screenshots zu veröffentlichen. Ihm ist es wichtig anzugeben, dass die Screenshots von ChatGPT stammen und dass die Angaben von ChatGPT mit Fehlern behaftet sein können.
Fazit: Was die Berechnung von einfachen Transistorschaltungen angeht, bin ich einfach nur über allen Erwartungen positiv überrascht. Wer sich in die Elektronik einarbeiten will, soll sich ein paar didaktisch gut aufgebaute Lehrbücher herunterladen oder besorgen, um einen Überblick zu erhalten. In Verbindung damit nicht Zögern ChatGPT gezielte Fragen zu stellen, um einen Dialog aufzubauen, was motiviert und den Lernerfolg beschleunigt. Zusätzlich empfehle ich die Nutzung von kostenlosen Simulationsprogrammen wie LTSpice oder KiCad, um seine Überlegungen berechnen und überprüfen zu können.