/* Elektronikhelper Dieses Programm ist eine Unterstzützung in der Elektronik. Es berechnet leichte rechnungsschritte. Autor: Elena und Philip MR1 Semester Firma: FHGR Version 1.0 Datum 14.12.2024 Aenderungen: V 1.0 14.12.2024 Erste Version */ // Bibliothek #include #include #include // Hilfsfunktionen #define PI 3.141592653589793 #define BOLTZMANN 1.380649e-23 #define ELEMENTARLADUNG 1.602176634e-19 // Funktionen für Widerstandsberechnungen void widerstand_berechnen() { double spannung, strom, widerstand; int auswahl; printf("\nWiderstandsberechnung (Ohmsches Gesetz):\n"); printf("1. Widerstand berechnen\n"); printf("2. Spannung berechnen\n"); printf("3. Strom berechnen\n"); printf("Wählen Sie eine Option: "); scanf("%d", &auswahl); switch (auswahl) { case 1: printf("Spannung (in Volt): "); scanf("%lf", &spannung); printf("Strom (in Ampere): "); scanf("%lf", &strom); if (strom != 0) { widerstand = spannung / strom; printf("Der Widerstand beträgt %.2f Ohm.\n", widerstand); } else { printf("Der Strom darf nicht null sein.\n"); } break; case 2: printf("Widerstand (in Ohm): "); scanf("%lf", &widerstand); printf("Strom (in Ampere): "); scanf("%lf", &strom); if (widerstand > 0) { spannung = widerstand * strom; printf("Die Spannung beträgt %.2f Volt.\n", spannung); } else { printf("Der Widerstand muss größer als null sein.\n"); } break; case 3: printf("Spannung (in Volt): "); scanf("%lf", &spannung); printf("Widerstand (in Ohm): "); scanf("%lf", &widerstand); if (widerstand > 0) { strom = spannung / widerstand; printf("Der Strom beträgt %.2f Ampere.\n", strom); } else { printf("Der Widerstand muss größer als null sein.\n"); } break; default: printf("Ungültige Auswahl.\n"); } } void parallelschaltung_berechnen() { int anzahl; double widerstand, gesamtwiderstand = 0; printf("\nParallelschaltung von Widerständen:\n"); printf("Anzahl der Widerstände: "); scanf("%d", &anzahl); for (int i = 0; i < anzahl; i++) { printf("Widerstand %d (in Ohm): ", i + 1); scanf("%lf", &widerstand); if (widerstand > 0) { gesamtwiderstand += 1 / widerstand; } else { printf("Ein Widerstand muss größer als null sein.\n"); return; } } if (gesamtwiderstand > 0) { gesamtwiderstand = 1 / gesamtwiderstand; printf("Der Gesamtwiderstand der Parallelschaltung beträgt %.2f Ohm.\n", gesamtwiderstand); } } void reihenschaltung_berechnen() { int anzahl; double widerstand, gesamtwiderstand = 0; printf("\nReihenschaltung von Widerständen:\n"); printf("Anzahl der Widerstände: "); scanf("%d", &anzahl); for (int i = 0; i < anzahl; i++) { printf("Widerstand %d (in Ohm): ", i + 1); scanf("%lf", &widerstand); if (widerstand > 0) { gesamtwiderstand += widerstand; } else { printf("Ein Widerstand muss größer als null sein.\n"); return; } } printf("Der Gesamtwiderstand der Reihenschaltung beträgt %.2f Ohm.\n", gesamtwiderstand); } void komplexe_schaltung_berechnen() { int anzahlReihen, anzahlParallel; double reihenWiderstand = 0, parallelWiderstand = 0, gesamtwiderstand = 0; printf("\nBerechnung komplexer Netzwerke:\n"); // Reihenschaltung printf("Anzahl der Widerstände in der Reihenschaltung: "); scanf("%d", &anzahlReihen); for (int i = 0; i < anzahlReihen; i++) { double widerstand; printf("Widerstand %d (in Ohm): ", i + 1); scanf("%lf", &widerstand); if (widerstand > 0) { reihenWiderstand += widerstand; } else { printf("Ein Widerstand muss größer als null sein.\n"); return; } } // Parallelschaltung printf("Anzahl der Widerstände in der Parallelschaltung: "); scanf("%d", &anzahlParallel); for (int i = 0; i < anzahlParallel; i++) { double widerstand; printf("Widerstand %d (in Ohm): ", i + 1); scanf("%lf", &widerstand); if (widerstand > 0) { parallelWiderstand += 1 / widerstand; } else { printf("Ein Widerstand muss größer als null sein.\n"); return; } } if (parallelWiderstand > 0) { parallelWiderstand = 1 / parallelWiderstand; } // Gesamtwiderstand gesamtwiderstand = reihenWiderstand + parallelWiderstand; printf("Der Gesamtwiderstand des Netzwerks beträgt %.2f Ohm.\n", gesamtwiderstand); } // Spannungsteiler-Funktion void spannungsteiler_berechnen() { int anzahl; double vin, vout, gesamtwiderstand = 0; printf("\nSpannungsteiler-Berechnung:\n"); printf("Anzahl der Widerstände im Spannungsteiler: "); scanf("%d", &anzahl); double widerstaende[anzahl]; for (int i = 0; i < anzahl; i++) { printf("Widerstand R%d (in Ohm): ", i + 1); scanf("%lf", &widerstaende[i]); gesamtwiderstand += widerstaende[i]; } printf("Eingangsspannung Vin (in Volt): "); scanf("%lf", &vin); for (int i = 0; i < anzahl; i++) { vout = vin * (widerstaende[i] / gesamtwiderstand); printf("Spannung über R%d beträgt %.2f Volt.\n", i + 1, vout); } } // Leistungsberechnung void leistung_berechnen() { double spannung, strom, leistung; int auswahl; printf("\nLeistungsberechnung:\n"); printf("1. Leistung berechnen (benötigt Spannung und Strom)\n"); printf("2. Spannung berechnen (benötigt Leistung und Strom)\n"); printf("3. Strom berechnen (benötigt Leistung und Spannung)\n"); printf("Wählen Sie eine Option: "); scanf("%d", &auswahl); switch (auswahl) { case 1: printf("Spannung (in Volt): "); scanf("%lf", &spannung); printf("Strom (in Ampere): "); scanf("%lf", &strom); leistung = spannung * strom; printf("Die Leistung beträgt %.2f Watt.\n", leistung); break; case 2: printf("Leistung (in Watt): "); scanf("%lf", &leistung); printf("Strom (in Ampere): "); scanf("%lf", &strom); if (strom > 0) { spannung = leistung / strom; printf("Die Spannung beträgt %.2f Volt.\n", spannung); } else { printf("Der Strom muss größer als null sein.\n"); } break; case 3: printf("Leistung (in Watt): "); scanf("%lf", &leistung); printf("Spannung (in Volt): "); scanf("%lf", &spannung); if (spannung > 0) { strom = leistung / spannung; printf("Der Strom beträgt %.2f Ampere.\n", strom); } else { printf("Die Spannung muss größer als null sein.\n"); } break; default: printf("Ungültige Auswahl.\n"); } } // Weitere Funktionen (Dioden, Transistoren, Kondensatoren, LEDs, Knoten-/Maschenregel) void dioden_berechnen() { double temperatur, schwellenspannung, is, strom; printf("\nDioden-Berechnung:\n"); printf("Geben Sie die Temperatur (in Kelvin) ein: "); scanf("%lf", &temperatur); printf("Geben Sie den Sättigungsstrom Is (in Ampere) ein: "); scanf("%lf", &is); printf("Geben Sie die Schwellenspannung der Diode (in Volt) ein: "); scanf("%lf", &schwellenspannung); double vt = (BOLTZMANN * temperatur) / ELEMENTARLADUNG; strom = is * (exp(schwellenspannung / vt) - 1); printf("Der Strom durch die Diode beträgt %.6f Ampere.\n", strom); } void transistor_berechnen() { double verstaerkung, basisstrom, kollektorstrom, saettigungsspannung; printf("\nTransistor-Berechnung:\n"); printf("Verstärkungsfaktor (hFE): "); scanf("%lf", &verstaerkung); printf("Basisstrom (in Ampere): "); scanf("%lf", &basisstrom); kollektorstrom = verstaerkung * basisstrom; printf("Der Kollektorstrom beträgt %.6f Ampere.\n", kollektorstrom); printf("Sättigungsspannung (in Volt): "); scanf("%lf", &saettigungsspannung); printf("Die Sättigungsspannung beträgt %.2f Volt.\n", saettigungsspannung); } void kondensator_berechnen() { double kapazitaet, spannung, energie, zeit, widerstand; printf("\nKondensator-Berechnung:\n"); printf("kapazität (in Farad): "); scanf("%lf", &kapazitaet); printf("Spannung (in Volt): "); scanf("%lf", &spannung); energie = 0.5 * kapazitaet * pow(spannung, 2); printf("Die Energie im Kondensator beträgt %.6f Joule.\n", energie); printf("Entladezeit berechnen? (1 für Ja, 0 für Nein): "); int wahl; scanf("%d", &wahl); if (wahl == 1) { printf("Widerstand (in Ohm): "); scanf("%lf", &widerstand); zeit = kapazitaet * widerstand; printf("Die Zeitkonstante betraegt %.2f Sekunden.\n", zeit); } } void led_vorwiderstand_berechnen() { double betriebsspannung, durchlassspannung, strom, vorwiderstand, verlustleistung; printf("\nLED-Vorwiderstandsberechnung:\n"); printf("Betriebsspannung (in Volt): "); scanf("%lf", &betriebsspannung); printf("Durchlassspannung der LED (in Volt): "); scanf("%lf", &durchlassspannung); printf("Strom durch die LED (in Ampere): "); scanf("%lf", &strom); vorwiderstand = (betriebsspannung - durchlassspannung) / strom; verlustleistung = pow((betriebsspannung - durchlassspannung), 2) / vorwiderstand; printf("Der Vorwiderstand beträgt %.2f Ohm.\n", vorwiderstand); printf("Die maximale Verlustleistung des Widerstands beträgt %.2f Watt.\n", verlustleistung); } void knotenregel_berechnen() { int n; // Anzahl der Ströme und Spannungen float sum_current = 0.0, current; // Knotenregel: Ströme berechnen printf("Geben Sie die Anzahl der Stroeme ein im Knoten: "); scanf("%d", &n); printf("Geben Sie die Stroeme ein (in Ampere):\n"); for (int i = 1; i <= n; i++) { printf("Strom %d: ", i); scanf("%f", ¤t); sum_current += current; // Ströme addieren } printf("\nSumme der Ströme: %.2f A\n", sum_current); if (sum_current == 0) { printf("Der Knoten erfüllt die Knotenregel (Summe der Ströme ist null).\n"); } else { printf("Der Knoten erfüllt die Knotenregel nicht (Summe der Ströme ist %.2f).\n", sum_current); } } void maschenregel_berechnen() { int n; // Anzahl der Ströme und Spannungen float sum_voltage = 0.0, voltage; // Maschenregel: Spannungen berechnen printf("\nGeben Sie die Anzahl der Spannungen in einer Masche ein: "); scanf("%d", &n); printf("Geben Sie die Spannungen ein (in Volt):\n"); for (int i = 1; i <= n; i++) { printf("Spannung %d: ", i); scanf("%f", &voltage); sum_voltage += voltage; // Spannungen addieren } // Überprüfung der Maschenregel printf("\nSumme der Spannungen: %.2f V\n", sum_voltage); if (sum_voltage == 0) { printf("Die Masche erfüllt die Maschenregel (Summe der Spannungen ist null).\n"); } else { printf("Die Masche erfüllt die Maschenregel nicht (Summe der Spannungen ist %.2f).\n", sum_voltage); } } int Fehlenden_Elektronik_main() { char auswahl[21] = {0}; long auswahl_int = 0; char *endptr; do { printf("\nElektronik-Berechnungstool:\n"); printf("1. Widerstandsberechnung (Ohmsches Gesetz)\n"); printf("2. Parallelschaltung von Widerständen\n"); printf("3. Reihenschaltung von Widerständen\n"); printf("4. Komplexe Netzwerke\n"); printf("5. Spannungsteiler\n"); printf("6. Leistungsberechnung\n"); printf("7. Dioden-Berechnung\n"); printf("8. Transistor-Berechnung\n"); printf("9. Kondensator-Berechnung\n"); printf("10. LED-Vorwiderstandsberechnung\n"); printf("11. Knotenregel-Berechnung\n"); printf("12. Maschenregel-Berechnung\n"); printf("0. Beenden\n"); printf("Wählen Sie eine Option: "); scanf("%20s", auswahl); auswahl_int = strtol((const char*)auswahl, &endptr, 10); if (*endptr != 0){ auswahl_int = -1; } if (*endptr == 'q'){ return 10; } switch (auswahl_int) { case 1: widerstand_berechnen(); break; case 2: parallelschaltung_berechnen(); break; case 3: reihenschaltung_berechnen(); break; case 4: komplexe_schaltung_berechnen(); break; case 5: spannungsteiler_berechnen(); break; case 6: leistung_berechnen(); break; case 7: dioden_berechnen(); break; case 8: transistor_berechnen(); break; case 9: kondensator_berechnen(); break; case 10: led_vorwiderstand_berechnen(); break; case 11: knotenregel_berechnen(); break; case 12: maschenregel_berechnen(); break; case 0: printf("Programm beendet.\n"); break; default: printf("Ungültige Auswahl.\n"); } } while (auswahl_int != 0); return 0; }