Pages: [1]   Go Down
Author Topic: HELP : Problème avec capteur SHARP GP2D12  (Read 1744 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut à tous,

Voilà, je rencontre un petit problème avec mon capteur SHARP GP2D12. En fait, j'utilise un petit bout de code pour me retourner les infos du capteur :

Code:
/* This is a simple code that reads an input from an analog pin on the Arduino and relays it back to the computer */

int irReader = 1;    // the analog input pin for the ir reader
int irVal = 0;       // stores value from Ir reader

void setup() {
Serial.begin(9600);  // begins serial communication with the computer
}

void loop() {
  irVal = analogRead(irReader);    // read the value from the ir sensor
  Serial.println(irVal);       // sends ir val to computer

}

Ensuite, avec les valeurs sortantes, je me réfère à ce graphique, et je m'aperçois que si je veux obtenir les bons résultats je dois multiplier par 2 ma valeur irVal :



Comment expliquez-vous ça?

Vous pouvez aller regarder cette page très intéressante d'ailleurs, c'est là où j'ai trouvé les infos : http://wiki.engr.uiuc.edu/display/ae498mpa/The+Sharp+GP2D12+Infrared+Range+Finder

D'autre part, au lieu de me sortir un voltage, Arduino me refile des valeurs, mais à quoi correspondent-elles (vous pouvez voir d'ailleurs sur le graphique ci-dessus que ça va de 0 à 600)??? Si on lit la datasheet officielle, on voit bien un graphique qui indique une distance par rapport à un voltage... C'est ici si vous voulez jeter un coup d'oeil : http://users.csc.calpoly.edu/~cmclark/CPE480/ProjectWebSites/GTAI/GP2D12-DATA-SHEET.pdf
« Last Edit: December 06, 2008, 02:32:25 pm by opusincertum » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 15
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dans "making things talk" tom igoe propose ça :
Code:
sensorValue = analogRead(sensorPin); // read the pot value
  // the sensor actually gives results that aren't linear.
  // this formula converts the results to a linear range.
  int range = (6787 / (sensorValue - 3)) - 4;
  
  Serial.println(range, DEC);    // print the sensor value    


de mon côté je cherche comment analyser de 0 à 10 cm en plus des 10 à 80 cm?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Effectivement, j'ai utilisé ce code là et ça marche pas mal! Pour ce qui est des distances de 0 à 10cm, c'est une autre paire de manches. Tu peux toujours t'y atteler en calibrant le capteur tous les 1cm de 0 à 10, mais je doute que ce soit vraiment efficace...  :-/
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 15
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oui le problème étant que je voudrais éviter ce problème des 10 cm
et avoir un capteur qui va de 0 à 80 et non pas de 10 à 80 et entre 0 à 10 qui renvoie des valeurs équivalente à ce que l'on a entre 10 et 80.
En gros sur un robot ça veut dire qu'il faut toujours mettre ce capteur en retrait de 10 cm dans la coque du robot sinon on ne peut pas savoir si on est à 50 cm ou 5 cm par exemple?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ben disons que si tu veux que ton capteur détecte un obstacle à la lisière de ton robot alors oui il faudrait plutôt penser à les intégrer à 10cm en profondeur, et encore je ne sais pas si ce serait très efficace, il ne faudrait pas que ça "morde" sur les découpes de la coque du robot (si coque il y a) qui sont cencé laisser passer les IR.

Tu peux imaginer un positionnement des capteurs comme ça (dessin n°1) à la place d'un positionnement standard (dessin n°2) par ex.



Sinon, si tu veux un capteur IR un peu plus précis, tu peux toujours t'orienter vers le SHARP GP2D120 qui détecte de 4 à 30cm (datasheet : http://www.robotshop.ca/PDF/rbsha03_manual.pdf).

Personnellement, je me sert des GP2D12 pour détecter des obstacles de proximité, tout en faisant en sorte que mon robot puisse avoir une marge de manoeuvre convenable pour emprunter un autre chemin. Si tu fais en sorte que ton robot s'arrête à la lisière de l'obstacle, il n'aura peut-être pas assez de place pour pivoter, reculer ou avancer. Ce sont des paramètres à prendre en compte...  smiley-wink

PS : Ah oui, j'oubliais, si tu galères vraiment avec l'IR, passe aux Ultra-sons, t'auras plus de problème...
« Last Edit: December 08, 2008, 09:58:39 am by opusincertum » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 15
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci pour la référence de l'autre capteur sharp.
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello !

Ma petite expérience :
 - enfoncer les capteurs à 10 cm n'est pas une bonne idée, vous aurez plein de reflets avec votre carcasse.
 - le GP2D120 n'est pas plus précis, il a juste un range différent, plus court. Voyez mes tests sur le Sharp GP2D120 : http://www.pobot.org/Capteur-IR-Sharp-GP2D120.html (avec une Arduino et un "oscillo" sous Processing si ça vous intéresse, très simple à utiliser)

En fait, pour couvrir toute la distance de 0 à très loin, il faut utiliser plusieurs capteurs. Non seulement ça vous permettra de recouper vos résultats (par exemple pour le Sharp GP2x, vérifier que vous n'êtes pas dans le pic du début de la courbe) et d'avoir un traitement plus simple au niveau de votre algorithme de contrôle.

Pour tester la distance courte de 0 à 10 cm, on peut utiliser des capteurs Sharp IS471F ou des modules à 2€ tout fait :
 - http://www.pobot.org/Capteur-de-proximite.html
 - http://www.pobot.org/spip.php?page=recherche&recherche=IS471F

Enfin, c'est galvaudé de dire qu'on aura plus de problème en passant aux ultra-sons... on aura juste d'autres problèmes  ;D
« Last Edit: December 09, 2008, 01:36:16 am by julien@pobot.org » Logged

Pages: [1]   Go Up
Jump to: