Construire un pluviomètre USB

Construire un pluviomètre USB

Si vous vous intéressez aux stations météo autonomes, vous vous êtes certainement déjà demandé comment fabriquer un pluviomètre numérique, et avez probablement déjà imaginé une solution compliquée à base de récipients et de capteurs de niveau. En fait, la solution est beaucoup plus simple qu'on pourrait le penser, au point qu'on peut même s'en fabriquer un soi-même...



Le principe

Les pluviomètres automatiques sont basés sur un principe à bascule: la pluie est récoltée puis déversée sur une espèce de petite balançoire avec un godet de chaque côté. Quand un godet est plein, le poids de l'eau fait basculer la balançoire, l'autre godet se retrouve alors sous l'arrivée d'eau et le premier godet se vide. Il suffit alors de compter les basculements pour connaître la quantité d'eau qui est tombée.

Principe d'un pluviomètre automatique
Principe d'un pluviomètre automatique


Réalisation
On a utilisé notre imprimante 3D pour la partie mécanique. La mécanique n'est pas spécialement compliquée. La seule subtilité est la forme et la taille de la balançoire. Il faut qu'elle permettre la vidange d'un godet pendant que l'autre se remplit, et elle ne doit être ni trop grande, ni trop petite. Trop grande on perd en précision, trop petite la tension superficielle de l'eau va bloquer le mécanisme.

La partie mécanique du pluviomètre
La partie mécanique du pluviomètre


Le même, en vrai
Le même, en vrai


La mécanique peut avoir besoin d'un petit réglage, c'est pourquoi on a ajouté deux petites vis sans tête sous la balançoire. Elles permettent de régler les fins de course pour que le basculement soit plus facile.

Toutes les pièces du pluviomètre
Toutes les pièces du pluviomètre


La détection des basculements est effectuée avec notre méthode fétiche: une led puissante, un phototransistor et un Yocto-Knob. La led éclaire le photo-transistor, quand la balançoire coupe le faisceau, la résistance du photo-transistor change et le Yocto-Knob détecte ce changement. Le Yocto-Knob est même capable de compter automatiquement le nombre de changements qui ont eu lieu pendant un temps donné.

Câblage avec le yocto-knob.
Câblage avec le yocto-knob.


Câblage dans le pluviomètre.
Câblage dans le pluviomètre.


On a réalisé l'entonnoir qui surmonte le pluviomètre à l'imprimante 3D pour la gloire, mais un entonnoir acheté au magasin de bricolage du coin donnerait probablement un bien meilleur résultat pour moins cher. Le fini des objets fabriqués avec les imprimantes a extrusion est assez rugueux et poreux alors qu'on aimerait que les gouttes de pluie rencontrent le moins de résistance possible dans l'entonnoir. Il est impératif de mettre une grille sur le dessus sous peine de voir feuilles mortes et limaces venir bloquer le mécanisme.

On va enfin savoir si le temps est si pourri qu'on le dit
On va enfin savoir si le temps est si pourri qu'on le dit


Voici une courte vidéo qui illustre le fonctionnement du mécanisme.

  



Utilisation

La calibration est assez triviale: il suffit de verser une quantité connue d'eau dans le mécanisme et compter le nombre de basculements générés. Compte tenu de la surface de l'entonnoir, on peut en déduire la quantité de pluie que représente un basculement. Ici nous avons mesuré 295 basculements pour 300 ml d'eau. L'entonnoir faisant 10cm de diamètre, cela nous donne 0.13mm de pluie par basculement. Voici un petit programme un Python qui calcule la quantité de pluie tombée toutes les heures.


import sys
from yocto_api import *
from yocto_anbutton import *

errmsg=YRefParam()

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

# We assume the Yocto-Knob channel connected to the rainmeter
# is named "RainMeter" (logic name)

channel = YAnButton.FindAnButton('RainMeter')
if not channel.isOnline()  : sys.exit('No "RainMeter" channel found')

print("Running")

# The Yocto-Knob features a state change counter
channel.resetCounter()

while True:
  time = channel.get_pulseTimer()
  if time>=3600*1000: # one hour elapsed
      flipcount = channel.get_pulseCounter()
      channel.resetCounter()
      print("Rainfall level for the last hour: %.2f mm  " % (flipcount * 0.13))

  YAPI.Sleep(1000)
 




Conclusion

Le cas de l'anémomètre et de la girouette ayant déjà été abordés, je pense qu'on a fait le tour de la question météo. Vous savez maintenant comment construire une station météo USB autonome complète. Vous trouverez les fichiers 3D des éléments de ce pluviomètre sur Thingiverse. Amusez-vous bien.

Commenter aucun commentaire
Retour au blog












Yoctopuce, get your stuff connected.