Bilancia digitale con cella di carico e Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post impareremo a conoscere le celle di carico basate su estensimetri. Esploreremo cos'è lo strain Gauge, cos'è la cella di carico, l'effetto della temperatura sull'estensimetro, la compensazione della temperatura con il ponte di Wheatstone e l'amplificatore per cella di carico HX711, e infine impareremo come costruire una bilancia basata su Arduino implementando la cella di carico come il sensore di peso.

Questo post si occupa della misurazione del peso e dei metodi di misurazione e dell'implementazione dei metodi in un circuito di bilancia basato su Arduino.



A tutti noi piace vedere il nostro peso indipendentemente dalla nostra età, un bambino piccolo potrebbe amare vedere il suo aumento di peso e gli adulti potrebbero amare vedere la sua perdita di peso. Il peso è un concetto vitale sin dai tempi antichi che ha aiutato nel commercio di merci, nello sviluppo di attrezzature scientifiche e prodotti commerciali.

Nei tempi moderni, misuriamo i pesi in chilogrammi, milligrammi e persino microgrammi per scopi di laboratorio. Un grammo è lo stesso in tutto il mondo, tutti i dispositivi di misurazione del peso devono misurare lo stesso. La produzione di massa di una pillola con una piccola differenza di pochi milligrammi di dosaggio è sufficiente per trasformare una pillola salvavita in una pillola suicida.



Cos'è il peso?

Il peso è la forza esercitata su un aereo. La quantità di forza esercitata è direttamente proporzionale alla massa di un oggetto, il che significa che maggiore è la massa dell'oggetto, maggiore è la forza esercitata.

La massa è la quantità di materia fisica presente in un oggetto.

Il peso dipende da un altro fattore: la gravità.

La gravità è costante in tutto il globo (ci sono piccole variazioni di gravità dovute alla forma sferica non uniforme della terra, ma è molto piccola). Il peso di 1 kg sulla terra peserà 160 grammi sulla luna con la stessa identica massa, perché la luna ha un'attrazione gravitazionale molto più debole.

Ora sai cos'è il peso e quali sono i fattori che rendono un oggetto pesante.

Cos'è l'estensimetro:

L'estensimetro è un trasduttore o un sensore che misura la deformazione (deformazione) su un oggetto. Questo è stato inventato dall'ingegnere elettrico Edward E. Simmons e dall'ingegnere meccanico Arthur Claude Ruge.

Illustrazione dell'estensimetro:

Sensore estensimetrico

L'estensimetro è flessibile, è una sottile lamina metallica inserita tra due sottili fogli di plastica e deve essere fissata su una superficie utilizzando colla adatta o qualsiasi materiale adesivo.

Quando applichiamo un peso o una forza sulla superficie, si deforma e si deforma anche l'estensimetro. La deformazione dell'estensimetro fa variare la resistenza elettrica della lamina metallica.

Ora la variazione della resistenza dell'estensimetro è direttamente proporzionale al peso o alla forza applicata sulla superficie.

Nella vita reale il cambiamento nella resistenza dell'estensimetro è molto insignificante da rilevare. Per rilevare piccoli cambiamenti nella resistenza stiamo utilizzando il ponte di Wheatstone.

Esploriamo in poche parole cos'è il ponte di Wheatstone.

Capire un ponte di Wheatstone:

Un ponte in pietra di grano è un circuito che può essere utilizzato per determinare una resistenza sconosciuta. Il ponte di Wheatstone fu ideato da Samuel Hunter Christie, in seguito il ponte di Wheatstone fu migliorato e diffuso da Sir Charles

Wheatstone.

Illustrazione del circuito del ponte di Wheatstone:

Circuito del ponte di Wheatstone

I nostri moderni multimetri digitali possono leggere il valore di resistenza che va da mega ohm, chilo ohm e gamma di ohm.

Usando il ponte in pietra di grano possiamo misurare la resistenza nell'intervallo di milli ohm.

Il ponte in pietra di grano è composto da 4 resistenze, delle quattro, 3 sono resistenza note e una è resistenza sconosciuta.

La differenza di potenziale (tensione) viene applicata sui punti “A” e “C” e dai punti “B” e “D” viene collegato un voltmetro.

Se tutte le resistenze sono uguali nessuna corrente scorrerà nei punti “B” e “D” e il voltmetro leggerà zero. Questo è chiamato ponte bilanciato.

Se la resistenza di un resistore è diversa da altre tre resistenze, ci sarà un flusso di tensione tra i punti 'B' e 'D' e il voltmetro leggerà un valore proporzionale alla resistenza sconosciuta. Questo è chiamato ponte sbilanciato.

Qui la resistenza sconosciuta è l'estensimetro, quando la resistenza viene modificata, si riflette sul voltmetro.

Ora, abbiamo convertito una deformazione, un peso o una forza in un segnale di tensione. Questa tensione deve essere amplificata per ottenere alcune letture utili, che verranno inviate a un microcontrollore per ottenere le letture in grammi.

Ora parliamo di come la temperatura influisce sulle prestazioni degli estensimetri.

Effetti della temperatura sugli estensimetri:

L'estensimetro è sensibile alla temperatura e può alterare le letture di peso / forza effettive. Quando c'è una variazione della temperatura ambiente la lamina metallica subisce un'espansione metallica, che influisce direttamente sulla resistenza.

Possiamo annullare l'effetto della temperatura usando il ponte di Wheatstone. Vediamo come possiamo compensare la temperatura utilizzando il ponte di Wheatstone.

Compensazione della temperatura:

Possiamo facilmente neutralizzare l'effetto della temperatura sostituendo tutte le resistenze con estensimetri. Ora tutta la resistenza dell'estensimetro sarà influenzata dalla temperatura in modo uguale e il rumore indesiderato sarà annullato dal carattere del ponte di Wheatstone.

Cos'è una cella di carico?

Una cella di carico è un profilo in alluminio con estensimetro fissato su 4 lati nella configurazione a ponte di Wheatstone.

Illustrazione della cella di carico:

Dispositivo a cella di carico

Questo tipo di cella di carico è rigida e comunemente utilizzata nelle industrie. Ci sono 4 supporti a vite, un lato è imbullonato a una superficie fissa e l'altra estremità è imbullonata a un supporto (ad esempio cesto) per contenere l'oggetto da misurare.

Ha il peso massimo specificato sulla scheda tecnica o sul corpo, il superamento delle specifiche potrebbe danneggiare la cella di carico.

Una cella a ponte intero è composta da 4 terminali e cioè E +, E-, che sono fili di eccitazione attraverso i quali viene applicata la tensione di alimentazione. Gli altri due fili sono S + e S-, che sono fili di segnale, da cui viene misurata la tensione.

Ora queste tensioni sono nell'intervallo di millivolt non abbastanza forti da consentire a un microcontrollore di leggere ed elaborare. Abbiamo bisogno di amplificazione e piccoli cambiamenti dovrebbero essere visibili al microcontrollore. Per fare questo ci sono moduli dedicati chiamati amplificatori a celle di carico, diamo una panoramica su questo.

Amplificatore a cella di carico HX711:

Illustrazione del modulo amplificatore cella di carico HX711:

Amplificatore a cella di carico HX711

L'amplificatore della cella di carico si basa sull'IC HX711 che è un convertitore da analogico a digitale a 24 bit progettato specificamente per le misure di peso. Ha diversi guadagni selezionabili 32, 64 e 128 e funziona da 2,6 a 5,5 V.
Questa scheda breakout aiuta a rilevare piccole variazioni sulla cella di carico. Questo modulo richiede la libreria HX711.h per funzionare

Arduino o qualsiasi altro microcontrollore.

La cella di carico sarà collegata al modulo HX711 e il modulo sarà interfacciato con Arduino. Il circuito di misurazione del peso deve essere sviluppato in questo modo.

In conclusione, ora sai cos'è l'estensimetro, cos'è il ponte di Wheatstone, gli effetti della temperatura sull'estensimetro, la compensazione della temperatura e cos'è l'amplificatore della cella di carico.

Abbiamo compreso a fondo la parte teorica del progetto di una bilancia dalla discussione sopra, ora vediamo come una cella di loas può essere utilizzata per realizzare una pratica bilancia con Arduino

Progettazione di una bilancia digitale utilizzando Arduino

Nelle discussioni seguenti impareremo come costruire una bilancia digitale utilizzando Arduino in grado di misurare pesi da pochi grammi a 40 Kg (a seconda delle specifiche della cella di carico) con ragionevole precisione. Apprenderemo la classificazione delle celle di carico di precisione e calibreremo il circuito proposto e finalizzeremo la macchina della bilancia.

Nota: questo circuito potrebbe non essere conforme agli standard richiesti per l'implementazione commerciale.

Le macchine per bilance sono utilizzate in diverse varietà di mestieri e ricerche che vanno dai milligrammi a diverse tonnellate. La scala massima della bilancia della macchina proposta dipende dalle specifiche della cella di carico. Ci sono gamme da 500 grammi, 1 Kg, 5Kg, 10 Kg, 20 Kg e 40 Kg ecc.

Esistono diversi gradi di celle di carico, offrono un intervallo di precisione diverso e dovresti scegliere quello adatto al tuo progetto.

Classificazione della classe di precisione della cella di carico:

Le diverse classi di precisione sono definite per diversi tipi di applicazioni. La classificazione seguente va dalla precisione più bassa alla gamma di precisione più alta.

Le celle di carico con minore accuratezza (ma ragionevolmente accurate) sono classificate come D1, C1 e C2. Questo è sufficiente per questo progetto. Queste celle di carico vengono utilizzate per misurare il peso di sabbia, cemento o acqua.

Le celle di carico di grado C3 vengono utilizzate nell'assicurazione della qualità come il controllo del peso dei cuscinetti a sfera, delle parti di costruzioni di macchine, ecc.

C4, C5, C6 sono la migliore precisione della categoria, questi gradi di celle di carico vengono utilizzati per misurare da grammi a microgrammi. Queste classi di qualità sono utilizzate nelle bilance da banco, nel monitoraggio della produzione su larga scala, nell'imballaggio degli alimenti e nell'uso di laboratorio, ecc.

Ora passiamo ai dettagli tecnici del progetto.

Schema elettrico:

Collegamento cella di carico HX711 ad Arduino e cella di carico.

Collegamento cella di carico HX711 ad Arduino e cella di carico.

Il progetto consiste in una scheda amplificatore Arduino, cella di carico e cella di carico HX711 e un computer. L'output può essere monitorato sul monitor seriale dell'IDE di Arduino.

Il cervello del progetto è come sempre arduino, puoi utilizzare qualsiasi modello di scheda Arduino. L'HX711 è un ADC a 24 bit, che può trovare il minimo flex a causa del peso sulla cella di carico. Può funzionare da 2,7 V a 5 V. L'alimentazione è fornita dalla scheda Arduino.

La cella di carico ha generalmente quattro fili, che è l'uscita dall'estensimetro configurato a ponte di Wheatstone.

Il filo rosso è E +, il filo nero è E-, il filo verde è A- e il filo bianco è A +. Alcuni moduli HX711 specificano il nome dei terminali della cella di carico e alcuni moduli HX711 specificano i colori dei fili, tale modello è illustrato nello schema elettrico.

Il pin DATA di HX711 è collegato al pin # 3 di Arduino e il pin Clock di HX711 è collegato al pin # 2 di Arduino.

Come montare la cella di carico:

come installare una cella di carico con Arduino

La cella di carico ha quattro fori per le viti, due su entrambi i lati. Qualsiasi lato deve essere fermo per la massima precisione può essere montato su un legno di peso ragionevole.

È possibile utilizzare un legno sottile o un piatto sottile per sostenere il peso di misurazione come illustrato sopra.

Quindi, quando si posiziona un peso, la cella di carico si piega così come l'estensimetro e cambia la sua resistenza che viene misurata dal modulo HX711 e inviata ad Arduino.

Una volta completata la configurazione dell'hardware, carichiamo il codice e calibriamo.

Calibrazione del circuito:

Ci sono due programmi uno è il programma di calibrazione (trovare il fattore di calibrazione). Un altro codice è il programma di misurazione del peso, il fattore di calibrazione trovato dal codice del programma di calibrazione deve essere inserito nel programma di misurazione del peso.

Il fattore di calibrazione determina la precisione della misurazione del peso.

Scarica la libreria HX711 qui: github.com/bogde/HX711

Codice del programma di calibrazione:

//-------------------- --------------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -96550
char var
void setup()
{
Serial.begin(9600)
Serial.println('------------- Weight Scale Calibration --------------')
Serial.println('Press Q,W,E,R or q,w,e,r to increase calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press A,S,D,F or a,s,d,f to decrease calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press 'T' or 't' for tare')
scale.set_scale()
scale.tare()
long zero_factor = scale.read_average()
Serial.print('Zero factor: ')
Serial.println(zero_factor)
}
void loop()
{
scale.set_scale(CalibrationFactor)
Serial.print('Reading: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
Serial.print('Calibration Factor is: ')
Serial.println(CalibrationFactor)
Serial.println('--------------------------------------------')
if (Serial.available())
{
var = Serial.read()
if (var == 'q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'a')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'w')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 's')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'e')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'd')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'r')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'f')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 'Q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'A')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'W')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 'S')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'E')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'D')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'R')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'F')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 't')
{
scale.tare()
}
else if (var == 'T')
{
scale.tare()
}
}
}
//-------------------- --------------------//

Come calibrare:

  • Dopo aver completato la configurazione dell'hardware, caricare il codice sopra.
  • Rimuovere la piastra sottile o il legno utilizzato per sostenere il peso comprese le due viti (l'altro lato della cella di carico deve essere fissato a una base)
  • Apri il monitor seriale.
  • Posiziona direttamente un peso noto sulla cella di carico, 100 grammi (diciamo).
  • stampa Q, W, E, R per aumentare il fattore di calibrazione rispettivamente di 10.100.1000.10000.
  • stampa A, S, D, F per diminuire il fattore di calibrazione rispettivamente di 10.100.1000.10000.
  • Premere 'Invio' dopo ogni incremento o decremento del fattore di calibrazione.
  • Aumentare o diminuire il fattore di calibrazione finché non viene visualizzato il peso corretto del materiale di peso noto.
  • La funzione Tara serve per azzerare la bilancia, utile quando si vuole misurare il peso dell'acqua (diciamo) senza il peso della ciotola. Posizionare prima la ciotola, premere tara e versare l'acqua.
  • Annotare il fattore di calibrazione e annotarlo dopo la visualizzazione del peso noto.

Ora può misurare pesi sconosciuti.

Codice del programma di misurazione del peso:

//---------------- ----------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
Serial.begin(9600)
Serial.println('Press 'T' or 't' to tare')
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
Serial.print('Weight: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
if (Serial.available())
{
char var = Serial.read()
if (var == 't')
{
scale.tare()
}
if (var == 'T')
{
scale.tare()
}
}
}
//---------------- ----------------//

float CalibrationFactor = -12000

Sostituisci -12000 con il fattore di calibrazione che hai trovato. Può essere un numero negativo o un numero positivo.

Carica il codice sopra con la configurazione hardware completa e la tua bilancia è pronta.

Macchina della bilancia con display LCD

L'articolo sopra ha spiegato un sistema di bilancia basato su Arduino utilizzando il tuo PC, nella sezione seguente proveremo a costruire una versione pratica della macchina per bilance aggiungendo display LCD 16 x 2, in modo da non dipendere da un PC durante la misurazione pesi. In questo articolo vengono proposte due versioni, una con display LCD 16 x 2 “I2C” e una senza display LCD 16 x 2 “I2C”.

Qui vengono fornite due scelte in modo che i lettori possano scegliere il design secondo loro conveniente. La principale differenza tra i due è il collegamento dei cavi con il modulo adattatore I2C, per il funzionamento del display LCD sono necessari solo 4 fili (Vcc, GND, SCL e SDA), mentre senza adattatore I2C sono necessari diversi fili per il collegamento tra Arduino e display LCD.

Tuttavia entrambe le funzioni sono esattamente le stesse, alcuni preferiscono I2C rispetto a uno convenzionale e alcuni preferiscono il viceversa, quindi ecco entrambi i modelli.

Diamo un'occhiata al design LCD convenzionale:

Schema elettrico:

arduino, display LCD 16 x 2 e potenziometro 10K per la regolazione del contrasto del display LCD

Nello schema sopra abbiamo l'arduino, il display LCD 16 x 2 e il potenziometro 10K per la regolazione del contrasto del display LCD.

3,3 V possono essere alimentati da Arduino al display LCD per la retroilluminazione. E 'previsto un pulsante per portare a zero la lettura del peso, questa funzione verrà spiegata in dettaglio alla fine.

Questa è solo la connessione tra LCD e Arduino, la connessione tra la cella di carico e l'amplificatore della cella di carico ad Arduino è mostrata nella sezione precedente.

Codice per macchina Bilancia LCD:

// -------- Program developed by R.GIRISH -------//
#include
#include
const int rs = 10
const int en = 9
const int d4 = 8
const int d5 = 7
const int d6 = 6
const int d7 = 5
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
lcd.begin(16, 2)
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0, 0)
lcd.print(' Weight Scale')
lcd.setCursor(0, 1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Tare ......')
lcd.setCursor(0, 1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

Ora vediamo come utilizzare questa bilancia con display LCD basato su adattatore I2C.

Schema del circuito Arduino e display LCD con adattatore I2C:

Display Arduino e LCD con adattatore I2C

Qui abbiamo solo un display Arduino e LCD con adattatore I2C sul retro. Ora i collegamenti dei cavi sono semplificati e diretti.

Illustrazione del modulo I2C:

Modulo I2C

Questo modulo può essere saldato direttamente sul retro di un normale display LCD 16 x 2 o anche 20 x 4 e seguire il diagramma schematico.

E ancora, fare riferimento alla sezione precedente per il collegamento della cella di carico, dell'amplificatore della cella di carico e di Arduino.

Scarica la seguente libreria per I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Codice per circuito bilancia basato su I2C:

// -------- Program developed by R.GIRISH -------//
#include
#include
#include
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0,0)
lcd.print(' Weight Scale')
lcd.setCursor(0,1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Tare ......')
lcd.setCursor(0,1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

NOTA:

È necessario inserire il fattore di calibrazione nel codice prima di caricare uno dei codici su Arduino.

float CalibrationFactor = -12000

L'ottenimento del fattore di calibrazione è spiegato in uno della sezione precedente sopra.

Funzione tara:

La funzione di tara in una bilancia è quella di portare le letture a zero. Ad esempio, se abbiamo un paniere in cui vengono caricate le merci, il peso netto sarà il peso del paniere + il peso delle merci.

Se premiamo il pulsante di tara con il cestello sulla cella di carico prima di caricare la merce, il peso del cestello verrà trascurato e potremo misurare il peso della sola merce.

In caso di domande su questo pratico circuito per bilance LCD basato su Arduino, si prega di esprimere nella sezione commenti si può ottenere una risposta rapida.




Precedente: Circuito contattore a stato solido per motopompe Avanti: Come realizzare trasformatori step-down