Найти тему
Радиоэлектроника

Датчик электромагнитного поля на микроконтроллере

Оглавление

Представляем довольно интересную схемку детектора электромагнитного поля на микроконтроллере ATTiny85V. При помощи устройства можно находить источник электромагнитного поля. Детектор содержит минимум деталей, а выглядит он вот так:

Детектор электромагнитного поля на микроконтроллере ATtiny

Основным элементом тут является довольно популярный микроконтроллер ATtiny.

Схема детектор

-2

Изначально лучше собирать на макетной плате — так намного удобнее находить неисправности. А в случае не правильной сборки и не придется ничего перепаивать.

Скетч

// EMF Detector Attiny85 and 4 led v1.0
// 23.10.2015
// original code/project by Aaron ALAI -
aaronalai1@gmail.com
// modified for use by Giovanni Gentile -
giovanni@0lab.it
// Attiny 85
// ____
// Reset - - vcc+
// led - - led
// 4Moh + ante - - led
// GND - - led
//
// Put the 4 Mohm resistor to pin 3 and GND and put antenna

#define NUMREADINGS 15 // Number of readings

int senseLimit = 15; // raise this num to decrease sensitivity
int val = 0;
int antenna = A2;

int LED[] = {2,0,1,3};

// Variables for smoothing
int readings[NUMREADINGS];
int index = 0;
int total = 0;
int averange = 0;

void setup() {

pinMode(2, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(3, OUTPUT);
pinMode(A2, INPUT);

// Test leds
for (int i=0; i<4; i++) {
digitalWrite(LED[i],HIGH);
delay(500);
}
for (int i=0; i<4; i++) {
digitalWrite(LED[i],LOW);
}

// Initialize all the readings
for (int i = 0; i < NUMREADINGS; i++) { readings[i] = 0; } } void loop() { int val = analogRead(antenna); if(val >= 1){

val = constrain(val, 1, senseLimit); // turn any readings higher than the senseLimit into the senseLmit value
val = map(val, 1, senseLimit, 1, 1023); // remap the values

total -= 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 index

if (index >= NUMREADINGS)
index = 0;

averange = total / NUMREADINGS;

if (averange > 50) {
digitalWrite(2,HIGH);
}
else {
digitalWrite(2,LOW);
}

if (averange > 350) {
digitalWrite(0,HIGH);
}
else {
digitalWrite(0,LOW);
}

if (averange > 750) {
digitalWrite(1,HIGH);
}
else {
digitalWrite(1,LOW);
}

if (averange > 950) {
digitalWrite(3,HIGH);
}
else {
digitalWrite(3,LOW);
}
}
}

Загрузите этот код в ATTiny85. Информации о том как прошить микроконтроллер говорилось тут, также на эту тему предостаточно материалов в интернете.  Далее начинаем сборку проекта на макетной плате. Это делается доля того чтобы проверить проводку  и правильность сборки, прежде чем распаивать уже на текстолите. Этот шаг, вероятно, является наиболее важным. На этом этапа его гораздо сложнее исправить, когда проект уже спаян на плату. Код программы вы можете скачать по ссылке Github которая указана в конце статьи.

Изготовление антенны

Сделайте антенну желаемой формой. Это можно легко сделать, обернув кусок проволоки вокруг карандаша. Далее необходимо растянув его до нужной длины. На какую длину? — хороший вопрос. Как вы знаете, задавая такой замечательный вопрос, длина провода будет влиять на частоту, с которой он работает. Однако, поскольку мы не ищем конкретную частоту и вместо этого в основном ищем электрические помехи. Длина не имеет решающего значения для устройства. Я просто использовал запасной провод, который удерживал его форму при намотке. Мой провод оказался немного больше, чем отверстия на плате, поэтому я просверлил те, через которые он должен был пройти.

А так выглядит обратная сторона готового устройства.

-3