Ciao ragazzi,
sto cercando di realizzare un progetto per la pesatura e separazione automatica di oggetti... ma non sto a dilungarmi molto su come funziona, cosa farà ecc ecc...
in breve:
ho una bilancia di precisione centesimale (cinese) che funziona davvero bene con una cella di carico da 10g e precisione -+ 0,002 gr da cui vorrei estrapolare le letture.
un volta smembrata la bilancia,fatti i collegamenti con i 4 fili ad un load cell amp (HX711), ho realizzato (cercando qua e la) uno sketch per leggere le pesate e fin qui tutto bene.
il mio primo scoglio è la sensibilità della cella di carico o meglio, la cella deve essere in grado di leggere valori centesimali e lo fa, ma gli ultimi due valori (es. 0,5XX g) ballano troppo, li legge ma continuano a variare.
questi due valori sono fondamentali per stabilire delle logiche.
1 - c'è un modo per far si che siano più stabili?
2 - c'è la possibilità di leggere i valori dal display o dalla scheda integrata prendendo da questa il segnale?
3- c'è la possibilità di leggere i valori con una microcamera puntata sul display?
metto lo sketch che ho usato,lo schema ed alcune foto....
(la libreria HX711.h ho dovuto rinominarla in HX711_MCC.h in quanto andava in conflitto con quelli installati di arduino, non chiedetemi come mai perchè non lo so ancora)
/*
* 04 Aprile 2020
* 10 gr Load Cell HX711 Module Interface with Arduino to measure weight in gr
* Arduino
* HX711 --- Pin 2 -> CLK --- Pin 3 -> DOUT --- 5V -> VCC --- GND -> GND
* Lcd I2C --- Pin A4 -> SDA --- Pin A5 -> SCL --- 5V -> VCC --- GND -> GND
* JOYSTICK --- Pin 4 -> SW --- 5V -> VCC --- GND -> GND
*/
#include "HX711_MCC.h"
#define DOUT 3
#define CLK 2
HX711 scale(DOUT, CLK);
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);
float calibration_factor = -40217; // -38000 valore ottenuto con il programma 000_calcolo parametro
float zero_factor = 91300;
const int SW = 4; // pin del pulsante per azzerare la lettura
void setup()
{
Wire.begin();
Wire.beginTransmission(0x27);
pinMode(SW, INPUT_PULLUP);
lcd.setBacklight(200); // retroilluminazine schermo
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Salmi 10g. Cell");
lcd.setCursor(0,1);
lcd.print("Premi per tarare");
scale.set_scale(-40280); // -40132.90 inserire 10 avviare lo sketch, leggere il valore e inserirlo
scale.tare();
delay (2000);
}
void loop()
{
lcd.setCursor(0,1);
lcd.print("Peso ");
lcd.setCursor(6,1);
lcd.print(scale.get_units(),3); // valori decimali dopo la virgola
lcd.println(" gr. ");
int x = digitalRead(SW);
if(x == LOW)
{
scale.tare();
}
}
Grazie a tutti per l'aiuto