Digitalna tehtnica z uporabo merilne celice in Arduina

Digitalna tehtnica z uporabo merilne celice in Arduina

V tem prispevku bomo izvedeli več o merilni celici, ki temelji na merilniku napetosti. Raziskovali bomo, kaj je merilnik napetosti, kaj je merilna celica, temperaturni učinek na merilnik napetosti, temperaturno kompenzacijo z Wheatstoneovim mostom in ojačevalnikom obremenitvenih celic HX711, na koncu pa se bomo naučili, kako zgraditi tehtnico na osnovi Arduina z uporabo merilne celice senzor teže.



Ta objava obravnava merjenje teže in merilne metode ter izvajanje metod v tehtnici na osnovi Arduino.

Vsi radi vidimo svojo težo, ne glede na našo starost, majhen otrok bo rad videl svojo telesno težo, odrasli pa bodo radi videli njegovo / njeno hujšanje. Teža je že od nekdaj bistveni pojem, saj je pomagala pri trgovanju z blagom, razvoju znanstvene opreme in komercialnih izdelkov.



V sodobnem času merimo teže v kilogramih, miligramih celo mikrogramih za laboratorijske namene. En gram je enak po vsem svetu, vse naprave za merjenje teže morajo meriti enako. Množična proizvodnja tablete z majhno razliko v odmerkih nekaj miligramov zadostuje, da se rešijo tablete, ki postanejo samomorilne.

Kaj je teža?

Teža je sila, ki deluje na ravnino. Količina sile, ki deluje, je neposredno sorazmerna z maso predmeta, kar pomeni, da večja je masa predmeta, večja je sila, ki deluje.



Masa je količina fizične snovi, prisotne v predmetu.

Teža je odvisna od še enega dejavnika: gravitacije.

Gravitacija je konstantna po vsem svetu (gravitacija ima majhne razlike zaradi neenakomerne kroglaste oblike zemlje, vendar je zelo majhna). Teža 1 kg na zemlji bo tehtala 160 gramov na Luni s popolnoma enako maso, ker ima luna veliko šibkejši gravitacijski vlek.

Zdaj veste, kaj je teža in kateri dejavniki otežujejo predmet.

Kaj je merilnik napetosti:

Merilnik napetosti je pretvornik ali senzor, ki meri napetost (deformacijo) na predmetu. To sta si izmislila elektroinženir Edward E. Simmons in strojni inženir Arthur Claude Ruge.

Prikaz merilnika napetosti:

Senzor merilnika napetosti

Merilnik napetosti je prilagodljiv, to je tanek vzorec kovinske folije, stisnjen med dve tanki plastični foliji, ki ga je treba pritrditi na površino z ustreznim lepilom ali katerim koli lepilnim materialom.

Ko na površino nanesemo težo ali silo, se ta deformira in tudi deformacijski tlak. Zaradi deformacije merilnika napetosti se spremeni električni upor kovinske folije.

Zdaj je sprememba upora na merilniku napetosti neposredno sorazmerna z maso ali uporabljeno silo na površini.

V resničnem življenju je odpornost deformacijskega profila zelo neznatna. Za zaznavanje drobnih sprememb odpornosti uporabljamo Wheatstoneov most.

Raziskujmo, kaj je na kratko Wheatstoneov most.

Razumevanje Wheatstonovega mostu:

Most iz pšeničnega kamna je vezje, ki se lahko uporablja za določanje neznane odpornosti. Most Wheatstone je zasnoval Samuel Hunter Christie, kasneje je Wheatstone most izboljšal in razširjal Sir Charles

Pšenični kamen.

Prikaz Wheatstonovega mostu:

Wheatstoneov most

Naši sodobni digitalni multimetri lahko odčitajo vrednost upora v razponu od mega ohmov, kilo ohmov in ohmov.

Z uporabo mosta iz pšeničnega kamna lahko merimo upornost v milli ohmih.

Most iz pšeničnega kamna je sestavljen iz 4 uporov, od štirih so 3 znane odpornosti in ena neznana odpornost.

Potencialna razlika (napetost) se uporabi na točki 'A' in 'C', od točk 'B' in 'D' pa se priključi voltmeter.

Če so vsi upori enaki, v točkah 'B' in 'D' ne bo tekel tok, voltmeter pa bo odčital nič. To se imenuje uravnoteženi most.

Če se upor upora razlikuje od ostalih treh uporov, bo med točkama 'B' in 'D' pretok napetosti, voltmeter pa bo odčital neko vrednost, sorazmerno z neznano upornostjo. To se imenuje neuravnoteženi most.

Tu je neznani upor merilnik napetosti, ko se upor spremeni, se ta odraža na voltmetru.

Zdaj smo pretvorili deformacijo, težo ali silo v napetostni signal. To napetost je treba ojačati, da dobimo nekaj koristnih odčitkov, ki se bodo dovajali na mikrokrmilnik, da bodo dobili odčitke v gramih.

Zdaj pa se pogovorimo o tem, kako temperatura vpliva na delovanje merilnika napetosti.

Vplivi temperature na merilnik napetosti:

Merilnik napetosti je občutljiv na temperaturo in se lahko zmede z dejanskimi odčitki teže / sile. Ko pride do spremembe temperature okolice, se kovinska folija kovinsko razširi, kar neposredno vpliva na odpornost.

Temperaturni učinek lahko izničimo z uporabo Wheatstoneovega mostu. Poglejmo, kako lahko kompenziramo temperaturo z Wheatstoneovim mostom.

Kompenzacija temperature:

Temperaturni učinek lahko enostavno nevtraliziramo z zamenjavo vseh uporov z merilnikom napetosti. Zdaj bo na odpornost merilnika napetosti enako vplivala temperatura, neželeni hrup pa bo izničil značaj Wheatstonovega mostu.

Kaj je merilna celica?

Merilna celica je aluminijast profil z merilnikom napetosti, pritrjenim na 4 stranice v konfiguraciji Wheatstoneovega mostu.

Prikaz tovorne celice:

Naprava z merilno celico

Ta vrsta obremenitvenih celic je toga in se pogosto uporablja v industriji. Obstajajo 4 vijačni nosilci, ena stran je pritrjena na mirujočo površino, drugi konec pa na držalo (recimo košaro), da drži predmet, ki ga želite izmeriti.

Njegova največja teža je navedena na obrazcu s podatki ali na njegovem telesu, saj preseganje specifikacije lahko poškoduje merilno celico.

Polno mostne celice so sestavljene iz 4 sponk, in sicer E +, E-, ki so vzbujalne žice, skozi katere se napaja napetost. Drugi dve žici sta S + in S-, ki sta signalni žici, iz katerih se meri napetost.

Zdaj so te napetosti v območju milivoltov premalo močne, da bi jih mikrokontroler lahko prebral in obdelal. Potrebujemo ojačenje in drobne spremembe bi morale biti vidne mikrokrmilniku. Za to obstaja namenski modul, imenovan ojačevalniki obremenitvenih celic, oglejmo si to.

Ojačevalnik merilne celice HX711:

Prikaz ojačevalnega modula HX711 obremenitvene celice:

Ojačevalnik merilne celice HX711

Ojačevalnik merilne celice temelji na IC HX711, ki je 24-bitni analogno-digitalni pretvornik, posebej zasnovan za merjenje teže. Ima različne izbirne dobitke 32, 64 in 128 in deluje na 2,6 do 5,5 V.
Ta prelomna plošča pomaga zaznati majhne spremembe na merilni celici. Ta modul zahteva delovanje knjižnice HX711.h

Arduino ali kateri koli drug mikrokrmilnik.

Merilna celica bo priključena na modul HX711, modul pa bo povezan z Arduinom. Na ta način je treba razviti vezje za merjenje teže.

Za zaključek zdaj veste, kaj je merilnik napetosti, kaj je Wheatstoneov most, temperaturni učinki na merilnik napetosti, temperaturna kompenzacija in kaj je ojačevalnik obremenitvenih celic.

Teoretični del zasnove tehtnice smo celovito razumeli iz zgornje razprave, zdaj pa poglejmo, kako se lahko celica loas uporablja za izdelavo praktičnega stroja za tehtanje z uporabo Arduina

Načrtovanje stroja za tehtanje z uporabo Arduina

V naslednjih razpravah se bomo naučili, kako izdelati digitalno tehtnico z uporabo Arduina, ki lahko z razumno natančnostjo meri utež od nekaj gramov do 40 Kg (odvisno od specifikacij vaše merilne celice). Spoznali bomo klasifikacijo merilnih celic z natančnostjo in kalibrirali predlagano vezje ter dodelali tehtnico.

Opomba: To vezje morda ni v skladu s standardi, potrebnimi za komercialno izvedbo.

Stroji za tehtanje uteži se uporabljajo v različnih vrstah obrti in raziskav od miligramov do nekaj ton. Predlagana največja skala stroja za tehtanje je odvisna od specifikacije vaše merilne celice. Obstajajo območja od 500 gramov, 1 kg, 5 kg, 10 kg, 20 kg in 40 kg itd.

Obstajajo različne stopnje obremenitvene celice, ki ponujajo različno območje natančnosti, zato izberite ustreznega za svoj projekt.

Klasifikacija razreda točnosti merilnih celic:

Različni razredi natančnosti so opredeljeni za različne vrste aplikacij. Spodnja klasifikacija je od najnižje do najvišje natančnosti.

Merilne celice z nižjo natančnostjo (a razmeroma natančne) so razvrščene kot D1, C1 in C2. To je dovolj za ta projekt. Te merilne celice se uporabljajo za merjenje teže peska, cementa ali vode.

Merilne celice razreda C3 se uporabljajo za zagotavljanje kakovosti, kot je preverjanje teže krogličnih ležajev, delov strojnih konstrukcij itd.

C4, C5, C6 so najboljše v razredu natančnosti, te stopnje merilnih celic se uporabljajo za merjenje v gramih na mikrograme. Ti razredi razredov se uporabljajo v tehtnicah za prodajo na prodajnih mestih, v obsežnem nadzoru proizvodnje, pakiranju hrane in laboratorijski uporabi itd.

Zdaj pa se poglobimo v tehnične podrobnosti projekta.

Shema vezja:

Povezava merilne celice HX711 z Arduino in merilno celico.

Povezava merilne celice HX711 z Arduino in merilno celico.

Projekt je sestavljen iz ojačevalne plošče Arduino, Load cell in HX711 obremenitvene celice ter računalnika. Izhod je mogoče spremljati na serijskem monitorju Arduino IDE.

Možgani projekta so kot vedno arduino, lahko uporabite kateri koli model plošče Arduino. HX711 je 24-bitni ADC, ki lahko zaradi teže na merilni celici najde najmanjši upogib. Deluje lahko od 2,7 V do 5 V. Napajanje zagotavlja plošča Arduino.

Merilna celica ima na splošno štiri žice, kar je izhod iz konfiguriranega tirnega profila mostu Wheatstone.

Rdeča žica je E +, črna žica je E-, zelena žica je A- in bela žica je A +. Nekateri moduli HX711 določajo ime sponk merilne celice, nekateri moduli HX711 pa barve žic, tak model je prikazan v vezju.

Zatič DATA HX711 je povezan s pinom št. 3 Arduina, zatič ure HX711 pa je povezan s pinom št. 2 Arduina.

Kako namestiti tovorno celico:

kako namestiti loadcell z Arduino

Merilna celica ima štiri luknje za vijake, dve na obeh straneh. Vsaka ena stran mora biti mirujoča za največjo natančnost, lahko je pritrjena na les z razumno težo.

Na tanek les ali tanko ploščo lahko namestite merilno težo, kot je prikazano zgoraj.

Torej, ko postavite utež, se upogiba merilna celica, tako kot tudi merilnik napetosti in spremeni svoj upor, ki ga izmeri modul HX711 in dovede v Arduino.

Ko je namestitev strojne opreme končana, naložimo kodo in umerimo.

Umerjanje vezja:

Obstajata dva programa, eden je program kalibracije (iskanje kalibracijskega faktorja). Druga koda je program za merjenje teže, v program za merjenje teže je treba vnesti faktor kalibracije iz kode programa za kalibracijo.

Faktor umerjanja določa natančnost merjenja teže.

Prenesite knjižnico HX711 tukaj: github.com/bogde/HX711

Koda programa za kalibracije:

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

Kako umeriti:

  • Po končani namestitvi strojne opreme naložite zgornjo kodo.
  • Odstranite tanko ploščo ali les, ki se uporablja za držanje uteži, vključno z obema vijakoma (druga stran merilne celice mora biti pritrjena na podlago)
  • Odprite serijski monitor.
  • Na merilno celico postavite znano težo 100 gramov (recimo).
  • Pritisnite Q, W, E, R za povečanje kalibracijskega faktorja za 10.100.1000.10000.
  • Pritisnite A, S, D, F za zmanjšanje faktorja umerjanja za 10.100.1000.10000.
  • Pritisnite 'Enter' po vsakem povečanju ali zmanjšanju kalibracijskega faktorja.
  • Povečujete ali znižujte faktor umerjanja, dokler se ne prikaže pravilna teža znanega materiala.
  • Funkcija tare je, da lestvico teže nastavite na nič, kar je koristno, če želite izmeriti težo vode (recimo) brez teže posode. Najprej postavite skledo, pritisnite taro in nalijte vodo.
  • Upoštevajte kalibracijski faktor in ga zapišite, ko se prikaže znana teža.

Zdaj lahko meri neznane teže.

Koda programa za merjenje teže:

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

Nadomestite -12000 s kalibracijskim faktorjem, ki ste ga našli. Lahko je negativno ali pozitivno število.

Naložite zgornjo kodo s popolno nastavitvijo strojne opreme in naprava za tehtanje uteži je pripravljena.

Stroj za tehtanje uteži z uporabo LCD zaslona

Zgornji članek je razložil sistem tehtanja na osnovi Arduina z vašim računalnikom, v naslednjem poglavju pa bomo poskušali zgraditi praktično različico naprave za tehtanje z dodajanjem LCD zaslona 16 x 2, da med merjenjem nismo odvisni od računalnika uteži. V tem prispevku sta predlagani dve različici, ena z “I2C” 16 x 2 LCD in ena brez “I2C” 16 x 2 LCD zaslona.

Tu sta na voljo dve možnosti, tako da lahko bralci izberejo zasnovo, kot je primerno. Glavna razlika med obema je žična povezava z adapterjem I2C, za delovanje LCD zaslona potrebujejo le 4 žice (Vcc, GND, SCL in SDA), medtem ko brez adapterja I2C potrebujete več žic za povezavo med Arduino in LCD zaslonom.

Vendar imata obe funkciji popolnoma enaki, nekateri imajo raje I2C kot običajne, nekateri pa raje obratno, zato sta tukaj oba modela.

Oglejmo si običajno zasnovo LCD:

Shema vezja:

arduino, 16 x 2 LCD zaslon in 10K potenciometer za nastavitev kontrasta LCD zaslona

V zgornji shemi imamo arduino, 16 x 2 LCD zaslon in 10K potenciometer za nastavitev kontrasta LCD zaslona.

3,3 V se lahko napaja iz Arduina na LCD zaslon za osvetlitev ozadja. Na voljo je potisni gumb za znižanje vrednosti teže, ta funkcija bo podrobno razložena na koncu.

To je samo povezava med LCD in Arduino, povezava med merilno celico in ojačevalnikom merilne celice z Arduinom je prikazana v prejšnjem razdelku.

Koda za LCD tehtnico:

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

Zdaj pa poglejmo, kako uporabljati to tehtnico z LCD zaslonom na osnovi adapterja I2C.

Shema vezja Arduino in LCD zaslon z adapterjem I2C:

Arduino in LCD zaslon z adapterjem I2C

Tu imamo na zadnji strani le zaslon Arduino in LCD z adapterjem I2C. Zdaj so žične povezave poenostavljene in naravnost naprej.

Prikaz modula I2C:

I2C modul

Ta modul je mogoče spajkati neposredno na hrbtno stran običajnega LCD zaslona 16 x 2 ali celo 20 x 4 in slediti shematskemu diagramu.

In še enkrat, glejte prejšnji odsek za povezavo merilne celice, ojačevalnika merilne celice in Arduino.

Prenesite naslednjo knjižnico za I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Koda za vezje tehtnice na osnovi 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 -------//

OPOMBA:

Faktor umerjanja morate vnesti v kodo, preden katero koli kodo naložite v Arduino.

float CalibrationFactor = -12000

Pridobivanje kalibracijskega faktorja je razloženo v prejšnjem poglavju zgoraj.

Funkcija tare:

Funkcija tare na utežni lestvici je, da odčitke zniža na nič. Če imamo na primer košaro, v katero je naloženo blago, bo neto teža teža košare + teža blaga.

Če na tovorni celici pritisnemo gumb za taro s košaro na tovorni celici, bo teža koša zanemarjena in težo blaga lahko izmerimo samo.

Če imate kakršna koli vprašanja v zvezi s tem praktičnim vezjem LCD tehtnice na osnovi Arduina, prosimo, izrazite v oddelku za komentarje, da boste lahko hitro odgovorili.




Prejšnja: Polprevodniški kontaktni krog za motorne črpalke Naprej: Kako narediti odstopne transformatorje