Go Down

Topic: Arduino Mega 2560 et Capteurs GP2D120 (Read 1 time) previous topic - next topic

piflechien54

Bonjour @toutes et @tous  :)

Voilà je vous écris concernant la détection d'obstacle, je m'explique :

je travail sur une carte Arduino Mega 2650
je possède des capteurs SHARP GP2D120. http://www.lextronic.fr/P1749-telemetre-infrarouge-sharp-gp2d120.html

mon but est de détecter des obstacles aux environs de 18cm voir 19cm (c'est pour mon robot  XD)

Donc après avoir lu les post concernant les capteurs, je me suis mis à programmer un test :
Dès qu'il détecte un objet entre 18 et 19cm alors il allume la del borne 52
--------------------------------------------------------------------------------------------
donc je branche mon capteur :  :)

- le 5v sur le 5v de la carte Arduino
- le noir sur le gnd de la carte
- le signal sur la borne A2

- Le + de la del sur la borne 52  (la del fonctionne  XD ;) )
- Le - de la del sur le gnd

le tout est alimenté via mon câble usb

--------------------------------------------------------------------------------------------
je calcul le nombre "arduino" correspondant à ma distance :  :)

Vréf = 5v
Coeff = 1024
donc Pas = Vréf/Coeff = 0,0048828125

Pour Distance = 18cm, Vcapteur = 0,7v (d'après le diagramme capteur)

Donc NAr = Vcapteur/Pas = 0,7/(5/1024) = 143,36      (Nar = Nombre Arduino)

--------------------------------------------------------------------------------------------
Voici mon programme :  :)

Code: [Select]

int val=0;

void setup()
{
  pinMode(52,OUTPUT);
  pinMode(A2,INPUT);
}

void loop()
{
  val=analogRead(A2);
  if(val>=143)  // val=143,36 pour 18cm
  {
    digitalWrite(52,HIGH);
  }
  else
  {
    digitalWrite(52,LOW);
  }
}


--------------------------------------------------------------------------------------------
Cependant je n'ai aucune réponse, pourriez vous m'éclairer ?  :~  :smiley-red: :smiley-red:
D'avance je vous remercie.  :D ;)

Si vous avez des questions, n'hésitez pas  :)
Proverbe Tibétain : Un mensonge est un saut du haut du toit

AlienArea51

salut
je vais peut-etre dire une anerie , mais:
Code: [Select]
val=analogRead(A2);

A2 ne correspond pas à une entrée digital ???
Quote
Pin mapping
The analog pins can be used identically to the digital pins, using the aliases A0 (for analog input 0), A1, etc. For example, the code would look like this to set analog pin 0 to an output, and to set it HIGH:


en mettant val=analogRead(2); serai peut-etre mieux.
@+

The truth is elsewhere !!

Grag38

#2
May 08, 2011, 04:59 pm Last Edit: May 08, 2011, 05:07 pm by Grag38 Reason: 1
val = analogRead(A2) fonctionne, c'est la troisième pin anaalogue (A0, A1, A2, ...)

La syntaxe est bonne.

Par contre : pinMode(A2,INPUT); ne sert à rien il faut retirer cette ligne.

Les pin analogue ne fonctionne qu'en entrée. C'est peut-être cela qui fiche le bordel.

Sinon pour la led, c'est mieux de lui coller une resistance genre 220 ohm afin de limiter le courant dans cette dernière.

Sinon essaye d'inverser l'allumage de la led (change les HIGH en LOW et vice est versa), pour voir si tu as un résultat différent.

Sinon tu peux aussi utiliser la pin 13 qui comporte une led sur l'arduino (elle est minuscule mais efficace).

Essaye aussi de mettre un petit délai pour laisser de l'air entre 2 mesures (genre 200ms), après tu pourra l'enlever.


AlienArea51

au temps pour moi

ayant vu ça
Quote
The analog pins can be used identically to the digital pins, using the aliases A0


j'ai cru  :smiley-roll:

@+
The truth is elsewhere !!

Grag38

#4
May 08, 2011, 05:08 pm Last Edit: May 08, 2011, 05:14 pm by Grag38 Reason: 1

au temps pour moi

ayant vu ça
Quote
The analog pins can be used identically to the digital pins, using the aliases A0


j'ai cru  :smiley-roll:

@+


Pas de soucis, c'est bon pour utiliser A0 !!!

Sinon dans le datasheet du capteur, la sortie oscille entre 0v et 2,5v

Ce qui va plutôt te donner une valeur entre 0 et 512 sur l'analog.

Ce que tu peux faire, c'est aussi afficher la valeur de ton entrée analogue pour voir les résultats en fonction de la distance sur le serial moniteur arduino.

pour cela dans le setup tu mets :

Serial.begin(9600);

et dans le loop après la mesure :

Serial.println(val, DEC);





piflechien54

Un grand MERCI à vous Deux pour vos réponse  XD XD XD XD

ça fonctionne à présent !! \^^/ \^^/ \^^/

Seul petit bémol :
je m'aperçois que ma del clignote brièvement quand mon installation est en mouvement (pourtant il n'y a rien qui passe devant le capteur.. :~)
et quand l'obstacle arrive à bonne distance (19cm) la del clignote un peu avant de se stabiliser...

Est-ce dû à quelques parasites ?

Devrais-je programmer de tels façon, qu'il faudrait que la mesure se stabilise (reste à 1) pendant un temps (peut être 200ms) ?
Pourriez vous me prêter vos idées ?  :smiley-red: :)
Proverbe Tibétain : Un mensonge est un saut du haut du toit

piflechien54

Bonjour @toutes et @tous

Après de nombreuses recherches sur internet,
j'ai trouvé comme conseil de mettre au plus près du capteur un condo de 100µf entre le 5v et le gnd.

ce que j'ai fais, cependant même si cela filtre les perturbations de l'alimentation,
je me retrouve toujours avec mon capteur qui est saturé par la lumière du soleil et donc qui détecte des obstacles là où il n'y en a pas  :( :(

N'y aurait-il pas un moyen de soustraire le signal "perturbateur du soleil" au signal "lu par le capteur" afin de ne retrouver que les pics dus aux obstacles ?

Please HELP Me  :smiley-red: :smiley-red: :~
Proverbe Tibétain : Un mensonge est un saut du haut du toit

Grag38

quand il y a beaucoup de soleil, la valeur retournée par la borne abalog est de combien environ.

Sinon tout ce qui est infrarouge marche pas genial quand il y a beaucoup de soleil!...

Tu peux essayer de mettre du papier calc devant pour réduire la sensibilité... Mais je ne sais pas si ca t'aidera beaucoup

taddot

peut-être en mettant un morceau de plastique rouge très foncé devant (comme sur les récepteurs IR des TV). Par contre, il y a des plastiques qui sont opaques aux IR.
pas taper... sauf application de l'article 35 ...

piflechien54

Ok ....  =(
donc si je comprend bien , j'ai acheté 6 capteurs infrarouges pour rien...  :~ =( =( :smiley-sad-blue:

Pourriez vous m'indiquer les meilleurs capteurs d'obstacles à distance (pas de switch  :P ) pour un robot "marcheur" qui circulerait le jour comme la nuit, en intérieur (maison, appart, entrepot ) ?

Merci d'avance.  :)

p.s : sur ce forum, le personne en question ayant pratiquement le même pb que moi a ajouté une resistance entre le signal et GND.
là-> http://www.abcelectronique.com/forum/showthread.php?t=16682&page=1&pp=10

Qu'en pensez-vous ?  :~

Merci.  :)
Proverbe Tibétain : Un mensonge est un saut du haut du toit

AlienArea51

Salut
désolé ,il est vrai ,que les IR's ,posent des soucis avec le soleil ou zone sur-eclairée , problèmes rencontré sur mon lieu de travail .(j'en dit pas plus ) .
mais l'investissement n'ai pas perdu ,il ne faut pas dramatiser .
tout capteurs ont leurs avantages et inconvénients , les sonars sont peut-etre plus adaptés .
Pas le meme prix je te  l'accorde,mais si tu regarde (certaines émissions TV sur les robots ,ils utilisent des sonars ) sauf pour des app's bien spécifiques .


@+
William
The truth is elsewhere !!

piflechien54

Salut @toutes et @tous :)

pour info, (en cherchant sur internet) j'ai trouvé que l'on peut aider un capteur infrarouge avec une pellicule photo exposée (noire)

après quelques tests, j'ai trouvé quand collant 2 bouts de diapo l'une sur l'autre et sur le récepteur infrarouge, le capteur n'est plus gêné.



pour info le récepteur est à droite au niveau du "rectangle"  :)

Voilà @plus ;)
Proverbe Tibétain : Un mensonge est un saut du haut du toit

taddot

Donc c'est très proche des solutions qu'on a évoqué un peu plus haut : un morceau de calque ou un morceau de plastique transparent très foncé :)
pas taper... sauf application de l'article 35 ...

Go Up