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:
Fri Jul 17 13:51:10 2015 +0000
Revision:
2:5d57c2060e7b
Parent:
1:5a1ec06c8cc9
Version 3.0 Ajout fonction getSignedValue() afin de r?cup?rer la valeur sign?e de l'ADC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Volt72 0:aa9794dcf489 1 #include "HX711.h"
Volt72 0:aa9794dcf489 2
Volt72 0:aa9794dcf489 3 HX711::HX711(PinName pin_dout, PinName pin_slk) :_pin_dout(pin_dout), _pin_slk(pin_slk)
Volt72 0:aa9794dcf489 4 {
Volt72 0:aa9794dcf489 5 _pin_slk = 1;
Volt72 0:aa9794dcf489 6 wait_ms(100);
Volt72 0:aa9794dcf489 7 _pin_slk = 0;
Volt72 0:aa9794dcf489 8
Volt72 0:aa9794dcf489 9 averageValue();
Volt72 0:aa9794dcf489 10 this->setOffset(averageValue());
Volt72 0:aa9794dcf489 11 this->setScale(1);
Volt72 0:aa9794dcf489 12 }
Volt72 0:aa9794dcf489 13
Volt72 0:aa9794dcf489 14 HX711::~HX711()
Volt72 0:aa9794dcf489 15 {
Volt72 0:aa9794dcf489 16
Volt72 0:aa9794dcf489 17 }
Volt72 0:aa9794dcf489 18
Volt72 0:aa9794dcf489 19 long HX711::averageValue(unsigned char times)
Volt72 0:aa9794dcf489 20 {
Volt72 0:aa9794dcf489 21 long sum = 0;
Volt72 0:aa9794dcf489 22 for (unsigned char i = 0; i < times; i++)
Volt72 0:aa9794dcf489 23 {
Volt72 0:aa9794dcf489 24 sum += getValue();
Volt72 0:aa9794dcf489 25 }
Volt72 0:aa9794dcf489 26
Volt72 0:aa9794dcf489 27 return sum / times;
Volt72 0:aa9794dcf489 28 }
Volt72 0:aa9794dcf489 29
Volt72 0:aa9794dcf489 30 long HX711::getValue()
Volt72 0:aa9794dcf489 31 {
Volt72 0:aa9794dcf489 32 long valeur = 0;
Volt72 0:aa9794dcf489 33
Volt72 0:aa9794dcf489 34 while (_pin_dout)
Volt72 0:aa9794dcf489 35 ;
Volt72 0:aa9794dcf489 36
Volt72 0:aa9794dcf489 37 for (int i=0;i<24;i++)
Volt72 0:aa9794dcf489 38 {
Volt72 0:aa9794dcf489 39 _pin_slk = 1;
Volt72 0:aa9794dcf489 40 valeur=valeur<<1;
Volt72 0:aa9794dcf489 41 _pin_slk = 0;
Volt72 0:aa9794dcf489 42 if(_pin_dout) valeur++;
Volt72 0:aa9794dcf489 43 }
Volt72 0:aa9794dcf489 44
Volt72 0:aa9794dcf489 45 _pin_slk = 1;
Volt72 0:aa9794dcf489 46 _pin_slk = 0;
Volt72 0:aa9794dcf489 47
Volt72 0:aa9794dcf489 48 valeur=valeur^0x800000;
Volt72 0:aa9794dcf489 49
Volt72 0:aa9794dcf489 50 return valeur;
Volt72 0:aa9794dcf489 51 }
Volt72 0:aa9794dcf489 52
Volt72 2:5d57c2060e7b 53 long HX711::getSignedValue()
Volt72 2:5d57c2060e7b 54 {
Volt72 2:5d57c2060e7b 55 return (getValue()-0x7FFFFF);
Volt72 2:5d57c2060e7b 56 }
Volt72 2:5d57c2060e7b 57
Volt72 0:aa9794dcf489 58 void HX711::setOffset(long offset)
Volt72 0:aa9794dcf489 59 {
Volt72 0:aa9794dcf489 60 _offset = offset;
Volt72 0:aa9794dcf489 61 }
Volt72 0:aa9794dcf489 62
Volt72 0:aa9794dcf489 63 void HX711::setScale(float scale)
Volt72 0:aa9794dcf489 64 {
Volt72 0:aa9794dcf489 65 _scale = scale;
Volt72 0:aa9794dcf489 66 }
Volt72 0:aa9794dcf489 67
Volt72 1:5a1ec06c8cc9 68 int HX711::getGram()
Volt72 0:aa9794dcf489 69 {
Volt72 1:5a1ec06c8cc9 70 long val = (getValue() - _offset);
Volt72 1:5a1ec06c8cc9 71 return (int)((val/_scale)*1000);
Volt72 0:aa9794dcf489 72 }