DIY 超灵敏 EMF 探测器
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
这是一种能够检测非常微弱的电磁场的简单设备。相对场强显示在 LCD 显示器上,同时发出蜂鸣器声音信号和 LED 灯信号。在这种情况下,传感器是一根直径为 1.5 毫米的普通铜线,但您可以使用任何一根电线或金属瓦。灵敏度可以通过代码调整,也可以通过改变连接在 A0 和接地之间的电阻值来调整。在开关的帮助下,选择电阻的两个值之一,从而选择设备的灵敏度。所以我们可以很容易地校准它,通过将它与重新校准的工业设备进行比较。
如下图所示,电路非常简单,由Arduino Nano微控制器和几个外部元件组成。
该代码是两部分的组合(KTAudio 基于 Arduino 的 VU 表用于 LCD 显示部分,Aaron ALAI EMF 检测器用于传感器部分)以及对其某些部分的修改,以提高整个设备的稳定性。您可以通过以下链接下载。
正如您在视频中看到的那样,该设备可以轻松检测仅欠压且未连接到消费者的电源线产生的电磁场。例如,可以在 3m 甚至更远的距离检测到来自旧 CRT 显示器的电磁场。
探测器安装在一个方便的外壳中,由9V电池供电。
代码
- 代码
代码C/C++
/* KTAudio 基于 Arduino 的 VU 表。由 ThomAce (Tamas Kamocsai) 基于 siemenwauters、theredstonelabz 和 michiel H 的 VU 表开发。 GNU GPL License v3 开发者:ThomAce (Tamas Kamocsai) 邮箱:[email protected] 版本:1.0 最后修改日期:2019.09.24 原版:https://www.instructables.com/id/ARDUINO-VU-METER/ 原版描述: siemenwauters、theredstonelabz 和 michiel H 的 VU 表不要忘记喜欢和订阅支持我的工作。 tnx 由 mircemk (Mirko Pavleski) 修改*/#includebyte Bar[8] ={ B11111, B00000, B11111, B11111, B11111, B11111, B00000, B11010}; B11010} B01000, B10100, B10100, B10100, B10111, B01000, B00111};byte R[8] ={ B00111, B01000, B10110, B10101, B10110, B1010, B10, B1010, B1010, B1010Mark =B00100, B00100, B00100, B00100, B01000, B10000};byte EmptyBar[8] ={ B11111, B00000, B00000, B00000, B00000, B00000, B10, B10H, B10H, B10H10, B10H10H B01110, B01110, B01110, B00000, B11111};String main_version ="1.0";int right; //存储和计算通道电平的变量 const int numReadings =5; //刷新率。较低的值 =较高的比率。 5 是默认指数R =0; int totalR =0; int maxR =0; int inputPinR =A0; //输入引脚模拟0为右通道int volR =0;int rightAvg =0;long peakHoldTime =100; //以毫秒为单位的峰值保持时间long peakHold =0;int rightPeak =0;long DecayTime =0;long actualMillis =0;int pin10 =10; // 红色 ledint 的输出 val =0; int pin9 =9;LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //lcd configurationvoid setup(){ lcd.begin(40, 2); //设置液晶显示器。 16 个字符和 2 行 lcd.createChar(1, Bar); lcd.createChar(3, R); lcd.createChar(4, EmptyBar); lcd.createChar(5, EndMark); lcd.createChar(6, peakHoldChar); //显示加载消息和加载条 String KTAudio =" MIRCEMK"; for (int i =0; i <=16; i++) { lcd.setCursor(0, 0); lcd.print(KTAudio.substring(0, i));延迟(50); } KTAudio =" EMF-detector " + main_version; for (int i =0; i <=KTAudio.length(); i++) { lcd.setCursor(0, 1); lcd.print(KTAudio.substring(0, i));延迟(50); } 延迟(500);液晶显示器(); lcd.setCursor(0, 0); lcd.print("加载中..."); for (int i =0; i <16; i++) { lcd.setCursor(i, 1);液晶显示器(4); } for (int i =0; i <16; i++) { lcd.setCursor(i, 1);液晶显示器(1);延迟(50); } 延迟(500);液晶显示器();衰减时间 =毫秒();}void 循环(){ lcd.setCursor(0, 0); lcd.write("电磁场强度");实际米利斯 =米利斯(); lcd.setCursor(0, 1); //R通道索引lcd.write(3); //R符号lcd.setCursor(15, 1); //结束标记/结束标记索引2 lcd.write(5); //结束标记/结束标记 totalR =analogRead(inputPinR); if(totalR>=1){ totalR =约束(totalR, 0, 100); // 处理这些值 totalR =map(totalR, 0, 100, 1, 255); // 改变设备的响应距离analogWrite(pin10, totalR); // *注意也弄乱了电阻器应该改变analogWrite(pin9, totalR); // 灵敏度 }else{ //analogWrite(pin10, val);只需使用 // 变量 val analogWrite(pin10, 0); 的强度调整 LED; // else 语句只是告诉微控制器analogWrite(pin9, 0); // 如果没有检测到 EMF,关灯 } if(totalR> maxR) { maxR =totalR; } indexR++;如果(indexR>=numReadings){ indexR =0;右 =maxR;最大R =0; } volR =右 / 3; if(volR> 14) { volR =14; } if (volR <(rightAvg - 2)) { if (decayTime (rightAvg + 2)) { volR =(rightAvg + 2); rightAvg =volR; } else { rightAvg =volR; } if (volR> rightPeak) { rightPeak =volR; } drawBar(volR, rightPeak, 1); if (decayTime
示意图
制造工艺