Arduino Reed senzor magnetického pole

Arduino Reed modul je senzor magnetického pole. Reed modul kromě samotného Reed spínače obsahuje také operační zesilovač, odporový trimr a další pomocné součástky. Zmíněným trimrem pak lze nastavit úroveň citlivosti detekce magnetického pole. Pro napájení celého vstupního modulu můžeme použít napětí jak 3,3 V, tak i 5 V z Arduina. A další výhodou je také přítomnost indikačních LED diod na modulu nebo předvrtaný otvor pro zjednodušení instalace.

Pro úspěšné propojení Reed modulu s Arduino deskou je nutné zapojit 3 propojovací piny. Propojíme VCC s 5 V Arduina, GND se zemí Arduina a D0 s pinem 2. Pro datový pin D0 lze také využít ostatní piny Arduina, ale je nutné tuto změnu provést také v programu. Avšak pro využití detekce přerušení má každá Arduino deska využita jen některé piny, například pro Uno to jsou piny D2 a D3.

Ukázkový kód obsahuje na svém začátku nastavení čísla vstupního pinu. V podprogramu setup pak nejprve nastavíme komunikaci po sériové lince a následně nastavíme datový pin Reed modulu jako vstupní a zároveň zapojíme detekci přerušení pomocí funkce attachInterrupt, kde 0 znamená pin D2 = int0 (D3 = int1), detekce jméno podprogramu, který se vykoná a FALLING typ detekované hrany. Nekonečná smyčka loop pak pro ukázku obsahuje pouze tisk času od zapnutí napájení každou vteřinu. Podprogram detekce, který se vykoná v případě detekce přerušení, vždy vytiskne informace o detekci magnetického pole po sériové lince a poté se pokračuje v nekonečné smyčce.

// Arduino Reed senzor magnetického pole

// nastavení čísla vstupního pinu
const int reedPin = 2;

void setup() {
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);  
  // inicializace digitálního vstupu
  pinMode(reedPin, INPUT);
  // nastavení přerušení na pin 2 (int0) 
  // při klesající hraně (log1->log0) se vykoná program detekce 
  attachInterrupt(0, detekce, FALLING);
}

void loop() {
  // pro ukázku se každou vteřinu vytiskne
  // zpráva o počtu vteřin od zapnutí Arduina
  Serial.print("Cas od zapnuti: ");
  Serial.print(millis()/1000);
  Serial.println(" vterin.");
  delay(1000);
}

void detekce() {
  // pokud je aktivován digitální vstup,
  // vypiš informaci po sériové lince
  Serial.println("Detekce magnetickeho pole!");
}

Po nahrání ukázkového programu do Arduino desky s připojeným Reed modulem dostaneme například tento výsledek:

Cas od zapnuti: 1 vterin.
Cas od zapnuti: 2 vterin.
Cas od zapnuti: 3 vterin.
Cas od zapnuti: 4 vterin.
Detekce magnetickeho pole!
Cas od zapnuti: 5 vterin.
Detekce magnetickeho pole!
Cas od zapnuti: 6 vterin.
Detekce magnetickeho pole!
Cas od zapnuti: 7 vterin.

Arduino Reed modul je šikovný detekční senzor, pomocí kterého můžeme velice jednoduše detekovat magnetické pole v okolí. Například by se dal využít do zařízení pro třídění materiálů či do vlastnoručně vyrobeného spínače bez pohyblivých částí. Co se týká minimální vzdálenosti detekce magnetického pole, ta záleží na síle magnetu či zařízení vyzařující magnetické pole. U hodně silných magnetických polí pak výrobce udává možnou detekční vzdálenost až 1,5 metru.

 

Seznam použitých komponent:

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/1299-reed-spinac-modul-magnetron-pro-arduino-1462954576.html

Další podobné články