Librairie pouvant être utilisée avec le module HX711. Library which can be used with the HX711 component.

Dependents:   11B_DOGFEEDER 10B_Project_strian_guage_final Project_strian_guage_final 11A_ForcePlate_by_LoadCell ... more

Photo

/media/uploads/Volt72/hx711petit.jpeg

Schema

/media/uploads/Volt72/schemahx711module.jpg

Utilisation

Datasheet du composant : https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf

Pour utiliser le module sous une tension de 3,3V, il faut préalablement modifier le pont de résistances R12, R13 en modifiant R13 par une résistance de 20kOhms.

Tel que le module est câblé, la fréquence d'échantillonnage maximale d'un capteur est de 10Hz.

Dans l'exemple ci-dessous les paramètres d'échelle et d'offset sont fixes. Les fonctions de réglages d'offset et d'échelle ne sont pas utilisés.

Code d'utilisation simple en utilisant seulement getValue()

#include "mbed.h"
#include "HX711.h"

Serial pc(USBTX,USBRX);         // Déclaration du port série USB

HX711 Balance(PTD0,PTD5);       // Déclaration de l'objet HX711

int main() 
{
    pc.printf("\nDebut Enregistrement\n");
    
    long valeur;
    long valeurTare;
    long float poids;
    
    valeurTare = Balance.getValue();                                           // On récupère la valeur de la Tare
    while (true) 
    {
        wait_ms(200);                                                       // Attente de 200 millisecondes
        valeur = Balance.getValue();                                        // On récupère la valeur du module
        poids = ((long float)valeur-(long float)valeurTare)/143200;         // Convertionde la valeur de l'ADC en grammes
        pc.printf("Valeur : %ld          Poids : %.3lf\n",valeur,poids);    // Affichage du poids
    }
    
    pc.printf("\nFin Enregistrement\n");
}

Committer:
Volt72
Date:
Thu Jul 16 12:29:39 2015 +0000
Revision:
1:5a1ec06c8cc9
Parent:
0:aa9794dcf489
Child:
2:5d57c2060e7b
Version 2.0 Ajout fonction de r?cup?ration des grammes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Volt72 0:aa9794dcf489 1 #include "mbed.h"
Volt72 0:aa9794dcf489 2
Volt72 0:aa9794dcf489 3 /** Librairie Composant HX711
Volt72 0:aa9794dcf489 4 *
Volt72 0:aa9794dcf489 5 * La classe HX711 est utilisée avec le composant du même nom
Volt72 0:aa9794dcf489 6 * Lien Datasheet : http://www.dfrobot.com/image/data/SEN0160/hx711_english.pdf
Volt72 0:aa9794dcf489 7 * Convertisseur Analogique/Numérique 24 bits
Volt72 0:aa9794dcf489 8 *
Volt72 0:aa9794dcf489 9 * Mesure expérimentale personnelle :
Volt72 0:aa9794dcf489 10 * Erreur relative d'environ 500 points sur 16777216 soit environ 0.00003% d'erreurs (9 bits inutiles)
Volt72 0:aa9794dcf489 11 * Utilisé avec un capteur de poids 0-30kg, précision a +/- 2g près
Volt72 0:aa9794dcf489 12 *
Volt72 0:aa9794dcf489 13 * CORVASIER ADRIEN
Volt72 0:aa9794dcf489 14 * INRA - St Gilles
Volt72 0:aa9794dcf489 15 */
Volt72 0:aa9794dcf489 16
Volt72 0:aa9794dcf489 17 class HX711
Volt72 0:aa9794dcf489 18 {
Volt72 0:aa9794dcf489 19 public:
Volt72 0:aa9794dcf489 20 /** Constructeur de l'objet HX711
Volt72 0:aa9794dcf489 21 *
Volt72 0:aa9794dcf489 22 * @param pin_din : Pin assigné à la broche DT de la carte HX711
Volt72 0:aa9794dcf489 23 * @param pin_slk : Pin assigné à la broche d'horloge SCK de la carte HX711
Volt72 0:aa9794dcf489 24 * @returns aucun
Volt72 0:aa9794dcf489 25 */
Volt72 0:aa9794dcf489 26 HX711(PinName pin_din, PinName pin_slk);
Volt72 0:aa9794dcf489 27 /** Destructeur de l'objet HX711
Volt72 0:aa9794dcf489 28 *
Volt72 0:aa9794dcf489 29 * @param numero : Numéro que l'on souhaite assigné
Volt72 0:aa9794dcf489 30 * @returns numero
Volt72 0:aa9794dcf489 31 */
Volt72 0:aa9794dcf489 32 virtual ~HX711();
Volt72 0:aa9794dcf489 33 /** Fonction permettant de déclencher la convertion et de récupérer la valeur mesurée
Volt72 0:aa9794dcf489 34 *
Volt72 0:aa9794dcf489 35 * @param aucun
Volt72 0:aa9794dcf489 36 * @returns long Valeur mesurée sur un entier de type long
Volt72 0:aa9794dcf489 37 */
Volt72 0:aa9794dcf489 38 long getValue();
Volt72 0:aa9794dcf489 39 /** Fonction permettant de déclencher la convertion d'une série de mesure et ensuite de moyenner
Volt72 0:aa9794dcf489 40 *
Volt72 0:aa9794dcf489 41 * @param unsigned char Nombres de mesures à moyenner
Volt72 0:aa9794dcf489 42 * @returns long Valeur mesurée et moyennée sur un entier de type long
Volt72 0:aa9794dcf489 43 */
Volt72 0:aa9794dcf489 44 long averageValue(unsigned char times = 32);
Volt72 0:aa9794dcf489 45 /** Fonction permettant de régler l'offset pour la convertion en grammmes
Volt72 0:aa9794dcf489 46 *
Volt72 0:aa9794dcf489 47 * @param long Offset de décalage
Volt72 0:aa9794dcf489 48 * @returns aucun
Volt72 0:aa9794dcf489 49 */
Volt72 0:aa9794dcf489 50 void setOffset(long offset);
Volt72 0:aa9794dcf489 51 /** Fonction permettant de régler l'échelle pour la convertion en grammmes
Volt72 0:aa9794dcf489 52 *
Volt72 0:aa9794dcf489 53 * @param long Echelle de convertion
Volt72 0:aa9794dcf489 54 * @returns aucun
Volt72 0:aa9794dcf489 55 */
Volt72 0:aa9794dcf489 56 void setScale(float scale);
Volt72 0:aa9794dcf489 57 /** Fonction permettant de récupérer la mesure directement en grammes
Volt72 0:aa9794dcf489 58 *
Volt72 0:aa9794dcf489 59 * @param aucun
Volt72 1:5a1ec06c8cc9 60 * @returns int Grammes mesurés
Volt72 0:aa9794dcf489 61 */
Volt72 1:5a1ec06c8cc9 62 int getGram();
Volt72 0:aa9794dcf489 63
Volt72 0:aa9794dcf489 64 private: // Déclaration des propriétés de l'objet
Volt72 0:aa9794dcf489 65 DigitalIn _pin_dout; // Broche de donnée
Volt72 0:aa9794dcf489 66 DigitalOut _pin_slk; // Broche d'horloge
Volt72 0:aa9794dcf489 67 long _offset; // Offset pour la convertion en grammes
Volt72 0:aa9794dcf489 68 float _scale; // Echelle pour la convertion en grammes
Volt72 0:aa9794dcf489 69 };
Volt72 0:aa9794dcf489 70