Modifications

Sauter à la navigation Sauter à la recherche
7 645 octets ajoutés ,  6 juillet 2014 à 08:33
Ligne 1 : Ligne 1 :  
== Introduction ==
 
== Introduction ==
Le détecteur de distance '''Sharp GP2Y0A21YK''' est un senseur de proximité infrarouge évaluant la distance sur base de la quantité de lumière infrarouge reçu en retour.
+
Le détecteur de distance '''Sharp GP2Y0A21YK''' (10-80cm) est un senseur de proximité infrarouge évaluant la distance sur base de la quantité de lumière infrarouge reçu en retour.
   −
[[File:Sharp GP2Y0A21YK.jpg]]
+
[[File:Sharp GP2Y0A21YK.jpg]]<br /><small>Sharp GP2Y0A21YK (10-80cm)</small>
    
Sa technologie infrarouge offre une évaluation de la distance moins rigoureuse qu'un senseur ulrasons mais reste cependant très économique. Il permet donc la détection d'obstacles (et jugement de distances) à prix abordable.
 
Sa technologie infrarouge offre une évaluation de la distance moins rigoureuse qu'un senseur ulrasons mais reste cependant très économique. Il permet donc la détection d'obstacles (et jugement de distances) à prix abordable.
Ligne 10 : Ligne 10 :  
La tension de sortie varie de 2,3 - 0,4 Volts pour une distance variant respectivement 10 - 80 cm. Il suffit donc de bancher ce senseur sur une entrée Analogique pour évaluer la distance.
 
La tension de sortie varie de 2,3 - 0,4 Volts pour une distance variant respectivement 10 - 80 cm. Il suffit donc de bancher ce senseur sur une entrée Analogique pour évaluer la distance.
   −
== Ou acheter ==
+
Si vous avez besoin d'évaluer une distance plus importante, vous pouvez également utiliser son grand frère le '''Sharp GP2Y0A2YK0F''' (20-150cm)
Cet article est [http://mchobby.be/PrestaShop/product.php?id_product=35 disponible chez MC Hobby].
     −
Il inclus le connecteur de raccordement et un PinHeader pour faciliter le raccordement sur breadboard.
+
[[Fichier:Sharp GP2Y0A2YK0F.jpg|400px]]<br /><small>Sharp GP2Y0A2YK0F (20-150cm)</small>
 +
 
 +
== Montage général ==
 +
Les deux modèles de senseurs se raccordent de la même façon... ils sont très simple à câbler et n'utilise que 3 connexions (une sortie analogie + alimentation).
 +
 
 +
Les senseurs Sharp sont assez populaires du fait de leur prix assez démocratique mais aussi de leur simplicité de mise en oeuvre.
 +
 
 +
il suffit de placer les différents câbles du connecteur JST comme suit:
 +
* Rouge: +5v
 +
* Noir: GND/Masse
 +
* Jaune ou Blanc: Entrée Analogique A0
 +
 
 +
[[File:Sharp GP2Y0A21YK arduino.png]]
 +
 
 +
Le fil jaune (ou blanc) transporte le signal de sortie... c'est celui-là qu'il faut lire sur notre micro-controleur :-)
    
== Considérations techniques ==
 
== Considérations techniques ==
Comme précisé dans la [http://mchobby.be/data-files/datasheet/GP2Y0A21YK0F%20DataSheet.pdf fiche technique], la tension analogique renvoyée par la capteur dépend de la distance de l'objet.
+
Comme précisé dans la [http://df.mchobby.be/datasheet/GP2Y0A21YK0F%20DataSheet.pdf fiche technique], la tension analogique renvoyée par la capteur dépend de la distance de l'objet.
   −
=== Documentation ==
+
=== Documentation Sharp 10-80cm ===
 +
Voici le graphe de tension/distance pour le senseur Sharp GP2Y0A21YK (10-80cm)
    
[[Fichier:GraphTensionDistance.png]]
 
[[Fichier:GraphTensionDistance.png]]
Ligne 34 : Ligne 48 :     
Ce que la documentation nous apprends:
 
Ce que la documentation nous apprends:
 +
* La distance de jugement idéale se situe à +/- 24 cm.
 +
 +
=== Documentation Sharp 20-170cm ===
 +
Le graphique suivant correspond le graph de correspondance tension/distance pour le senseur Sharp GP2Y0A2YK0F (20-150cm).
 +
 +
[[Fichier:GraphTensionDistance-GP2Y0A2YK0F.jpg|400px]]
 +
 +
== Exemple pratique ==
 +
Cet exemple utilise un senseur de distance raccordé sur la broche analogique A0 et un afficheur LCD.
 +
 +
Le senseur de distance se raccorde comme suit sur l'entrée Analogique A0
 +
 +
[[File:Sharp GP2Y0A21YK arduino.png]]
 +
 +
Vous pouvez ensuite réaliser le montage de l'afficheur LCD comme précisé dans [[Afficheur LCD|le tutoriel qui lui est dédié]].
 +
 +
Pour rappel, voici comment l'afficheur LCD est raccordé sur votre Arduino:
 +
 +
[[Fichier:afficheur-lcd-montage.jpg|450px]]
 +
 +
N'hésitez pas à vous reporter au [[Afficheur LCD|tutoriel de l'afficheur LCD]] pour plus de précisions.
 +
 +
<!-- [[File:Sharp LCD Schema.png]]
 +
Pour le montage de l'afficheur LCD, vous pouvez vous référer à l'article "[http://arduino103.blogspot.com/2011/06/commande-dun-afficheur-lcd-mop-al162a.html Commande d'un afficheur LCD MOP-AL162A-BBTW: LCD 2x16]" sur le Blog Arduino Notepad.
 +
-->
 +
 +
<nowiki>/*
 +
  Mesure de la proximité à l'aide d'un senseur infrarouge
 +
  Sharp gp2y0a21yk (10-80cm) ou
 +
  Sharp GP2Y0A2YK0F (20-150cm) Proximity Sensor
 +
  et Affichage sur LCD 2x16
 +
 +
--- Afficheur LCD ---
 +
* Article disponible chez MCHobby
 +
    http://shop.mchobby.be/product.php?id_product=176
 +
* Montage:
 +
    http://wiki.mchobby.be/index.php?title=Afficheur_LCD
 +
 +
--- Senseur de proximité ---
 +
* Sharp gp2y0a21yk - version 10-80cm avec sortie analogique
 +
* Article disponible chez MCHobby
 +
    http://shop.mchobby.be/product.php?id_product=35
 +
    http://shop.mchobby.be/product.php?id_product=460 (version 20-150cm)
 +
* Montage:
 +
    Broche/Pin A0 (analogique)
 +
    http://wiki.mchobby.be/index.php?title=Sharp_GP2Y0A21YK0
 +
 +
License: CC-BY-SA
 +
Crédit: Meurisse D. de www.mchobby.be "vente de kit et composants"
 +
 +
*/
   −
    La distance de jugement idéale se situe à +/- 24 cm.
+
// Inclure les librairie:
 +
#include <LiquidCrystal.h>
   −
=== Expérience ==
+
 
 +
int sensorPin = 0; // Pin analogique pour lecture de la tension de sortie du senseur (Vout).
 +
                  // La tension varie entre 0 et 3.3 volts.
 +
 
 +
// Initialisation de la librairie LCD avec les différentes broches utilisées
 +
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);;
 +
 
 +
void setup(){
 +
  // Positionner le curseur sur l'afficheur LCD:
 +
  lcd.begin(16, 2);
 +
  lcd.clear();
 +
}
 +
 
 +
 
 +
void loop(){
 +
  float tension = lectureTension();
 +
  String distanceStr = distanceRange();
 +
 
 +
  // Afficher la valeur en evitant le
 +
  //  lcd.clear(), pour éviter l'effet de
 +
  //  scintillement.
 +
  lcd.setCursor(0,0);
 +
  lcd.print( tension );
 +
  lcd.print( " V" );
 +
 
 +
  // Efface les derniers caractères si
 +
  //  la valeyr varie subitement
 +
  lcd.print( "      " );
 +
 
 +
  lcd.setCursor(0,1);
 +
  lcd.print( distanceStr );
 +
  lcd.print( " cm    ");
 +
 
 +
  // ne pas rafraichir trop souvent
 +
  delay(500);
 +
 
 +
}
 +
 
 +
//Description:
 +
//  Lecture de la tension sur la pin A0
 +
//  Le senseur est sensé retourner une valeur
 +
//  entre 0 & 3.3 volts
 +
//
 +
//Returns:
 +
//  La tension en volt
 +
//
 +
float lectureTension(){
 +
// Lecture de la valeur sur l'entrée analogique
 +
// Retourne une valeur entre 0->1024 pour 0->5v
 +
int valeur = analogRead(sensorPin); 
 +
 
 +
// Converti la lecture en tension
 +
float tension = valeur * 5.0;
 +
tension /= 1024.0;
 +
 +
return tension;
 +
}
 +
 
 +
// Tableaux qui permettent de convertir la tension en distance approximative.
 +
//
 +
float sharpVoltage[] = { 3.1, 2.5, 1.84, 1.42, 1.15, 1, 0.85, 0.73, 0.5, 0.4, 0.3 };   
 +
int sharpCms[] = { 5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80 };
 +
 
 +
//Description:
 +
//  Lecture de la tension sur l'entrée analogique
 +
//  et determination de la distance approximative
 +
//
 +
//Returns:
 +
//  Index superieur (du tableau) dans lequel se situe la mesure.
 +
//  Par exemple, si l'index retourné est 2, la tension du capteur se situe
 +
//    entre les positions 1 et 2 (soit <=2.3v et >1.7v).
 +
//  La distance est donc située entre 10 et 15 cm.
 +
//
 +
int distanceIndex(){
 +
  float tension = lectureTension();
 +
  // si tension inférieur à 0.3v on est soit très loin, soit très près
 +
  // Donc la distance est considérée comme inconnue
 +
  if( tension < 0.3 )
 +
    return -1;
 +
  // Localiser la position dans le tableau OU la tension
 +
  // lue sur le senseur est plus grande que la valeur du tableau
 +
  // de référence
 +
  int index = 0;
 +
  while( sharpVoltage[index] > tension ){
 +
    index++;
 +
    // Si on sort du tableau, la distance est inconnue!
 +
    if( index == 11 )
 +
      return -1;
 +
  }
 +
  return index;
 +
}
 +
 
 +
//Description:
 +
//  Retourne une evaluation de la distance sous forme d'une
 +
//  chaine de caractères.
 +
String distanceRange(){
 +
  int idx = distanceIndex();
 +
  if( idx == -1 )
 +
    return "Inconnu";
 +
  if( idx == 0 ) {     
 +
    return "<= "+String(int(sharpCms[idx]));
 +
  }
 +
  return String(int(sharpCms[idx-1]))+"> x <="+String(int(sharpCms[idx]));
 +
}
 +
</nowiki>
 +
 
 +
== Résultat en Vidéo ==
 +
{{#Widget:Iframe
 +
|url=http://www.youtube.com/embed/USQK0_XNWZE
 +
|width=420
 +
|height=315
 +
|border=0
 +
}} {{#Widget:Iframe
 +
|url=http://www.youtube.com/embed/uG-G_SSHyw8
 +
|width=420
 +
|height=315
 +
|border=0
 +
}}
 +
 
 +
== Recommandation ==
 +
La documentation de Sharp reprend quelques recommandations de bon sens:
 +
* Ne pas exposer à la poussière, à l'humidité, l'huile, etc. Cela dégradera les caractéristiques.
 +
* Ne pas laver... car cela dégradera les caractéristiques de l'optique
 +
* La mesure du senseur peut être imprécise si celui-ci est exposé à la lumière de lampe au Tungstène, lumière solaire, ...<br />Assurez vous donc que le senseur n'est pas directement exposé à de tels sources de lumière. 
 +
 
 +
=== Bords et changement de couleur ===
 +
Si l'objet réfléchissant à une ligne de démarcation avec une couleur ou matière trop différente, il est préférable de placer cette ligne de démarcation dans l'axe du senseur.
 +
 
 +
C'est de cette façon que l'on compense au mieux la déviation de l'évaluation de la distance.
 +
 
 +
[[Fichier:Sharp-Recommandation-01.jpg]]
 +
 
 +
Cette ligne de démarcation doit être parallèle à celle qui passe par le entre la LED émettrice et senseur infrarouge du senseur Sharp.
 +
 
 +
=== Objet mobile et Robot ===
 +
Voici une information importante si vous voulez réaliser un robot ou détecter des objets mobiles.
 +
 
 +
Si vous avez des objet mobiles, il est également nécessaire de placer le senseur de façon approprié pour limiter la déviation (erronée) de la distance mesurée, déviation causée par le déplacement de l'objet.
 +
 
 +
Pour garder une lecture et évaluation correcte de la distance, il faut placer le senseur (axe LED + senseur IR) perpendiculairement au sens de déplacement de l'objet.
 +
 
 +
[[Fichier:Sharp-Recommandation-02.jpg]]
 +
 
 +
== Retour d'expérience ==
    
Ce que l'expérience nous à appris:
 
Ce que l'expérience nous à appris:
 +
 
'''1) Le détecteur est sensible au revêtement de proximité!'''
 
'''1) Le détecteur est sensible au revêtement de proximité!'''
   Ligne 60 : Ligne 270 :  
La précision augmente alors à 3.3mV.
 
La précision augmente alors à 3.3mV.
   −
== Montage ==
+
== Ressources ==
Ce senseur est très simple à câbler avec ses 3 connexions (une sortie analogie + alimentation).
+
* [http://df.mchobby.be/datasheet/GP2Y0A21YK0F%20DataSheet.pdf Fiche technique Sharp GP2Y0A21YK (10-80cm)] (DataSheet)
Il est assez populaire du fait de son prix assez démocratique mais aussi de sa simplicité de raccordement.
+
* [http://df.mchobby.be/datasheet/gp2y0a02yk_e.pdf Fiche technique du Sharp GP2Y0A2YK0F (20-150cm)] (DataSheet)
 +
* [http://bildr.org/2011/03/various-proximity-sensors-arduino/ Article sur les senseurs de proximité] (''anglais'')
   −
il suffit de placer les différents câbles du connecteur JST comme suit:
+
== Où acheter ==
* Rouge: +5v
+
* Le {{pl|35|senseur Sharp GP2Y0A21YK (10-80cm) est disponible chez MCHobby}}.<br />Il inclus le connecteur de raccordement
* Noir: GND/Masse
+
* Le {{pl|460|senseur Sharp GP2Y0A2YK0F (20-150cm) est disponible chez MCHobby}}.<br />Il inclus le connecteur de raccordement
* Jaune: Entrée Analogique A0
+
* L'{{pl|176|afficheur LCD 2x16 est également disponible sur le WebShop de MCHobby}}.
 
  −
[[File:Sharp GP2Y0A21YK arduino.png]]
     −
== Autre Information ==
  −
     −
[http://mchobby.be/data-files/datasheet/GP2Y0A21YK0F%20DataSheet.pdf Fiche technique] (DataSheet)
+
{{MCH-Accord}}
29 836

modifications

Menu de navigation