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:// | ||
+ | |||
+ | |||
+ | |||