Grundlagen/Anfänger Geiger-Müller-Röhre Auswertungsschaltung

Begonnen von Magier, 15. Juli 2023, 16:58

⏪ vorheriges - nächstes ⏩

Magier

Hallo liebe Gemeinde

ich bin neu hier und nur so mittelmäßig mit Elektrotechnik. Für meine ersten Gehversuche habe ich mir überlegt es möglichst simpel zu halten.
Als ,,Sensor" möchte ich eine STS-5 oder SBM-20 Geiger-Müller-Röhre verwenden, je nachdem was die so auf Ebay kosten. Als ,,Empfohlene Arbeitsspannung", brauchen die ja 400V.
Um mögliche Fehlerquellen auszuschließen habe ich mir überlegt ein fertiges DC-DC Modul zu kaufen (auf Ali gibt es entsprechende Module schon ab ~6€->12€ und ich glaube nicht das ich das günstiger hinbekommen würde).
Was mich aber interessiert ist die Auswertungsschaltung oder genauer die beste/stabilste Schaltung dafür.
Als Logik plane ich einen Arduino Nano zu verwenden, könnte aber sein das ich im laufe des Projekts noch auf einen ESP32 wechsle, also entweder 5V oder 3.3V. (Level Shifter oder zur Not, Spannungsteiler mit Widerständen, (wenn nötig) bekomme ich hin.)

Ich habe mir jetzt mal angesehen wie andere Projekte das machen und mir 4 verschiedene Versionen rausgesucht und wollte euch fragen, was ihr für die beste haltet.
(Den Hochspannungs-Teil habe ich jeweils raus geschnitten, mir geht es nur um die Signal Auswertung/Aufbereitung.)

A) Verunsichert mich am meisten, da ich mir nicht sicher bin wie ich C2 (100pF) verstehen soll. Ich habe mir das so übersetzt. Wenn die Röhre nicht von Strahlung getroffen wird, wird über C2 und R4 die Leitung auf 3.3V gehalten, wenn die Röhre getroffen wird, entlädt sie C2 und Signal sinkt. (Ist das richtig?)
B+C+D sind mehr oder weniger ähnlich.
B) Wenn die Röhre getroffen wird, wird sie leitend und gibt eine Spannung an den Transistor der Signal auf GND zieht und C3 glätte und verlängert das Signal.
C) Ist fast wie B nur das das Signal (hier Pulse genannt) im IC invertiert und verlängert wird.
D) Gefällt mir am besten, weil es mit den wenigsten Bauteile aus kommt. Um die Schaltung im ganzen zu verstehen musste ich auch erst in den Code des Projekts schauen. Hier wird auch ein Arduino Nano verwendet und Signal geht direkt auf D2. Im Code wird D2 als Input konfigurierte, dann auf HIGH geschaltete und über Bounce Entprellt und ausgelesen. Wäre ich so nie drauf gekommen aber es scheint ja zu funktionieren.

pinMode(2 ,INPUT); // кнопка на пине 2
digitalWrite(2 ,HIGH); // подключаем встроенный подтягивающий резистор
bouncer.attach(2); // устанавливаем кнопку
bouncer.interval(5); // устанавливаем параметр stable interval = 5 мс

Von der Schaltung/Projekt(D) habe ich auch die Idee einen fertiges DC-DC Hochspannungs-Modul zu verwenden.


Also zurück zu meiner Frage. Ich weiß, viele Wege führen nach Rom aber gibt es so etwas wie eine ,,best practice" Schaltung oder Weg, der möglichst einfach aber auch sauber ist?

So ich hoffe ich habe keine all zu doofe Frage gestellt und nicht zu wirr geschrieben.
Wäre nett wenn mir da jemand einen Rat oder Tipp geben würden.
Schönes Wochenende und so
Magier

Quellen
Projekt A) https://multigeiger.readthedocs.io/en/latest/index.html
Projekt B) https://makerspace-partheland.de/geigerzaehler-mit-anbindung-als-mysensors-node/
Projekt C) https://github.com/grillbaer/esp32-geiger-counter
Projekt D) https://www.instructables.com/DIY-Arduino-Geiger-Counter/

DC-DC Hochspannungs-Modul (Preise schwanken teils sehr stark +Rabatt Aktionen)
https://de.aliexpress.com/item/32686499324.html
https://de.aliexpress.com/item/4000564775190.html

DG0MG

Funktionieren werden die Schaltungen alle. Zwischen A und B,C,D gibt es einen großen Unterschied: Nur bei A liegt das Zählrohr einseitig auf Masse. Das ist EMV-mäßig günstiger, allerdings ist der auswertbare Puls weniger hoch. Den direkt auf einen Prozessorpin zu geben, ist dem möglichst einfachen Aufbau geschuldet, aber vielleicht nicht "best practice".

Wahrscheinlich ist es sinnvoller, Du fängst erstmal mit einem Theremino-Geiger-Adapter GA500 an: https://www.geigerzaehlerforum.de/index.php/topic,367.0.html
Da sind für einen geradezu lächerlichen Preis schon ein großer Teil aller Fallstricke ausgeschlossen.
Die Zählrohr ankopplung ähnelt da auch eher A, also ZR-Kathode liegt an GND.
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

DG0MG

Zitat von: Magier am 15. Juli 2023, 16:58D) Gefällt mir am besten, weil es mit den wenigsten Bauteile aus kommt. Um die Schaltung im ganzen zu verstehen musste ich auch erst in den Code des Projekts schauen. Hier wird auch ein Arduino Nano verwendet und Signal geht direkt auf D2. Im Code wird D2 als Input konfigurierte, dann auf HIGH geschaltete und über Bounce Entprellt und ausgelesen. Wäre ich so nie drauf gekommen aber es scheint ja zu funktionieren.

pinMode(2 ,INPUT); // кнопка на пине 2
digitalWrite(2 ,HIGH); // подключаем встроенный подтягивающий резистор
bouncer.attach(2); // устанавливаем кнопку
bouncer.interval(5); // устанавливаем параметр stable interval = 5 мс

Ich glaub, das ist nicht so, wie Du schreibst - ohne dass ich mir den Quelltext jetzt angesehen hätte. "Knopka" ist ein Taster, ich denke er hat einen Taster an Pin 2, den er entprellt.

Der Transistor in D muss ja irgendwo seinen Strom herbekommen, das passiert vielleicht über den internen Pullup im Prozessor. Den darf man nicht vergessen, einzuschalten. Der kondensator lädt sich über den internen Pullup auf. Ein Impuls vom Zählrohr steuert den Transistor durch und der Kondensator entlädt sich und der Prozessor kann einen High-Low-Übergang detektieren. Je nach Größe des Pullups (keine Ahnung) braucht es jetzt aber eine gewisse Zeit, bis die Spannung am Kondensator wieder hoch genug ist. Es könnte also sein, dass bei höheren Impulsdichten Impulse verloren gehen.
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

Magier

Hallo und Danke DG0MG
ZitatTheremino-Geiger-Adapter GA500
ja erinnere mich das bei meiner Suche gesehen zu haben, was mich damals gestört hat, war der Anschluss (Kopfhörer ähnlich Jack-3,5mm). Der passt nicht zu meinem Projekt aber ich werde deinen Rat annehmen und mich mit dem Modul genauer beschäftigen.

Zitat von: DG0MG am 15. Juli 2023, 22:35Ich glaub, das ist nicht so, wie Du schreibst - ohne dass ich mir den Quelltext jetzt angesehen hätte. "Knopka" ist ein Taster, ich denke er hat einen Taster an Pin 2, den er entprellt.
Ja das fehlen einer Zuleitung zum Transistor hat mich auch irritiert. Ich habe den "Schaltplan" mal angehängt, wie er auf der Seite Quelle-D zu sehen ist.
Pin-D2 auf High hier +5V zu schalten und dann auszulesen ob er auf Low geht, macht irgendwie Sinn, ich würde da zwar noch nen Widerstand einbauen ~10k o.ä, da der Transistor so ja einen Kurzschluss baut.

Der Quelle Code ist etwas schwer zu finden.
https://create.arduino.cc/editor/blackdogsurvival/7aacedef-a5e5-41ce-ab10-819312b6c80a/preview

Ich bin mal so frei und poste ihn am Ende im ganzen. (hoffe ich verärgere damit keinen)


MfG und Danke!


/*
 *
 * SCL - A5
 * SDA - A4
 *
 *
 * Voltmeter - A3
 *
 * PWM - D9
 * Input - D2
 *
 * buzzer - D7
 *
 */




#include <Bounce2.h>

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

//////////////////////////////////////////////////////////////////////////////

unsigned long previousMillis = 0;
unsigned long previousMillis1 = 0;
const long interval = 40000;
const long interval1 = 500;

static const unsigned char PROGMEM lcd_bmp[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x1C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x1F, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x3F, 0xE0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x7F, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE0, 0x7F, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xF0, 0x7F, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE0, 0x7F, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x3F, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x40, 0x38,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x80, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x80, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xC0, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0xC0, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xE0, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xF0, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xF8, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF9, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

static const unsigned char PROGMEM logo[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x1C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x1F, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0xC0,
0x07, 0x9E, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0xC0, 0x3F, 0xE0,
0x07, 0x9E, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0,
0x07, 0x9E, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0,
0x07, 0x9E, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x7F, 0xF8,
0x07, 0x9E, 0x3E, 0x73, 0x9C, 0x00, 0x78, 0x3E, 0x3E, 0xF0, 0xF0, 0x01, 0xFF, 0xE0, 0x7F, 0xF8,
0x07, 0x9E, 0x7F, 0x33, 0x98, 0x00, 0x78, 0x7F, 0x3E, 0xF1, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0xF8,
0x07, 0x9E, 0x7F, 0x33, 0xB8, 0x00, 0x78, 0x7F, 0x3E, 0xF3, 0xFC, 0x01, 0xFF, 0xF0, 0x7F, 0xF8,
0x07, 0xFE, 0xE7, 0x33, 0xB8, 0x00, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0xFF, 0xE0, 0x7F, 0xF8,
0x07, 0xFE, 0xE7, 0x3F, 0xF9, 0xF0, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0xFF, 0xC0, 0x3F, 0xF8,
0x07, 0xFE, 0xE7, 0x3F, 0xF9, 0xF0, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0xF8, 0x00, 0x03, 0xF8,
0x07, 0xFE, 0xE7, 0x3F, 0xF8, 0x00, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0x00, 0x20, 0x40, 0x38,
0x07, 0x9E, 0xE7, 0x3F, 0xF0, 0x00, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0x00, 0x10, 0x80, 0x08,
0x07, 0x9E, 0xE7, 0x1F, 0xF0, 0x00, 0x78, 0x73, 0xBE, 0xF3, 0x9C, 0x01, 0x00, 0x09, 0x00, 0x08,
0x07, 0x9E, 0xE7, 0x1E, 0xF0, 0x00, 0x78, 0x73, 0xBF, 0xF3, 0x9C, 0x01, 0x00, 0x0F, 0x00, 0x08,
0x07, 0x9E, 0xE7, 0x1E, 0xF0, 0x00, 0x78, 0x73, 0xBF, 0xF3, 0x9C, 0x00, 0x80, 0x1F, 0x80, 0x18,
0x07, 0x9E, 0x7F, 0x1E, 0xF0, 0x00, 0x78, 0x7F, 0x3F, 0xE3, 0xFC, 0x00, 0x80, 0x3F, 0xC0, 0x10,
0x07, 0x9E, 0x7E, 0x1E, 0xF0, 0x00, 0x78, 0x3F, 0x3F, 0xC1, 0xF8, 0x00, 0xC0, 0x7F, 0xC0, 0x30,
0x07, 0x9E, 0x1C, 0x1C, 0xE0, 0x00, 0x78, 0x1C, 0x3F, 0x00, 0xF0, 0x00, 0x40, 0xFF, 0xE0, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xF0, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xF8, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF9, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

static const unsigned char PROGMEM fl[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

static const unsigned char PROGMEM bt1[] =
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

const int buttonPin = 2;
const int ledPin =  13;

int buttonState = 0;
int bt = 0;
int pbt = 0;
int s1 = 0;
unsigned long j;
unsigned long CR = 0;

unsigned long cs;
int sec;
/////////////////////////////////

float input_voltage = 0.0;
float temp=0.0;


///////////////////////////////////

Bounce bouncer = Bounce();


void setup() {

  Serial.begin(9600);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)

  display.display();

  display.clearDisplay();

  display.drawBitmap(0, 0, logo, 128, 64, WHITE);
  display.display();
  delay(2000);
  display.clearDisplay();
 
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite(9,22 ); // на выводе 9 ШИМ=10%

pinMode(ledPin, OUTPUT); //

pinMode (7, OUTPUT); // buzzer

pinMode(2 ,INPUT); // кнопка на пине 2
digitalWrite(2 ,HIGH); // подключаем встроенный подтягивающий резистор
bouncer .attach(2); // устанавливаем кнопку
bouncer .interval(5); // устанавливаем параметр stable interval = 5 мс

}

void loop() {

 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////


 unsigned long currentMillis = millis();
 unsigned long currentMillis1 = millis();


if (bouncer.update())
 { //если произошло событие
  if (bouncer.read()==0)
  { bt++;
  }
}

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    CR = bt;
    bt = 0;
  }
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if (bt != pbt) {
    pbt = bt;
    s1 = 1;
}
////////////////////////////////////////////VOLTMETER PIN A3////////////////////////////////////////////////////////////////////

 int analog_value = analogRead(A3);
   input_voltage = (analog_value * 5.0) / 1024.0;

   
   if (input_voltage < 0.1)
   {
     input_voltage=0.0;
   }

   
///////////////////////////////////////////////TEXT ON DISPLAY//////////////////////////////////////////////////////////////////
display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(10,0);
  display.clearDisplay();
  display.println(CR);
  display.setCursor(10,18);
  display.println(bt);
  display.setCursor(40,18);
  display.println();
  display.setTextSize(1);
  display.setCursor(40,0);
  display.println("mR/hr");

 
/////////////////////////////////////////////////BATTERY  INDICATION////////////////////////////////////////////
display.drawBitmap(0, 0, fl, 128, 64, WHITE);

if (input_voltage > 3.3) {
  display.drawBitmap(0, 0, bt1, 128, 64, WHITE);
  if (input_voltage > 3.4) {
    display.drawBitmap(0, -5, bt1, 128, 64, WHITE);
    if (input_voltage > 3.5) {
      display.drawBitmap(0, -10, bt1, 128, 64, WHITE);
       if (input_voltage > 3.6) {
        display.drawBitmap(0, -15, bt1, 128, 64, WHITE);
        if (input_voltage > 3.8) {
          display.drawBitmap(0, -20, bt1, 128, 64, WHITE);
        }
      }
    }
  }
}

////////////////////////////////////////////////////RADIATION ICON AND BUZZER/////////////////////////////////////////////////////////////
if (s1 == 1){
    display.drawBitmap(-10, 0, lcd_bmp, 128, 64, WHITE);
    digitalWrite (7, HIGH); // buzzer ON
}
else
{
    digitalWrite (7, LOW); // buzzer OFF
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 if (currentMillis1 - previousMillis1 >= interval1) {
    previousMillis1 = currentMillis1;   
    if (s1 == 1){
      s1=0;
    }
  }
  display.display();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

DG0MG

Zitat von: Magier am 16. Juli 2023, 00:30was mich damals gestört hat, war der Anschluss (Kopfhörer ähnlich Jack-3,5mm)

Ja, die Buchse hab ich auch immer runtergelötet, das ist doch kein Hinderungsgrund.  ;D

Zitat von: Magier am 16. Juli 2023, 00:30das fehlen einer Zuleitung zum Transistor hat mich auch irritiert.

Du hast recht, der ZR-Impuls geht auf Pin 2. Dann kommt das "Knopka" im Quelltext wahrscheinlich aus einer weiteren Quelle :)
Ob das Schreiben auf einen als Input definierten Pin auch funktioniert, weiß ich nicht,
aber die Syntax sollte doch eher so aussehen:

pinMode(2,INPUT_PULLUP);

Also: Definiere den Pin 2 als Eingang und schalte den (im Prozessor befindlichen) Pullup-Widerstand nach Vcc ein. Deshalb brauchst Du auch keinen weiteren Widerstand.
"Bling!": Irgendjemand Egales hat irgendetwas Egales getan! Schnell hingucken!

DL8BCN

Moin, die im Link gezeigten DC-DC Wandler funktionieren jedenfalls. Ich habe auch mit so einem Modul was gebaut.

Magier

Zitat von: DL8BCN am 16. Juli 2023, 13:18Moin, die im Link gezeigten DC-DC Wandler funktionieren jedenfalls. Ich habe auch mit so einem Modul was gebaut.

Danke die Info hilft mir!

Wie gesagt der Theremino-Geiger-Adapter ist wirklich interessant und da man die Pläne ja frei einsehen kann, werde ich sie mir definitiv genauer ansehen aber als erste 0.1a Version werde ich mir erst mal einen DC-DC Wandler und ein oder zwei Zählröhren besorgen und dann weiter sehen. 1 Transistor, Widerstand und Kondensator habe ich hier, die könnte ich mal zum Test auf ein Steckbrett aufbauen. (Ja ich werde mir was überlegen das mir die 400V nicht auf die Finger fällt)  :)

Aber Danke für den Input.
Z.B.
Zitat von: DG0MG am 15. Juli 2023, 21:57Nur bei A liegt das Zählrohr einseitig auf Masse. Das ist EMV-mäßig günstiger, allerdings ist der auswertbare Puls weniger hoch.
Hatte ich nicht bedacht.