- La màquina de pesar Arduino funciona
- Components necessaris per a la màquina de pesatge basada en Arduino
- Màquina de pesatge basada en Arduino: diagrama de circuits
- Creació del circuit en un perfboard puntejat
- Construint un recinte per a la màquina de pesatge basada en Arduino
- Màquina de pesar Arduino - Codi
Les escales de càrrega digitals són un altre miracle de l’enginyeria i el disseny actuals. Sí, estem parlant de la bàscula que sovint veiem a la majoria de botigues de queviures i altres llocs, però us heu preguntat mai com funciona una bàscula? Per respondre a aquesta pregunta, en aquest projecte, farem un cop d'ull a la cel·la de càrrega i al seu funcionament. Finalment, construirem una bàscula de càrrega basada en Arduino amb el sensor de pes HX711, que pot mesurar pesos de fins a 10 kg.
Aquesta pesadora és perfecta per a botigues locals, on embalen articles a granel. Igual que els productes comercials, la nostra balança de pes tindrà un botó zero que redueix la balança a zero. A més, té una opció per configurar el pes per mesurar, quan el pes de mesura arriba al pes establert, un timbre emet un so ràpid i s’atura quan el pes definit és igual al pes de mesura. D'aquesta manera, l'usuari pot empaquetar-lo només escoltant el so i no hauria de mirar la pantalla. Com que es tracta d’un projecte molt senzill, el construirem molt fàcilment mitjançant components com Arduino i la cèl·lula de càrrega del calibrador de tensió. Així doncs, sense més demora, hi entrem directament.
En un article anterior, hem realitzat projectes com el sensor de pes basat en Raspberry Pi i el contenidor intel·ligent IoT amb alerta de correu electrònic i supervisió web mitjançant el popular mòdul amplificador de cèl·lules de càrrega HX711. Per tant, comproveu-ho si aquest és el vostre requisit.
La màquina de pesar Arduino funciona
El component principal d'aquest projecte és una cèl·lula de càrrega i el mòdul amplificador cel·lular HX711 càrrega. Com podeu veure, una cara està marcada amb deu quilograms. A més, podeu notar algun tipus de cola protectora blanca sobre la cel·la de càrrega i surten quatre colors diferents de cables, que descobriran el secret sota la cola protectora blanca i la funció d’aquests cables de quatre colors més endavant a l’article.
Una cèl·lula de càrrega és un transductor que transforma la força o la pressió en sortida elèctrica. Té dues cares, diguem-ne la dreta i la esquerra, i està formada per blocs d’alumini. Com es pot veure al centre del material es va aprimant posant un gran forat. És per això que aquest és el punt que pateix deformacions quan es col·loca una càrrega al costat del muntatge. Imagineu ara que la cel·la del costat dret està muntada a la base i el costat esquerre és on es col·loca la càrrega, aquesta configuració deforma la cel·la de càrrega del calibrador de tensió a causa del forat gegant al mig.
Quan es col·loca una càrrega al costat de la cel·la de càrrega, la part superior patirà tensió i la part inferior patirà compressió. És per això que la barra d'alumini es doblega cap avall al costat esquerre. Si mesurem aquesta deformació, podem mesurar la força que s’ha aplicat al bloc d’alumini i això és exactament el que farem.

Ara, la pregunta continua sent què hi ha dins de la cola protectora blanca? Dins d’aquesta cola protectora, trobarem un component elàstic molt prim que s’anomena tensímetre. Un mesurador de tensió és un component que s’utilitza per mesurar la tensió. Si mirem de prop aquest component, podem veure dos coixinets de connexió i, després, tenim un patró de fil conductor amb deflexions repetitives. Aquest fil conductor té una resistència definida. Quan el doblegem, el valor de la resistència canviarà? Per tant, un costat del tensiòmetre es munta i es fixa en un lloc, si posem un pes a l’altre costat de la barra d’alumini, això obligarà el tensor a doblar-se, cosa que provocarà un canvi de resistència. Com passa això realment? El patró conductor del tensímetre està fet de coure, aquest fil tindrà una àrea i una longitud determinades, de manera que aquestes dues unitats donaran la resistència del fil. La resistència d’un fil s’oposa al flux de corrent. Ara és obvi que si l'àrea d'aquest cable es fa més petita,podrien passar menys electrons, cosa que significa un corrent inferior. Ara bé, si augmentem l'àrea, augmentarà la resistència d'un conductor. Si s'aplica una mica de força a aquest fil, això estirarà l'àrea i, al mateix temps, es reduirà, augmentant la resistència. Però aquesta variació de resistència és molt baixa. Si estirem el mesurador de tensió, augmentarà la resistència i, si el comprimim, la resistència disminuirà. Per mesurar la força, hem de mesurar la resistència. Mesurar directament la resistència no sempre és pràctic, perquè el canvi és molt petit. Per tant, en lloc de mesurar la resistència, podem mesurar voltatges fàcilment. Per tant, en aquest cas, hem de convertir la sortida de l'indicador de valors de resistència a valors de tensió.Si s'aplica una mica de força a aquest fil, això estirarà l'àrea i, al mateix temps, es reduirà, augmentant la resistència. Però aquesta variació de resistència és molt baixa. Si estirem el mesurador de tensió, augmentarà la resistència i, si el comprimim, la resistència disminuirà. Per mesurar la força, hem de mesurar la resistència. Mesurar directament la resistència no sempre és pràctic, perquè el canvi és molt petit. Per tant, en lloc de mesurar la resistència, podem mesurar voltatges fàcilment. Per tant, en aquest cas, hem de convertir la sortida de l'indicador de valors de resistència a valors de tensió.Si s'aplica una mica de força a aquest fil, això estirarà l'àrea i, al mateix temps, es reduirà, augmentant la resistència. Però aquesta variació de resistència és molt baixa. Si estirem el mesurador de tensió, augmentarà la resistència i, si el comprimim, la resistència disminuirà. Per mesurar la força, hem de mesurar la resistència. Mesurar directament la resistència no sempre és pràctic, perquè el canvi és molt petit. Per tant, en lloc de mesurar la resistència, podem mesurar voltatges fàcilment. Per tant, en aquest cas, hem de convertir la sortida de l'indicador de valors de resistència a valors de tensió.la resistència disminuirà. Per mesurar la força, hem de mesurar la resistència. Mesurar directament la resistència no sempre és pràctic, perquè el canvi és molt petit. Per tant, en lloc de mesurar la resistència, podem mesurar voltatges fàcilment. Per tant, en aquest cas, hem de convertir la sortida de l'indicador de valors de resistència a valors de tensió.la resistència disminuirà. Per mesurar la força, hem de mesurar la resistència. Mesurar directament la resistència no sempre és pràctic, perquè el canvi és molt petit. Per tant, en lloc de mesurar la resistència, podem mesurar voltatges fàcilment. Per tant, en aquest cas, hem de convertir la sortida de l'indicador de valors de resistència a valors de tensió.

Ho podem fer amb l'ajuda del pont de Wheatstone. Col·loquem el mesurador de tensió al pont de Wheatstone si el pont està equilibrat, la tensió al punt mitjà hauria de ser nul·la (prèviament hem construït un projecte on hem descrit com funciona un pont de Wheatstone, podeu comprovar-ho si voleu saber més sobre el tema). Quan el mesurador de tensió canvia la seva resistència, desequilibrarà el pont i la tensió també canviarà. Així doncs, és així com el pont de Wheatstone converteix les variacions de resistència en valors de tensió.

Però aquest canvi de voltatge encara és molt petit, de manera que, per augmentar-ho, hem d’utilitzar el mòdul HX711. HX711 és un ADC diferencial de 24 bits, d’aquesta manera podríem mesurar canvis de voltatge molt petits. donarà valors del 0 al 2 exponencial 24.
Components necessaris per a la màquina de pesatge basada en Arduino
Per fer aquest projecte el més senzill possible, hem utilitzat components molt genèrics que podeu trobar a qualsevol botiga d’aficionats local. La imatge següent us donarà una idea sobre els components. A més, tenim la llista de materials (BOM) que s’enumera a continuació.

- Cèl·lula de càrrega (utilitzem una cel·la de càrrega de 10 kg)
- Mòdul amplificador HX 711
- Arduino Nano
- LCD I2C 16X2 - Compatible I2C
- 1k resistència -2 núm
- LEDs -2Nos
- Zumbador
- PCB comú
- Bateria de 7,4 V (si la voleu portàtil)
- Regulador de tensió LM7805
Màquina de pesatge basada en Arduino: diagrama de circuits

La cel·la de càrrega té quatre cables que són vermells, negres, verds i blancs. Aquest color pot variar segons els fabricants, de manera que és millor consultar la fitxa tècnica. Connecteu vermell a E + de la placa HX711, connecteu negre a E-, connecteu blanc a A + i connecteu verd a A-, Dout i el rellotge de la placa connecteu-vos a D4 i D5 respectivament. Connecteu un extrem dels polsadors a D3, D8, D9 i altres extrems a terra. Tenim LCD I2C, així que connecteu SDA a A4 i SCL a A5. Connecteu la terra de LCD, HX711 i Arduino a terra, també connecteu VCC als 5Vpin d’ Arduino. Tots els mòduls funcionen a 5V, de manera que hem afegit un regulador de tensió LM7805. Si no voleu que sigui portàtil, podeu alimentar directament l'Arduino mitjançant un cable USB.
Creació del circuit en un perfboard puntejat
Hem soldat tots els components en un perfboard de punts comú. Hem utilitzat capçaleres femenines per soldar l’Arduino i l’ADC amb la placa de circuit, també hem utilitzat cables per connectar tots els polsadors i LED. Un cop acabat tot el procés de soldadura, ens hem assegurat que el LM7805 surti de 5V adequats. Finalment, hem posat un interruptor per encendre / apagar el circuit. Un cop vam acabar tots, semblava la imatge següent.

Construint un recinte per a la màquina de pesatge basada en Arduino
Com podeu veure, la cel·la de càrrega té alguns rosques, de manera que podríem muntar-la en una placa base. Utilitzarem un tauler de PVC per a la base de la nostra escala; per això, primer tallem 20 * 20 cm quadrats i quatre rectangles de 20 * 5 del tauler de PVC. Després, amb cola dura, vam enganxar cada peça i vam fer un petit tancament.

Recordeu, no hem arreglat cap costat perquè hem de col·locar-hi els botons, els LED i la pantalla LCD. Després hem utilitzat un tauler de plàstic per a la part superior de la bàscula. Abans de fer aquesta configuració permanent, hem d’assegurar-nos que disposem d’espai suficient des del terra fins a la cel·la de càrrega, de manera que es podrà doblar, de manera que hem col·locat cargols i femelles entre la cel·la de càrrega i la base, també hem afegit alguns separadors de plàstic entre la cel·la de càrrega i la part superior. hem utilitzat una làmina de plàstic rodona com a punt superior d’equilibri.

A continuació, vam col·locar la pantalla LCD, els LEDs i els polsadors al tauler frontal i tot el relacionat amb un cable llarg aïllat. Després d’acabar el procés de cablejat, vam enganxar el tauler frontal a la base principal amb certa inclinació, de manera que podem llegir els valors de la pantalla LCD molt fàcilment. finalment, hem fixat l'interruptor principal al lateral de la balança i ja està. Així és com hem creat el cos per a la nostra bàscula.
Podeu dissenyar amb les vostres idees, però recordeu de col·locar la cel·la de càrrega com a la imatge.

Màquina de pesar Arduino - Codi
Com que ja hem acabat el procés de compilació de la nostra escala digital, podem passar a la part de programació. Per facilitar la programació, utilitzarem la biblioteca HX711, la biblioteca EEPROM i la biblioteca LiquidCrystal. Podeu descarregar la biblioteca HX711 des del dipòsit oficial de GitHub o anar a eines > incloure biblioteca > gestionar biblioteca i, a continuació , cercar la biblioteca amb la paraula clau HX711, després de descarregar la biblioteca, instal·lar-la a Arduino ide.
Primer, hem de calibrar la cel·la de càrrega i emmagatzemar aquest valor a EEPROM; per a això, aneu a fitxer> exemples> HX 711_ADC i, a continuació , seleccioneu el codi de calibració. Abans de penjar el codi, col·loqueu la balança sobre una superfície plana estable. A continuació, pengeu el codi a Arduino i obriu el monitor sèrie. A continuació, canvieu la velocitat en bauds a 572600. Ara el monitor demana que agafeu el pes, per això hem de prémer t i entrar.

Ara, hem de situar el pes conegut sobre la balança, en el meu cas, és a dir, 194 gm. Després de col·locar el pes conegut, escriviu el pes al monitor sèrie i premeu Intro.

Ara, el monitor sèrie us pregunta si voleu desar el valor a EEPROM o no, així que escriviu Y per triar sí. Ara podem veure el pes al monitor sèrie.

El codi principal d’aquest projecte, que hem desenvolupat a partir de l’esbós d’exemple de la biblioteca HX711. Podeu descarregar el codi d’aquest projecte des de baix.
A la secció de codificació, primer, hem afegit les tres biblioteques. La biblioteca HX711 serveix per prendre els valors de les cel·les de càrrega. EEPROM és la biblioteca incorporada d’Arduino ide, que s’utilitza per emmagatzemar valors a EEPROM i la biblioteca LiquidCrystal és per al mòdul LCD l2C.
#incloure
A continuació, definiu nombres enters per a diferents pins i valors assignats. La funció de cel·la de càrrega HX711_ADC serveix per configurar el pin de rellotge i Dout.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; t llarg; const int Up_buttonPin = 9; const int Down_buttonPin = 8; float buttonPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
A la secció de configuració, primer, vam iniciar el monitor sèrie, només per depurar. A continuació, hem definit els modes pin, tots els botons es defineixen com a entrada. Amb l'ajut de la funció Arduino PULL UP, establim els pins a un màxim lògic normalment. Per tant, no volem utilitzar cap resistència externa per a això.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Les línies de codi següents són per configurar la pantalla LCD I2C. En primer lloc, vam mostrar el text de benvinguda mitjançant la funció LCD.print () , al cap de dos segons, vam esborrar la pantalla amb lcd.clear () . És a dir, al principi, la pantalla mostra ARDUINO BALANCE com a text de benvinguda i, al cap de dos segons, esborra i mostra els pesos de mesura.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("mesurem"); endarreriment (2000); lcd.clear ();
Després vam començar a llegir els valors de loadcell mitjançant la funció loadCell.begin () , després d'això, llegim l'EEPROM per als valors calibrats, ho fem mitjançant la funció EEPROM.get () . És a dir, ja hem emmagatzemat el valor mitjançant un esbós de calibratge a l’ adreça EEPROM, només recuperem aquest valor.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
A la secció del bucle, primer comprovem si hi ha dades de la cel·la de càrrega disponibles mitjançant LoadCell.update (), si està disponible, llegim i emmagatzemem aquestes dades, per a això, estem utilitzant LoadCell.getData () . A continuació, hem de mostrar el valor emmagatzemat a la pantalla LCD. Per fer-ho, hem utilitzat la funció LCD.print () . a més, imprimim el pes establert. El pes ajustat s’estableix amb l’ajut del comptador de botons. Això s'ha explicat a l'última secció.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("pes:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
A continuació, establim el valor de la tara; per a això, primer, llegim l’estat del botó de tara mitjançant la funció digitalRead () , si l’estat és baix, tarem aquest pes a zero. La funció tara d’aquesta balança és portar les lectures a zero. Per exemple, si tenim un bol on es carreguen les coses, el pes net serà el pes del bol + el pes de les coses. Si premem el botó de tara amb el bol situat a la cel·la de càrrega abans de carregar les coses, el pes de la cistella es negarà i podrem mesurar només el pes de les coses.
if (digitalRead (tpin) == BAIX) { LoadCell.tareNoDelay ();
Ara, hem d’establir les condicions per a diferents indicacions, com ara establir el retard del timbre i l’estat del led. Ho hem fet utilitzant les condicions if , tenim un total de tres condicions. En primer lloc, calculem la diferència entre el pes establert i el pes de mesura, i després emmagatzemem aquest valor a la variable k.
float k = buttonPushCounter-i;
1. Si la diferència entre el pes establert i el pes de mesura és superior o igual a 50 gms, el timbre emet un so amb un retard de 200 mil·lisegons (lentament).
if (k> = 50) { digitalWrite (6, HIGH); retard (200); digitalWrite (6, BAIX); retard (200); }
2. Si la diferència entre el pes establert i el pes de mesura és inferior a 50 i superior a 1 gram, el brunzidor emet un so amb un retard de 50 mil·lisegons (més ràpid).
if (k <50 && k> 1) { digitalWrite (6, HIGH); retard (50); digitalWrite (6, BAIX); retard (50); }
3. Quan el pes de mesura sigui igual o superior al valor establert, s'encendrà el led verd i s'apagarà el zumbador i el led vermell.
if (i> = buttonPushCounter) { digitalWrite (6, BAIX); digitalWrite (12, ALTA); }
Tenim dues funcions de buit més () per configurar el pes definit (per comptar el botó premut).
La funció augmenta el valor establert en 10 gms per cada premsa. Això es fa mitjançant l'ús de la funció digitalRead d'Arduino si el pin està baix, vol dir que es prem el botó i que augmentarà el valor en 10 gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == BAIX) { bPremeu = true; buttonPushCounter = buttonPushCounter + 10; }
De la mateixa manera, checkdown és per disminuir el valor establert en 10 gms per cada premsa.
down_buttonState = DigitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == BAIX) { bPremeu = true; buttonPushCounter = buttonPushCounter - 10; }
Això marca el final de la part de programació.

Aquesta bàscula electrònica basada en Arduino és perfecta per mesurar pesos de fins a 10 kg (podem augmentar aquest límit utilitzant una cèl·lula de càrrega nominal més alta). Aquesta precisió és del 99% respecte a les mesures originals.
Si teniu cap pregunta sobre aquest circuit de màquines d’equilibri de pes LCD basat en Arduino, envieu-lo a la secció de comentaris, gràcies!
