Le capteur de distance Sharp GP2Y0A

De GCE Electronics
Révision datée du 13 novembre 2017 à 10:49 par Fgtoul (discussion | contributions) (Page créée avec « ==Capteur de distance infra-rouges sur IPX800V4== Le capteur Sharp existe sous différentes références, permettant de mesurer des distances différentes. Il existe éga... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Capteur de distance infra-rouges sur IPX800V4

Le capteur Sharp existe sous différentes références, permettant de mesurer des distances différentes. Il existe également des modèles alimentés en 3.3V, d'autres en 5V, sans pour autant que la tension de sortie dépasse les limites de l'IPX800.

Voici les formules du capteur, déterminées sur un tableur.

Excel tendance2.png

Calc tendance2.png

Ces 2 formules serviront à renseigner l’entrée analogique de l’IPX

Analog -> Digital ou Digital->Analog

Dans certains cas, il faudra paramétrer l’entrée analogique avec le type "Volt" la tension sera alors “lue” par IPX, la formule sera ensuite appliquée uniquement dans un widget HTML associé à un petit script Javascript (lecture dans une source de données)


Connexion du Capteur à l'IPX

Maintenant que nous avons déterminé les caractéristiques de notre capteur, nous allons le connecter à l'IPX800 V4.

Ce capteur doit être alimenté en 5 volts. Nous utiliserons une alimentation externe. Pour le montage, j'ai utilisé une alimentation USB.

Avant de brancher le capteur à l'IPX, il faut vérifier que la tension de sortie de dépasse pas les limites admises par l'entrée analogique de notre automate.

Sharp GP2Y0A controle.JPG

La sortie analogique ne délivre pas de tension supérieure à 3.3 V, nous n'aurons donc pas besoins de mettre un pont diviseur en place pour protéger l'entrée analogique de l'IPX.


Voici le schéma de connexion :

Sharp GP2Y0A branchement.JPG

Paramétrage de l'entrée analogique

Le capteur émettant une tension sur sa sortie, il suffit de paramétrer l'entrée analogique comme un voltmètre.

Sharp GP2Y0A analogique1.JPG

Il suffira alors de placer un widget de type "Entrée analogique" sur le Dashboard pour visualiser la tension de sortie.

Sharp GP2Y0A widget1.JPG


Sharp GP2Y0A widget1b.JPG

Conversion de la tension en distance

Il va de soit que ce n'est pas réellement la tension en sortie de notre capteur qui nous intéresse, mais la distance mesurée. Nous allons faire la conversion grâce à un widget HTML, celui-ci contiendra un peu de javascript. Mais pour cela, nous devons d'abord créer une source de données.

Sur le Dashboard, créons la source STATUS

Sharp GP2Y0A source.JPG

Créons maintenant notre widget HTML et insérons un peu de code


function bruteToDistance(brute) {
  d = Math.floor(63.37 * Math.pow(brute * 0.000050354,-1.143));
    if (d < 20 || d > 150) {
        return "";
    }else{
        return d + " cm";
    }
}

var distance = bruteToDistance(datasources["STATUS"]["response"]["analog0"]);

return `
<style>
.content {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: #333;
  overflow: hidden;
}

.circle {
  width: 5px;
  height: 5px;
  background-color: transparent;
  position: absolute;
  left: 50%;
  margin-left: -2px;
  top: 50%;
  margin-top: -2.0px;
  border-radius: 50%;
  border: 2px solid #3C14;
  animation: radar 5s infinite;
  -webkit-animation: radar 5s infinite;
  -webkit-transition: all ease-in-out;
  transition: all ease-in;
}
@keyframes radar {
  1% {
    width: 5px;
    height: 5px;
    margin-left: 0;
    margin-top: 0px;
    border: 2px solid #3AA65E;
    opcity:0.9
  }
  100% {
    width: 300px;
    height: 300px;
    margin-left: -150px;
    margin-top: -150px;
    border: 12px solid #055E23;
    opacity:0.0;
    
  }
}

</style>

<center>
  <div class="content" height=100%> <div valign=middle style="color:#fff;font-size: 20px;"> ${distance}</div> <div class="circle">
  </div>

</div>
</center>
`;

Au début du code, vous pouvez remarquer la fonction bruteToDistance(). La source de données (status.xml) renvoie la valeur brute du capteur après traitement par le Convertisseur Analogique/Numérique de l'IPX.

Il convient donc, dans un premier temps de traduire cette valeur en Volts. La valeur brute est alors multipliée par 0.000050354. Pour de plus amples explications, je vous invite à consulter cette page.

La valeur convertie en volts sera finalement transformée par la formule de notre capteur, déterminée plus haut avec notre tableur.

Distance=63.37 * (tension)-1.143

La distance retournée par notre fonction ne devra pas excéder 150, ceci étant la limite de la plage de mesure du capteur.

De même, elle ne pourra être inférieure à 20 cm.

Voici notre widget :

SharpGP2Y0A.gif

Le léger décalage entre la distance affichée et la tension correspondante est du au fait que les 2 widgets n'ont pas la même vitesse de rafraîchissement.

  Pour prolonger la durée de vie du capteur, on pourrait faire passer son fil d’alimentation par une sortie de l’IPX.
  Ainsi, le capteur ne serait alimenté que sur demande, pour faire une mesure. Il est également possible d’ajouter un petit poussoir au plus près, pour une commande locale, et une EV, pour une commande     distante (dashboard).