Електромагнітні поля навколо нас
Або як я навчився не боятися і полюбив ЕМП 😄
Привіт, друзі-експериментатори! 👋 Сьогодні ми поринемо у захоплюючий світ електромагнітних полів. Знаєте, іноді мені здається, що ми живемо в супі з електромагнітних хвиль - телефони, роутери, мікрохвильовки... Якби ми могли бачити всі ці поля, то світ навколо виглядав би як новорічна ялинка! 🎄
Приблизно так виглядали б електромагнітні поля, якби ми могли їх бачити
Що таке електромагнітне поле?
Уявіть, що ви кинули камінь у ставок. Бачите ці кола на воді? Ось приблизно так і працює електромагнітне поле - тільки в трьох вимірах і невидимо. І замість каменя у нас може бути що завгодно - від вашого смартфона до мікрохвильовки, яка розігріває вчорашній борщ.
Цікавий факт! 🤓
Наш мозок теж генерує електромагнітні поля! Щоправда, дуже слабкі - десь 10^-13 Тесла. Для порівняння - магнітне поле Землі приблизно 25-65 мікроТесла. Тому ні, думки читати таким способом не вийде!
Давайте створимо наш перший детектор ЕМП!
Важливо знати! 🤓
Для нашого детектора ми використовуємо датчик QMC5883L. Це цифровий компас, але завдяки його чутливості до магнітних полів, ми можемо використовувати його для виявлення EMF. Він найкраще реагує на низькочастотні магнітні поля від трансформаторів, двигунів та інших потужних джерел.
Для початку нам знадобиться:
- Arduino Nano/Uno (будь-яка плата підійде)
- Датчик QMC5883L
- LCD дисплей 16x2 з I2C модулем
- Кнопка для калібрування
- Дроти для з'єднання
- Бажання експериментувати! 🚀
Наші компоненти в зборі
⚠️ Важлива особливість роботи з QMC5883L:
Оскільки наш датчик QMC5883L - це насправді компас, він дуже чутливий до свого положення відносно магнітного поля Землі. Тому при переміщенні пристрою в інше місце (навіть в межах кімнати) потрібно обов'язково виконувати перекалібрування натисканням кнопки. Це не баг, а особливість роботи датчика:
- При переміщенні змінюється орієнтація відносно магнітного поля Землі
- Без калібрування ви можете отримати хибно високі показання
- Калібрування встановлює нову "точку відліку" для поточного положення
- Всі наступні вимірювання будуть відносно цієї нової точки
Тому правильний процес вимірювання такий: перемістили пристрій ➜ відкалібрували ➜ почали вимірювання. Це забезпечить точні показання незалежно від положення датчика в просторі.
Підключення компонентів
Схема підключення досить проста, але є важливі моменти:
LCD дисплей з I2C модулем:
- VCC → 5V Arduino
- GND → GND Arduino
- SDA → A4 Arduino
- SCL → A5 Arduino
QMC5883L:
- VCC → 3.3V (Важливо! Тільки 3.3V)
- GND → GND Arduino
- SDA → A4 Arduino
- SCL → A5 Arduino
Кнопка калібрування:
- Один контакт → D2 Arduino
- Другий контакт → GND Arduino
⚠️ Важливо!
SDA та SCL піни використовуються одночасно для обох I2C пристроїв. Це нормально, тому що вони мають різні I2C адреси і не конфліктують між собою.
Код програми
Спочатку потрібно встановити необхідні бібліотеки:
- Wire.h - для I2C комунікації
- LiquidCrystal_I2C.h - для роботи з LCD дисплеєм
- QMC5883LCompass.h - для роботи з датчиком
Ось повний код програми:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <QMC5883LCompass.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
QMC5883LCompass compass;
const int WINDOW_SIZE = 10;
float values[WINDOW_SIZE];
int valueIndex = 0;
float baselineValue = 0;
float filteredValue = 0;
float alpha = 0.2;
float decay = 0.05;
int maxValue = 0;
const int CALIBRATE_BTN = 2;
void calibrate() {
lcd.clear();
lcd.print("Calibrating...");
float sumX = 0, sumY = 0, sumZ = 0;
for(int i = 0; i < 20; i++) {
compass.read();
sumX += compass.getX();
sumY += compass.getY();
sumZ += compass.getZ();
delay(20);
}
baselineValue = sqrt(pow(sumX/20, 2) + pow(sumY/20, 2) + pow(sumZ/20, 2));
for(int i = 0; i < WINDOW_SIZE; i++) {
values[i] = 0;
}
filteredValue = 0;
maxValue = 0;
lcd.clear();
lcd.print("Ready!");
delay(500);
}
void setup() {
Wire.begin();
lcd.begin(16, 2);
lcd.init();
lcd.backlight();
pinMode(CALIBRATE_BTN, INPUT_PULLUP);
compass.init();
compass.setMode(0x01, 0x0C, 0x10, 0x00);
Serial.begin(9600);
calibrate();
}
void loop() {
if(digitalRead(CALIBRATE_BTN) == LOW) {
delay(50);
if(digitalRead(CALIBRATE_BTN) == LOW) {
calibrate();
while(digitalRead(CALIBRATE_BTN) == LOW);
}
}
compass.read();
float x = compass.getX();
float y = compass.getY();
float z = compass.getZ();
float currentMagnitude = sqrt(x*x + y*y + z*z);
float relativeMagnitude = abs(currentMagnitude - baselineValue);
values[valueIndex] = relativeMagnitude;
valueIndex = (valueIndex + 1) % WINDOW_SIZE;
float sum = 0;
for(int i = 0; i < WINDOW_SIZE; i++) {
sum += values[i];
}
float avgMagnitude = sum / WINDOW_SIZE;
if(avgMagnitude > filteredValue) {
filteredValue = (alpha * avgMagnitude) + ((1 - alpha) * filteredValue);
} else {
filteredValue = filteredValue * (1.0 - decay);
}
int displayValue = map(filteredValue, 0, 1000, 0, 100);
displayValue = constrain(displayValue, 0, 100);
if(displayValue > maxValue) {
maxValue = displayValue;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("EMF: ");
lcd.print(displayValue);
lcd.print("% M:");
lcd.print(maxValue);
lcd.setCursor(0, 1);
int barLength = map(displayValue, 0, 100, 0, 16);
for(int i = 0; i < 16; i++) {
lcd.write(i < barLength ? 255 : ' ');
}
delay(50);
}
💡 Особливості роботи:
Наш детектор найкраще реагує на:
- Низькочастотні магнітні поля (трансформатори, двигуни)
- Сильні джерела EMF (мікрохвильова піч показує найсильніші значення)
- Постійні магнітні поля
Менш чутливий до:
- Високочастотних полів (Wi-Fi, мобільний зв'язок)
- Слабких EMF
Звичайний стан
В режимі очікування телефон показує мінімальні значення EMF (10-15%). Це нормально, адже телефон періодично обмінюється даними з базовою станцією.
Під час дзвінка
При активному дзвінку показники зростають до 30-40%. Це пов'язано з тим, що телефон активно передає голосові дані через стільникову мережу.
📱 Цікаве спостереження:
Показники можуть відрізнятися залежно від моделі телефону, якості сигналу та технології зв'язку (2G/3G/4G). Чим гірший сигнал, тим сильніше телефон "фонить", бо змушений збільшувати потужність передавача.
Експериментуємо!
Спробуйте провести такі експерименти:
Побутова техніка:
- ✓ Мікрохвильова піч (найсильніший ефект)
- ✓ Холодильник (біля компресора)
- ✓ Блок живлення ноутбука
- ✓ Електричний чайник
- ✓ Пральна машина
Електроніка:
- ✓ Старі CRT монітори
- ✓ Зарядні пристрої
- ✓ Електромотори
- ✓ Комп'ютерні блоки живлення
- ✓ LED лампи з драйверами
🔍 Цікаві спостереження:
- Мікрохвильовка показує найвищі значення - це нормально, адже вона працює з потужними магнітними полями
- При переміщенні датчика потрібно виконати перекалібрування
- Чим ближче до джерела поля, тим сильніший сигнал
- Різні зарядні пристрої можуть давати різні показання - дешеві зазвичай "фонять" сильніше
Практичне застосування
- Перевірка екранування електроприладів
- Пошук прихованої проводки в стінах
- Виявлення несправних блоків живлення
- Освітні демонстрації невидимих полів
- Перевірка "чистоти" робочого місця від EMF
💡 Корисні поради:
- Калібруйте прилад подалі від джерел EMF
- Тримайте датчик нерухомо під час вимірювань
- Для точного визначення напрямку джерела поля робіть кілька вимірювань з різних позицій
- Записуйте максимальні значення для різних приладів - це допоможе створити власну шкалу порівняння
🤓 Цікавий факт на завершення:
Знаєте, що наш детектор може реагувати навіть на магнітні бурі? Під час сильних сонячних спалахів магнітне поле Землі коливається, і це можна помітити на наших вимірюваннях!
© 2024 Мій Проект.Автор: Jazzzman. Використання матеріалів дозволено лише з посиланням на джерело.
Написати коментар