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,5 W 330R BF 0411 5% EUR 0.10 EUR 0.10
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,5 W 10K BF 0411 5% EUR 0.10 EUR 0.10
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/54 DO-204AL VIS EUR 0.49 EUR 0.49
1 Stück 1113124 TRANS NPN 400V PHE13007,127 TO-220AB NXP EUR 0.85 EUR 0.85
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,5 W 22K BF 0411 5% EUR 0.10 EUR 0.10
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://beelogger.de/?page_id=28
* https://funduino.de/nr-13-lcd-display
* https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
*/
// Display Standard
// include the library code:
#include
// initialize the library with the numbers of the interface pins
//LiquidCrystal lcd(12, 11, 5, 4, 3, 6); // alte ursprungsverkabelung ohne netzwerk
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://forum.arduino.cc/index.php?topic=260131.0
// http://profhof.com/arduino-als-frequenzzaehler/
// http://www.hjberndt.de/soft/ardfreq.html
//
// Setzen der variabeln und ausgangswerte
int pin = 2;
long counterstand =0;
#define IMPULSEINGANG 2
long start; // dauerausgabe
float dauer; // dauerausgabe
float dauer2; // dauerausgabe
int messzeit = 15000; // messzeit
float cps; // counts per second
float cpm; // counts per minute
float dosisleistung; // dosisleistung in µSv (142 CPM = 1µSv)
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, 168, 1, 254);
IPAddress dnServer(192, 168, 1, 254);
// IP-Adresse statt Domainname zum Webserver mit Upload-Skript
// Bei verwendung der IP-adresse ist "static char serverName[]" stattdessen auszukommentieren
IPAddress server(192, 168, 1, 2);
// Domainname statt IP-Adresse zum Webserver mit beelogger-Skript
//static char server[] = "meineDomain.de";
// Verzeichnis in dem die Webserver-Skripte für den jeweiligen Logger liegen (mit nachgestelltem "/")
// z.B. const char* pfad[1][1]={"test/"};
const char* pfad[1][1]={"/arduino/"};
// Passwort vom Webserver-Skript
static char Passwort[] = "!meinPasswort!";
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,OUTPUT); // Pin 4 wird für die Deaktivierung der SD-Karte genutzt,
digitalWrite(4,HIGH); // falls ein entsprechendes Ethernet-Shield mit SD-Adapter verwendet wird
// Für Verwendung der Konfiguration über DHCP
//if (Ethernet.begin(mac) == 0) Serial.println("Fehler bei der Konfiguration des Ethernet-Adapters ueber DHCP");
// Für Verwendung die eigenen Konfiguration
Ethernet.begin(mac, ip, dnServer, gateway);
delay(1000);
// - ende netzwerk -
// - beginn impulse -
attachInterrupt(0, impulsISR, RISING); // Interrupt 0 hängt beim UNO an Pin-2
pinMode(IMPULSEINGANG, INPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
//lcd.print("Counts: ");
// - 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):
//lcd.setCursor(0, 1);
// print the number of seconds since reset:
//lcd.print(millis() / 1000);
Serial.println(" - Beginn des Scripts - "); // Ausgabe
start = millis(); // dauerausgabe
// zeitraum
// do {
// counterstand++;
// Serial.println(counterstand);
// } while (counterstand <= 99999);
// counterstand=0;
// zeitraum
// beginn der zaehlerfunktion
// if (impulsCounter!=letzterStand)
// {
noInterrupts();
letzterStand=impulsCounter;
counts=impulsCounter; // als variable fuer spaeter rechnungen
interrupts();
Serial.print ("Anzahl: ");
Serial.println(letzterStand);
//lcd.print (letzterStand);
// reset der ausgangswerte
impulsCounter=0;
letzterStand = 0;
//Serial.print ("neue Anzahl: ");
//Serial.println(letzterStand);
// }
// ende der zaehlerfunktion
//dauer = millis() - start; // dauerausgabe
//Serial.println(dauer); // dauerausgabe
delay(messzeit); // messzeit
dauer2 = millis() - start; // dauerausgabe
Serial.print("Gesamtscriptdauer: "); // dauerausgabe
Serial.print(dauer2); // dauerausgabe
Serial.println(" ms"); // dauerausgabe
// }
// -- Berechnung Frequenz ---- Anfang --------------------------------
frequenz = (counts/dauer2)*1000; // Frequenzberechnung
// Serial.print("Counts: "); // Frequenzberechnung
// Serial.println(counts); // Frequenzberechnung
// Serial.print("Dauer2: "); // Frequenzberechnung
// Serial.println(dauer2); // Frequenzberechnung
Serial.print("Frequenz: "); // Frequenzberechnung
Serial.print(frequenz); // Frequenzberechnung
Serial.println(" Hz"); // Frequenzberechnung
// -- Berechnung Frequenz --- Ende ----------------------------------
// -- Berechnung Counts per second ---- Anfang --------------------------------
cps = (counts/dauer2)*1000; // Counts pro Sekunde
Serial.print("Counts per second: "); // Counts pro Sekunde
Serial.print(cps); // Counts pro Sekunde
Serial.println(" CPS"); // Counts pro Sekunde
// -- Berechnung Counts per second ---- Ende ----------------------------------
// -- Berechnung Counts per minute ---- Anfang --------------------------------
cpm = (counts/dauer2)*60000; // Counts pro Minute
Serial.print("Counts per minute: "); // Counts pro Minute
Serial.print(cpm); // Counts pro Minute
Serial.println(" CPM"); // Counts pro Minute
lcd.setCursor(0, 0);
lcd.print ("CPM: " );
lcd.print (cpm);
lcd.print (" (Bq)");
// -- Berechnung Counts per minute ---- Ende ----------------------------------
// -- Berechnung Becquerel ---- Anfang --------------------------------
Bq = (counts/dauer2)*60000; // Becquerel
Serial.print("Becquerel: "); // Becquerel
Serial.print(Bq); // Becquerel
Serial.println(" Bq"); // Becquerel
//lcd.print ("BG:");
//lcd.print (Bq);
// -- Berechnung Becquerel ---- Ende ----------------------------------
// -- Berechnung Dosisleistung ---- Anfang --------------------------------
dosisleistung = (counts/dauer2*60000)/142; // Dosisleistung
Serial.print("Dosisleistung: "); // Dosisleistung
Serial.print(dosisleistung); // Dosisleistung
Serial.println(" µSv"); // Dosisleistung
lcd.setCursor(0, 1);
lcd.print ("DL: ");
lcd.print (dosisleistung);
lcd.print (" uSV");
// -- Berechnung Dosisleistung ---- Ende ----------------------------------
// -- Serialterminal leeren, funktioniert nur mit Putty --------------
//Serial.write(27); // ESC command
//Serial.print("[2J"); // clear screen command
//Serial.write(27);
//Serial.print("[H");
Serial.println(" - Ende des Scripts - "); // Ausgabe
// - beginn netzwerkuebertragung -
Check = round(wert1+wert2+wert3+wert4+wert5+wert6+wert7+wert8);
Serial.println(F("Verbinde zum Server ..."));
for (byte i = 0; i < 1; i++) { // Anzahl der Wiederholungen bei Verbindungsproblemen
// oder korrupten Daten, die vom Webserver empfangen werden
if (client.connect(server, 80)){
client.print("GET /");
client.print(pfad[0][0]);
client.print("messwerteintragen.php?wert1=");
client.print (cpm);
client.print ("&wert2=");
client.print (dosisleistung);
client.print ("&wert3=");
client.print (wert3);
client.print ("&wert4=");
client.print (wert4);
client.print ("&wert5=");
client.print (wert5);
client.print ("&wert6=");
client.print (wert6);
client.print ("&wert7=");
client.print (wert7);
client.print ("&wert8=");
client.print (wert8);
client.print ("&Check=");
client.print (Check);
client.print ("&Passwort=");
client.print (Passwort);
client.println (" HTTP/1.1");
client.print("Host:");
client.println(server);
client.println("Connection: close");
client.println();
delay(10000);
Serial.println(F("Verbindung erfolgreich"));
} else Serial.println(F("Verbindung fehlgeschlagen"));
unsigned long start = millis();
char c;
while ((millis() - start < 2000) and (client.connected() )) {
c = client.read();
//Serial.print(c); //Debugausgabe
if (c=='*') {
i=10;
Serial.println(F("Upload erfolgreich"));
}
};
client.stop();
client.flush();
delay(1000);
Serial.println(F("Verbindung beendet"));
Serial.println();
}
// - beginn netzwerkuebertragung -
} // ende void loop
\\
\\
=== PHP-Script ===
auf dem Webserver zur Verarbeitung der Daten:
Hier werden übergebene Werte angezeigt und später in eine Datei geschrieben.
Wert1: ", $_GET["wert1"];
echo "
Wert2: ", $_GET["wert2"];
?>
Timestamp: $timestamp";
$aktuellezeit = "$datum $uhrzeit";
echo "
aktuelle Zeit: $aktuellezeit
";
?>
Werte in Datei geschrieben.";
?>
Wert CPM in Datei geschrieben.";
?>
Hier sind alle Werte der Datei:
";
}
?>
\\
\\
Quellen:\\
https://mightyohm.com/blog/products/geiger-counter/design-files/\\
http://mightyohm.com/files/geiger/geiger_sch_fixedR5R6.png\\