Eigenbau: EMF-Detektor (Arduino-Projekt)

Geräte zum Messen bestimmter Strahlungen, etc.
Antworten
SpiritShack
Benutzeravatar
Markus
Gründungsmitglied
Gründungsmitglied
Administrator
Administrator
EPAS Austria
EPAS Austria
Beiträge: 1205
Registriert: So 6. Jul 2014, 00:16
Wohnort: Wien
Hat sich bedankt: 412 Mal
Danksagung erhalten: 490 Mal
Kontaktdaten:
Österreich

Eigenbau: EMF-Detektor (Arduino-Projekt)

Beitrag von Markus »

EMF-Detektor-(Arduino).jpg

Es ist ein Krampf ! Man entdeckt ein interessantes, scheinbar leicht umzusetzendes Projekt und geht mit Enthusiasmus ran an die Sache. Der Enthusiasmus fährt dann allerdings bald runter, wenn man feststellt, dass der Typ von seinem Projekt noch weniger Ahnung hat als man selbst :twisted: .
Zum Beispiel war ein TIP31C-Transistor und ein Widerstand dabei, welche eigentlich völlig unnötig waren. Mal abgesehen vom teilweise frustrierenden Testen musste ich den Transistor erst (unnötigerweise) beschaffen.
Aber egal ... das Gerät funktioniert. Und es funktioniert sogar sehr gut was das Erkennen von EMF betrifft. Allerdings kriegt sich das Gerät manchmal nicht ein und piepst ununterbrochen bis man die Antenne berührt. Ich habe festgestellt, dass das auftritt, wenn ein sehr starker Impuls auf die Antenne trifft (dann schreit das Teil um Hilfe oder so). Eventuell lässt sich das softwaremäßig beheben, aber das mache ich ein anderes Mal. Jetzt brauch ich erstmal Urlaub :P .

EMF-Detektor-(Arduino)_unten.jpg
EMF-Detektor-(Arduino)_innen.jpg
Hier ein kleines Demo-Video:

Hier noch ein kurzes Demo-Video (Stromkabel, Lichtschalter):

Wen es interessiert, hier der Arduino-Code (v1):

Code: Alles auswählen

#define pitchAntenna A0  // Antenna input

#include <TimerFreeTone.h>
#define TONE_PIN 3
int melody[] = { 1600, 1800, 2000, 2200 };
int duration[] = { 250, 250, 200, 50 };

float peakPitch = 0;
float mappedPitch = 0;
float currPitch = 0;  // Declaration of variables
float oldPitch = 0;
const int PIN = 9;

void setup() {
  Serial.begin(115200);
  pinMode(pitchAntenna, INPUT);
  pinMode(PIN, OUTPUT);
  int dummy = analogRead(pitchAntenna);  // dummy read to settle ADC Mux
  delay(50);
  TimerFreeTone(TONE_PIN, 2000, 100, 10);
}
void loop() {
  for (int i = 0; i < 10; i++)  // Get sum of 11 ADC readings
  {
    currPitch += analogRead(pitchAntenna);
  }
  currPitch /= 11;      // Divide them to get the average of 11 peaks
  if (currPitch > 512)  // Get upper part of the frequency spectrum of the pitch input
  {
    if (currPitch > peakPitch)                              // Check if the current pitch is higher than the previous
      peakPitch = currPitch;                                // If it's higher, set the peak at the current pitch
    else mappedPitch = map(peakPitch, 0, 1023, 800, 1823);  // Maps readings to the appropriate frequency range I want to use. The ADC readings from 550 to 1023 are mapped to frequencies between 5000 and 10Hz. I noticed that the antenna was having constant peaks at 400-500, irrelevant of the objects near it, so I used the map function to get rid of values under 550
  } else peakPitch = 0;
  if (mappedPitch > 100) {  // This works like a noise gate, increase if noise issues appear. Everything under the 100Hz range was triggered by random objects in the proximity of the Arduino, and this was added for stability
    if (mappedPitch != oldPitch) {
      //Serial.print(currPitch);
      //Serial.print(" ");
      //Serial.println(mappedPitch);
      // Serial.print(" ");
      //Serial.println(oldPitch);
      TimerFreeTone(TONE_PIN, mappedPitch, 50, 10);
      digitalWrite(PIN, HIGH);
      oldPitch = mappedPitch;
    } else {
      digitalWrite(PIN, LOW);
    }
  }
}
Bei Fragen & Problemen aller Art (oder nicht-funktionierenden Links, Videos, Grafiken, etc.) bitte per Rufzeichen-Symbol oben im Beitrag, per PN oder mittels Kontaktformular melden !
Info zu Werbeanzeigen und Unterstützung für Paranormal.wien !

Tags:
Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag

Zurück zu „Messgeräte“