Escala de pesatge digital mitjançant cèl·lules de càrrega i Arduino

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest post aprendrem sobre les cèl·lules de càrrega basades en el mesurador de tensions. Explorarem què és el calibrador de tensió, què és la cèl·lula de càrrega, l’efecte de la temperatura sobre el calibrador de tensió, la compensació de la temperatura amb el pont de Wheatstone i l’amplificador de cèl·lules de càrrega HX711 i, finalment, aprendrem a construir una màquina de pesatge basada en el sensor de pes.

Aquest article tracta sobre la mesura de pes i els mètodes de mesura, i la implementació dels mètodes en un circuit basat en pesos basat en Arduino.



A tots ens agrada veure el nostre pes independentment de la nostra edat, a un nen petit li encantarà veure augmentar el seu pes i als adults li encantarà veure la seva pèrdua de pes. El pes està sent un concepte vital, ja que antigament ajudava al comerç de mercaderies, al desenvolupament d'equips científics i de productes comercials.

A l’època moderna mesurem pesos en quilograms, mil·ligrams fins i tot micrograms per al propòsit de laboratori. Un gram és igual a tot el món; tots els dispositius de mesura de pes han de mesurar el mateix. La producció en massa d'una píndola amb una petita diferència de pocs mil·ligrams de dosificació és suficient per fer una píndola de salvament a una píndola suïcida.



Què és el pes?

El pes és la força que s’exerceix sobre un pla. La quantitat de força que s’exerceix és directament proporcional a la massa d’un objecte, és a dir, més gran és la massa de l’objecte, més gran és la força que s’exerceix.

La massa és la quantitat de matèria física present en un objecte.

El pes depèn d’un factor més: la gravetat.

La gravetat és constant a tot el món (hi ha variacions menors en la gravetat a causa de la forma esfèrica no uniforme de la terra, però és molt petita). El pes d’1 kg a la terra pesarà 160 grams a la lluna amb la mateixa massa exacta, perquè la lluna té una atracció gravitatòria molt més feble.

Ara ja sabeu què és el pes i quins són els factors que pesen un objecte.

Què és l'indicador de tensió:

El tensímetre és un transductor o un sensor que mesura la deformació (deformació) d’un objecte. Això va ser inventat per l'enginyer elèctric Edward E. Simmons i l'enginyer mecànic Arthur Claude Ruge.

Il·lustració de l'indicador de tensió:

Sensor de tensió

El calibrador de deformació és flexible, és un estampat de làmina metàl·lica fina intercalat entre dues làmines de plàstic primes i s’ha d’adherir a una superfície mitjançant cola adequada o qualsevol material adhesiu.

Quan apliquem pes o força sobre la superfície, es deforma i el tensímetre també es deforma. La deformació del tensímetre fa que la resistència elèctrica de la làmina metàl·lica canviï.

Ara, el canvi de resistència del mesurador de tensió és directament proporcional al pes o a la força aplicada a la superfície.

A la vida real, el canvi de resistència del tensímetre és molt insignificant per detectar. Per detectar petits canvis en la resistència, estem utilitzant el pont de Wheatstone.

Explorem què és el pont de Wheatstone en poques paraules.

Comprendre un pont de Wheatstone:

Un pont de pedra de blat és un circuit que es pot utilitzar per determinar la resistència desconeguda. El pont de Wheatstone va ser ideat per Samuel Hunter Christie, més tard el pont de Wheatstone va ser millorat i difós per Sir Charles

Wheatstone.

Il·lustració del circuit del pont de Wheatstone:

Circuit de pont de Wheatstone

Els nostres multímetres digitals moderns poden llegir el valor de resistència que oscil·la entre els mega ohms, els quilos ohms i els ohms.

Utilitzant el pont de pedra de blat podem mesurar la resistència en el rang de milli ohms.

El pont de pedra de blat consta de 4 resistències, de les quals es coneixen 3 resistències i una de resistència desconeguda.

La diferència de potencial (tensió) s'aplica als punts 'A' i 'C' i des dels punts 'B' i 'D' es connecta un voltímetre.

Si totes les resistències són iguals, no correrà cap corrent als punts 'B' i 'D' i el voltímetre llegirà a zero. Això s’anomena pont equilibrat.

Si la resistència d’una resistència és diferent de les altres tres resistències, hi haurà un flux de tensió entre els punts “B” i “D” i el voltímetre llegirà un valor proporcional a la resistència desconeguda. Això s’anomena pont desequilibrat.

Aquí la resistència desconeguda és el tensímetre, quan es canvia la resistència, es reflecteix en el voltímetre.

Ara hem convertit una deformació, un pes o una força en senyal de voltatge. Cal amplificar aquest voltatge per obtenir algunes lectures útils, que seran alimentades a un microcontrolador per obtenir les lectures en grams.

Ara analitzem com la temperatura afecta el rendiment dels indicadors de tensió.

Efectes de la temperatura a l'indicador de tensió:

El mesurador de tensió és sensible a la temperatura i pot desordenar-se amb les lectures reals de pes / força. Quan es produeix un canvi de temperatura ambiental, la làmina metàl·lica se sotmet a una expansió metàl·lica, que afecta directament la resistència.

Podem anul·lar l’efecte de la temperatura mitjançant el pont de Wheatstone. Vegem com podem compensar la temperatura mitjançant el pont de Wheatstone.

Compensació de temperatura:

Podem neutralitzar fàcilment l’efecte de la temperatura substituint totes les resistències per tensòmetre. Ara, tota la resistència del mesurador de tensions es veurà afectada per la temperatura de manera igual i el soroll no desitjat serà anul·lat pel caràcter del pont de Wheatstone.

Què és una cèl·lula de càrrega?

Una cèl·lula de càrrega és un perfil d'alumini amb mesurador de tensió unit a 4 costats en configuració de pont Wheatstone.

Il·lustració de la cel·la de càrrega:

Carrega el dispositiu cel·lular

Aquest tipus de cèl·lules de càrrega són rígides i s’utilitzen habitualment a les indústries. Hi ha 4 suports de cargol, un dels laterals està cargolat a una superfície estacionària i l'altre extrem es cargola a un suport (per exemple, cistella) per subjectar l'objecte a mesurar.

Té un pes màxim especificat a la fitxa tècnica o al seu cos, si es supera l’especificació es pot danyar la cel·la de càrrega.

Les cel·les de pont complet es compon de 4 terminals, és a dir, E +, E-, que són cables d’excitació a través dels quals s’aplica la tensió d’alimentació. Els altres dos cables són S + i S-, que són cables de senyal, a partir dels quals es mesura la tensió.

Ara, aquestes tensions estan en un rang de milivolt no prou fortes perquè un microcontrolador pugui llegir-les i processar-les. Necessitem amplificació i els petits canvis haurien de ser visibles pel microcontrolador. Per fer-ho, hi ha un mòdul dedicat anomenat amplificadors de cèl·lules de càrrega. Anem a fer-ne una visió general.

Amplificador de cel·la de càrrega HX711:

Il·lustració del mòdul d'amplificador de cèl·lules de càrrega HX711:

Amplificador de cel·la de càrrega HX711

L’amplificador de cèl·lules de càrrega es basa en l’IC HX711, que és un convertidor analògic a digital de 24 bits dissenyat específicament per a mesures de pes. Té diferents guanys seleccionables 32, 64 i 128 i funciona entre 2,6 i 5,5 V.
Aquest tauler de ruptura ajuda a detectar petites variacions en la cèl·lula de càrrega. Aquest mòdul requereix la biblioteca HX711.h per funcionar

Arduino o qualsevol altre microcontrolador.

La cel·la de càrrega es connectarà al mòdul HX711 i el mòdul s’interfacarà amb Arduino. El circuit de mesura de pes s’ha de desenvolupar d’aquesta manera.

En conclusió, ara ja sabeu què és el mesurador de tensió, què és el pont de Wheatstone, els efectes de la temperatura en el mesurador de tensió, la compensació de temperatura i què és l’amplificador de cèl·lules de càrrega.

Hem entès de manera exhaustiva la part teòrica del disseny de la bàscula a partir de la discussió anterior, ara anem a veure com es pot utilitzar una cèl·lula de loas per fabricar una màquina bàsica de pesatge amb Arduino

Disseny d'una màquina digital de pesatge amb Arduino

En els debats següents aprendrem com construir una màquina digital de pes amb Arduino que pugui mesurar pesos des de pocs grams fins a 40 Kg (segons les especificacions de la vostra cel·la de càrrega) amb una precisió raonable. Aprendrem sobre la classificació de les cèl·lules de càrrega de precisió i calibrarem el circuit proposat i finalitzarem la màquina d’escala de pes.

Nota: És possible que aquest circuit no compleixi els estàndards requerits per a la implementació comercial.

Les màquines d’escala de pes s’utilitzen en diferents tipus d’oficis i en investigacions que van des de mil·ligrams fins a diverses tones. L'escala màxima de la màquina d'escala de pes proposada depèn de les especificacions de la cèl·lula de càrrega. Hi ha intervals de 500 grams, 1 kg, 5 kg, 10 kg, 20 kg i 40 kg, etc.

Hi ha diferents graus de cèl·lula de càrrega, ofereixen un rang de precisió diferent i heu de triar la adequada per al vostre projecte.

Classificació de la classe de precisió de la cel·la de càrrega:

Les diferents classes de precisió es defineixen per a diferents tipus d'aplicacions. La classificació següent és de la precisió més baixa al rang de precisió més alt.

Les cel·les de càrrega amb una precisió inferior (però raonablement precisa) es classifiquen en D1, C1 i C2. Això és suficient per a aquest projecte. Aquestes cèl·lules de càrrega s’utilitzen per mesurar el pes de sorra, ciment o aigua.

Les cèl·lules de càrrega de grau C3 s’utilitzen per a la garantia de qualitat, com ara la comprovació del pes dels coixinets de boles, les peces de les construccions de màquines, etc.

C4, C5, C6 són els millors de precisió de la classe, aquests graus de cèl·lules de càrrega s’utilitzen per mesurar en grams fins a micrograms. Aquestes classes de grau s’utilitzen en bàscules de tallers, control de producció a gran escala, embalatge d’aliments i ús en laboratori, etc.

Ara aprofundim en els detalls tècnics del projecte.

Esquema de connexions:

Connexió de la cel·la de càrrega HX711 a Arduino i cel·la de càrrega.

Connexió de la cel·la de càrrega HX711 a Arduino i cel·la de càrrega.

El projecte està format per una placa amplificadora de cèl·lules de càrrega Arduino, HX711 i un ordinador. La sortida es pot controlar al monitor sèrie d'Arduino IDE.

El cervell del projecte és com sempre l’arduino, podeu utilitzar qualsevol model de placa Arduino. El HX711 és de 24 bits ADC, que pot trobar una flexió mínima a causa del pes de la cel·la de càrrega. Pot funcionar de 2,7 V a 5 V. La potència es proporciona des de la placa Arduino.

La cèl·lula de càrrega té generalment quatre cables, que és la sortida del manòmetre configurat del pont de Wheatstone.

El fil vermell és E +, el fil negre és E-, el fil verd és A- i el fil blanc és A +. Alguns mòduls HX711 especifiquen el nom dels terminals de la cel·la de càrrega i alguns mòduls HX711 especifiquen els colors dels cables, tal model s’il·lustra al diagrama del circuit.

El pin DATA de l'HX711 està connectat al pin # 3 d'Arduino i el pin Clock de l'HX711 està connectat al pin # 2 d'Arduino.

Com muntar la cel·la de càrrega:

com instal·lar una càrrega de càrrega amb Arduino

La cel·la de càrrega té quatre orificis de cargol, dos als dos costats. Qualsevol dels dos costats ha d’estar estacionari per obtenir la màxima precisió, ja que es pot amuntegar a una fusta amb un pes raonable.

Es pot utilitzar una fusta fina o una placa prima per mantenir el pes de mesura, tal com es mostra a dalt.

Així, quan col·loqueu un pes, la corba de la cèl·lula de càrrega també ho fa el tensímetre i canvia la seva resistència, que es mesura amb el mòdul HX711 i s’alimenta a Arduino.

Un cop finalitzada la configuració del maquinari, carreguem el codi i el calibrem.

Calibració del circuit:

Hi ha dos programes, un és el programa de calibratge (trobar el factor de calibratge). Un altre codi és el programa de mesura de pes, el factor de calibratge que es troba al codi del programa de calibratge s’ha d’introduir al programa de mesura de pes.

El factor de calibratge determina la precisió de la mesura del pes.

Baixeu-vos la biblioteca HX711 aquí: github.com/bogde/HX711

Codi del programa de calibracions:

//-------------------- --------------------//
#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()
}
}
}
//-------------------- --------------------//

Com calibrar:

  • Amb la configuració de maquinari completa, pengeu el codi anterior.
  • Traieu la placa fina o la fusta que s'utilitza per subjectar el pes, inclosos els dos cargols (l'altre costat de la cel·la de càrrega s'hauria de fixar a una base)
  • Obriu el monitor de sèrie.
  • Col·loqueu directament un pes conegut a la cel·la de càrrega, 100 grams (per exemple).
  • Premeu Q, W, E, R per augmentar el factor de calibratge en 10.100.1000.10000 respectivament.
  • Premeu A, S, D, F per disminuir el factor de calibratge en 10.100.1000.10000 respectivament.
  • Premeu 'Retorn' després de cada increment o disminució del factor de calibratge.
  • Augmenteu o reduïu el factor de calibratge fins que aparegui el pes correcte del material de pes conegut.
  • La funció Tara és establir l’escala de pes a zero, això és útil quan es vol mesurar el pes de l’aigua (per exemple) sense el pes del bol. Col·loqueu primer el bol, premeu la tara i aboqueu l’aigua.
  • Tingueu en compte el factor de calibratge i escriviu-lo després que aparegui el pes conegut.

Ara pot mesurar peses desconegudes.

Codi del programa de mesura de pes:

//---------------- ----------------//
#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

Substituïu -12000 pel factor de calibratge que heu trobat. Pot ser un número negatiu o un nombre positiu.

Pengeu el codi anterior amb la configuració completa del maquinari i la màquina de pesar ja està a punt.

Màquina d’escala de pes mitjançant pantalla LCD

A l’article anterior s’explicava un sistema de bàscules basat en Arduino que utilitza el vostre PC, a la secció següent intentarem crear una versió pràctica de la màquina de pesar afegint una pantalla LCD de 16 x 2, de manera que no depenem d’un PC mentre mesurem peses. En aquesta publicació es proposen dues versions, una amb pantalla LCD 'I2C' de 16 x 2 i una sense pantalla LCD de 16 x 2 'I2C'.

Aquí es donen dues opcions perquè els lectors puguin triar el disseny segons el que convingui. La diferència principal entre els dos és que les connexions de cable amb el mòdul adaptador I2C són només de 4 cables (Vcc, GND, SCL i SDA) per al funcionament de la pantalla LCD, mentre que sense l’adaptador I2C necessiteu diversos cables per connectar-vos entre la pantalla Arduino i la pantalla LCD.

Tanmateix, ambdues funcions són exactament iguals, alguns prefereixen I2C a la convencional i alguns prefereixen viceversa, de manera que aquí teniu els dos dissenys.

Vegem el disseny LCD convencional:

Esquema de connexions:

arduino, pantalla LCD de 16 x 2 i potenciòmetre de 10 K per ajustar el contrast de la pantalla LCD

A l’esquema anterior tenim l’arduino, pantalla LCD de 16 x 2 i potenciòmetre de 10K per ajustar el contrast de la pantalla LCD.

Es pot alimentar 3,3 V des d’Arduino a la pantalla LCD per il·luminar el fons. Es proporciona un polsador per fer zero la lectura del pes, al final s’explicarà amb detall aquesta funció.

Aquesta és només una connexió entre LCD i Arduino; la connexió entre la cèl·lula de càrrega i l'amplificador de cèl·lules de càrrega a Arduino es mostra a la secció anterior.

Codi de la màquina LCD de pes:

// -------- 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 -------//

Ara anem a veure com utilitzar aquesta màquina d’escala de pes amb pantalla LCD basada en un adaptador I2C.

Diagrama de circuits Arduino i pantalla LCD amb adaptador I2C:

Pantalla Arduino i LCD amb adaptador I2C

Aquí només tenim una pantalla Arduino i LCD amb adaptador I2C a la part posterior. Ara les connexions de cable es simplifiquen i són directes.

Il·lustració del mòdul I2C:

Mòdul I2C

Aquest mòdul es pot soldar directament a la part posterior d’una pantalla LCD normal de 16 x 2 o fins i tot de 20 x 4 i seguiu el diagrama esquemàtic.

I, de nou, consulteu la secció anterior per a la connexió de la cèl·lula de càrrega, l'amplificador de cèl·lules de càrrega i Arduino.

Descarregueu la biblioteca següent per a I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Codi del circuit d'escala de pes basat en 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:

Haureu d’introduir el factor de calibratge al codi abans de penjar qualsevol dels codis a Arduino.

float CalibrationFactor = -12000

L’obtenció del factor de calibratge s’explica en una de les seccions anteriors anteriors.

Funció de tara:

La funció tara en una balança de pes és fer que les lectures es posin a zero. Per exemple, si tenim una cistella on es carreguen les mercaderies, el pes net serà el pes de la cistella + el pes de la mercaderia.

Si premem el botó de tara amb cistella a la cel·la de càrrega abans de carregar mercaderies, es descuidarà el pes de la cistella i podrem mesurar el pes de la mercaderia només.

Si teniu cap pregunta sobre aquest pràctic circuit de màquines de pesatge LCD basat en Arduino, expresseu-ho a la secció de comentaris per obtenir una resposta ràpida.




Anterior: Circuit de contactors d’estat sòlid per a motobombes Següent: Com fer transformadors de baixada