Vu mètre

J'ai réalisé un montage avec un Arduino pour utiliser des vu mètres analogiques afin de représenter des mesures de l'activité de Popeye telles que le taux d'occupation des disques et l'indicateur de charge (uptime) sur les dernières minutes.

Un vu-mètre est un appareil de mesure doté d'une aiguille qui se déplace proportionellement à la tension ou au courant qui le traverse. Il était principalement utilisé dans les multimètres analogiques.

Vu mètre analogique

La sortie analogique d'un Arduino peut varier de moyenne de 0 à 5V à l'aide de la fonction digitalWrite(). L'aiguille se déplace vers la droite proportionnelement à la tension et de manière linéaire. Ainsi, une valeur de 2.5V déplace l'aiguille au milieu et 5V tout à droite.

les sorties analogiques 9, 10 et 11 de l'Arduino sont chacunes reliées à un vu mètre via une résistance de $470\ Ω$.

Schéma de câblage

Pour faciliter le câblage, j'ai mis en commun les 3 masses et soudés sur un module sécable les 3 entrées pour les relier sur la breadboard de l'Arduino.

de

Pour l'affichage du taux d'occupation des disques, une échelle linéaire est idéale : un disque rempli à 20% provoque un déplacement de l'aiguille sur la graduation 0.2.

Lors de l'achat des vu-mètres, je n'ai pas fait attention à la valeur des graduations qui sont en en milli ampère, mais ce n'est pas grave car je les ai re-dessiné avec inkscape. J'ai dessiné un arc de cercle correspondant au déplacement de l'aiguille gradué de 0 à 100%. Après quelques essais de taille et d'arrondis, j'ai collé la nouvelle échelle sur le fond, derrière l'aiguille afin de changer la signification du déplacement.

La valeur de l'uptime est un peu plus difficile à matérialiser. La plupart du temps, la valeur de la charge oscille entre 0 et 1 mais en cas de forte sollicitation, elle peut monter jusqu'à 9 voir plus. J'ai cherché à afficher sur la moitiée du cadran une valeur inférieure à 1 et sur l'autre moitiée, les valeurs de 1 à 9. Une échelle logarithmique est tout adaptée à ce type de représentation. En tatonnant un peu, la formule utilisée est : $$ valeur = (\frac{log(0.01 + load^2)}{4*log(10)} + \frac{1}{2})*100 $$

La valeur finale est contrainte en 0 et 100 à l'aide des fonctions max et min.

En reprenant l'échelle graduée dessinée précédemment mais en changeant les marques sur l'arc de cercle, un déplacement de la moitiée du cadran de l'aiguille correspond à un load de 1.

Les 3 vu-mètres sont fixés sur une plaque de plexiglas que j'ai découpé et ajusté à la boite contenant l'Arduino ainsi que l'afficheur LCD.

Voici l'assemblage final avec les afficheurs de la gauche vers la droite :

  • Taux d'occupation des disques
  • Valeur de la charge à 1 minute
  • Valeur de la charge à 5 minutes
Nouvelle échelle de graduation

J'ai enrichit le sketch Arduino pour ajouter des nouvelles commandes disk, load1 et load5 recevant une valeur de 0 à 100 correspondant à la position de l'aiguille : 70 déplacera de 70% l'aiguille vers la droite.

Exemple une fois connecté sur le moniteur série :

> load1 50
OK

> load5 30
OK

> disk 70
OK

Coté serveur, j'ai écrit un script perl appelé toutes les 10 min par un cron de permettant calculer les différentes valeurs à envoyer à l'Arduino.

Une dernière commande stats accepte en paramètre toutes les valeurs d'un seul coup :

  • charge à 1 min
  • charge à 5 min
  • taux d'occupation
> stats 50 30 70
OK

Voici le montage final intégré dans la boite en bois et installé dans le garage à coté de Popeye.

Vu-mètres installés

Malheuresement, ce n'est pas très lisible : la pièce ne bénéficie pas d'une luminosité importante et l'ensemble est placé en hauteur.