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");
}

HX711.cpp

Committer:
Volt72
Date:
2015-07-16
Revision:
1:5a1ec06c8cc9
Parent:
0:aa9794dcf489
Child:
2:5d57c2060e7b

File content as of revision 1:5a1ec06c8cc9:

#include "HX711.h"

HX711::HX711(PinName pin_dout, PinName pin_slk) :_pin_dout(pin_dout), _pin_slk(pin_slk)
{
    _pin_slk = 1;
    wait_ms(100);
    _pin_slk = 0;

    averageValue();
    this->setOffset(averageValue());
    this->setScale(1);
}

HX711::~HX711() 
{

}

long HX711::averageValue(unsigned char times)
{
    long sum = 0;
    for (unsigned char i = 0; i < times; i++)
    {
        sum += getValue();
    }

    return sum / times;
}

long HX711::getValue()
{
    long valeur = 0;

    while (_pin_dout)
        ;

    for (int i=0;i<24;i++)
    { 
        _pin_slk = 1;
        valeur=valeur<<1; 
        _pin_slk = 0;
        if(_pin_dout) valeur++; 
    } 

    _pin_slk = 1;
    _pin_slk = 0;

    valeur=valeur^0x800000;

    return valeur;
}

void HX711::setOffset(long offset)
{
    _offset = offset;
}

void HX711::setScale(float scale)
{
    _scale = scale;
}

int HX711::getGram()
{
    long val = (getValue() - _offset);
    return (int)((val/_scale)*1000);
}