[OPGELOST] Weegschaal sensor en arduino

Hallo allemaal,
Ik ben nieuw op dit forum en zit hopeloos vast met mijn project. Mijn doel is om door middel van arduino en de sensor uit een digitale bagageweegschaal de kracht die uitgeoefend wordt op een koord te meten. Mijn probleem is dat de uitgelezen waardes totaal niet kloppen en ik vroeg me af of jullie mij verder kunnen helpen!

Hieronder zal ik mijn opstelling en code toelichten.
Hieronder de digitale bagageweegschaal die ik gebruik, en wat er te zien is als je hem open maakt:


Ik heb volgens de tutorial die te vinden is op deze link de sensor bekabeld. Ik heb gebruik gemaakt van de hx711 versterker en mijn arduino uno:

En dan mijn meetopstelling: ik heb de bagageweegschaal die verbonden is met de arduino gefixeerd, en door met een andere bagageweegschaal (overigens hetzelfde product) te meten hoeveel kracht ik zet is deze waarde te vergelijken met de waarde die mijn seriele monitor uitleest.

Het probleem: die waarde klopt van geen kant zodra je kracht zet. Zoals te zien is leest mijn seriele monitor rond de 130 / 140 gram uit wanneer ik ongeveer 5 kilo kracht zet. Soms doet hij ook wel eens helemaal niks. Maar meestal is de geprintte waarde gewoon onrealistisch laag.

De code die ik heb gebruikt komt uit de gebruikte tutorial:

#include <Hx711.h>
Hx711 scale(A2, A3);

void setup() {
Serial.begin(9600);
}

void loop() {
Serial.print(scale.getGram(), 1);
Serial.println(" g");
delay(200);
}

De library die ik heb gebruikt komt ook uit deze tutorial.
Omdat de snelheid van de sensor erg tegenviel heb ik het een en ander veranderd aan de HX711 module en de libary, namelijk:
-HX711 module: ik heb de de puntjes van 80 hz aan elkaar verbonden, en de weerstand van 10 hz verwijderd. (Op aanraden van mijn leverancier zo gedaan: “deze module staat standaard op 10hz, deze kan worden ingesteld op 80hz indien u kunt solderen. Rechtsboven zit een weerstand met een 0 erop (heel klein) met de tekst 10hz eronder. Daarnaast zitten 2 puntjes met de tekst 80hz ernaast. Wanneer je de weerstand losmaakt en de puntjes van 80hz verbind, zal de module 8 keer zo snel worden.”

-HX711 libary: op aanraden van mensen uit dit topic heb ik het bestand Hx711.h uit de library geopend en de regel " long averageValue(byte times = 25); " veranderd, ik heb nummer 25 in 2 veranderd.

Uiteraard ben ik bekend met de datasheet van de hx711 module maar ik ben niet opgeleid in dit vakgebied, dus het zou heel goed kunnen dat ik bepaalde dingen niet goed begrepen heb of er overheen gelezen heb.

Ik hoop dat jullie mij verder kunnen helpen om de uitgelezen waardes correct te krijgen! Alvast heel hartelijk bedankt!’

ps. is het toegestaan om dit topic ook op het internationale forum te plaatsen? Ik ben niet zo heel erg goed in Engels vandaar dat ik het eerst op dit forum wilde proberen. Alvast bedankt!

VOlgens mij moet je ook calibratie code opnemen in de software waardoor de opamp een vermenigvuldiging geeft van de gemeten waarde naar de juiste spanning voor het gewicht. Nu zie ik die gain nergens in jouw code.

Je kan proberen dit in de setup te zetten:

scale.setGain(32);

nicoverduin: VOlgens mij moet je ook calibratie code opnemen in de software waardoor de opamp een vermenigvuldiging geeft van de gemeten waarde naar de juiste spanning voor het gewicht. Nu zie ik die gain nergens in jouw code.

Je kan proberen dit in de setup te zetten:

scale.setGain(32);

Beste nicoverduin, bedankt voor uw snelle reactie! Ik krijg de volgende foutmelding wanneer ik de bovenstaande code in de setup zet:

Class Hx711 has no menber named setGain

Waar heb je de library vandaan. Ik keek duidelijk op een ander.

Dit is de library die ik gebruikt heb: https://drive.google.com/file/d/0ByRIq5k2wjcSQXhXQTl2NzhkMHc/view

Gevonden via deze tutorial: http://arduinotronics.blogspot.nl/2015/06/arduino-hx711-digital-scale.html

Heb je misschien tips voor een andere libary? Opnieuw bedankt! :)

het is setScale

Bedankt voor jullie reacties! Het is me inmiddels wel duidelijk dat het waarschijnlijk aan de calibratiefactor ligt, die in deze bovenstaande code 1990 was. Gister de hele dag aan "geprutst", maar het lukt me maar niet om de juiste factor te vinden. (het blijft gokken en ik heb ook geen idee in welke richting ik het moet zoeken) Ik heb onder andere de calibratieroutine van Sparkfun geprobeerd. Verder heb ik ook een paar nieuwe hx711 modules besteld om uit te sluiten dat het niet komt door mijn aanpassingen aan deze module.

Gebruik de bijgevoegde bilbliotheek

Belangrijk is eerst de juiste kalibratiefactor te zoeken anders blijf je zoeken.

Probeer dan deze sketch met je load cell:

#include <HX711.h>

float Gewicht = 0;
const float calibration_factor = 218.25; //Zelf te zoeken met de Calibration sketch

#define DOUT  36 // Pinnen kan je aanpassen naar het bord dat je gebruikt
#define CLK  37

HX711 scale(DOUT, CLK);

void setup() {

Serial.begin(9600);
long zero_factor = scale.read_average(5);

  scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scale.set_offset(zero_factor);
  scale.tare();
}

void loop() {
 
Gewicht = scale.get_units() ;
Serial.print(Gewicht,0); // haal de nul weg als je tot op 2 cijfers na de comma wil lezen. 
Serial.println(" gr");
}

HX711_master.zip (17.4 KB)

elke weegschaal heeft 2 punten nodig om goed te functioneren, en dat zijn het nulpunt (dat is ook een getal natuurlijk waar de lijn begint. en de span waarbij je een bepaald gewicht op de schaal zet (bijvoorbeeld een pak suiker) dat is een ander getal. daar trek je een lijn door en dan weet je voor alle tussenliggende punten precies wat het gewicht is. je kunt daarvoor MAP(.......) gebruiken.

Bedankt voor jullie hulp!! De code van benovitch werkt perfect. Uiteindelijk bleek mijn calibratiefactor 60 te zijn, en ik ben met andere codes die ik geprobeerd had nooit in de buurt van dit getal gekomen. Dankzij de code van benovitch wel :) Hartelijk bedankt voor alle hulp!