SENSORE INFRAROSSI
ARDUINO
Per rilevare la presenza di un treno in un tracciato si può usare un sensore ad infrarossi e inviare il segnale ad ARDUINO che provvederà alla elaborazione del segnale secondo i nostri scopi.
Il sensore si può usare già cosi o si possono dissaldare i LED e installarli uno davanti all'altro in un qualsiasi percorso.
Il modulo rileva un oggetto ad una distanza compresa tra i 2 e i 30 cm, con un angolo di rilevamento di 35°, la distanza può essere regolata tramite il trimmer, ruotando in senso orario la distanza aumenta; ruotando in senso antiorario la distanza di rilevamento diminuisce.
Il modulo utilizza utilizza una coppia di diodi infrarossi (uno emittente e uno ricevente) che funzionano per riflessione, sono quindi importanti la forma e la riflettività del bersaglio.
Anche il colore influenza il funzionamento, la distanza di rilevamento sarà minima nel caso l'oggetto sia nero, e massima nel caso sia di colore bianco.
Il connettore di uscita del modulo sensore presenta la porta denominata OUT che può essere collegata direttamente alla porta I/O di un microcontrollore, L'uscita è in grado di pilotare direttamente un relè a 5 V ; Collegamento: VCC-VCC; GND-GND; OUT-IO.
La stabilità del segnale è garantita utilizzando un comparatore LM393.
Il modulo sensore può essere alimentato con una tensione compresa tra 3-5 V DC , la presenza della tensione è segnalata dal relativo led rosso.
Per il fissaggio è presente un foro per una facile installazione fissa, diametro massimo della vite è di 3 mm.
int LED = 13; // Utilizzo del led a bordo scheda Arduino
int isObstaclePin = 2; // Pin a cui è collegato il sensore IR
int isObstacle = HIGH; // HIGH = non trovato ostacolo
// Impostazione display LCD tramite I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(LED, OUTPUT);
pinMode(isObstaclePin, INPUT);
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Test sensore IR");
lcd.setCursor(0, 1);
lcd.print("arduino nano");
delay (3000);
lcd.clear();
}
void loop() {
isObstacle = digitalRead(isObstaclePin);
if (isObstacle == LOW)
{
Serial.println("Trovato ostacolo");
digitalWrite(LED, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Trovato ostacolo");
}
else
{
Serial.println("Strada libera");
digitalWrite(LED, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Strada libera");
}
delay(200);
}