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); } }
|
|