Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Capteurs de lumière > Parasites sur des capteurs Sharp

Parasites sur des capteurs Sharp

samedi 1er mai 2010, par Julien H.

Ce petit article a pour objectif de présenter un problème rencontré avec deux capteurs infra-rouge Sharp et si possible de trouver une solution.

Voici le problème : des parasites quand les deux capteurs Sharps sont utilisés ensemble.

Ces images sont obtenues simplement en envoyant aussi vite que possible les valeurs reçues sur les convertisseurs analogiques.

A gauche, les deux capteurs ensemble. A droite, un capteur seul (même chose avec le second).

D’autres vues du problème : on note comme une sinusoïde dans l’enveloppe des parasites.
A droite, le problème disparait quand il y a des obstacles devant les capteurs.

Pour une meilleure vue, on refait les tests avec l’échelle de temps : en abscisse le nombre de millisecondes et en ordonnées la valeur reçue du convertisseur analogique/numérique (10 bits donc 1024).

Voici le code source : il y a déjà une moyenne sur 10 valeurs qui est faite.


/**
* Test d’utilisation sur Pobot Easy de capteurs Sharp
*
* Matériel :
* - un robot Pobot Easy
* - deux capteurs 2YOA21
*
* (c) Julien Holtzer pour Pobot - mai 2010
*/

// pattes analogiques sur lesquelles les Sharp sont connectés
int pinLeft = 1 ;
int pinRight = 2 ;

int valuesL[10] ;
int valuesR[10] ;

int index = 0 ;

// la moyenne pour gauche et droite

int valueLeft = 0 ;
int valueRight = 0 ;

// la moyenne
int moyenne = 0 ;

void setup()

// liaison série
Serial.begin(38400) ;

void loop()

// remplir un tableau de valeurs
valuesL[index] = analogRead(pinLeft) ;
valuesR[index] = analogRead(pinRight) ;
index++ ;

if (index >= 10)
// le tableau est plein, on analyse son contenu
moyenneLeft() ;
moyenneRight() ;
// calcul de la moyenne
moyenne = (valueLeft + valueRight) / 2 ;

Serial.print(valueLeft) ;
Serial.print(" ") ;
Serial.print(valueRight) ;
Serial.print(" ") ;
Serial.print(0) ;
Serial.println(" ") ;

// repartir
index = 0 ;

int moyenneLeft(void)

valueLeft = 0 ;
for (int i = 0 ; i < 10 ; i++)

valueLeft += valuesL[i] ;

valueLeft /= 10 ;

int moyenneRight(void)

valueRight = 0 ;
for (int i = 0 ; i < 10 ; i++)

valueRight += valuesR[i] ;

valueRight /= 10 ;

Une idée ?

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.