ChatGPT liest, analysiert und berechnet Schaltbilder nach Deinen Anweisungen

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.

Tandberg T2 200 Ukw Tuner
Schaltbild des UKW-Tuner aus einer Stereoanlage Tandberg TR-200 aus den 1970er Jahren. Selbst relativ anspruchsvolle Schaltungen kann ChatGPT analysieren und teilweise berechnen.

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

Emitterschaltung
Emitterschaltung mit Stromgegenkopplung. ChatGPT hatte die Schaltung korrekt identifizieren und lesen können.

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:

Bildschirmfoto Zu 2024 10 16 20 09 52

Bildschirmfoto Zu 2024 10 16 20 10 28

Bildschirmfoto Zu 2024 10 16 20 11 05

Bildschirmfoto Zu 2024 10 17 07 39 56

Bildschirmfoto Zu 2024 10 17 07 40 23

Bildschirmfoto Zu 2024 10 17 07 47 39

Bildschirmfoto Zu 2024 10 17 07 48 14

Bildschirmfoto Zu 2024 10 17 07 54 41

Bildschirmfoto Zu 2024 10 17 07 55 16

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:

Pspice Simu Emitterschaltung Stromgegenkopplung
Simulation der Emitterschaltung mit PSpice zur Kontrolle.

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

Bildschirmfoto Zu 2024 10 17 10 12 36

Bildschirmfoto Zu 2024 10 17 10 17 28

Was noch nicht ist, kann ja noch kommen.

Frequenzgang berechnen lassen: Meine Frage und die Antwort dazu:

Bildschirmfoto Zu 2024 10 17 10 22 27

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.

Tandberg T2 200 Ukw Tuner
Ein UKW-Tuner, den ChatGPT untersuchen soll.

Die Antworten von ChatGPT:

Bildschirmfoto Zu 2024 10 17 08 01 55

Bildschirmfoto Zu 2024 10 17 08 03 26

Bildschirmfoto Zu 2024 10 17 08 04 03

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:

Schaltbild Unbekannt
ChatGPT soll dieses Schaltung untersuchen. Siehe auch https://elektronikbasteln.pl7.de/roehrenradio-braun-555-ukw

Meine Bitte und die Reaktion von ChatGPT:

Bildschirmfoto Zu 2024 10 17 08 20 51

Bildschirmfoto Zu 2024 10 17 08 21 21

Bildschirmfoto Zu 2024 10 17 09 00 50

Bildschirmfoto Zu 2024 10 17 09 01 21

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:

Blockschaltbildvorschlag1
Erster Vorschlag eines Blockschaltbildes eines Superhets von ChatGPT.
Blockschaltbildvorschlag2
Der zweite Vorschlag.
Blockschaltbildvorschlag3
Der dritte Vorschlag.

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.