Photonics-Helfer/src/Fehlenden_Elektronik.c

414 lines
13 KiB
C
Raw Normal View History

2024-12-14 23:50:26 +01:00
/* 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 <stdio.h>
#include <math.h>
#include <stdlib.h>
// 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() {
2024-12-15 20:05:04 +01:00
double verstaerkung, basisstrom, kollektorstrom, saettigungsspannung;
2024-12-14 23:50:26 +01:00
printf("\nTransistor-Berechnung:\n");
printf("Verstärkungsfaktor (hFE): ");
2024-12-15 20:05:04 +01:00
scanf("%lf", &verstaerkung);
2024-12-14 23:50:26 +01:00
printf("Basisstrom (in Ampere): ");
scanf("%lf", &basisstrom);
2024-12-15 20:05:04 +01:00
kollektorstrom = verstaerkung * basisstrom;
2024-12-14 23:50:26 +01:00
printf("Der Kollektorstrom beträgt %.6f Ampere.\n", kollektorstrom);
printf("Sättigungsspannung (in Volt): ");
2024-12-15 20:05:04 +01:00
scanf("%lf", &saettigungsspannung);
printf("Die Sättigungsspannung beträgt %.2f Volt.\n", saettigungsspannung);
2024-12-14 23:50:26 +01:00
}
void kondensator_berechnen() {
2024-12-15 19:58:51 +01:00
double kapazitaet, spannung, energie, zeit, widerstand;
2024-12-14 23:50:26 +01:00
printf("\nKondensator-Berechnung:\n");
2024-12-15 20:08:39 +01:00
printf("kapazität (in Farad): ");
2024-12-15 19:58:51 +01:00
scanf("%lf", &kapazitaet);
2024-12-14 23:50:26 +01:00
printf("Spannung (in Volt): ");
scanf("%lf", &spannung);
2024-12-15 19:58:51 +01:00
energie = 0.5 * kapazitaet * pow(spannung, 2);
2024-12-14 23:50:26 +01:00
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);
2024-12-15 19:58:51 +01:00
zeit = kapazitaet * widerstand;
2024-12-15 20:05:04 +01:00
printf("Die Zeitkonstante betraegt %.2f Sekunden.\n", zeit);
2024-12-14 23:50:26 +01:00
}
}
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", &current);
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;
}