Pages: [1]   Go Down
Author Topic: Arduino Mega 2560 et Capteurs GP2D120  (Read 1491 times)
0 Members and 1 Guest are viewing this topic.
Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @toutes et @tous  smiley

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  smiley-lol)

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

- 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  smiley-lol smiley-wink )
- Le - de la del sur le gnd

le tout est alimenté via mon câble usb

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

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

Code:
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-confuse  smiley-red smiley-red
D'avance je vous remercie.  smiley-grin smiley-wink

Si vous avez des questions, n'hésitez pas  smiley
Logged

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

Offline Offline
God Member
*****
Karma: 3
Posts: 676
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut
je vais peut-etre dire une anerie , mais:
Code:
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.
@+

Logged

The truth is elsewhere !!

France
Offline Offline
Sr. Member
****
Karma: 2
Posts: 380
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

« Last Edit: May 08, 2011, 10:07:15 am by Grag38 » Logged

Offline Offline
God Member
*****
Karma: 3
Posts: 676
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

@+
Logged

The truth is elsewhere !!

France
Offline Offline
Sr. Member
****
Karma: 2
Posts: 380
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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




« Last Edit: May 08, 2011, 10:14:25 am by Grag38 » Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un grand MERCI à vous Deux pour vos réponse  smiley-lol smiley-lol smiley-lol smiley-lol

ç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.. smiley-confuse)
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 smiley
Logged

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

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-sad smiley-sad

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 smiley-confuse
Logged

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

France
Offline Offline
Sr. Member
****
Karma: 2
Posts: 380
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

pas taper... sauf application de l'article 35 ...

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ....  smiley-cry
donc si je comprend bien , j'ai acheté 6 capteurs infrarouges pour rien...  smiley-confuse smiley-cry smiley-cry smiley-sad-blue

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

Merci d'avance.  smiley

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 ?  smiley-confuse

Merci.  smiley
Logged

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

Offline Offline
God Member
*****
Karma: 3
Posts: 676
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

The truth is elsewhere !!

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut @toutes et @tous smiley

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"  smiley

Voilà @plus smiley-wink
Logged

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

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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é smiley
Logged

pas taper... sauf application de l'article 35 ...

Pages: [1]   Go Up
Jump to: