Digitalna vaga uz pomoć mjerne ćelije i Arduina

Digitalna vaga uz pomoć mjerne ćelije i Arduina

U ovom ćemo postu saznati o mjernoj ćeliji na temelju mjerača naprezanja. Istražit ćemo što je mjerač napona, što je mjerna ćelija, temperaturni učinak na mjerač napona, temperaturnu kompenzaciju s Wheatstoneovim mostom i pojačalom ćelijske stanice HX711, a na kraju ćemo naučiti kako izraditi stroj za vaganje temeljeni na Arduinu primjenom ćelijske stanice senzor težine.



Ovaj se članak bavi mjerenjima težine i metodama mjerenja te primjenom metoda u krugu vage temeljenom na Arduinu.

Svi volimo vidjeti svoju težinu bez obzira na dob, malo dijete može voljeti vidjeti njegovo / njezino debljanje, a odrasli mogu vidjeti njegov / njezin gubitak kilograma. Težina je vitalni pojam od davnina, pomogla je u trgovini robom, razvoju znanstvene opreme i komercijalnih proizvoda.





U moderno doba težine mjerimo u kilogramima, miligramima pa i mikrogramima u laboratorijske svrhe. Jedan gram je isti širom svijeta, svi uređaji za mjerenje težine moraju mjeriti isto. Masovna proizvodnja tablete s malom razlikom od nekoliko miligrama u doziranju dovoljna je da se spasilačka tableta pretvori u samoubilačku.

Što je težina?

Težina je sila koja djeluje na ravninu. Količina izvršene sile izravno je proporcionalna masi predmeta, što znači da je veća masa predmeta, što je veća sila koja djeluje.



Masa je količina fizičke materije prisutne u predmetu.

Težina ovisi o još jednom čimbeniku: Gravitaciji.

Gravitacija je konstantna širom svijeta (Postoje male razlike u gravitaciji zbog nejednolikog sfernog oblika zemlje, ali je vrlo sićušna). Težina od 1 kg na zemlji težit će na Mjesecu 160 grama s potpuno istom masom, jer Mjesec ima puno slabije gravitacijsko privlačenje.

Sada znate što je težina i koji su čimbenici čine objekt teškim.

Što je mjerač naprezanja:

Mjerač naprezanja je pretvarač ili senzor koji mjeri naprezanje (deformaciju) na objektu. Ovo su izmislili inženjer elektrotehnike Edward E. Simmons i inženjer strojarstva Arthur Claude Ruge.

Ilustracija mjerača napona:

Senzor manometra

Mjerač naprezanja je fleksibilan, to je tanki uzorak metalne folije koji je smješten između dva tanka plastična lima i mora biti pričvršćen na površinu pomoću odgovarajućeg ljepila ili bilo kojeg ljepljivog materijala.

Kada na površinu nanesemo težinu ili silu, ona se deformira, a također se deformira i mjerač napona. Deformacija sonde uzrokuje promjenu električnog otpora metalne folije.

Sada je promjena otpora mjerača napetosti izravno proporcionalna težini ili primijenjenoj sili na površini.

U stvarnom životu promjena otpora mjerača naprezanja vrlo je beznačajna za otkrivanje. Da bismo otkrili male promjene u otporu koristimo Wheatstoneov most.

Istražimo što je ukratko Wheatstoneov most.

Razumijevanje Wheatstonovog mosta:

Most od pšeničnog kamena krug je koji se može koristiti za određivanje nepoznatog otpora. Most Wheatstonea osmislio je Samuel Hunter Christie, kasnije je Wheatstone most poboljšao i širio Sir Charles

Pšenični kamen.

Ilustracija kruga mosta Wheatstone:

Wheatstoneov most

Naši moderni digitalni multimetri mogu očitavati vrijednost otpora u rasponu od mega ohma, kilo ohma i opsega ohma.

Korištenjem mosta od pšeničnog kamena možemo mjeriti otpor u opsegu mili ohma.

Most od pšeničnog kamena sastoji se od 4 otpora, od četiri, 3 su poznati otpor, a jedan nepoznati otpor.

Razlika potencijala (napon) primjenjuje se na točke 'A' i 'C', a od točaka 'B' i 'D' priključuje se voltmetar.

Ako su svi otpornici jednaki, u točkama 'B' i 'D' neće teći struja i voltmetar će očitati nulu. To se naziva uravnoteženi most.

Ako se otpor otpora razlikuje od ostala tri otpornika, doći će do protoka napona između točaka 'B' i 'D', a voltmetar će očitati neku vrijednost proporcionalnu nepoznatom otporu. To se naziva neuravnoteženi most.

Ovdje je nepoznati otpor mjerač naprezanja, kada se otpor promijeni, on se odražava na voltmetru.

Sada smo pretvorili signal deformacije ili težine ili sile u naponski signal. Ovaj napon treba pojačati kako bi se dobila neka korisna očitanja koja će se prenositi na mikrokontroler kako bi se očitanja dobila u gramima.

Sada razgovarajmo o tome kako temperatura utječe na izvedbu deformatora.

Učinak temperature na mjerač naprezanja:

Manometar je osjetljiv na temperaturu i može zabrljati sa stvarnim očitanjima težine / sile. Kada dođe do promjene temperature okoline, metalna folija je izložena metalnom ekspanziji, što izravno utječe na otpor.

Učinak temperature možemo poništiti pomoću Wheatstoneova mosta. Pogledajmo kako možemo kompenzirati temperaturu pomoću Wheatstoneova mosta.

Kompenzacija temperature:

Učinak temperature možemo lako neutralizirati zamjenom svih otpora mjeračem napona. Sada će na otpor manometra utjecati temperatura podjednako, a neželjenu buku poništit će karakter Wheatstonovog mosta.

Što je mjerna ćelija?

Teretna ćelija je aluminijski profil s mjeračem naprezanja pričvršćenim na 4 strane u konfiguraciji Wheatstoneovog mosta.

Ilustracija merne ćelije:

Uređaj teretne ćelije

Ova vrsta mjerne ćelije je kruta i često se koristi u industriji. Postoje 4 nosača s vijcima, jedna strana je pričvršćena vijcima za nepokretnu površinu, a drugi kraj pričvršćen je za držač (recimo košaru) kako bi se pridržavao predmet koji se mjeri.

Ima maksimalnu težinu navedenu na podatkovnom listu ili na tijelu, prelazeći specifikaciju može oštetiti teretnu ćeliju.

Pune ćelije mosta sastoje se od 4 stezaljke, naime E +, E-, koje su pobudne žice kroz koje se primjenjuje opskrbni napon. Druge dvije žice su S + i S-, koje su signalne žice, od kojih se mjeri napon.

Sada su ti naponi u rasponu milivolta nedovoljno jaki da bi ih mikrokontroler mogao čitati i obrađivati. Potrebno nam je pojačanje, a sitne promjene trebale bi biti vidljive mikrokontroleru. Da biste to učinili, postoji namjenski modul koji se naziva pojačala s opterećenjima, napravimo pregled o tome.

Pojačalo teretne ćelije HX711:

Ilustracija modula pojačala HX711 opterećenja:

Pojačalo merne ćelije HX711

Pojačalo merne ćelije temelji se na IC HX711 koji je 24-bitni analogno-digitalni pretvarač posebno dizajniran za mjerenje težine. Ima različite odabirne dobitke 32, 64 i 128 i radi na 2,6 do 5,5 V.
Ova prelomna ploča pomaže u otkrivanju sitnih varijacija na mernoj ćeliji. Ovaj modul zahtijeva knjižnicu HX711.h za rad

Arduino ili bilo koji drugi mikrokontroleri.

Merna ćelija bit će spojena na modul HX711, a modul će biti povezan s Arduinom. Na ovaj način treba razviti krug za mjerenje težine.

Zaključno, sada znate što je mjerač napona, što je Wheatstoneov most, temperaturni učinci na mjerač naprezanja, temperaturna kompenzacija i što je pojačalo ćelijske jedinice.

Sveobuhvatno smo razumjeli teoretski dio dizajna vage iz gornje rasprave, sada ćemo vidjeti kako se loas ćelija može koristiti za izradu praktičnog stroja za vaganje pomoću Arduina

Dizajniranje stroja za digitalno mjerenje pomoću Arduina

U sljedećim raspravama naučit ćemo kako izraditi digitalni stroj za mjerenje težine pomoću Arduina koji može mjeriti težine od nekoliko grama do 40 kg (ovisno o specifikacijama vaše merne ćelije) s razumnom točnošću. Učit ćemo o klasifikaciji preciznih mjernih ćelija i kalibrirat ćemo predloženi sklop i dovršiti stroj za mjerenje težine.

Napomena: Ovaj sklop možda nije sukladan standardima potrebnim za komercijalnu provedbu.

Strojevi za mjerenje utega koriste se u raznim vrstama obrta i za istraživanja u rasponu od miligrama do nekoliko tona. Predložena maksimalna skala stroja za mjerenje težine ovisi o specifikaciji vaše mjerne jedinice. Rasponi su od 500 grama, 1 kg, 5 kg, 10 kg, 20 kg i 40 kg itd.

Postoje različite vrste mernih ćelija, nude različit raspon točnosti i trebali biste odabrati onu prikladnu za svoj projekt.

Klasifikacija klase točnosti ćelija opterećenja:

Različite klase točnosti definirane su za različite vrste primjena. Slijedi klasifikacija od najniže do najviše točnosti.

Merne ćelije s nižom točnošću (ali razumno točne) klasificirane su kao D1, C1 i C2. To je dovoljno za ovaj projekt. Te se mjerne stanice koriste za mjerenje težine pijeska, cementa ili vode.

Merne ćelije razreda C3 koriste se u osiguranju kvalitete kao što je provjera težine kugličnih ležajeva, dijelova strojnih konstrukcija itd.

C4, C5, C6 su najbolje u klasi točnosti, te se mjere mjernih ćelija koriste za mjerenje u gramima do mikrograma. Te se klase razreda koriste u trgovinskim vagama, praćenju velike proizvodnje, pakiranju hrane i laboratorijskoj upotrebi itd.

Sada zaronimo u tehničke detalje projekta.

Kružni dijagram:

Priključak HX711 merne ćelije na Arduino i mernu ćeliju.

Priključak HX711 merne ćelije na Arduino i mernu ćeliju.

Projekt se sastoji od ploče za pojačanje Arduino, Load cell i HX711 teretne ćelije te računala. Izlaz se može nadzirati na serijskom monitoru Arduino IDE-a.

Mozak projekta je kao i uvijek arduino, možete koristiti bilo koji model ploče Arduino. HX711 je 24-bitni ADC, koji može pronaći najsitnije savijanje zbog težine na mernoj ćeliji. Može raditi od 2,7 V do 5 V. Napajanje se dobiva iz ploče Arduino.

Merna ćelija općenito ima četiri žice, što je izlaz s konfiguracijskog mjerača snage konfiguriranog za Wheatstoneov most.

Crvena žica je E +, crna žica E-, zelena žica A- i bijela žica A +. Neki moduli HX711 navode naziv terminala merne ćelije, a neki moduli HX711 navode boje žica, takav je model prikazan na shemi spojeva.

DATA pin HX711 spojen je na pin # 3 Arduina, a sat Clock HX711 povezan je s pin # 2 Arduina.

Kako montirati mernu ćeliju:

kako instalirati loadcell s Arduinom

Merna ćelija ima četiri rupe za vijke, dvije s obje strane. Bilo koja strana mora biti stacionarna kako bi se postigla najbolja preciznost. Može se naljepiti na drvo razumne težine.

Tanko drvo ili tanka ploča mogu se koristiti za držanje mjerne težine kao što je gore prikazano.

Dakle, kada stavite uteg, teretna ćelija se savija, kao i mjerač naprezanja i mijenja svoj otpor koji se mjeri modulom HX711 i dovodi u Arduino.

Nakon završetka postavljanja hardvera, prenesite kôd i kalibrirajte.

Kalibracija kruga:

Postoje dva programa jedan je program kalibracije (pronalaženje faktora kalibracije). Drugi kod je program za mjerenje težine, u program mjerenja težine treba unijeti faktor umjeravanja pronađen iz koda programa umjeravanja.

Faktor kalibracije određuje točnost mjerenja težine.

Preuzmite knjižnicu HX711 ovdje: github.com/bogde/HX711

Programski kod 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 kalibrirati:

  • Nakon dovršenog postavljanja hardvera prenesite gornji kod.
  • Uklonite tanku ploču ili drvo koje služi za držanje utega, uključujući dva vijka (druga strana mjerne ćelije treba biti pričvršćena na podnožje)
  • Otvorite serijski monitor.
  • Stavite izravno poznati teg na mernu ćeliju, 100 grama (recimo).
  • Pritisnite Q, W, E, R kako bi se faktor kalibracije povećao za 10.100.1000.10000.
  • Pritisnite A, S, D, F kako bi se faktor kalibracije smanjio za 10,100,1000,10000.
  • Pritisnite 'Enter' nakon svakog povećanja ili smanjenja faktora kalibracije.
  • Povećavajte ili smanjujte faktor umjeravanja sve dok se ne pojavi točna težina poznatog materijala.
  • Funkcija tare je postavljanje skale težine na nulu, ovo je korisno kada želite izmjeriti težinu vode (recimo) bez težine posude. Prvo stavite posudu, pritisnite taru i ulijte vodu.
  • Zabilježite faktor kalibracije i zapišite ga nakon što se pojavi poznata težina.

Sada može mjeriti nepoznate težine.

Šifra programa za mjerenje težine:

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

Zamijenite -12000 s faktorom kalibracije koji ste pronašli. To može biti negativan broj ili pozitivan broj.

Učitajte gornji kod s kompletnim hardverskim postavkama i uređaj za mjerenje težine je spreman.

Stroj za mjerenje utega pomoću LCD zaslona

Gornji je članak objasnio sustav vaga temeljenog na Arduinu pomoću vašeg računala, u sljedećem ćemo odjeljku pokušati izraditi praktičnu verziju uređaja za vagu dodavanjem LCD zaslona od 16 x 2, tako da tijekom mjerenja ne ovisimo o računalu utezi. U ovom su postu predložene dvije verzije, jedna sa “I2C” 16 x 2 LCD i jedna bez “I2C” 16 x 2 LCD zaslona.

Ovdje su dana dva izbora kako bi čitatelji mogli odabrati dizajn prema svom prikladnom. Glavna razlika između njih dvije su žičane veze s I2C adapterskim modulom za rad LCD zaslona potrebne su samo 4 žice (Vcc, GND, SCL i SDA), dok bez I2C adaptora trebate nekoliko žica za povezivanje Arduina i LCD zaslona.

Međutim, obje funkcije potpuno iste, neki preferiraju I2C u odnosu na konvencionalne, a neki više obratno, pa su ovdje oba dizajna.

Pogledajmo konvencionalni LCD dizajn:

Kružni dijagram:

arduino, 16 x 2 LCD zaslon i 10K potenciometar za podešavanje kontrasta LCD zaslona

U gornjoj shemi imamo arduino, 16 x 2 LCD zaslon i 10K potenciometar za podešavanje kontrasta LCD zaslona.

3.3 V se iz Arduina može napajati na LCD zaslon radi pozadinskog osvjetljenja. Postoji tipka za dovođenje očitanja težine na nulu, ova funkcija će biti detaljno objašnjena na kraju.

Ovo je samo veza između LCD-a i Arduina, povezanost između merne ćelije i pojačala teretne ćelije s Arduinom prikazana je u prethodnom odjeljku.

Šifra za LCD uređaj za mjerenje težine:

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

Sada da vidimo kako se koristi ovaj stroj za mjerenje težine s LCD zaslonom zasnovanom na I2C adapteru.

Kružna shema Arduino i LCD zaslon s I2C adapterom:

Arduino i LCD zaslon s I2C adapterom

Ovdje imamo samo Arduino i LCD zaslon s I2C adapterom na stražnjoj strani. Sada su žičane veze pojednostavljene i ravne prema naprijed.

Prikaz I2C modula:

I2C modul

Ovaj se modul može zalemiti izravno na stražnju stranu uobičajenog LCD zaslona 16 x 2 ili čak 20 x 4 i slijediti shematski dijagram.

I opet, molimo pogledajte prethodni odjeljak za povezivanje merne ćelije, pojačala teretne ćelije i Arduina.

Preuzmite sljedeću knjižnicu za I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Kôd za sklop vage na temelju 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 -------//

BILJEŠKA:

Trebali biste unijeti faktor kalibracije u kod prije nego što prenesete bilo koji od koda u Arduino.

float CalibrationFactor = -12000

Dobivanje kalibracijskog faktora objašnjeno je u prethodnom prethodnom odjeljku.

Funkcija tare:

Funkcija tare na skali utega je dovođenje očitanja na nulu. Na primjer, ako imamo košaru u koju se utovara roba, tada će neto težina biti težina košarice + težina robe.

Ako pritisnemo gumb za taraciju s košarom na teretnoj ćeliji prije utovara robe, težina košare zanemarit ćemo i težinu robe možemo izmjeriti sami.

Ako imate bilo kakvih pitanja u vezi s ovim praktičnim sklopom LCD vage zasnovan na Arduinu, iznesite u odjeljku za komentare da biste mogli dobiti brzi odgovor.




Prethodno: Poluprovodnički sklopni sklop za motorne pumpe Dalje: Kako napraviti odstupne transformatore