Suiveur ligne: capteurs analogiques?

Chers amis, bonjour,

Je m'intéresse de près aux suiveurs de ligne.

J'ai cru comprendre qu'il y a deux approches:
-des capteurs digitaux, comme mon ky-033, il lit soit le noir soit le blanc
-des capteurs analogiques capables de se placer à la limite entre le noir et le blanc, donc capables de lire... du gris Oo

Comme un neuneu, j'ai essayé ce matin de lire du gris via le port analogique, mais mon ky-033 renvoie deux valeurs, grosso-modo, donc je suis tristoune.

Quels capteurs utilisent donc ces robots?

Bonjour,

Si ton capteur est digital, tu ne pourras lire que deux valeurs, même si tu le branches sur une broche compatible avec une lecteur analogique.
Si tu veux avoir une mesure analogique, ton capteur doit être capable d'envoyer une valeur de ce type.

Au hasard (enfin, pas complètement, j'ai l'habitude d'utiliser ce produit):

Merci!

En effet je voyais souvent polulu par ici et par là, maintenant, je sais pourquoi.
Merci beaucoup

J'ai deja vu des robots avec deux gros capteurs bleus, ca a l'air industriel, c'est gros comme une boite d'allumettes je pense... Je ne les trouve pas sur le net...

kammo:
J'ai deja vu des robots avec deux gros capteurs bleus, ca a l'air industriel, c'est gros comme une boite d'allumettes je pense... Je ne les trouve pas sur le net...

Tu es sûr que ce ne sont pas des capteurs de distance à ultrason ? Les capteurs de suivi de ligne sont souvent sous les robots et par conséquent ne sont souvent pas faciles à voir.

wep c'etait sur des suiveurs, faut que je retrouve l'une de ces dizaines de videos ^^
J'ai commandé des ky033, mais celui que j'ai à la maison c'est vraiment une saleté, j'espère qu'ils ne sont pas tous comme ca

Bonjour tous,

Le ky-033 semble être un capteur à infra-rouges avec réglage de seuil. Si il sort une valeur en tout ou rien, à la base il s’agit d’un capteur analogique suivi d’un comparateur ( un truc qui bascule de zéro à un suivant la comparaison entre la valeur mesurée et le seuil réglé ).
Bref, c’est de l’analogique suivi d’un brin d’électronique pour avoir une sortie digitale.

Il y a qq années, on ne trouvais que des capteurs à base de LDR et une led généralement blanche. Par exemple Capteur de niveaux de gris Gravity DFR0022 DFRobot - Capteurs de lumière et bruit | GO TRONIC.

Ces capteurs analogiques à base de LDR ont le très gros défaut d’avoir une tolérance supérieure à 200 % ( rapport 1 pour 4 ! ). Donc si on fait une comparaison entre deux capteurs, on a de bonnes chances de se tromper si on ne règle pas son montage. Perso, pour les Boum Bot http://planete-sciences.org/midi-pyrenees/web/boumbot/ j’ai mis en place une procédure d’étalonnage assez simple. Pour chaque robot, je mémorise lors de l’étalonnage, en EEPROM, les valeurs des deux capteurs pour du blanc et pour du noir. Ensuite, en fonctionnement, je fais une lecture analogique.

Dans la bibliothèque BoumBot, il y a la définition des valeurs en EEPROM boumbot.MemBoumBot… gauche et droit, blanc et noir;

// Structure Eeprom, pour memoriser les reponses des capteurs et les homogeneiser
struct Eeprom
{
int GaucheBlanc ; // Valeur lue par le capteur de ligne Gauche sur le Blanc (sur 1024)
int GaucheNoir ; // Valeur lue par le capteur de ligne Gauche sur le Noir (sur 1024)
int DroitBlanc ; // Valeur lue par le capteur de ligne Droit sur le Blanc (sur 1024)
int DroitNoir ; // Valeur lue par le capteur de ligne Droit sur le Noir (sur 1024)
} ;
Eeprom MemBoumBot ; // Creation de l’objet memoire Eeprom
const byte debutEeprom = 0 ; // Debut d’adresse de l’objet Eeprom

L’étalonnage ;

#include <BoumBot.h>
#include <EEPROM.h>
void setup ( )
{
Serial.begin ( 9600 ) ;
Serial.println ( F ( “Placez le Boum Bot sur du blanc et validez” ) ) ;
do
{
boumbot.MemBoumBot.GaucheBlanc = analogRead ( boumbot.pinCapteurG ) ;
boumbot.MemBoumBot.DroitBlanc = analogRead ( boumbot.pinCapteurD ) ;
}
while ( ! boumbot.valide( ) ) ;
Serial.println ( F ( “Placez le Boum Bot sur du noir et validez” ) ) ;
do
{
boumbot.MemBoumBot.GaucheNoir = analogRead ( boumbot.pinCapteurG ) ;
boumbot.MemBoumBot.DroitNoir = analogRead ( boumbot.pinCapteurD ) ;
}
while ( ! boumbot.valide( ) ) ;

EEPROM.put ( boumbot.debutEeprom , boumbot.MemBoumBot);
while ( 1 )
{
;
}
}
void loop ( )
{
}

Ensuite à l’utilisation, dans la bibliothèque il y a les fonctions pour la droite et la gauche ;

int BoumBot::capteurDroit() {
return( _limiteCapteur(map(analogRead(pinCapteurD), MemBoumBot.DroitBlanc , MemBoumBot.DroitNoir, 0, 100)));
}

On récupère ainsi deux valeurs entre 0 et 100 pour les deux capteurs, en fonction du niveau de gris visé, quelque soit la réponse “réelle” des capteurs.

Je vous recommande cette méthode, elle a sauvé l’utilisation des robots malgré un choix initial des capteurs basé sur le premier proto qui fonctionnais bien, mais par strict hasard !

pfiou sacré taf!
Je me garde ça sous le coude
A moins que je ne l’imprime et ne l’affiche au dessus de mon lit :slight_smile:

Merci à tous

Plop

Concernant les boitiers bleus, il y en a plein, c'est bien industriel, dur de trouver un tarif, bien dissuasif d'ailleurs ^^
https://fr.rs-online.com/web/c/automatisme-et-controle-de-process/capteurs-et-transducteurs/capteurs-de-contrast-couleur-et-dintensite-lumineuse/