Detektor EMF

Bazując na kodzie ze strony autora : http://www.aaronalai.com/emf-detector, zbudowałem prosty detektor pola elektromagnetycznego. Moja konstrukcja wykorzystuje świeżo zmontowany shield (LINK) z wyświetlaczem LCD 2×16, który wykorzystałem to prezentacji wyników pomiaru. Na wejściu przetwornika A/C Arduino, zamiast rezystora 3 Mohm – jak w oryginalnym układzie – dałem prosty detektor w.cz. zbudowany z 2 diod i antenkę podłączoną przez kondensator 1nF (bardziej zależało mi na stwierdzeniu obecności pola w.cz.). Wyszło z tego coś w rodzaju szerokopasmowego miernika natężenia pola w.cz., niemniej z uwagi na bardzo małą czułość nie spełnia pokładanych w nim oczekiwań (w tym zakresie zastosowań). Konieczne wydaje się dobudowanie wzmacniacza wejściowego (aby zwiększyć czułość), a nawet przełączanych obwodów wejściowych – ale tym zajmę się później … Podstawowa funkcja detektora EMF w takiej konfiguracji, również działa doskonale.

Poniżej kilka fotek – co z tego wyszło :

Działa bardzo przyzwoicie, doskonale wykrywa pole elektromagnetyczne generowane przez urządzenia AGD, komputery, routery Wi-Fi, radiotelefony małej mocy PMR itp. – tyle, że z niewielkiej odległości. Aby uniknąć zakłóceń od samego komputera, lepiej testować go na własnym zasilaniu bateryjnym.

 

 

 

 

 

 


#include <LiquidCrystal.h>
#define sample 300

int inAnalog = A5; // port A5 jako pomiarowy
int procent; //do okreslenia skali na LCD
int x; // pozycja kursora - dla Bargraf
float wartosc; //przy pomiarze

int array1[sample];
unsigned long averaging;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// definicja struktury nowego symbolu dla bargrafu

byte BAR[8] = {
  B11000,
  B11100,
  B10110,
  B00011,
  B10110,
  B11100,
  B11000,
};

void setup() {
  lcd.begin(16,2);   // ustawienie LCD
  pinMode(13, OUTPUT); // ustawienie LEDa
  lcd.createChar(1, BAR); // utworzenie w LCD nowego symbolu
}

//**********************************************************************

void loop()
{
  for(int i = 0; i < sample; i++){
   array1[i] = analogRead(inAnalog);
   averaging += array1[i];
}

wartosc = averaging / sample;
wartosc = constrain(wartosc, 0, 100);
wartosc = map(wartosc, 0, 100, 0, 255);
lcd.clear();
lcd.print(wartosc);
averaging = 0;
procent=wartosc/255.0*100.0; //procent na potrzeby LCD

lcd.setCursor(0,1);
x=procent*16/100; // pozycja kursora
lcd.print(x);
linia();
delay(90);
}
void linia(){
 lcd.setCursor(0,1);
 for (int a=0; a<=x; a++) {
 lcd.write(1);
 }
}

 

 

 

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

1 + 11 =