Le SRF06: un capteur de distance bon marché.

Le SRF06: un capteur de distance bon marché.

On nous demande régulièrement si on compte fabriquer un capteur de distance. La réponse est: "non pas pour l'instant". Cependant, on dispose de quelques alternatives raisonnables.

Fabriquer un télémètre fait appel à des compétences et des technologies que nous ne maitrisons pas (encore). C'est pourquoi lorsqu'on nous demande si nous avons un Yocto-Télémètre au catalogue nous suggérons d'utiliser un Yocto-4-20mA-Rx avec un télémètre disposant d'une sortie 4-20mA. En général nous recommandons le Baumer FADK 14. C'est un capteur industriel précis, étanche, on l'a utilisé dans de nombreux projets. Mais son prix d'environ 250 euros a tendance à refroidir les clients les plus enthousiastes. Quelques recherches nous ont amené à conclure que la plupart des capteurs de distance industriels sont tout aussi chers. Alors on a cherché si il était possible de mesurer une distance à moindre prix, toujours en utilisant du matériel Yoctopuce. On a trouvé le SRF06 fabriqué par Devantech.


dessus  dessous
Le SRF06, un télémètre à ultrasons avec une sortie 4-20mA


Il se présente sous la forme d'un petit board d'environ 43x20mm avec d'un coté un émetteur et et récepteur d'ultra son et de l'autre l'électronique de contrôle. Il permet de mesurer des distances de 2cm à 5.1 m. Contrairement au capteur Sharp qu'on avait testé il y a quelque temps sa sortie 4-20mA donne une valeur calibrée, et non pas une tension approximative sujette à interprétation.

Comme il est alimenté par une boucle 4-20mA son branchement à deux fils sur un Yocto-4-20mA-Rx est des plus simple pour autant que vous disposiez du mode d'emploi du SRF06. Il n'y a en effet aucun marquage sur le board, il faut donc se fier à la notice pour le brancher à l'endroit.

Branchement du SRF06 à un Yocto-4-20mA-RX, Attention à la polarité
Branchement du SRF06 à un Yocto-4-20mA-RX, Attention à la polarité



Une fois le branchement effectué, il faut configurer le Yocto-4-20mA-Rx pour qu'il signale la distance mesurée de manière correcte. Cette opération peut être réalisée en deux temps, trois mouvements avec le VirtualHub. L'unité est le cm, 4mA correspondent à 0cm et 20mA correspondent à 510cm. C'est prêt.

Configuration du Yocto-4-20mA-RX pour travailler avec un SRF06
Configuration du Yocto-4-20mA-RX pour travailler avec un SRF06



On a testé le SRF06 en fabriquant un piège photographique: la réalisation est super simple: on connecte un SRF06 à un Yocto-4-20mA-Rx, lui même raccordé à un Raspberry PI. Ce même Raspberry PI commande un appareil photo par l'intermédiaire d'un Yocto-Relay comme on l'avait illustré dans un article précédent. Pour que le tout soit facilement transportable, on a tout mis dans une boite qu'on alimente avec une grosse batterie USB.

Interconnexions des différent éléments du piège photographique
Interconnexions des différent éléments du piège photographique


On a mis tout ça dans une boite qu'on a perchée sur un trépied
On a mis tout ça dans une boite qu'on a perchée sur un trépied


Le Raspberry PI est controlé par un simple script en python: on installe un callback sur la distance mesurée par le capteur, si cette distance est comprise entre 2 et 4m, on déclenche l'appareil photo. Simple comme bonjour.

from yocto_api import *
from yocto_relay import *
from yocto_genericsensor import *

def distanceChangeCallback(fct,value):
    global camera
    # if the distance is between 2 and 4meter, trigger
    # the relay for 200 ms
    print(value)
    if  200<float(value)<400: camera.pulse(200)

# Setup the API to use local USB devices
errmsg=YRefParam()
if YAPI.RegisterHub("usb", errmsg)!= YAPI.SUCCESS:
    sys.exit("init error"+errmsg.value)

# find the relay controling the camera
camera = YRelay.FindRelay("shutter")
if  not camera.isOnline(): sys.exit("no camera")

# find the distance the camera
distSensor = YGenericSensor.FindGenericSensor("distance")
if  not distSensor.isOnline(): sys.exit("no distance sensor")

# distanceChangeCallback will be called automatically
# each the distance changes significantly
distSensor.registerValueCallback(distanceChangeCallback)

# do nothing except handling events
while True:
    YAPI.Sleep(1000)



Comme on était un peu à court d'animaux sauvages pour tester notre piège photographique, on a fait quelques tests en jetant un bac d'eau devant le système. Il marche remarquablement bien, quoiqu'un peu lent: plusieurs essais ont été nécessaires pour obtenir la photo ci dessous. En revanche aucun problème pour photographier un personne qui passe en marchant devant le système.

Splash!
Splash!


Conclusion

Le SRF06 fait admirablement bien son travail pour un capteur à 15 euros. Les mesures sont très stables, par contre leur fréquence est relativement faible: environ 10 mesures par seconde, ce qui va pénaliser les applications qui demandent des temps de réaction très courts. On regrette un peu l'absence de marking qui oblige à retrouver la doc à chaque fois qu'on a besoin de le brancher. Évidement il n'est pas étanche, mais pour ce prix on ne peut pas tout avoir. C'est vraiment un capteur idéal pour un petit bricolage qui nécessite de mesurer une distance. Si vous connaissez d'autres capteurs de distance bon marché avec une sortie 4-20mA, voire 0-10V. N'hésitez pas à nous en faire part dans les commentaires, on est très intéressés.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.