Réaliser une balance suspendue

Réaliser une balance suspendue

Cette semaine, nous allons faire un petit peu de bricolage et construire une balance suspendue à l'aide d'un Yocto-Bridge et d'un smartphone Android. L'objectif est d'arriver à peser des objets allant de quelques centaines de grammes à une vingtaine de kilos, pour peser des objets comme des avions télécommandés ou des vélos. Étrangement deux hobbys très pratiqués chez Yoctopuce :-)





Une balance suspendue est très simple, un côté de la balance est suspendu à un point en hauteur et on accroche ce que l'on désire peser de l'autre côté.

Notre balance suspendue
Notre balance suspendue



Dans notre cas, nous avons relié une cellule de charge à notre module Yocto-Bridge et réalisé un boîtier avec une imprimante 3D.

Lorsque le smartphone Android est branché au port USB du Yocto-Bridge, le système est mis sous tension et l'application qui affiche la mesure est démarrée automatiquement. L'application affiche la mesure courante et un graphique du poids sur les 20 dernière secondes


Les composants de notre balance
Les composants de notre balance




Les cellules de charge


Le premier problème qu'il faut résoudre lors de la réalisation d'une balance est de trouver la bonne cellule de charge. Il faut d'une part vérifier que la précision de la cellule soit suffisante pour l'utilisation, mais il faut aussi s'assurer que la cellule supporte la charge maximum que l'on désire mesurer, sous peine d’endommager la cellule.

Un autre paramètre à prendre en compte est le type de la cellule. En effet, il existe différents types de cellule de charge et chacun a ses avantages et ses inconvénients.

Une cellule de charge par cisaillement ("Shear beam") est un bloc métallique droit fixé à une extrémité, et la charge à mesurer est fixée à l'autre extrémité. Ce sont en général les cellules les moins chères mais ce sont aussi les plus difficiles à utiliser, car mécaniquement la charge est en porte-à-faux et pour obtenir une mesure précise il faut que le châssis de la balance soit suffisamment rigide pour ne pas se déformer.

Une cellule de charge par cisaillement
Une cellule de charge par cisaillement



Une cellule de compression ("Compression load cell") est un bloc conçu pour être comprimé sur un seul point. Ce type de cellules est plus facile à utiliser car il n'y a pas de porte-à-faux, mais les cellules coûtent assez cher et ne fonctionnent qu'en compression.

Une cellule de compression
Une cellule de compression



Une cellule de charge en "S" est un bloc en forme de S qui permet de mesurer la déformation entre les deux extrémités du "S". Ce type de cellules est en générale assez cher mais est très pratique à utiliser, car on peut utiliser ces cellules en compression ou en traction. De plus, comme les points d'ancrage sont alignés, il n'y a pas de porte-à-faux ce qui simplifie la réalisation du châssis de la balance.

Une cellule de charge en S
Une cellule de charge en S



Pour notre projet la cellule la plus adaptée est une cellule en S car elle permet de travailler en traction et les points d'attache sont alignés l'un en dessous de l'autre ce qui facilite la construction.

La construction


Pour notre balance suspendue, nous avons sélectionné une cellule Variohm AS3-25kg-C3. C'est une cellule de charge en S qui permet de mesurer jusqu'à 25 kg avec une précision de +-0.02%.

La construction de la balance se résume à trouver deux crochets filetés de la bonne taille et à les fixer sur la cellule de charge. Pour le boîtier, il faut le fixer à la cellule par un seul côté. L'autre côté de la cellule doit rester libre pour qu'elle puisse se déformer sans contrainte lors de la mesure.

Le boîtier est composé de trois parties, une base qui sert de fixer la cellule et le Yocto-Bridge, un couvercle pour fermer cette base et une troisième partie qui fait office de support pour le smartphone.

Le boîtier de notre balance
Le boîtier de notre balance



Le modèle 3D du boîtier est disponible sur thingiverse :
https://www.thingiverse.com/thing:2823006


L'application


Note: Si vous n'avez jamais utilisé nos modules avec un téléphone Android, nous vous conseillons de commencer par lire notre article "Comment débuter avec des modules Yoctopuce sur Android", car l'application que nous avons écrite est une amélioration de celle de ce précédent article.

L'application est composée d'une seule activité qui affiche deux widgets, un TextView pour afficher le poids mesuré, et un graphique pour afficher l'évolution du poids sur les dernières secondes. Nous avons utilisé la librairie GraphView pour réaliser le graphique. Cette librairie est open source et est très simple à utiliser.

Le code source de l'application étant disponible sur GitHub, nous allons uniquement détailler la partie du code qui interagit avec le Yocto-Bridge.

L'application affiche le poids et un graphique
L'application affiche le poids et un graphique



Nous avons décidé d'obtenir les mesures par les notifications périodiques au lieu d'utiliser méthode get_currentValue(). Les notifications périodiques ont un double avantage, d'une part elles sont plus efficaces car moins de données sont transmisent par USB et d’autre part les mesures arrivent à intervalle fixe ce qui est toujours plus facile à afficher sur un graphique.

Lorsqu'un nouveau module est détecté, on vérifie qu'il s'agit bien d'un Yocto-Bridge et si c'est le cas on récupère l'objet YWeighScale correspondant et on initialise les paramètres de zero Tracking et d’excitation de la cellule. Ensuite, on enregistre la fonction de callback newMeasure qui sera appeleé 4 fois par seconde avec la valeur mesurée.

private void arrival(YModule module) {
  try {
    String serial = module.get_serialNumber();
    if (!serial.startsWith("YWBRIDG1")) {
        return;
    }
    if (_serialNumber != null && !_serialNumber.equals(serial)) {
        removal(YModule.FindModuleInContext(_yctx,
                                            _serialNumber + ".module"));
    }
    _serialNumber = serial;
    _yWeighScale = YWeighScale.FindWeighScaleInContext(_yctx,
            _serialNumber + ".weighScale1");
    _unit = _yWeighScale.get_unit();
    _yWeighScale.set_zeroTracking(1);
    _yWeighScale.set_excitation(YWeighScale.EXCITATION_AC);
    _yWeighScale.set_reportFrequency("4/s");
    _yWeighScale.registerTimedReportCallback(
      new YWeighScale.TimedReportCallback() {
      @Override
      public void timedReportCallback(YWeighScale function, YMeasure measure) {
        newMeasure(measure);
      }
    });
  } catch (YAPI_Exception e) {
      e.printStackTrace();
  }
}



La fonction de callback met à jour le TextField et ajoute un point au graphique.

private void newMeasure(YMeasure measure) {
    final double averageValue = measure.get_averageValue();
    final String text = String.format(Locale.US, "%.1f %s", averageValue, _unit);
    _textView.setText(text);
    if (averageValue > _maxY) {
        _maxY = averageValue;
        _viewport.setMaxY(_maxY);
    }
    _series.appendData(new DataPoint(_lastXValue, averageValue), true, MAX_X);
    _lastXValue += 1d;
}




Comme toujours, le code source de l'application est disponible sur GitHub:
https://github.com/yoctopuce-examples/yscale


Conclusion


Voilà, nous avons pu réaliser notre propre balance suspendue assez facilement.

La balance suspendue en action
La balance suspendue en action



Évidemment, pour simplement peser un vélo c'est un peu un overkill, mais ça fait toujours son petit effet devant les copains.


Plus sérieusement, en étoffant l'application Android on pourrait imaginer d'autres utilisations, par exemple une version dédiée à la pêche qui permettrait de poster sur un site web le poids et la localisation du poisson pêché.


Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.