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
Schema
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-17
- Revision:
- 2:5d57c2060e7b
- Parent:
- 1:5a1ec06c8cc9
File content as of revision 2:5d57c2060e7b:
#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; } long HX711::getSignedValue() { return (getValue()-0x7FFFFF); } 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); }