Магазин для электронщиков и радиолюбителей

Простой детектор электромагнитного поля на основе Arduino своими руками

Простой детектор электромагнитного поля на основе Arduino своими руками

Детектор ЭМП на Arduino

В данном проекте мы покажем вам, как сделать чрезвычайно чувствительное устройство для измерения электромагнитного поля на микроконтроллерной плате Arduino. Электромагнитные поля представляют собой комбинацию невидимых электрических и магнитных силовых полей. Они генерируются многими устройствами, такими как линии электропередач, кухонная техника, мобильные телефоны, компьютеры, но они также генерируются природными явлениями, такими как магнитное поле Земли. Даже человеческий мозг излучает чрезвычайно слабые сигналы ЭМП.

Детектор электромагнитных полей, представленный в этом проекте, основан на Arduino Nano и является довольно чувствительным. Это устройство также можно назвать измерителем ЭДС, так как оно может измерять относительную силу поля по шкале из 10 светодиодов. В данном случае сила ЭМП представлена точечным светодиодным индикатором (одновременно активен только один светодиод), при этом мы также можем снизить порог реакции в коде. Здесь также присутствует зуммер, обеспечивающий звуковой сигнал, частота которого меняется в зависимости от напряженности поля.

Схема детектор электромагнитного поля на основе Arduino представлена далее.

Простой детектор электромагнитного поля на основе Arduino своими руками

Устройство можно собрать на панели с использованием металлической коробки, заземленную на отрицательный полюс батареи, в которую можно поместить Arduino, что значительно повысит стабильность и чувствительность.

Простой детектор электромагнитного поля на основе Arduino своими руками
Простой детектор электромагнитного поля на основе Arduino своими руками

Код для Arduino представлен в конце материала.

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

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

Это устройство может легко обнаруживать электромагнитные поля, создаваемые силовыми кабелями, которые находятся только под напряжением и не подключены к потребителю на расстоянии более 60 см в сверхчувствительном режиме. Например, ЭМП нагревателя обнаруживается на расстоянии до 100 и более сантиметров. Электромагнитное поле от выключателя питания, который включает лампу, может быть обнаружено с невероятного расстояния в 1,5 метра и более, если правильно настроить режим ULTRA MOD. Старые ЭЛТ-мониторы являются очень сильным источником такого излучения, поэтому их поле можно обнаружить на расстоянии 5 м и более.

По светодиодам и частоте тона хорошо видна сила ЭМ поля. Этот тип чувствительного детектора ЭМП также называется детектором-призраком. Представленный детектор является сверхчувствительным и стабильным и намного лучше, чем коммерческие детекторы ЭМП, которые вы можете приобрести по относительно высокой цене. Однако для успешного изготовления этого устройства необходимо иметь некоторый опыт в области электроники, особенно в области заземляющих устройств. Если самовозбуждение происходит без наличия сигнала ЭДС, то следует уменьшить номинал резистора R1, но следует иметь в виду, что уменьшение этого резистора также снижает чувствительность детектора.

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

#define NUMREADINGS 25

int senseLimit = 2;
int probePin = 5;
int val = 0;

int LED1 = 12;  
int LED2 = 10; 
int LED3 = 9;   
int LED4 = 8;   
int LED5 = 7;  
int LED6 = 6;   
int LED7 = 5;   
int LED8 = 4;   
int LED9 = 3;   
int LED10 = 2;  

// variables for smoothing

int readings[NUMREADINGS];    
int index = 0;             
int total = 0;              
int average = 0;  

void setup() {

  pinMode(2, OUTPUT);
  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);
  for (int i = 0; i < NUMREADINGS; i++)
    readings[i] = 0;                
}

void loop() {

  val = analogRead(probePin); 

  if(val >= 1){     

    val = constrain(val, 1, senseLimit); 
    val = map(val, 1, senseLimit, 1, 1023);  

    total -= readings[index];            
    readings[index] = val;
    total += readings[index];  
    index = (index + 1);      

    if (index >= NUMREADINGS)          
      index = 0;                  

    average = total / NUMREADINGS;        

        int thisPitch = map (average, 50, 950, 100, 1500);
       tone(11, thisPitch,120);
       
    if (average > 50 && average < 150){               
      digitalWrite(LED1, HIGH); 
     
    }
    else{                      
      digitalWrite(LED1, LOW);
     
    }

    if (average >= 150 && average < 250){         
      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);
  }
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *