A ce niveau du blog, nous savons maintenant que les entrées analogiques permettent la lecture, et donc la mesure, de tout capteur délivrant une tension comprise entre 0 et +3,3V. Si vous avez un capteur à boucle 4-20mA, vous pouvez tout de même l'utiliser avec votre IPX800 en créant un montage assez simple. En effet, pour convertir le courant délivré par le capteur, vous pouvez faire mesurer par l'IPX la tension aux bornes d'une résistance de 165Ω reliée au capteur. Le schéma ci-dessous vous montre le principe : sur la borne 1, c'est la masse et en 2 c'est l'entrée analogique 1 que nous avons choisi d'utiliser pour l'exemple.
nsch5.png
Mais pourquoi donc 165Ω ? Tout simplement car, avec la loi d'ohm U=R.I nous voyons ainsi que si notre capteur délivre son courant maximal, soit 20mA, nous aurons U la tension aux bornes de la résistance = 165 x 0,02 = 3,3V ce qui correspond bien au maximum mesurable par l'IPX. Pour la mesure la plus faible, soit 4mA, nous aurons 0,66V ce qui nous laisse quand même une bonne plage de mesure comprise entre 0,66V et 3,3V.

Voyons maintenant comment récupérer une mesure lisible dans le site web de l'IPX... Nous savons que la conversion analogique-numérique de l'IPX800 se fait sur 10 bits, soit 1024 valeurs possibles. En clair, 0V mesuré correspond à une valeur numérique convertie de 0 et 3,3V mesurés correspondent à une valeur numérique convertie de 1023. Du coup, pour afficher une tension dans le site web de l'IPX en page d'accueil, nous devrons utiliser le pas de mesure comme coefficient, pas que nous calculons en divisant 3,3V par 1024 valeurs possibles, soit 0,00323 arrondi. Pour information, la mesure de tension est déjà programmée dans la page index1.htm du site web de l'IPX, il s'agit du cas 1 dans le script AJAX situé en bas de page. Extrait ci-dessous :

case '1':
GetAn = getXMLValue(xmlData, 'analog'+i) * 0.00323;
document.getElementById('tmp'+i).innerHTML = GetAn.toFixed(2)+" V";

Pour programmer votre propre cas dans le fichier index1.htm du site web, il vous faut donc connaître la plage maximale de mesure de votre capteur, et ce qu'il mesure, bien évidemment.

Imaginons que vous ayez un capteur de luminosité linéaire qui mesure de 0 à 1000 lumens. Vous savez donc qu'à 0lm nous aurons 0,66V à l'IPX (soit 204 après conversion) et qu'à 1000lm nous aurons 3,3V (soit 1023). Après correction du delta, nous voyons que nous mesurons 1023 - 204 = 819 valeurs possibles. Il nous faut donc diviser les 1000lm que notre capteur peut mesurer par 819 pour avoir le pas de mesure, soit 1,22. La formule devient donc :

case '6':
GetAn = (getXMLValue(xmlData, 'analog'+i) - 204) * 1.22;
document.getElementById('tmp'+i).innerHTML = GetAn.toFixed(2)+" lm";

Conclusion : à 4mA l'IPX affichera bien la valeur 0lm et à 20mA elle affichera bien 1000lm. Le tour est joué !

NOTA : pour la puissance de la résistance, prenez une petite 1/4W, cela suffira amplement compte-tenu du courant max de 20mA sous 3,3V.