Электромагнитные поля вокруг нас
Или как я научился не бояться и полюбил ЭМП 😄
Привет, друзья-экспериментаторы! 👋 Сегодня мы погрузимся в увлекательный мир электромагнитных полей. Знаете, иногда мне кажется, что мы живем в супе из электромагнитных волн - телефоны, роутеры, микроволновки... Если бы мы могли видеть все эти поля, то мир вокруг выглядел бы как новогодняя елка! 🎄
Примерно так выглядели бы электромагнитные поля, если бы мы могли их видеть
Что такое электромагнитное поле?
Представьте, что вы бросили камень в пруд. Видите эти круги на воде? Вот примерно так и работает электромагнитное поле - только в трех измерениях и невидимо. И вместо камня у нас может быть что угодно - от вашего смартфона до микроволновки, которая разогревает вчерашний борщ.
Интересный факт! 🤓
Наш мозг тоже генерирует электромагнитные поля! Правда, очень слабые - где-то 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("Калибровка...");
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("Готово!");
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(xx + yy + 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("ЭМП: ");
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. Використання матеріалів дозволено лише з посиланням на джерело.
Написать комментарий