Go Down

Topic: Usando l'amplificatore HX711 ed una cella di carico non leggo nessun peso (Read 206 times) previous topic - next topic

kchessa

Ho collegato alla scheda Arduino un 'amplificatore HX711 ed una cella di carico ma non leggo nessun peso
Code: [Select]
#include <HX711.h>

#define DOUT 2
#define SCK 3
HX711 scale(DOUT, SCK);



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

}

long val = 0;
float count =0;

void loop() {

val = scale.read();
 
  Serial.println(val - 8388607);
}


usando questo codice leggo un valore che ho portato a zero sottraendolo ma poi sollecitando la cella di carico la lettura rimane a zero, ho allegato il tipo di cella di carico che sto usando, ho provato a collegare anche l'altro tipo di cella di carico che ho, ma il risultato è stato lo stesso per il collegamento mi sono basato su queste informazioni

Nodo di Wheatstone Bridge   Colore filo "tipico"
Eccitazione + (E +) o VCC   ROSSO
Eccitazione- (E-) o GND   NERO o GIALLO
Uscita + (O +), Segnale + (S +) o Amplificatore + (A +)   BIANCA
O-, S- o A-   VERDE o BLU

ho allegato la foto della cella da 220 kg che sto collegando e la foto della seconda cella che ho provato a collegare per la seconda cella ne ho collegate 4 come da schema allegato.

ho provato a cercare sul forum ma non ho trovato casi simili al mio

steve-cr

Il valore che stai leggendo in decimale ti dice che in binario è 111111111...ecc, cioè tutti con valore 1.
Quindi non può essere una lettura che, di solito, è un numero posizionato in mezzo e che non sta mai fermo, anche a causa del rumore di fondo.

Controlla i collegamenti, controlla se ci sono altre librerie per la tua schedina e quando leggerai un valore diverso da quello che stai leggendo adesso allora ci sei.
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

kchessa

Intanto grazie per la risposta, ho controllato e rifatto i collegamenti, ho aggiornato la libreria dell'amplificatore ma il problema continua leggo sempre 8388607 11111111111, mi sono arenato

steve-cr

Vedo dal tuo schema che hai usato A0 e A1.
Però sul programma hai D2 e D3...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

kchessa

si e vero ho provato prima su gli analogici e poi sui digitali per eliminare questo dubbio anche se non penso che ci sia una reale differenza, nel mio caso non è cambiato nulla, ovviamente ho spostato anche i fili

steve-cr

Ho una decina di quelle schedine, che costano meno di un euro, ma non ho mai avuto problemi. Io però uso celle a quattro fili, come quelle della tua prima foto.
Se non hai un'altra schedina non saprei cosa pensare

Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

kchessa

io ora ho collegato una cella a 4 fili a torsione ma il risultato non cambia

steve-cr

Io ho usato questo programma, provalo.


Code: [Select]

/*
 * circuits4you.com
 * 2016 November 25
 * Load Cell HX711 Module Interface with Arduino to measure weight in Kgs
 Arduino
 pin
 2 -> HX711 CLK
 3 -> DOUT
 5V -> VCC
 GND -> GND
 
 Most any pin on the Arduino Uno will be compatible with DOUT/CLK.
 The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine.
*/
 
#include "HX711.h"  //You must have this library in your arduino library folder
 
#define DOUT  4
#define CLK  3
 
HX711 scale(DOUT, CLK);
 
//Change this calibration factor as per your load cell once it is found you many need to vary it in thousands
float calibration_factor = -245500; //-106600 worked for my 40Kg max scale setup
 
void setup() {
  Serial.begin(9600);
  Serial.println("HX711 Calibration");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press t for tare");
  scale.set_scale();
  scale.tare(); //Reset the scale to 0
 
  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}
 
void loop() {
 
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
 
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 3);
  Serial.print(" kg"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();
 
  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
    else if(temp == 's')
      calibration_factor += 100; 
    else if(temp == 'x')
      calibration_factor -= 100; 
    else if(temp == 'd')
      calibration_factor += 1000; 
    else if(temp == 'c')
      calibration_factor -= 1000;
    else if(temp == 'f')
      calibration_factor += 10000; 
    else if(temp == 'v')
      calibration_factor -= 10000; 
    else if(temp == 't')
      scale.tare();  //Reset the scale to zero
  }
}
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"


kchessa

ho provato ma leggo sempre zero indipendentemente se carico o meno la cella

steve-cr

Mi sembra chiaro che dovrai prendere un altro HX711 percé quello che hai sembra non funzionare...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

kchessa

direi anche io grazie al momento per l' interessamento appeno avrò aggiornamenti li comunicherò

Go Up