Оглавление
Предлагаемое электронное устройство можно назвать измерителем ЭМП, так как оно может измерять относительную силу электромагнитного поля по шкале из 10 светодиодов.
Детали, схема и модули для ЭМП детектора

- Ардуино Нано R3
- Светодиод 10 штук
- Ползунковый переключатель
- Резистор 10 МОм
- Резистор 4,7 МОм
- Резистор 220 Ом
- Батарея 9 В типа Крона
- Потенциометр 1 MОм и динамик
Это довольно чувствительное устройство для измерения электромагнитного поля, собрано на микроконтроллере Arduino. Электромагнитные поля представляют собой комбинацию невидимых электрических и магнитных силовых полей. Они генерируются многими устройствами, такими как линии электропроводки, кухонная техника, мобильные телефоны, компьютеры, и даже природными явлениями, такими как магнитное поле Земли. В принципе и человеческий мозг излучает чрезвычайно слабые ЭМП, просто их сложнее детектировать.

Детектор электромагнитных полей, представленный в этом проекте, основан на микроконтроллере Arduino Nano и является чрезвычайно чувствительным. Оно может измерять силу поля по LED шкале. Код проекта кроме линейного режима может отображать точечный режим, когда одновременно активен только один светодиод. Также есть звуковой сигнал, частота которого меняется в зависимости от силы поля.

Устройство простое в сборке и содержит всего несколько компонентов: сам микроконтроллер Arduino nano, 10 светодиодов, пару потенциометров, мини-динамик и несколько резисторов.

В первом варианте был установлен Arduino в общую коробку вместе со светодиодами, потенциометрами и прочей электроникой, но прибор работал нестабильно и был подвержен автоколебаниям. После тестирования Arduino перекочевал в отдельную небольшую металлическую коробку, заземленную на отрицательный полюс батареи, что значительно повысило стабильность и чувствительность. Детектор также имеет переключатель ULTRA MOD, при его включении чувствительность увеличивается еще больше.

Но для работы в этом режиме прибор должен находиться в помещении где нет электроприборов и сетей на расстоянии нескольких метров от детектора (режим нужен для работы на улице).
Работа ЭМП детектора
А теперь разберемся как устройство работает на самом деле. Для начала нужно разместить прибор в месте, где нет излучения ЭМП и постепенно повернуть первый потенциометр вправо. Если первый светодиод еще не активирован, продолжаем со вторым потенциометром, пока первый светодиод не загорится или не начнет слегка моргать. Затем поверните потенциометр обратно, пока не погаснет первый светодиод.

Это устройство может легко обнаруживать электромагнитные поля, создаваемые силовыми кабелями в стенах, которые находятся под напряжением и не подключены к потребителю, на расстоянии более 50 см в сверхчувствительном режиме. Например поле от электронагревателя обнаруживается на расстоянии до 1 метра. Электромагнитное поле от выключателя лампы на стене можно обнаружить с расстояния в 1,5 метра и более, если правильно настроить режим «Ультра». Старые ЭЛТ-мониторы являются очень сильным источником такого излучения, поэтому их поле можно засечь на 5 м и более.

По светодиодам и частоте тона хорошо видна сила электромагнитного поля. Представленный для самостоятельной сборки детектор является очень чувствительным, стабильным и намного лучше, чем многие коммерческие датчики ЭМП.
Изготовление антенны детектора
Форму и размер антенны лучше определить опытным путем, поэтому оставлено место, куда можно подключить нестандартную антенну. После теста, лучшая по чувствительности и компактности вышла тонкая алюминиевая пластина размерами 7 на 3 сантиметра.

Если самовозбуждение происходит без наличия сигнала ЭДС, то следует уменьшить номинал резистора R1, правда следует иметь в виду что уменьшение этого резистора также снижает чувствительность.

Код для прошивки контроллера
// EMF Detector for LED Bargraph v1.0
#define NUMREADINGS 25 // raise this number to increase data smoothing
int senseLimit = 2; // raise this number to decrease sensitivity (up to 1023 max)
int probePin = 5; // analog 5
int val = 0; // reading from probePinint LED1 = 12; // connections
int LED2 = 10; // to
int LED3 = 9; // LED
int LED4 = 8; // bargraph
int LED5 = 7; // anodes
int LED6 = 6; // with
int LED7 = 5; // resistors
int LED8 = 4; // in
int LED9 = 3; // series
int LED10 = 2; //// variables for smoothing
int readings[NUMREADINGS]; // the readings from the analog input
int index = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // final average of the probe readingvoid setup() {
pinMode(2, OUTPUT); // specify LED bargraph outputs
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);Serial.begin(9600); // initiate serial connection for debugging/etc
for (int i = 0; i < NUMREADINGS; i++)
readings[i] = 0; // initialize all the readings to 0
}void loop() {
val = analogRead(probePin); // take a reading from the probe
if(val >= 1){ // if the reading isn’t zero, proceed
val = constrain(val, 1, senseLimit); // turn any reading higher than the senseLimit value into the senseLimit value
val = map(val, 1, senseLimit, 1, 1023); // remap the constrained value within a 1 to 1023 rangetotal -= readings[index]; // subtract the last reading
readings[index] = val; // read from the sensor
total += readings[index]; // add the reading to the total
index = (index + 1); // advance to the next indexif (index >= NUMREADINGS) // if we’re at the end of the array…
index = 0; // …wrap around to the beginningaverage = total / NUMREADINGS; // calculate the average
int thisPitch = map (average, 50, 950, 100, 1500);
tone(11, thisPitch,120);if (average > 50 && average < 150){ // if the average is over 50 …
digitalWrite(LED1, HIGH); // light the first LED}
else{ // and if it’s not …
digitalWrite(LED1, LOW);// turn that LED off}
if (average >= 150 && average < 250){ // and so on …
digitalWrite(LED2, HIGH);
}
else{
digitalWrite(LED2, LOW);
}if (average >= 250 && average < 350){
digitalWrite(LED3, HIGH);
}else{
digitalWrite(LED3, LOW);}
if (average >= 350 && average < 450){
digitalWrite(LED4, HIGH);}
else{
digitalWrite(LED4, LOW);}
if (average >= 450 && average < 550){
digitalWrite(LED5, HIGH);}
else{
digitalWrite(LED5, LOW);}
if (average >= 550 && average < 650 ){
digitalWrite(LED6, HIGH);}
else{
digitalWrite(LED6, LOW);}
if (average >= 650 &&average < 750){
digitalWrite(LED7, HIGH);}
else{
digitalWrite(LED7, LOW);}
if (average >= 750 && average <850){
digitalWrite(LED8, HIGH);}
else{
digitalWrite(LED8, LOW);}
if (average >= 825 && average <900){
digitalWrite(LED9, HIGH);
}else{
digitalWrite(LED9, LOW);}
if (average > 900){
digitalWrite(LED10, HIGH);}
else{
digitalWrite(LED10, LOW);}
Serial.println(val); // use output to aid in calibrating
}
}

Это устройство также можно использовать в качестве детектора молний, в этом случае наилучшие результаты с проводом длиной 50 сантиметров в качестве антенны. После сборки и настройки устройство установлено в подходящую коробку из пластика.







