Digitálna váha využívajúca silomer a Arduino

Digitálna váha využívajúca silomer a Arduino

V tomto príspevku sa dozvieme o silomeri založenom na tenzometri. Budeme skúmať, čo je to Strain Gauge, čo je silomer, teplotný vplyv na tenzometer, teplotná kompenzácia pomocou Wheatstoneovho mostíka a zosilňovača silomeru HX711 a nakoniec sa naučíme, ako zostrojiť vážiaci prístroj založený na Arduine implementáciou silomeru ako snímač hmotnosti.



Tento príspevok sa zaoberá meraním hmotnosti a metódami merania a ich implementáciou v okruhu vážiacej váhy založenom na Arduine.

Všetci radi vidíme svoju váhu bez ohľadu na náš vek, malé dieťa môže rád vidieť svoj prírastok hmotnosti a dospelí radi vidieť svoje chudnutie. Hmotnosť je odpradávna zásadným pojmom, ktorý pomáha pri obchodovaní s tovarom, vývoji vedeckých prístrojov a komerčných výrobkov.





V modernej dobe meriame na laboratórne účely hmotnosti v kilogramoch, miligramoch alebo dokonca mikrogramoch. Jeden gram je na celej planéte rovnaký, všetky zariadenia na meranie hmotnosti musia merať rovnako. Hromadná výroba pilulky s malým rozdielom niekoľkých miligramov dávkovania stačí na to, aby sa z tablety na záchranu života stala samovražedná tabletka.

Čo je to váha?

Hmotnosť je sila vyvíjaná na rovinu. Množstvo vynaloženej sily je priamo úmerné hmotnosti objektu, čo znamená, že čím vyššia je hmotnosť objektu, tým vyššia je vyvinutá sila.



Hmotnosť je množstvo fyzickej hmoty prítomnej v objekte.

Hmotnosť závisí od ešte jedného faktora: gravitácie.

Gravitácia je na celej planéte konštantná (V dôsledku nerovnomerného sférického tvaru Zeme existujú malé zmeny v gravitácii, sú však veľmi malé). Hmotnosť 1 kg na Zemi bude mať na Mesiaci hmotnosť 160 gramov s presne rovnakou hmotnosťou, pretože Mesiac má oveľa slabší gravitačný ťah.

Teraz viete, čo je váha a aké faktory spôsobujú, že je predmet ťažký.

Čo je to tenzometer:

Tenzometer je snímač alebo snímač, ktorý meria deformáciu (deformáciu) objektu. To vynašiel elektrotechnik Edward E. Simmons a strojný inžinier Arthur Claude Ruge.

Ilustrácia tenzometra:

Senzor tenzometra

Tenzometer je ohybný, jedná sa o tenký kovový fóliový vzor vložený medzi dva tenké plastové listy a musí byť pripevnený k povrchu pomocou vhodného lepidla alebo iného lepiaceho materiálu.

Keď na povrch použijeme váhu alebo silu, deformuje sa to a deformuje sa aj tenzometer. Deformácia tenzometra spôsobí zmenu elektrického odporu kovovej fólie.

Teraz je zmena odporu tenzometra priamo úmerná hmotnosti alebo použitej sile na povrch.

V reálnom živote je zmena odporu tenzometra detekovateľná veľmi nevýznamne. Na detekciu malých zmien odporu používame Wheatstoneov most.

Pozrime sa v skratke na to, čo je Wheatstoneov most.

Pochopenie Wheatstoneovho mosta:

Most z pšeničného kameňa je obvod, ktorým sa dá určiť neznámy odpor. Most Wheatstone navrhol Samuel Hunter Christie, neskôr most Wheatstone vylepšil a rozšíril Sir Charles

Wheatstone.

Ilustrácia Wheatstoneovho mostného okruhu:

Obvod Wheatstoneovho mosta

Naše moderné digitálne multimetre dokážu čítať hodnoty odporu v rozmedzí od mega ohmov, kilo ohmov a ohmov.

Pomocou mostu z pšeničného kameňa môžeme merať odpor v rozmedzí mili ohmov.

Most z pšeničného kameňa sa skladá zo 4 rezistorov, zo štyroch sú 3 známe a jeden neznámy.

Rozdiel potenciálov (napätie) sa aplikuje na body „A“ a „C“ a z bodov „B“ a „D“ sa pripája voltmetr.

Ak sú všetky odpory rovnaké, v bodoch „B“ a „D“ nebude tiecť žiadny prúd a voltmetr bude čítať nulu. Toto sa nazýva vyvážený mostík.

Ak sa odpor rezistora líši od ostatných troch rezistorov, bude medzi bodmi „B“ a „D“ prúdiť napätie a voltmetr bude čítať nejakú hodnotu úmernú neznámemu odporu. Toto sa nazýva nevyvážený most.

Tu je neznámy odpor tenzometer, ktorý sa pri zmene odporu odráža na voltmetri.

Teraz sme premenili deformáciu alebo váhu alebo silu na napäťový signál. Toto napätie je potrebné zosilniť, aby sa získali niektoré užitočné údaje, ktoré sa napájajú do mikrokontroléra na získanie údajov v gramoch.

Teraz poďme diskutovať o tom, ako teplota ovplyvňuje výkon tenzometra.

Vplyv teploty na kmeňový merač:

Tenzometer je citlivý na teplotu a môže rušiť skutočné hodnoty hmotnosti / sily. Pri zmene okolitej teploty je kovová fólia vystavená kovovej rozťažnosti, ktorá priamo ovplyvňuje odpor.

Teplotný efekt môžeme anulovať pomocou Wheatstoneovho mostíka. Pozrime sa, ako môžeme kompenzovať teplotu pomocou Wheatstoneovho mosta.

Teplotná kompenzácia:

Teplotný efekt môžeme ľahko neutralizovať nahradením všetkých rezistorov tenzometrom. Teraz bude všetok odpor tenzometra ovplyvnený teplotou rovnako a nežiaduci hluk bude potlačený charakterom Wheatstoneovho mosta.

Čo je silomer?

Snímač zaťaženia je hliníkový profil s tenzometrom pripevneným na 4 strany v konfigurácii Wheatstoneovho mostíka.

Ilustrácia silomeru:

Zaťažte bunkové zariadenie

Tento typ silomeru je tuhý a bežne sa používa v priemysle. K dispozícii sú 4 skrutkové úchyty, jedna strana je priskrutkovaná k nehybnému povrchu a druhý koniec je priskrutkovaná k držiaku (napríklad koši), aby držala meraný objekt.

Má maximálnu hmotnosť uvedenú v údajovom liste alebo na jeho tele, prekročenie tejto špecifikácie by mohlo poškodiť silomer.

Celý mostík sa skladá zo 4 svoriek, a to E +, E-, čo sú budiace vodiče, cez ktoré sa privádza napájacie napätie. Ďalšie dva vodiče sú S + a S-, čo sú signálne vodiče, z ktorých sa meria napätie.

Teraz sú tieto napätia v rozsahu milivoltov, ktoré nie sú dosť silné na to, aby ich mikrokontrolér mohol čítať a spracovávať. Potrebujeme zosilnenie a mikrokontrolér by mal vidieť malé zmeny. Aby sme to dosiahli, existuje špeciálny modul s názvom zosilňovače silomerov, urobme si o tom prehľad.

Zosilňovač silomeru HX711:

Ilustrácia modulu zosilňovača silomeru HX711:

Zosilňovač silomeru HX711

Zosilňovač silomeru je založený na IC HX711, čo je 24-bitový analógovo-digitálny prevodník špeciálne navrhnutý pre meranie hmotnosti. Má rôzne voliteľné zisky 32, 64 a 128 a pracuje na 2,6 až 5,5 V.
Táto odpočinková doska pomáha detekovať malé odchýlky na silomere. Tento modul vyžaduje na prácu s knižnicou HX711.h.

Arduino alebo akékoľvek iné mikrokontroléry.

Zaťažovací článok bude pripojený k modulu HX711 a modul bude prepojený s Arduino. Týmto spôsobom je potrebné vyvinúť obvod na meranie hmotnosti.

Na záver teraz viete, čo je tenzometer, čo je Wheatstoneov most, teplotné účinky na tenzometer, teplotná kompenzácia a čo je zosilňovač silomeru.

Z vyššie uvedenej diskusie sme komplexne pochopili teoretickú časť návrhu váhy, teraz sa pozrime, ako môže byť bunka Loas použitá na výrobu praktického váhy s použitím Arduina.

Návrh digitálneho váhy s využitím Arduina

V nasledujúcich diskusiách sa naučíme, ako skonštruovať digitálny váhový stroj s použitím Arduina, ktorý dokáže s primeranou presnosťou merať hmotnosti od niekoľkých gramov do 40 kg (v závislosti na vlastnostiach vášho silomeru). Dozvieme sa o klasifikácii silomerov presnej triedy a budeme kalibrovať navrhovaný obvod a finalizovať váhový merač.

Poznámka: Tento obvod nemusí byť v súlade s normami požadovanými pre komerčnú implementáciu.

Váhové váhy sa používajú v rôznych odvetviach a pri výskume od miligramov do niekoľkých ton. Maximálna mierka navrhovaného stroja na váženie závisí od špecifikácie vášho silomeru. Existujú rozsahy od 500 gramov, 1 kg, 5 kg, 10 kg, 20 kg a 40 kg atď.

Existujú rôzne stupne silomeru, ktoré ponúkajú rôzny rozsah presnosti a mali by ste zvoliť ten vhodný pre váš projekt.

Klasifikácia triedy presnosti silomeru:

Pre rôzne druhy aplikácií sú definované rôzne triedy presnosti. Nižšie uvedená klasifikácia je od najnižšej presnosti po najvyšší rozsah presnosti.

Snímače zaťaženia s nižšou presnosťou (ale primerane presné) sú klasifikované ako D1, C1 a C2. Na tento projekt to stačí. Tieto silomery sa používajú na meranie hmotnosti piesku, cementu alebo vody.

Silomer triedy C3 sa používajú na zabezpečenie kvality, ako je kontrola hmotnosti guľkových ložísk, dielov konštrukcií strojov atď.

C4, C5, C6 sú najlepšou presnosťou vo svojej triede, tieto triedy silomerov sa používajú na meranie v gramoch až mikrogramoch. Tieto triedy sa používajú v obchodoch, na veľkoobchodnom monitorovaní výroby, na balenie potravín, na laboratórne použitie atď.

Teraz sa pozrime na technické detaily projektu.

Schéma zapojenia:

Pripojenie silomeru HX711 k Arduinu a silomer.

Pripojenie silomeru HX711 k Arduinu a silomer.

Projekt sa skladá z dosky zosilňovača Arduino, Load cell a HX711 a počítača. Výstup je možné sledovať na sériovom monitore Arduino IDE.

Mozog projektu je ako vždy arduino, môžete použiť akýkoľvek model dosky Arduino. HX711 je 24-bitový ADC, ktorý dokáže nájsť najmenší ohyb vďaka váhe na silomeri. Môže pracovať od 2,7 V do 5 V. Napájanie je zabezpečené z dosky Arduino.

Snímač zaťaženia má všeobecne štyri vodiče, čo je výstup z tenzometra nakonfigurovaného pomocou Wheatstoneovho mostíka.

Červený vodič je E +, čierny vodič je E-, zelený vodič je A- a biely vodič je A +. Niektoré moduly HX711 špecifikujú názov svoriek silomeru a niektoré moduly HX711 špecifikujú farby vodičov, takýto model je znázornený na schéme zapojenia.

Pin DATA na HX711 je pripojený na pin # 3 v Arduine a hodinový pin na HX711 je na pin # 2 v Arduine.

Ako namontovať silomer:

ako nainštalovať záťažovú bunku s Arduino

Snímač zaťaženia má štyri otvory pre skrutky, dva na oboch stranách. Ktorákoľvek strana musí byť kvôli najlepšej presnosti nehybná, môže byť pripevnená k drevu s primeranou hmotnosťou.

Na uchytenie meracej hmotnosti je možné použiť tenké drevo alebo tenký tanier, ako je to znázornené vyššie.

Takže keď umiestnite závažie, snímač sa ohne aj tenzometer a zmení sa jeho odpor, ktorý sa meria modulom HX711 a privádza do Arduina.

Po dokončení nastavenia hardvéru nahrajme kód a vykonajte kalibráciu.

Kalibrácia obvodu:

Existujú dva programy, jeden je kalibračný program (nájdenie kalibračného faktora). Ďalším kódom je program na meranie hmotnosti, v programe na meranie hmotnosti je potrebné zadať kalibračný faktor zistený z kódu kalibračného programu.

Kalibračný faktor určuje presnosť merania hmotnosti.

Stiahnite si knižnicu HX711 tu: github.com/bogde/HX711

Kalibrácie Programový kód:

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

Ako kalibrovať:

  • Po dokončení nastavenia hardvéru nahrajte vyššie uvedený kód.
  • Odstráňte tenký plát alebo drevo, ktoré slúži na držanie závažia, vrátane dvoch skrutiek (druhá strana silomeru by mala byť pripevnená k základni)
  • Otvorte sériový monitor.
  • Na snímač hmotnosti umiestnite priamo známu hmotnosť, 100 gramov (povedzme).
  • Stlačte Q, W, E, R zvýšiť kalibračný faktor o 10 100 1000 10000, v uvedenom poradí.
  • Stlačte A, S, D, F znížiť kalibračný faktor o 10 100 1000 10000, v uvedenom poradí.
  • Po každom zvýšení alebo znížení kalibračného faktora stlačte kláves „Enter“.
  • Zvyšujte alebo znižujte kalibračný faktor, kým sa neobjaví správna hmotnosť známeho hmotnostného materiálu.
  • Funkciou Tare je nastavenie váhovej stupnice na nulu, čo je užitočné, keď chcete merať hmotnosť vody (povedzme) bez hmotnosti misky. Najskôr položte misku, stlačte taru a zalejte vodou.
  • Poznamenajte si kalibračný faktor a zapíšte si ho, keď sa objaví známa hmotnosť.

Teraz môže merať neznáme váhy.

Kód programu na meranie hmotnosti:

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

Nahraďte -12000 kalibračným faktorom, ktorý ste našli. Môže to byť záporné číslo alebo kladné číslo.

Nahrajte vyššie uvedený kód s úplným nastavením hardvéru a váš prístroj na váženie je pripravený.

Váhový prístroj pomocou LCD displeja

Vyššie uvedený článok vysvetlil systém váženia založený na Arduine pomocou vášho počítača. V nasledujúcej časti sa pokúsime vytvoriť praktickú verziu váhy s váhou pridaním LCD displeja 16 x 2, aby sme pri meraní neboli závislí od PC. závažia. V tomto príspevku sú navrhnuté dve verzie, jedna s LCD displejom „I2C“ 16 x 2 a jedna bez displeja „I2C“ 16 x 2 LCD.

Tu sú uvedené dve možnosti, aby si čitatelia mohli zvoliť vzhľad podľa svojich praktických riešení. Hlavným rozdielom medzi týmito dvoma je káblové pripojenie s modulom adaptéra I2C, na fungovanie LCD displeja sú potrebné iba 4 vodiče (Vcc, GND, SCL a SDA), zatiaľ čo bez adaptéra I2C potrebujete na pripojenie medzi Arduino a LCD displejom niekoľko drôtov.

Avšak obe funkcie sú úplne rovnaké, niekto uprednostňuje I2C pred konvenčným a niekto naopak, takže tu sú oba návrhy.

Pozrime sa na konvenčný dizajn LCD:

Schéma zapojenia:

arduino, 16 x 2 LCD displej a 10K potenciometer na nastavenie kontrastu LCD displeja

Vo vyššie uvedenej schéme máme arduino, 16 x 2 LCD displej a 10K potenciometer na nastavenie kontrastu LCD displeja.

3,3 V je možné napájať z Arduina na LCD displej pre podsvietenie. Stlačením tlačidla sa vynuluje hodnota hmotnosti, táto funkcia bude na konci podrobne vysvetlená.

Toto je iba spojenie medzi LCD a Arduino, spojenie medzi silomerom a zosilňovačom silomeru k Arduinu je zobrazené v predchádzajúcej časti.

Kód pre stroj na váženie váhy 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 -------//

Teraz sa pozrime, ako používať tento prístroj na váženie s LCD displejom založeným na adaptéri I2C.

Schéma zapojenia Arduino a LCD displej s adaptérom I2C:

Arduino a LCD displej s I2C adaptérom

Tu máme na zadnej strane iba Arduino a LCD displej s adaptérom I2C. Teraz sú drôtené spojenia zjednodušené a priame.

Ilustrácia modulu I2C:

Modul I2C

Tento modul je možné spájkovať priamo na zadnej strane bežného 16 x 2 alebo dokonca 20 x 4 LCD displeja a postupovať podľa schematického diagramu.

A znova si pozrite predchádzajúcu časť, kde nájdete informácie o pripojení silomeru, zosilňovača silomeru a Arduina.

Stiahnite si nasledujúcu knižnicu pre I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Kód pre obvod váhovej stupnice založený na 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 -------//

POZNÁMKA:

Pred nahraním niektorého z týchto kódov do Arduina by ste mali do kódu zadať kalibračný faktor.

float CalibrationFactor = -12000

Získanie kalibračného faktora je vysvetlené v jednej z predchádzajúcich častí vyššie.

Funkcia tarovania:

Funkciou tarovania v hmotnostnej stupnici je vynulovanie nameraných hodnôt. Napríklad, ak máme košík, do ktorého je tovar naložený, potom bude čistá hmotnosť predstavovať hmotnosť košíka + hmotnosť tovaru.

Pokiaľ pred naložením tovaru stlačíme tárovacie tlačidlo s košíkom na silomeri, váha koša sa zanedbá a môžeme zmerať váhu samotného tovaru.

Ak máte akékoľvek otázky týkajúce sa tohto praktického obvodu váhy váženého pomocou váhy Arduino, vyjadrite sa v sekcii komentárov, kde môžete získať rýchlu odpoveď.




Dvojica: Polovodičový obvod stýkača pre motorové čerpadlá Ďalej: Ako vyrobiť krokové transformátory