Vai ai contenuti

SENSORE INFRAROSSI - MY TRAIN MODEL

Salta menù
100 ELECTRONICS PROBLEM SOLVING
Title
Salta menù

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);
}

Torna ai contenuti