schaltungen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| — | schaltungen [30.11.2020] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Elektronische Schaltungen ====== | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== Taktgeber ==== | ||
| + | |||
| + | Um eine kleine LED im Takt blinken zu lassen, verwendet man einen NE555.\\ | ||
| + | \\ | ||
| + | {{:: | ||
| + | {{:: | ||
| + | |||
| + | Benötigt werden folgende Bauteile: | ||
| + | |||
| + | * NE555 | ||
| + | * Kondensator (C1, 100µF) | ||
| + | * Kondensator (C2, 104, 100nF) | ||
| + | * Widerstand (R1, 10K Ohm) | ||
| + | * Widerstand (R2, 10K Ohm) | ||
| + | * Widerstand (R3, 585 Ohm) | ||
| + | * LED, gelb oder rot | ||
| + | * Lochrasterplatine | ||
| + | * 9V Block | ||
| + | \\ | ||
| + | Die LED blinkt mit einer Frequenz von 0,472 Hz.\\ | ||
| + | |||
| + | \\ | ||
| + | Die Frequenz lässt sich auch berechnen: | ||
| + | |||
| + | {{ :: | ||
| + | |||
| + | \\ | ||
| + | Quellen:\\ | ||
| + | https:// | ||
| + | http:// | ||
| + | http:// | ||
| + | http:// | ||
| + | http:// | ||
| + | https:// | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== Transistor ==== | ||
| + | Grundlage meiner Schaltungsexperimente sind diese Seiten:\\ | ||
| + | https:// | ||
| + | https:// | ||
| + | http:// | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== Optokoppler ==== | ||
| + | |||
| + | Grundlage meiner Schaltungsexperimente ist diese Seite:\\ | ||
| + | http:// | ||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ==== Geiger-Müller-Zählrohr auslesen ==== | ||
| + | |||
| + | |||
| + | Zum Bau eines Detektors für Beta- und Gammastrahlung verwendet man ein Geiger-Müller-Zählrohr.\\ | ||
| + | Dieses mit Edelgas gefüllte Metallrohr benötigt eine Hochspannung von ca. 400 V. Die Teilchen erzeugen eine Entladung innerhalb des Rohrs die wiederum gemessen werden kann.\\ | ||
| + | \\ | ||
| + | Die Hochspannung wird mittels Taktgeber, Drossel und Diode erzeugt. Das Signal wird über eine Transistor/ | ||
| + | \\ | ||
| + | Hier die Schaltung, Bauteilliste sowie Fotos vom Testaufbau auf einer Steckplatine.\\ | ||
| + | |||
| + | {{:: | ||
| + | {{:: | ||
| + | {{:: | ||
| + | |||
| + | Benötigt werden folgende Bauteile: | ||
| + | |||
| + | * IC (NE555) - Conrad 152184-62 - 0,24 € | ||
| + | * Kondensator (1 nF) - Conrad 1235230-62 - 0,10 € | ||
| + | * Kondensator (10 nF/1250V) - Conrad 456500-62 - 0,87 € | ||
| + | * Widerstand (220 K Ohm) - Conrad 1417665-62 - 0,06 € | ||
| + | * Widerstand (330 Ohm) - Conrad 405191-62 - 0,09 € | ||
| + | * Widerstand (1 K Ohm) - Conrad 1417606-62 - 0,10 € | ||
| + | * Widerstand (100 K Ohm) - Conrad 1417735-62 | ||
| + | * Widerstand (15 Ohm / 1 W) - Conrad 1474474-62 - 0,24 € | ||
| + | * Widerstand (4,7 M Ohm) - Conrad | ||
| + | * Diode (1N914 / 100V) - 1262857-62 - 0,10 € | ||
| + | * Diode (1N4937 / 600V) - 564856-62 - 0,45 € | ||
| + | * Transistor (FJN3303F oder auch PHE13007) - Conrad 1113124-62 - 0,79 € | ||
| + | * Transistor (2N3904) - Conrad 163350-62 - 0,20 € | ||
| + | * Drossel (10 mH) - Conrad 535524-62 - 1,28 € | ||
| + | * Lochrasterplatine - Conrad 1516559-62 - 9,76 € | ||
| + | * 9V Block - Aldi - 1,79 € | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | Die Auswertung des vom Zählrohr kommende Signal erfolt über diese Schaltung: | ||
| + | {{:: | ||
| + | \\ | ||
| + | Hier wird das Signal über einen Spannungsteiler reduziert und über einen Optokoppler an den Arduino Uno übergeben.\\ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | {{:: | ||
| + | \\ | ||
| + | \\ | ||
| + | Gesamtbautteileliste: | ||
| + | < | ||
| + | Menge Artikel Bezeichnung Einzelpreis Summe | ||
| + | |||
| + | 1 Stück 152184 IC NE555P DIP8 TID EUR 0.24 EUR 0.24 | ||
| + | 1 Stück 1235230 MKT 1nF 100V 10% RM5 Ammo EUR 0.11 EUR 0.11 | ||
| + | 1 Stück 456500 KONDENS. FKP1 0,01µF 1250VDC 10% EUR 0.94 EUR 0.94 | ||
| + | 1 Stück 1417665 Kohle-Widerst. 5% 0207 0,25W 220K EUR 0.06 EUR 0.06 | ||
| + | 1 Stück 405191 K.-WID.0, | ||
| + | 1 Stück 1417606 MET.-WID.1K 0,6W 1% 0207 EUR 0.11 EUR 0.11 | ||
| + | 1 Stück 1417735 Kohle-Widerst. 5% 0207 0,25W 100K EUR 0.06 EUR 0.06 | ||
| + | 1 Stück 1474474 WIDERSTAND 15K OHM 1W 5% AXIAL EUR 0.26 EUR 0.26 | ||
| + | 1 Stück 405370 K.-WID.0, | ||
| + | 1 Stück 1262857 DIODE DO-214-ACLL SIG 1N914BTR DO-35 ONS EUR 0.10 EUR 0.10 | ||
| + | 1 Stück 564856 DIODE SCHN REC 1N4937-E3/ | ||
| + | 1 Stück 1113124 TRANS NPN 400V PHE13007, | ||
| + | 1 Stück 535524 DROSSEL 10 MH EUR 1.39 EUR 1.39 | ||
| + | 2 Stück 163350 TRANSISTOR 2 N 3904BU TO92 ONS EUR 0.22 EUR 0.44 | ||
| + | 1 Stück 405418 K.-WID.0, | ||
| + | 1 Stück 1417669 Kohle-Widerst. 5% 0207 0,25W 390R EUR 0.06 EUR 0.06 | ||
| + | 2 Stück 1417697 Kohle-Widerst. 5% 0207 0,25W 10K EUR 0.06 EUR 0.12 | ||
| + | 1 Stück 1584824 K.-WID. 100 KR 1/4W 0207 5% 6.8X2.5MM EUR 0.12 EUR 0.12 | ||
| + | 1 Stück 1265480 OPTOCOUPLER DARL 1.5KVRM 4N33M DIP-6 ONS EUR 0.60 EUR 0.60 | ||
| + | 1 Stück 1589456 KERKO 220PF 500V RM5,08 Y5P EUR 0.10 EUR 0.10 | ||
| + | 2 Stück 189502 IC-FASSUNG 8POLIG EUR 0.16 EUR 0.32 | ||
| + | |||
| + | Gesamtpreis EUR 6.67 | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | === Ardunio-Script === | ||
| + | |||
| + | arduino_uno_gm_display_netz_messdaten.ino\\ | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | /* Quelle: | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | */ | ||
| + | |||
| + | // Display Standard | ||
| + | // include the library code: | ||
| + | #include < | ||
| + | // initialize the library with the numbers of the interface pins | ||
| + | // | ||
| + | LiquidCrystal lcd(8, 9, 5, 7, 3, 6); // neue verkabelung mit netzwerk | ||
| + | /* | ||
| + | The circuit: | ||
| + | * LCD RS pin to digital pin 12 | ||
| + | * LCD Enable pin to digital pin 11 | ||
| + | * LCD D4 pin to digital pin 5 | ||
| + | * LCD D5 pin to digital pin 4 | ||
| + | * LCD D6 pin to digital pin 3 | ||
| + | * LCD D7 pin to digital pin 2 -> neu: 6 | ||
| + | * LCD R/W pin to ground | ||
| + | * LCD VSS pin to ground | ||
| + | * LCD VCC pin to 5V | ||
| + | * 10K resistor: | ||
| + | * ends to +5V and ground | ||
| + | * wiper to LCD VO pin (pin 3) | ||
| + | */ | ||
| + | |||
| + | // Impulszaehler | ||
| + | // Digitaleingang 2 mit Ground über 4,7 K Ohm Widerstand verbinden | ||
| + | // Spannungssignal von NE555 Port 3 wird an Digitaleingang 2 angelegt | ||
| + | // | ||
| + | // Ground - 4,7KOhm - Signal von NE555 - Digitaleingang 2 | ||
| + | // Quelle: http:// | ||
| + | // http:// | ||
| + | // http:// | ||
| + | // | ||
| + | |||
| + | // Setzen der variabeln und ausgangswerte | ||
| + | int pin = 2; | ||
| + | long counterstand =0; | ||
| + | #define IMPULSEINGANG 2 | ||
| + | long start; | ||
| + | float dauer; | ||
| + | float dauer2; | ||
| + | int messzeit = 15000; | ||
| + | float cps; // counts per second | ||
| + | float cpm; // counts per minute | ||
| + | float dosisleistung; | ||
| + | float Bq; // Bq (1 Bq = 1 CPM) | ||
| + | |||
| + | long counts; | ||
| + | float frequenz; | ||
| + | |||
| + | |||
| + | // beginn netzwerk | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // Hier muss eine eigene IP-Adresse, Gateway und DNS eingetragen werden, | ||
| + | // wenn die Netzwerkkonfiguration nicht über DHCP bezogen wird | ||
| + | // Sofern nicht mehrere Ethernet-Apdater gleichzeitig verwendet werden, | ||
| + | // braucht die MAC-Adresse nicht geändert werden | ||
| + | // Bitte darauf achten, dass die Adressen im Netzwerk nicht doppelt vergeben sind | ||
| + | byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; | ||
| + | IPAddress ip(192, 168, 1, 2); | ||
| + | IPAddress gateway(192, | ||
| + | IPAddress dnServer(192, | ||
| + | |||
| + | // IP-Adresse statt Domainname zum Webserver mit Upload-Skript | ||
| + | // Bei verwendung der IP-adresse ist " | ||
| + | IPAddress server(192, 168, 1, 2); | ||
| + | |||
| + | // Domainname statt IP-Adresse zum Webserver mit beelogger-Skript | ||
| + | //static char server[] = " | ||
| + | |||
| + | // Verzeichnis in dem die Webserver-Skripte für den jeweiligen Logger liegen (mit nachgestelltem "/" | ||
| + | // z.B. const char* pfad[1][1]={" | ||
| + | const char* pfad[1][1]={"/ | ||
| + | |||
| + | // Passwort vom Webserver-Skript | ||
| + | static char Passwort[] = " | ||
| + | |||
| + | EthernetClient client; | ||
| + | |||
| + | // Test-Messdaten (regulär kommen die Messdaten von den Sensoren) | ||
| + | float wert1 = cpm; | ||
| + | float wert2 = dosisleistung; | ||
| + | float wert3 = 40.00; | ||
| + | float wert4 = 60.00; | ||
| + | float wert5 = 50000.00; | ||
| + | long wert6 = 25000; | ||
| + | long wert7 = 200; | ||
| + | long wert8 = 500; | ||
| + | |||
| + | long Check; | ||
| + | |||
| + | // ende netzwerk | ||
| + | |||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // - beginn netzwerk - | ||
| + | delay(5000); | ||
| + | |||
| + | pinMode(4, | ||
| + | digitalWrite(4, | ||
| + | |||
| + | // Für Verwendung der Konfiguration über DHCP | ||
| + | //if (Ethernet.begin(mac) == 0) Serial.println(" | ||
| + | |||
| + | // Für Verwendung die eigenen Konfiguration | ||
| + | Ethernet.begin(mac, | ||
| + | |||
| + | delay(1000); | ||
| + | // - ende netzwerk - | ||
| + | |||
| + | // - beginn impulse - | ||
| + | attachInterrupt(0, | ||
| + | pinMode(IMPULSEINGANG, | ||
| + | |||
| + | // set up the LCD's number of columns and rows: | ||
| + | lcd.begin(16, | ||
| + | // Print a message to the LCD. | ||
| + | // | ||
| + | | ||
| + | // - ende impulse - | ||
| + | } | ||
| + | |||
| + | |||
| + | volatile unsigned long impulsCounter=0; | ||
| + | |||
| + | void impulsISR() | ||
| + | { | ||
| + | impulsCounter++; | ||
| + | } | ||
| + | |||
| + | unsigned long letzterStand=0; | ||
| + | |||
| + | void loop() { // beginn void loop | ||
| + | |||
| + | // set the cursor to column 0, line 1 | ||
| + | // (note: line 1 is the second row, since counting begins with 0): | ||
| + | // | ||
| + | // print the number of seconds since reset: | ||
| + | // | ||
| + | |||
| + | |||
| + | Serial.println(" | ||
| + | start = millis(); | ||
| + | |||
| + | // zeitraum | ||
| + | // do { | ||
| + | // counterstand++; | ||
| + | // Serial.println(counterstand); | ||
| + | // } while (counterstand <= 99999); | ||
| + | // counterstand=0; | ||
| + | // zeitraum | ||
| + | |||
| + | // beginn der zaehlerfunktion | ||
| + | // if (impulsCounter!=letzterStand) | ||
| + | // { | ||
| + | noInterrupts(); | ||
| + | letzterStand=impulsCounter; | ||
| + | counts=impulsCounter; | ||
| + | interrupts(); | ||
| + | Serial.print (" | ||
| + | Serial.println(letzterStand); | ||
| + | //lcd.print (letzterStand); | ||
| + | | ||
| + | // reset der ausgangswerte | ||
| + | impulsCounter=0; | ||
| + | letzterStand = 0; | ||
| + | // | ||
| + | // | ||
| + | // } | ||
| + | // ende der zaehlerfunktion | ||
| + | |||
| + | //dauer = millis() - start; | ||
| + | // | ||
| + | |||
| + | delay(messzeit); | ||
| + | |||
| + | dauer2 = millis() - start; | ||
| + | Serial.print(" | ||
| + | Serial.print(dauer2); | ||
| + | Serial.println(" | ||
| + | // } | ||
| + | |||
| + | // -- Berechnung Frequenz ---- Anfang -------------------------------- | ||
| + | | ||
| + | |||
| + | // Serial.print(" | ||
| + | // Serial.println(counts); | ||
| + | | ||
| + | // Serial.print(" | ||
| + | // Serial.println(dauer2); | ||
| + | |||
| + | Serial.print(" | ||
| + | Serial.print(frequenz); | ||
| + | Serial.println(" | ||
| + | // -- Berechnung Frequenz --- Ende ---------------------------------- | ||
| + | |||
| + | |||
| + | // -- Berechnung Counts per second ---- Anfang -------------------------------- | ||
| + | cps = (counts/ | ||
| + | Serial.print(" | ||
| + | Serial.print(cps); | ||
| + | Serial.println(" | ||
| + | // -- Berechnung Counts per second ---- Ende ---------------------------------- | ||
| + | |||
| + | |||
| + | // -- Berechnung Counts per minute ---- Anfang -------------------------------- | ||
| + | cpm = (counts/ | ||
| + | Serial.print(" | ||
| + | Serial.print(cpm); | ||
| + | Serial.println(" | ||
| + | lcd.setCursor(0, | ||
| + | lcd.print ("CPM: " ); | ||
| + | lcd.print (cpm); | ||
| + | lcd.print (" (Bq)" | ||
| + | // -- Berechnung Counts per minute ---- Ende ---------------------------------- | ||
| + | |||
| + | |||
| + | // -- Berechnung Becquerel ---- Anfang -------------------------------- | ||
| + | Bq = (counts/ | ||
| + | Serial.print(" | ||
| + | Serial.print(Bq); | ||
| + | Serial.println(" | ||
| + | //lcd.print (" | ||
| + | //lcd.print (Bq); | ||
| + | // -- Berechnung Becquerel ---- Ende ---------------------------------- | ||
| + | |||
| + | |||
| + | // -- Berechnung Dosisleistung ---- Anfang -------------------------------- | ||
| + | dosisleistung = (counts/ | ||
| + | Serial.print(" | ||
| + | Serial.print(dosisleistung); | ||
| + | Serial.println(" | ||
| + | lcd.setCursor(0, | ||
| + | lcd.print ("DL: "); | ||
| + | lcd.print (dosisleistung); | ||
| + | lcd.print (" uSV"); | ||
| + | // -- Berechnung Dosisleistung ---- Ende ---------------------------------- | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | // -- Serialterminal leeren, funktioniert nur mit Putty -------------- | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | | ||
| + | Serial.println(" | ||
| + | |||
| + | |||
| + | // - beginn netzwerkuebertragung - | ||
| + | Check = round(wert1+wert2+wert3+wert4+wert5+wert6+wert7+wert8); | ||
| + | |||
| + | Serial.println(F(" | ||
| + | |||
| + | for (byte i = 0; i < 1; i++) { // Anzahl der Wiederholungen bei Verbindungsproblemen | ||
| + | // oder korrupten Daten, die vom Webserver empfangen werden | ||
| + | |||
| + | if (client.connect(server, | ||
| + | client.print(" | ||
| + | client.print(pfad[0][0]); | ||
| + | client.print(" | ||
| + | client.print (cpm); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (dosisleistung); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert3); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert4); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert5); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert6); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert7); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (wert8); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (Check); | ||
| + | |||
| + | client.print ("& | ||
| + | client.print (Passwort); | ||
| + | |||
| + | client.println (" HTTP/ | ||
| + | client.print(" | ||
| + | client.println(server); | ||
| + | client.println(" | ||
| + | client.println(); | ||
| + | |||
| + | delay(10000); | ||
| + | |||
| + | Serial.println(F(" | ||
| + | |||
| + | } else Serial.println(F(" | ||
| + | |||
| + | unsigned long start = millis(); | ||
| + | char c; | ||
| + | while ((millis() - start < 2000) and (client.connected() )) { | ||
| + | c = client.read(); | ||
| + | // | ||
| + | if (c==' | ||
| + | i=10; | ||
| + | Serial.println(F(" | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | client.stop(); | ||
| + | client.flush(); | ||
| + | |||
| + | delay(1000); | ||
| + | |||
| + | Serial.println(F(" | ||
| + | Serial.println(); | ||
| + | } | ||
| + | // - beginn netzwerkuebertragung - | ||
| + | | ||
| + | } // ende void loop | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | === PHP-Script === | ||
| + | auf dem Webserver zur Verarbeitung der Daten: | ||
| + | |||
| + | < | ||
| + | <p> | ||
| + | Hier werden übergebene Werte angezeigt und später in eine Datei geschrieben. | ||
| + | <?php | ||
| + | $wert1=($_GET[" | ||
| + | $wert2=($_GET[" | ||
| + | |||
| + | echo "< | ||
| + | echo "< | ||
| + | ?> | ||
| + | </p> | ||
| + | |||
| + | <p> | ||
| + | <?php | ||
| + | // datum und uhrzeit bestimmen | ||
| + | date_default_timezone_set(" | ||
| + | $timestamp = time(); | ||
| + | |||
| + | $datum = date(" | ||
| + | $uhrzeit = date(" | ||
| + | //echo $datum," | ||
| + | echo "< | ||
| + | $aktuellezeit = " | ||
| + | echo "< | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | // alle werte in datei schreiben | ||
| + | $datei = fopen(" | ||
| + | fputs($datei," | ||
| + | fclose($datei); | ||
| + | echo "< | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | // CPM werte in datei schreiben | ||
| + | $datei2 = fopen(" | ||
| + | fputs($datei2," | ||
| + | fclose($datei2); | ||
| + | echo "< | ||
| + | ?> | ||
| + | </p> | ||
| + | |||
| + | |||
| + | <p> | ||
| + | Hier sind alle Werte der Datei:< | ||
| + | <br> | ||
| + | |||
| + | <?php | ||
| + | $file = fopen(" | ||
| + | while($row = fgets($file, | ||
| + | { | ||
| + | echo $row."< | ||
| + | } | ||
| + | ?> | ||
| + | </p> | ||
| + | |||
| + | </ | ||
| + | \\ | ||
| + | \\ | ||
| + | Quellen:\\ | ||
| + | https:// | ||
| + | http:// | ||
| + | |||
| + | |||
| + | |||
