Go Down

Topic: Suiveur ligne: capteurs analogiques? (Read 537 times) previous topic - next topic

kammo

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?
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

3Sigma

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):
https://www.pololu.com/product/2456

kammo

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...
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

3Sigma

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.

kammo

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
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

PhilippeM

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 https://www.gotronic.fr/art-capteur-de-niveaux-de-gris-gravity-dfr0022-19286.htm.

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 !






kammo

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 :)

Merci à tous
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

kammo

Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

Go Up