Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

Onderdelen en Benodigdheden

OnderdeelAantalOpmerkingen
Arduino UNO 1 Kan elk Arduino-board zijn, hoeft geen UNO te zijn
DC-DC 1.5-3V naar 300-400V 380V High Voltage Boost Step-up Voltage Inverter Module 1 Ideale eindspanning is 400V, maar kan 350-450V zijn (werksbereik van de GM-buiz)
STS-5 Geiger-Müller Buis 1 Te vinden op eBay (goedkoper). Let op: waarschijnlijk uit Oekraïne, levertijd 2-3 weken
SunFounder IIC I2C TWI Serial 2004 20x4 LCD Module Shield voor Arduino Uno Mega2560 1 Flexibel in gebruik. Gekozen vanwege minder draden. Elke 20x4 LCD werkt

Benodigde Tools en Machines

  • Solderbout (standaard) – nodig voor het maken van de printplaat en het solderen van de condensator op de spanningsomzetter
  • Breadboard, 270 pins – voor prototyping; eindproject kan op een zelfgebouwde printplaat gesoldeerd worden

Over dit Project

WAARSCHUWING: Dit apparaat gebruikt hoge spanningen (400 V) die gevaarlijk zijn. Hoewel de stromen laag zijn, kan elke hoeveelheid stroom of spanning die het menselijke lichaam bereikt een arythmie veroorzaken die het hart kan stoppen en tot de dood kan leiden. Wie dit project bouwt, moet ervaring hebben met electronica en extreem voorzichtig zijn met de hoge-spanningssectie van de schakeling.

Mijn doel was om het werk van AdNovea te nemen en een Geiger-Müller-teller te maken die ik vrijer kon programmeren (het AdNovea-werk gebruikte scripts die ik niet kon aanpassen). Dit stelt een gebruiker in staat om zowel de fysica van de buis beter te begrijpen, als een apparaat te maken dat aan hun projectwensen voldoet.

Voor dit project heb ik het schakelingsschema van AdNovea vereenvoudigd naar wat ik zocht: een persoonlijke teller die de tellingen weergeeft, zonder ingewikkelde Ethernet-verbindingen en koppelingen aan landelijke netwerken. Ik heb geëxperimenteerd met Bluetooth-modules en buzzers, die wel werken, maar ik koos ervoor ze niet te gebruiken omdat ik een achtergrondstraling-teller wilde waar ik naar kon verwijzen wanneer ik dat wilde.

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

De constructie is zeer rechttoe rechtaan (zie schakelingsschema). De moeilijkste aspecten waren het verkrijgen van sommige onderdelen (de GM-buiz en de hoogspanningsomzetter). Ik kocht beide voor weinig geld op eBay, maar beide kwamen van ver af (Oekraïne en China respectievelijk), dus het duurde 3-4 weken voordat ze arriveerden.

Ik begon met het samenstellen van de schakeling op een breadboard om de schakeling te evalueren en waar ik deze kon aanpassen aan mijn wensen. Ik assembleerde het volgens AdNovea's schema, maar liet de buzzer, Ethernet-module en de weerstand naar de GM-buiz weg (ik kreeg onvoldoende stroom naar de buis met dat ontwerp, waardoor het niet werkte). Vervolgens soldeerde ik alles op een printplaat.

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

Er staat een Arduino Uno vermeld, maar je kunt ruimte besparen in een behuizing door een Nano te gebruiken. Ik gebruikte isolatietape om de GM-buiz aan de printplaat te bevestigen (ruimtebesparend) en om de aansluitingen van de spanningsomzetter af te dekken voor veiligheid. Omdat ik beperkte apparatuur had om gaten in een plastic behuizing te boren, gebruikte ik de kartonnen doos van mijn Arduino starterskit.

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

Ik knipte een gat in de bovenkant van de doos zodat het LED-display er strak in paste (versterkt met tape).

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

Ik knipte ook een gat in de zijkant voor de USB-voeding.

Bouw een Eigen Geiger-Müller Tellers met Arduino, HV Boost en 20x4 LCD

Ik probeerde eerst 9V-batterijen, maar zoals verwacht hielden die niet lang. Ten slotte plakte ik extra isolatietape rond de doos/printplaat op plekken waar de schakeling contact kon maken met de karton, ter bescherming tegen brand en signaalverlies.

Software en Metingen

Het programma meet de tellingen van de GM-buiz elke 30 seconden, vermenigvuldigt met 2 voor een geschatte tellingen per minuut (CPM – standaardeenheid voor GM-buizen). Vervolgens worden metrische omrekeningen gebruikt om µSv/hr weer te geven, een meer gangbare referentiemeting. Tijdens de uitvoering rapporteert het de gemiddelde waarde van de progressief verzamelde metingen samen met de standaardfout (SD / √n). Statistisch gekozen voor standaardfout, omdat de verzamelde data een steekproef is van de gemiddelde achtergrondstraling, waardoor SE de passende maat is. Vanwege geheugenbeperkingen van de Arduino kon ik alleen een array van 100 metingen aanmaken, wat een nauwkeurige weergave van 50 minuten geeft – een toch redelijke steekproefgrootte.

Omdat ik wilde doorgaan met mijn volgende project (een ader-vinder, aangezien ik medisch professional ben), heb ik geen verdere verbeteringen aangebracht, zoals een buzzer die alarmeert wanneer de CPM de achtergrondstraling overschrijdt, of het aanpassen van de 'log period' voor snellere metingen. Anderen die aan dit apparaat willen werken, kunnen er volledig mee experimenteren en het verbeteren.

Code

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

unsigned long counts;        // Variabele voor GM-buiz events
unsigned long previousMillis; // Variabele voor tijdmeting
float averageCPM;
float sdCPM;
int currentCPM;
float calcCPM;

LiquidCrystal_I2C lcd(0x27, 20, 4);
float CPMArray[100];
#define LOG_PERIOD 30000 // Tellingssnelheid in milliseconden

void setup() {
  counts = 0;
  currentCPM = 0;
  averageCPM = 0;
  sdCPM = 0;
  calcCPM = 0;
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  pinMode(2, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING); // Externe interrupt
}

void loop() {
  lcd.setCursor(0,2);
  lcd.print("CPM Count: ");
  lcd.print(counts);

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis > LOG_PERIOD) {
    previousMillis = currentMillis;
    CPMArray[currentCPM] = counts * 2;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("uSv/hr: ");
    lcd.print(outputSieverts(CPMArray[currentCPM]));
    counts = 0;
    averageCPM = 0;
    sdCPM = 0;

    // Bereken gemiddelde en standaarddeviatie
    for (int x = 0; x < currentCPM + 1; x++) {
      averageCPM += CPMArray[x];
    }
    averageCPM /= (currentCPM + 1);

    for (int x = 0; x < currentCPM + 1; x++) {
      sdCPM += sq(CPMArray[x] - averageCPM);
    }
    sdCPM = sqrt(sdCPM / currentCPM) / sqrt(currentCPM + 1);

    Serial.println("Avg: " + String(averageCPM) + " +/- " + String(sdCPM) + " ArrayVal: " + String(CPMArray[currentCPM]));
    currentCPM++;
    displayAverageCPM();
  }
}

void impulse() {
  counts++;
}

void displayAverageCPM() {
  lcd.setCursor(0,1);
  lcd.print("Avg: ");
  lcd.print(outputSieverts(averageCPM));
  lcd.print("+/-");
  lcd.print(outputSieverts(sdCPM));
}

float outputSieverts(float x) {
  float y = x * 0.0057; // Conversiefactor CPM naar µSv/hr
  return y;
}

Schema's

Het schema ziet er vreemd uit in Fritzing; componenten verschuiven soms bij openen.

Bestand: geiger_counter_4LAnJvZEpC.fzz

Productieproces

  1. Een Raspberry Pi Geiger-teller Bouwen – Open-Hardware Stralingssensor Tutorial
  2. Real-time zonnepaneelmonitoring met Arduino: Goedkope data-acquisitie
  3. Bluetooth-gecontroleerde Arduino Spybot bouwen
  4. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  5. DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
  6. Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
  7. Veilige CV-ketelbewaking: Thermocouple-spanningsmonitor voor pilootvlammen
  8. Find Me: Slimme Item Locator met Arduino en Bluetooth
  9. Maak een Aangepaste 'Punchable' Toetsenbordknop met Arduino: Stap-voor-Stap Handleiding
  10. Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
  11. Valentijnscadeau: DIY Dagen-samen-teller