Le differenze che contano davvero prima di collegare il sensore
- Non esiste un solo “sensore IR”: in ambito Arduino si incontrano moduli riflettivi, ricevitori per telecomandi e, in altri casi, sensori termici.
- Per line follower e rilevamento a distanza ravvicinata, i moduli riflettivi come il TCRT5000 sono i più comuni e lavorano su pochi millimetri.
- Per i telecomandi serve un ricevitore IR demodulato, pensato per segnali a portante 36 o 38 kHz.
- La taratura vale più del codice: luce ambiente, colore della superficie e distanza cambiano molto il risultato.
- Sulla classica scheda Uno la lettura analogica è a 10 bit, quindi il valore va da 0 a 1023; su altre schede la risoluzione può essere diversa.
Che cosa rileva davvero un sensore a infrarossi
Quando parlo di sensore IR per Arduino, io distinguo subito tre casi. Il primo è il sensore riflettivo, usato per vedere quanto infrarosso torna indietro da una superficie: è il caso tipico dei moduli per line follower, encoder e piccoli rilevamenti di prossimità. Il secondo è il ricevitore per telecomandi, che non “vede” un ostacolo ma decodifica un segnale modulato. Il terzo è la famiglia dei sensori termici, che misurano temperatura senza contatto e sono utili, ma appartengono a una categoria diversa rispetto ai moduli da robot hobby.
| Tipo di modulo | Come lavora | Uso tipico | Limite reale |
|---|---|---|---|
| Riflettivo | Emette IR e misura la luce riflessa da una superficie | Line follower, encoder, ostacolo molto vicino | Funziona bene solo a distanza corta e dipende molto dal contrasto |
| Ricevitore per telecomandi | Riceve un segnale IR modulato e lo demodula | Comandi da remoto, automazioni, decoder | Non è adatto a rilevare oggetti o linee |
| Termico | Misura l’energia IR emessa dagli oggetti in forma di calore | Misura temperatura senza contatto | Non sostituisce un modulo di rilevamento per robot |
Il caso più comune, quello che spesso si intende quando si cerca un sensore IR da usare con Arduino, è il modulo riflettente. Un esempio concreto è il TCRT5000: integra emettitore e fototransistor, lavora con un picco di emissione intorno a 950 nm e ha un intervallo operativo molto corto, con distanza di picco intorno a 2,5 mm e range utile circa da 0,2 a 15 mm. È perfetto se vuoi leggere una superficie vicina, ma sarebbe un errore aspettarsi distanze da “radar”.
I ricevitori per telecomandi seguono una logica diversa: hanno un filtro IR, uno stadio di preamplificazione e un’uscita già demodulata, così il microcontrollore può leggere il segnale direttamente. Qui conta molto la portante, di solito 36 o 38 kHz, e conta anche il controllo automatico del guadagno, cioè l’AGC, che aiuta a resistere a lampade, monitor e rumore ambientale. Se però ti serve sapere se un oggetto è vicino, questo non è il componente giusto.
Capito il tipo di sensore, il passo successivo è collegarlo in modo corretto e capire quale uscita conviene leggere davvero su Arduino.
Come collegarlo ad Arduino senza forzare il cablaggio
Nei moduli da hobby più diffusi trovi spesso tre o quattro collegamenti: VCC, GND e una uscita OUT, talvolta affiancata da un’uscita analogica separata. Il primo controllo che faccio è sempre banalissimo: tensione corretta del modulo, massa comune con Arduino e pin di lettura scelto in base al tipo di segnale. Forzare un sensore analogico dentro una logica tutta digitale, o il contrario, è uno dei motivi più comuni per cui il progetto sembra “rotto” quando in realtà è solo impostato male.
| Uscita | Quando conviene | Attenzione pratica |
|---|---|---|
| Digitale | Ti serve una soglia secca, ad esempio per fermare un robot o rilevare il passaggio di una linea | La soglia dipende dal trimmer o dal comparatore del modulo; spesso il comportamento è attivo basso |
| Analogica | Ti serve vedere quanto cambia il segnale e scegliere tu la soglia | Richiede una taratura in più, ma offre più controllo |
const byte irPin = 2;
const byte ledPin = 13;
void setup() {
pinMode(irPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int stato = digitalRead(irPin);
// Molti moduli IR economici attivano l'uscita con LOW
digitalWrite(ledPin, stato == LOW ? HIGH : LOW);
Serial.println(stato);
delay(50);
}
Se invece leggi un’uscita analogica, su un Arduino Uno classico il valore arriva da 0 a 1023. Su molte schede più recenti la risoluzione può cambiare, e in quel caso ha senso usare la funzione che regola la profondità di lettura analogica invece di dare per scontato il vecchio intervallo. In pratica, io guardo prima il valore grezzo sul Serial Monitor e solo dopo decido la logica del progetto.
Dopo il collegamento, il vero salto di qualità arriva con la taratura: è lì che un sensore mediocre smette di sembrare casuale e diventa affidabile.
Taratura e problemi tipici che vale la pena riconoscere subito
Con i sensori riflettivi la taratura conta più di quanto si pensi. Il colore della superficie, l’altezza del modulo, la luce della stanza e perfino il materiale del pavimento cambiano la risposta. Su un TCRT5000, per esempio, andare troppo lontano dal punto di lavoro ideale è un errore facile: oltre pochi millimetri il segnale si indebolisce rapidamente, quindi non ha senso montarlo come se fosse un sensore da distanza media.
| Sintomo | Probabile causa | Cosa faccio io |
|---|---|---|
| L’uscita resta sempre uguale | Soglia sbagliata o logica invertita | Controllo se il modulo è attivo basso e regolo il trimmer o il codice |
| Il valore cambia a caso | Luce ambiente troppo forte o sensore mal schermato | Lo allontano dal sole diretto, lo proteggo meglio e riprovo sul posto reale |
| La linea viene letta male | Distanza troppo alta o contrasto insufficiente | Abbasso il modulo e verifico la superficie con un test manuale |
| Il telecomando non viene riconosciuto | Ricevitore sbagliato o portante non compatibile | Uso un ricevitore demodulato adatto alla frequenza del telecomando |
| I valori analogici sono troppo vicini | Stai lavorando fuori dal range utile | Aggiusto distanza, angolo e media di lettura |
La mia sequenza di taratura, quando voglio evitare correzioni infinite, è semplice: leggo il valore su sfondo chiaro, poi su sfondo scuro, poi imposto una soglia iniziale a metà tra i due, e infine verifico tutto con la meccanica già montata. Se il progetto cambia anche solo di pochi millimetri rispetto al banco prova, la lettura può cambiare parecchio. È noioso, ma è il punto in cui si vince o si perde la stabilità del sistema.
Quando il segnale è pulito, la domanda successiva diventa più interessante: quale modulo ha davvero senso per il progetto che hai in mente?
Quale modulo conviene davvero per il tuo progetto
Qui la scelta giusta dipende dal problema, non dal nome generico del componente. Io ragiono sempre in termini di distanza, tipo di superficie e complessità del segnale. Se mi serve distinguere una linea nera da un fondo chiaro, scelgo un riflettivo. Se devo ricevere comandi da un telecomando, scelgo un ricevitore demodulato. Se mi serve una distanza di lavoro più ampia, spesso l’IR riflettente non è la strada migliore e conviene guardare a ultrasuoni o ToF.
| Progetto | Sensore più adatto | Perché lo scelgo |
|---|---|---|
| Robot seguilinea | Riflettivo | Legge bene il contrasto tra la linea e il fondo |
| Contatore di giri o encoder | Riflettivo | Rileva passaggi ripetuti e vicini in modo semplice |
| Decodifica telecomando | Ricevitore IR demodulato | È progettato proprio per segnali modulati a 36 o 38 kHz |
| Rilevamento ostacolo a distanza vera | Spesso non IR riflettente | Un modulo a infrarossi corto raggio non è la scelta più solida |
| Misura di temperatura senza contatto | Sensore termico IR | Lavora su un principio diverso e serve a scopi diversi |
Questa distinzione sembra banale, ma evita acquisti sbagliati. Molti principianti comprano un modulo IR economico aspettandosi un sensore “universale”, poi scoprono che legge bene solo a pochi millimetri oppure che non può decodificare un telecomando perché non è il tipo giusto di ricevitore. Se vuoi un progetto pulito, la regola è questa: prima definisci il compito, poi scegli il sensore.
La scelta più robusta per partire senza rifare tutto due volte
Se devo ridurre tutto a una regola pratica, direi questo: per i progetti con Arduino i sensori IR funzionano bene quando il problema è chiaro e il range è breve. Il riflettivo è perfetto per linee, passaggi e conteggi ravvicinati; il ricevitore demodulato è la soluzione giusta per i telecomandi; la lettura analogica ha senso quando vuoi una taratura fine, mentre l’uscita digitale è più rapida se ti basta una soglia netta.
- Per una linea o un bordo, parto da un sensore riflettivo.
- Per un telecomando, uso un ricevitore IR demodulato, non un modulo generico.
- Per una soglia precisa, preferisco leggere l’analogico e decidere io il limite.
- Per risultati stabili, monto il sensore nella posizione finale prima di fissare la soglia.
- Per distanze più ampie, cambio tecnologia invece di forzare un sensore IR oltre il suo campo utile.
Io, prima di considerare chiuso il lavoro, guardo sempre il valore grezzo in Serial Monitor per qualche minuto: se il segnale non è stabile lì, il problema non è il codice ma la fisica del montaggio. È una verifica semplice, ma risparmia molto tempo e rende il progetto più affidabile già dalla prima prova.