Composant · Capteur
IR Reflectance Sensor Array
La barrette de capteurs IR par réflectance montre la ligne à un robot suiveur. Détection infrarouge par réflexion, étalonnage, et où elle échoue.
Présentation
Une barrette de capteurs IR par réflectance est une bande de petits capteurs infrarouges montés en rangée, pointés vers le sol. Chaque capteur associe une DEL infrarouge qui éclaire vers le bas à un phototransistor qui mesure la part de cette lumière réfléchie. Pointez-la vers une ligne sombre sur un sol clair et la ligne réfléchit moins — le capteur au-dessus de la ligne lit donc différemment de ceux au-dessus du sol. Lisez toute la rangée et vous savez non seulement si vous êtes sur la ligne, mais où se trouve la ligne sous le robot.
C’est l’œil de presque tout robot suiveur de ligne, et la raison pour laquelle le suiveur de ligne est un si bon premier projet : la détection est économique, intuitive et immédiatement visible.
Fonctionnement
Chaque canal est une paire émetteur-détecteur. La DEL IR émet une lumière invisible à ~940 nm ; le phototransistor conduit davantage à mesure que plus de lumière revient. Une surface blanche ou claire réfléchit fortement (retour élevé) ; une ligne noire absorbe l’infrarouge (retour faible). Deux styles de sortie existent :
- Analogique — chaque canal rapporte une valeur continue proportionnelle à la réflectance. C’est plus riche : vous pouvez calculer où entre deux capteurs tombe la ligne et obtenir un signal d’erreur doux pour un contrôleur PID.
- Numérique — un comparateur embarqué rapporte un simple ligne/pas-de-ligne par canal. Plus facile à lire, mais plus grossier.
Pour convertir la barrette en signal de braquage, on calcule une moyenne pondérée des capteurs qui voient la ligne. Si la ligne dérive sous les capteurs de gauche, la moyenne se décale à gauche, et ce décalage devient l’erreur que votre boucle de commande corrige.
Quand l’utiliser
Utilisez une barrette par réflectance dès qu’un robot doit suivre un parcours très contrasté — une ligne noire sur blanc, ou du ruban blanc sur un sol sombre. Plus de canaux donnent une résolution de position plus fine et permettent au robot de mieux gérer virages et discontinuités ; cinq suffisent pour apprendre, huit sont confortables pour des pistes plus rapides ou tortueuses.
C’est le mauvais outil pour détecter des objets, des distances ou quoi que ce soit hors du plan du sol — c’est le travail d’un capteur ultrason ou temps de vol.
Étalonnage et pièges
- Étalonnez toujours. La lumière ambiante, la surface et la hauteur de roulement déplacent toutes les lectures. Avant un parcours, balayez la barrette au-dessus de la ligne et du sol, enregistrez le min/max par canal, puis mettez les lectures à l’échelle entre eux. Omettre cela est la première raison pour laquelle un suiveur de ligne marche sur une table et échoue sur une autre.
- La hauteur compte. Les capteurs par réflectance ont une plage idéale étroite (quelques millimètres). Montez la barrette trop haut et le contraste s’effondre.
- L’infrarouge ambiant est du bruit. Le soleil et certains éclairages inondent les détecteurs d’infrarouge. Capotez les capteurs ou roulez en intérieur pour un comportement régulier, et filtrez le signal — voir dompter le bruit des capteurs.
- La finition de surface ment. Un noir brillant peut réfléchir comme du blanc sous le mauvais angle ; du ruban mat sur sol mat est la combinaison fiable.
La câbler à un Arduino
Une barrette analogique a besoin d’une broche ADC par canal, c’est pourquoi une barrette à 8 canaux et un Uno (six broches analogiques) font un assemblage maladroit — les huit d’un Nano (A0–A7) tombent juste.
| Broche barrette | Arduino | Note |
|---|---|---|
VCC |
5 V | Les émetteurs sont la consommation, pas les détecteurs |
GND |
GND | |
OUT1–OUT8 |
A0–A7 | Canaux analogiques, un par capteur |
LEDON / CTRL |
Toute broche numérique | Optionnel : allume et éteint les émetteurs |
Cette broche LEDON vaut la peine d’être câblée même si la plupart des projets l’ignorent. Les émetteurs
d’une barrette à 8 canaux peuvent tirer 100–200 mA ensemble, en continu, ce qui sur une petite batterie est une
part significative du budget — et elle permet la soustraction de lumière ambiante, ci-dessous.
Étalonnage : le code qui décide si ça marche
Ce n’est pas optionnel ni un raffinement. Une barrette non étalonnée est la cause la plus fréquente d’un suiveur de ligne qui marche sur la table de cuisine et échoue en compétition.
const int N = 8;
const int PIN[N] = {A0, A1, A2, A3, A4, A5, A6, A7};
int lo[N], hi[N];
void calibrate() {
for (int i = 0; i < N; i++) { lo[i] = 1023; hi[i] = 0; }
// Sweep the array across the line and the floor for ~3 seconds.
unsigned long start = millis();
while (millis() - start < 3000) {
for (int i = 0; i < N; i++) {
int v = analogRead(PIN[i]);
if (v < lo[i]) lo[i] = v;
if (v > hi[i]) hi[i] = v;
}
}
}
// 0 = floor, 1000 = line, per channel, normalised against this run's own extremes.
int normalised(int i) {
int span = hi[i] - lo[i];
if (span < 50) return 0; // this channel never saw contrast
return constrain(map(analogRead(PIN[i]), lo[i], hi[i], 0, 1000), 0, 1000);
}
Notez le garde span < 50. Un canal qui n’a vu aucun contraste pendant l’étalonnage — parce que le
balayage l’a manqué, ou que son émetteur est mort — produirait sinon d’énormes valeurs normalisées
à partir d’un bruit minuscule, et le robot braquerait vers un capteur qui ne lui dit rien.
De huit lectures à un nombre de braquage
La moyenne pondérée est toute l’astuce, et elle produit une position continue plutôt qu’un discret « le capteur 3 la voit » :
// Returns position in the same units as the weights: 0..7000 for an 8-channel array,
// or -1 if the line is not visible at all.
long linePosition() {
long weighted = 0, total = 0;
for (int i = 0; i < N; i++) {
int v = normalised(i);
if (v > 100) { // ignore channels that are clearly on floor
weighted += (long)v * i * 1000;
total += v;
}
}
if (total == 0) return -1; // line lost
return weighted / total;
}
// Error for the control loop: 0 when centred.
long error() {
long pos = linePosition();
if (pos < 0) return LAST_ERROR; // hold the last known direction, do not zero it
return pos - 3500; // centre of an 8-channel array
}
Deux décisions de conception comptent plus que l’arithmétique :
Ignorer les canaux sous un seuil empêche le bruit du sol de tirer la moyenne. Sans cela, huit canaux lisant chacun une petite valeur non nulle tirent l’estimation vers le milieu quel que soit l’endroit de la ligne.
Renvoyer la dernière erreur quand la ligne est perdue — plutôt que zéro — est ce qui permet à un robot de se reprendre après un virage serré. Zéro signifie « parfaitement centré », donc un robot qui met zéro à la perte de ligne fonce tout droit à pleine vitesse, loin de la ligne qu’il vient de perdre. Garder la dernière erreur signifie qu’il continue à tourner comme il tournait déjà, là où est partie la ligne.
Hauteur de montage, et pourquoi elle décide de tout
Les capteurs par réflectance ont une plage idéale étroite. Le signal chute vite dans les deux directions : trop haut et le retour est faible, trop bas et le cône de l’émetteur ne s’est pas assez élargi pour éclairer ce que voit le détecteur.
| Hauteur de roulement | Comportement typique |
|---|---|
| 1–3 mm | Meilleur contraste, mais frotte sur toute irrégularité de surface |
| 3–8 mm | La bande utilisable — la plupart des barrettes spécifient environ 3 mm |
| 8–15 mm | Contraste qui s’effondre ; la plage d’étalonnage rétrécit |
| > 15 mm | Effectivement aveugle sur la plupart des surfaces |
Deux conséquences pratiques. Montez-la rigidement — une barrette sur un support flexible change de hauteur quand le robot accélère, ce qui change les lectures, que la boucle de commande lit comme la ligne qui bouge. Et montez-la de niveau, car une barrette inclinée donne à chaque canal une hauteur effective différente et donc un étalonnage différent, ce qui se traduit par un robot qui suit bien dans un sens et mal dans l’autre.
La monter devant les roues compte aussi : plus elle est en avant, plus tôt le robot voit un virage, et plus le contrôleur a d’anticipation. Trop en avant et la géométrie amplifie l’erreur en oscillation.
Vaincre la lumière ambiante
Le soleil contient beaucoup d’infrarouge à 940 nm, et il arrive au détecteur en ressemblant exactement à une réflexion. Un robot qui marche en intérieur et échoue près d’une fenêtre voit presque toujours cela.
Si les émetteurs de votre barrette sont commutables, la correction est complète et coûte deux lectures :
int ambientSubtracted(int i) {
digitalWrite(LEDON, LOW); delayMicroseconds(200);
int dark = analogRead(PIN[i]); // ambient only
digitalWrite(LEDON, HIGH); delayMicroseconds(200);
int lit = analogRead(PIN[i]); // ambient + our own emitter
return lit - dark; // just our emitter
}
Tout ce qui est constant dans l’environnement s’annule exactement. Cela double le temps d’échantillonnage, ce qui sur un suiveur de ligne rapide est un vrai coût — mais cela transforme un capteur peu fiable en capteur fiable, et c’est la technique qu’utilisent les barrettes du commerce.
À défaut : capotez la barrette avec une jupe pour qu’elle ne voie que le sol juste en dessous.
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| Marche sur une surface, pas une autre | Pas d’étalonnage, ou étalonnage périmé | Réétalonnez au début de chaque parcours, sur la surface réelle |
| Le robot braque vers un côté | La plage d’étalonnage d’un canal est fausse | Vérifiez le hi/lo de chaque canal ; un émetteur mort se voit à une plage minuscule |
| Perd la ligne dans les virages serrés | Barrette trop près des roues, ou mise à zéro à la perte | Avancez-la ; gardez la dernière erreur plutôt que mettre à zéro |
| Oscille sur les lignes droites | Barrette trop en avant, ou gain trop élevé | Réduisez l’anticipation ; réglez de nouveau le contrôleur |
| Échoue près d’une fenêtre | Infrarouge ambiant | Soustraction avec émetteurs éteints, ou capotez la barrette |
| Erratique sur ruban noir brillant | Réflexion spéculaire sur le ruban | Ruban mat sur sol mat est la combinaison fiable |
| Les lectures dérivent pendant le parcours | Batterie qui s’affaisse, donc émetteurs faiblissants | Les émetteurs sont gourmands ; vérifiez le rail en charge |
| Tous les canaux lisent pareil | Barrette trop haute | Ramenez-la à 3–8 mm et réétalonnez |
Choisir une barrette
| Canaux | Résolution de position | Convient pour |
|---|---|---|
| 3 | Grossière — essentiellement gauche/centre/droite | Apprendre le concept seulement |
| 5 | Suffisante | Un premier suiveur de ligne sur piste douce |
| 8 | Confortable | Pistes rapides, virages serrés, détection de jonctions du robot labyrinthe de lignes |
| 12–16 | Fine | Robots de compétition à vitesse élevée |
L’analogique bat le numérique pour tout ce qui a une boucle de commande. Le comparateur d’une barrette numérique donne du ligne/pas-de-ligne par canal, ce qui quantifie la position en une poignée de valeurs discrètes et rend impossible un braquage proportionnel doux. L’analogique donne un signal d’erreur continu, ce dont un contrôleur PID a besoin.
L’espacement des canaux compte autant que leur nombre : la barrette doit être plus large que la ligne d’ assez pour qu’au moins un capteur soit toujours sur le sol à chaque bord, mais pas si large que la ligne puisse se glisser entre deux capteurs sans être vue. Pour du ruban électrique standard de 19 mm, un espacement de 8 mm convient bien.
Pour un robot solveur de labyrinthe de lignes, il y a une exigence supplémentaire : la barrette doit être assez large pour voir une jonction. Un robot détecte un virage à gauche en remarquant que les capteurs extrêmes de gauche sont devenus sombres alors que le centre est encore sur la ligne — ce qui est impossible si la barrette est à peine plus large que le ruban.
Explorer le graphe
Utilisé dans ces réalisations
Projets, parcours d'apprentissage et simulateurs qui intègrent le composant IR Reflectance Sensor Array.
- ProjetConstruire un mini robot sumo : adhérence et coin
- ProjetConstruire un robot de couverture qui balaie une pièce
- ProjetConstruire un robot suiveur de ligne avec un microcontrôleur 8051
- ProjetConstruire un solveur de labyrinthe de lignes à mémoire LSRB
- ProjetConstruire un suiveur de ligne : du simulateur à la piste
Questions
FAQ : IR Reflectance Sensor Array
Qu'est-ce qu'un capteur de suiveur de ligne ?
Un capteur de suiveur de ligne est un capteur infrarouge par réflectance que le robot pointe vers le sol pour détecter une ligne tracée. Chaque canal éclaire vers le bas en infrarouge et mesure la part réfléchie, si bien qu'une ligne sombre (qui réfléchit moins) se lit différemment du sol environnant.
Comment fonctionne un capteur de suiveur de ligne ?
Chaque canal associe une DEL IR à un phototransistor. Les surfaces claires réfléchissent fortement et les lignes sombres absorbent l'infrarouge, donc le capteur au-dessus de la ligne lit bas tandis que les autres lisent haut. Lire toute la rangée indique au robot où se trouve la ligne sous lui.
Comment étalonner un capteur IR pour un robot suiveur de ligne ?
Avant un parcours, balayez la barrette au-dessus de la ligne et du sol nu et enregistrez la lecture minimale et maximale par canal, puis mettez à l'échelle les lectures en direct entre ces bornes. Omettre l'étalonnage est la première raison pour laquelle un suiveur de ligne marche sur une surface et échoue sur une autre.
Qu'est-ce que le PID dans un suiveur de ligne ?
Le PID est la méthode de commande qui convertit l'erreur de position du capteur en braquage doux. Le terme proportionnel réagit à l'écart par rapport à la ligne, le terme dérivé amortit les dépassements, et le terme intégral élimine la dérive constante — le robot suit ainsi la ligne sans osciller. Vous pouvez le régler en direct dans notre simulateur PID.
Quels sont les principaux composants d'un robot suiveur de ligne ?
Un suiveur de ligne de base a besoin de quatre choses : une barrette de capteurs IR par réflectance pour voir la ligne, un microcontrôleur comme un Arduino Uno pour exécuter la boucle de commande, un contrôleur de moteurs comme le L298N, et deux moteurs à courant continu avec roues. Une alimentation et un châssis complètent le montage.
À quoi sert une barrette de capteurs de suiveur de ligne ?
Au-delà des robots suiveurs de ligne, les barrettes par réflectance servent à la détection de bords (s'arrêter au bord d'une table), à la détection de position façon codeur, et à la simple détection de surface ou de contraste en automatisme. Partout où un robot doit réagir à une marque très contrastée sur une surface, une barrette par réflectance est un choix économique et fiable.
Pour aller plus loin