На основе Arduino можно довольно легко и просто сделать детектор магнитного поля своими руками, если подключить к Arduino датчик Холла. И в данном материале мы рассмотрим такую разработку с использованием как аналогового, так и цифрового датчиков Холла.

Мы приведем две схемы, но не стоит путать их, даже если они очень похожи друг на друга. Основная разница здесь в том, что первый датчик, KY-003, использует цифровой выход, а KY-035 – аналоговый выход. Поэтому у нас есть две схемы, потому что они используют разные принципы формирования сигнала. Таким образом, вы можете выбрать, какой из них вы хотите использовать, KY-003 или KY-035, для своего проекта.
Для детектора магнитного поля на основе Arduino и цифрового датчика Холла KY-003 схема будет следующая:

Для детектора магнитного поля на основе Arduino и аналогового датчика Холла KY-035 схема будет такая:

Код программы Arduino для детектора магнитного поля на основе цифрового датчика Холла KY-003 следующий.
int GreenLed = 2;
int BlueLed = 3;
int MagneticHallSensor = 4;
int Buzzer = 5;
int val;
void setup ()
{
pinMode (GreenLed, OUTPUT);
pinMode (BlueLed, OUTPUT);
pinMode (MagneticHallSensor, INPUT);
pinMode (Buzzer, OUTPUT);
}
void loop ()
{
val = digitalRead (MagneticHallSensor) ;
if (val == LOW)
{
digitalWrite (BlueLed, HIGH);
digitalWrite (Buzzer, HIGH);
delay(1000);
digitalWrite (BlueLed, LOW);
digitalWrite (Buzzer, LOW);
delay(100);
}
else
{
digitalWrite (BlueLed, LOW);
digitalWrite (GreenLed, HIGH);
delay(1000);
digitalWrite (GreenLed, LOW);
digitalWrite (Buzzer, LOW);
delay(100);
}
}
Код программы Arduino для детектора магнитного поля на основе аналогового датчика Холла KY-035 следующий.
int Buzzer = 4;
int sensorPin = A0;
int GreenLed = 2;
int BlueLed = 3;
int sensorValue = 0;
void setup () {
pinMode (BlueLed, OUTPUT);
pinMode (GreenLed, OUTPUT);
pinMode (Buzzer, OUTPUT);
Serial.begin (9600);
}
void loop () {
sensorValue = analogRead (sensorPin);
if(analogRead(1)>575 && analogRead(1)< 700)
{
digitalWrite (BlueLed, HIGH);
digitalWrite (Buzzer, HIGH);
delay(1000);
digitalWrite (BlueLed, LOW);
digitalWrite (Buzzer, LOW);
delay(100);
Serial.println(sensorValue, DEC);
}
else
{
digitalWrite (BlueLed, LOW);
digitalWrite (GreenLed, HIGH);
delay(1000);
digitalWrite (GreenLed, LOW);
digitalWrite (Buzzer, LOW);
delay(100);
Serial.println(sensorValue, DEC);
}
}
© digitrode.ru