- Arduino stroj za vaganje radi
- Komponente potrebne za vaganje na bazi Arduina
- Uređaj za vaganje na bazi Arduina - shema spojeva
- Izrada sklopa na točkanoj perford ploči
- Izgradnja kućišta za vaganje na bazi Arduina
- Arduino stroj za vaganje - kôd
Digitalne vage opterećenja još su jedno čudo modernog inženjerstva i dizajna. Da, govorimo o vagi koju često vidimo u većini trgovina i drugim mjestima, ali jeste li se ikad zapitali kako funkcionira vaga? Da bismo odgovorili na to pitanje, u ovom ćemo projektu pogledati mernu ćeliju i njezin rad. Napokon, izradit ćemo prijenosnu vagu temeljenu na Arduinu sa senzorom težine HX711, koji može mjeriti težinu do 10 kg.
Ova mašina za vaganje savršena je za lokalne trgovine, gdje pakiraju predmete u velikoj količini. Poput komercijalnih proizvoda, i naša vaga će imati gumb nula koji poništava vagu. Također, ima mogućnost postavljanja težine za mjerenje, kada mjerna težina dosegne zadanu težinu, zujalica se oglašava brzo i zaustavlja kada je zadana težina jednaka mjernoj težini. Na taj ga način korisnik može spakirati samo čujući zvuk i ne mora gledati zaslon. Budući da je ovo vrlo jednostavan projekt, gradit ćemo ga vrlo lako koristeći komponente poput Arduina i mjernu ćeliju mjerača napona. Dakle, bez daljnjeg odgađanja, krenimo odmah u to.
U prethodnom članku izradili smo projekte poput senzora težine na bazi Raspberry Pi i pametnog spremnika IoT s upozorenjem e-pošte i web nadzorom koristeći popularni modul pojačala HX711. Dakle, provjerite je li to vaš zahtjev.
Arduino stroj za vaganje radi
Glavna komponenta ovog projekta je opterećenje stanica i HX711 ćelija pojačalo modul. Kao što vidite, jedna strana je označena s deset kilograma. Također, možete primijetiti neku vrstu bijelog zaštitnog ljepila preko merne ćelije i izlaze četiri različite boje žica, koje će otkriti tajnu ispod bijelog zaštitnog ljepila i funkciju tih četverobojnih žica kasnije u članku.
Merna ćelija je pretvarač koji pretvara silu ili tlak u električni izlaz. Ima dvije strane, recimo desnu i lijevu stranu, a izrađena je od aluminijskih blokova. Kao što vidite u sredini se materijal stanjiva stavljanjem velike rupe. Zbog toga je to točka koja trpi deformacije kada se teret postavi na stranu nosača. Sada zamislite da je desna strana ćelije montirana na podnožje, a na lijevoj strani je mjesto opterećenja, ova konfiguracija deformira ćeliju mjerača naprezanja zbog divovske rupe u sredini.
Kad se teret postavi na teretnu stranu mjerne ćelije, gornji će dio pretrpjeti napetost, a donji dio tlačiti. Zbog toga se aluminijska šipka savija prema dolje na lijevoj strani. Ako izmjerimo ovu deformaciju, možemo izmjeriti silu koja je primijenjena na aluminijski blok i upravo ćemo to učiniti.

Sada ostaje pitanje što je unutar bijelog zaštitnog ljepila? Unutar ovog zaštitnog ljepila pronaći ćemo vrlo tanku elastičnu komponentu koja se naziva mjerač naprezanja. Manometar je komponenta koja se koristi za mjerenje napetosti. Ako pažljivije pogledamo ovu komponentu, možemo vidjeti dvije priključne pločice, a zatim imamo vodljivi uzorak žice s ponavljajućim otklonima. Ova vodljiva žica ima definirani otpor. Kada ga savijemo, vrijednost otpora će se promijeniti? Dakle, jedna strana mjerača naprezanja je postavljena i učvršćena na mjestu, ako na drugu stranu aluminijske šipke postavimo uteg, to će prisiliti mjerač naprezanja da se savije, što će uzrokovati promjenu otpora. Kako se to zapravo događa? Vodljivi uzorak manometra izrađen je od bakra, ova žica imat će određeno područje i duljinu, pa će ove dvije jedinice dati otpor žice. Otpor žice suprotstavlja se protoku struje. Sada je očito da ako se površina ove žice smanji,moglo bi proći manje elektrona, što znači manju struju. Sad ako povećamo površinu, to će povećati otpor vodiča. Ako se na ovu žicu primijeni neka sila, to će rastezati područje i istodobno će se smanjivati, otpor se povećava. Ali ta je varijacija otpora vrlo mala. Ako ispružimo mjerač naprezanja, otpor će se povećati, a ako ga stisnemo, otpor će postati niži. Da bismo izmjerili silu, moramo izmjeriti otpor. Izravno mjerenje otpora nije uvijek praktično, jer je promjena vrlo mala. Dakle, umjesto mjerenja otpora, napone možemo lako izmjeriti. Dakle, u ovom slučaju moramo pretvoriti mjerni izlaz iz vrijednosti otpora u vrijednosti napona.Ako se na ovu žicu primijeni neka sila, to će rastezati područje i istodobno će se smanjivati, otpor se povećava. Ali ta je varijacija otpora vrlo mala. Ako ispružimo mjerač naprezanja, otpor će se povećati, a ako ga stisnemo, otpor će postati niži. Da bismo izmjerili silu, moramo izmjeriti otpor. Izravno mjerenje otpora nije uvijek praktično, jer je promjena vrlo mala. Dakle, umjesto mjerenja otpora, napone možemo lako izmjeriti. Dakle, u ovom slučaju moramo pretvoriti mjerni izlaz iz vrijednosti otpora u vrijednosti napona.Ako se na ovu žicu primijeni neka sila, to će rastezati područje i istodobno će se smanjivati, otpor se povećava. Ali ta je varijacija otpora vrlo mala. Ako ispružimo mjerač naprezanja, otpor će se povećati, a ako ga stisnemo, otpor će postati niži. Da bismo izmjerili silu, moramo izmjeriti otpor. Izravno mjerenje otpora nije uvijek praktično, jer je promjena vrlo mala. Dakle, umjesto mjerenja otpora, napone možemo lako izmjeriti. Dakle, u ovom slučaju moramo pretvoriti mjerni izlaz iz vrijednosti otpora u vrijednosti napona.otpor će biti manji. Da bismo izmjerili silu, moramo izmjeriti otpor. Izravno mjerenje otpora nije uvijek praktično, jer je promjena vrlo mala. Dakle, umjesto mjerenja otpora, napone možemo lako izmjeriti. Dakle, u ovom slučaju moramo pretvoriti mjerni izlaz iz vrijednosti otpora u vrijednosti napona.otpor će biti manji. Da bismo izmjerili silu, moramo izmjeriti otpor. Izravno mjerenje otpora nije uvijek praktično, jer je promjena vrlo mala. Dakle, umjesto mjerenja otpora, napone možemo lako izmjeriti. Dakle, u ovom slučaju moramo pretvoriti mjerni izlaz iz vrijednosti otpora u vrijednosti napona.

To možemo učiniti uz pomoć mosta Wheatstone. Postavimo mjerač naprezanja u Wheatstoneov most ako je most uravnotežen, napon u srednjoj točki treba biti nula (prethodno smo napravili projekt gdje smo opisali kako Wheatstoneov most radi, to možete provjeriti ako želite znati više o temi). Kad mjerač naprezanja promijeni svoj otpor, debalansiraće most, a promijenit će se i napon. Dakle, ovo je način na kojem Wheatstoneov most mijenja varijacije otpora u vrijednosti napona.

Ali ta je promjena napona još uvijek vrlo mala, pa da bismo je povećali, trebamo upotrijebiti modul HX711. HX711 je 24-bitni diferencijalni ADC, na taj način bismo mogli izmjeriti vrlo male promjene napona. dat će vrijednosti od 0 do 2 eksponencijalno 24.
Komponente potrebne za vaganje na bazi Arduina
Kako bismo ovaj projekt učinili što jednostavnijim, koristili smo vrlo generičke komponente koje možete pronaći u bilo kojoj lokalnoj hobi trgovini. Slika dolje dat će vam ideju o komponentama. Nadalje, u nastavku imamo popis materijala (BOM).

- Teretna ćelija (koristimo mernu ćeliju od 10 kg)
- Modul pojačala HX 711
- Arduino Nano
- I2C LCD 16X2 - I2C kompatibilan
- 1k otpornik -2 br
- LED diode -2Ne
- Zujalica
- Uobičajena PCB
- 7,4V baterija (ako želite prijenosnu)
- LM7805 regulator napona
Uređaj za vaganje na bazi Arduina - shema spojeva

Merna ćelija ima četiri žice koje su crvene, crne, zelene i bijele. Ova se boja može razlikovati ovisno o proizvođačima, pa je bolje uputiti se na tehnički list. Spojite crveno na E + ploče HX711, crno na E-, bijelo na A +, a zeleno na A-, Dout, a sat ploče na D4 i D5. Spojite jedan kraj tipki na D3, D8, D9 i ostale krajeve na zemlju. Imamo I2C LCD, pa spojite SDA na A4 i SCL na A5. Spojite masu LCD-a, HX711 i Arduino na zemlju, također spojite VCC-ove na 5Vpin Arduina. Svi moduli rade na 5V, pa smo dodali regulator napona LM7805. Ako ga ne želite prenositi, možete izravno napajati Arduino pomoću USB kabela.
Izrada sklopa na točkanoj perford ploči
Spajali smo sve komponente na zajedničku točkovnu ploču s točkama. Koristili smo ženska zaglavlja za lemljenje Arduina i ADC-a s pločicom, također smo koristili žice za spajanje svih tipkala i LED-a. Nakon što je sav postupak lemljenja završen, osigurali smo da iz LM7805 izlazi ispravnih 5 V. Konačno, stavili smo prekidač za uključivanje / isključivanje kruga. Kad smo svi završili, izgledalo je kao na slici dolje.

Izgradnja kućišta za vaganje na bazi Arduina
Kao što vidite, teretna ćelija ima nekoliko navoja vijaka, tako da bismo je mogli montirati na osnovnu ploču. Za osnovicu vage upotrijebit ćemo PVC ploču, za to smo prvo izrezali kvadrat veličine 20 * 20 cm i četiri pravokutnika 20 * 5 s PVC ploče. Zatim smo pomoću tvrdog ljepila zalijepili svaki komad i napravili malo kućište.

Zapamtite, nismo popravili jednu stranu, jer na nju moramo postaviti tipke, LED i LCD. Zatim smo koristili plastičnu ploču za vrh vage. Prije nego što ovu postavku učinimo trajnom, moramo osigurati da imamo dovoljno prostora od tla do mjerne ćelije, kako bi se mogla saviti, pa smo između teretne ćelije i baze postavili vijak i matice, također smo dodali nekoliko plastičnih odstojnika između teretne ćelije i gornjeg dijela. koristili smo okrugli plastični lim kao vrhunsku pametnu ravnotežu.

Zatim smo LCD, LED diode i tipke postavili na prednju ploču i sve što je bilo povezano dugom izoliranom žicom. Nakon završetka postupka ožičenja zalijepili smo prednju ploču na glavnu podlogu s određenim nagibom, tako da vrlo lako možemo očitati vrijednosti s LCD-a. konačno smo glavnu sklopku pričvrstili na stranu vage i to je to. Tako smo izradili tijelo za našu težinu.
Možete dizajnirati sa svojim idejama, ali ne zaboravite postaviti teretnu ćeliju poput slike.

Arduino stroj za vaganje - kôd
Kako smo sada završili s postupkom izrade za našu digitalnu ljestvicu, možemo prijeći na programski dio. Za jednostavno programiranje koristit ćemo knjižnicu HX711, knjižnicu EEPROM i knjižnicu LiquidCrystal. Možete preuzeti knjižnicu HX711 iz službenog spremišta GitHub ili otići na alati > uključi biblioteku > upravljati knjižnicom, zatim pretražiti biblioteku pomoću ključne riječi HX711, nakon preuzimanja biblioteke, instalirajte je u Arduino ide.
Prvo moramo kalibrirati mernu ćeliju i tu vrijednost pohraniti na EEPROM, za to idite na file> examples> HX 711_ADC, a zatim odaberite kalibracijski kôd. Prije slanja koda, postavite vagu na stabilnu ravnu površinu. Zatim prenesite kod na Arduino i otvorite serijski monitor. Zatim promijenite brzinu prijenosa u 572600. Sada monitor traži da preuzme težinu, za to trebamo pritisnuti t i ući.

Sada na vagu moramo staviti poznatu težinu, u mom slučaju, to je 194gm. Nakon stavljanja poznate težine, upišite težinu na serijski monitor i pritisnite Enter.

Sada vas serijski monitor pita želite li vrijednost spremiti u EEPROM ili ne, pa upišite Y da odaberete da. Sada težinu možemo vidjeti na serijskom monitoru.

Glavni kod ovog projekta koji smo razvili na primjeru skice knjižnice HX711. Kôd ovog projekta možete preuzeti odozdo.
U odjeljak kodiranja prvo smo dodali sve tri knjižnice. Biblioteka HX711 služi za uzimanje vrijednosti ćelije opterećenja. EEPROM je ugrađena knjižnica Arduino ide, koja se koristi za spremanje vrijednosti u EEPROM, a knjižnica LiquidCrystal je za l2C LCD modul.
#include
Zatim se definiraju cijeli brojevi za različite pinove i dodijeljene vrijednosti. HX711_ADC funkcija loadcell funkcije je za postavljanje izlaza i klina sata.
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; dugo t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; plutajući gumbPushCounter = 0; plutati gore_buttonState = 0; plutaju gore_lastButtonState = 0; plutati prema dolje_buttonState = 0; plutati prema dolje_lastButtonState = 0;
U odjeljku za postavljanje prvo smo pokrenuli serijski monitor, ovo je samo za otklanjanje pogrešaka. Tada smo definirali načine pin-a, svi gumbi definirani su kao ulaz. Uz pomoć funkcije Arduino PULL UP, postavili smo pinove na logički visok nivo. Dakle, za to ne želimo koristiti nikakve vanjske otpore.
pinMode (tpin, INPUT_PULLUP); pinMode (6, IZLAZ); pinMode (12, IZLAZ); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Sljedeći retci koda su za podešavanje I2C LCD-a. Prvo smo prikazali tekst dobrodošlice pomoću funkcije LCD.print () , nakon dvije sekunde očistili smo zaslon pomoću lcd.clear () . Odnosno, na početku zaslon prikazuje ARDUINO BALANCE kao pozdravni tekst, a nakon dvije sekunde očistit će se i prikazati mjerne težine.
lcd.init (); lcd.pozadinsko svjetlo (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0,1); lcd.print ("izmjerimo"); kašnjenje (2000); lcd.clear ();
Zatim smo počeli čitati vrijednosti iz loadcell pomoću funkcije loadCell.begin () , nakon toga smo pročitali EEPROM za kalibrirane vrijednosti, a to radimo pomoću funkcije EEPROM.get () . Odnosno, vrijednost smo već pohranili pomoću kalibracijske skice na EEPROM adresi, samo ponovno uzimamo tu vrijednost.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
U odjeljku petlje prvo provjeravamo jesu li dostupni podaci iz merne ćelije pomoću LoadCell.update (), ako su dostupni, čitamo i pohranjujemo te podatke, za to koristimo LoadCell.getData () . Dalje, pohranjenu vrijednost moramo prikazati na LCD-u. Da bismo to učinili, koristili smo funkciju LCD.print () . također, ispisujemo zadanu težinu. Zadana težina podešava se pomoću brojača tipki. To je objašnjeno u posljednjem odjeljku.
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 ("težina:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Dalje, postavljamo vrijednost tare, za to prvo čitamo stanje tipke tare pomoću funkcije digitalRead () , ako je stanje nisko, ta težina tariramo na nulu. Tara funkcija ove važne ljestvice je dovođenje očitanja na nulu. Na primjer, ako imamo zdjelu u koju su stvari natovarene, tada će neto težina biti težina zdjele + težina stvari. Ako pritisnemo tipku tare sa zdjelom na teretnoj ćeliji prije utovara stvari, težina košarice bit će poništena i težinu stvari možemo izmjeriti sami.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Sada moramo postaviti uvjete za različite indikacije poput postavljanja kašnjenja zujalice i statusa led diode. To smo učinili koristeći uvjete if , imamo ukupno tri uvjeta. Prvo izračunavamo razliku između zadane težine i mjerne težine, a zatim tu vrijednost pohranjujemo u varijablu k.
plutajuće k = buttonPushCounter-i;
1. Ako je razlika između zadane težine i težine mjerenja veća ili jednaka 50 gms, zujalo se oglašava s kašnjenjem od 200 milisekundi (polako).
if (k> = 50) { digitalWrite (6, VISOKO); kašnjenje (200); digitalWrite (6, LOW); kašnjenje (200); }
2. Ako je razlika između zadane težine i težine mjerenja manja od 50 i veća od 1 grama, zvučni signal oglasi se s kašnjenjem od 50 milisekundi (brže).
if (k <50 && k> 1) { digitalWrite (6, VISOKO); kašnjenje (50); digitalWrite (6, LOW); kašnjenje (50); }
3. Kad je mjerna težina jednaka ili veća od zadane vrijednosti, to će uključiti zeleni i isključiti zujalicu i crveni voditelj.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, VISOKO); }
Imamo još dvije praznine funkcije () za podešavanje zadane težine (za brojanje pritiska gumba).
Funkcija koja povećava postavljenu vrijednost za 10 gms za svaki pritisak. To se postiže uporabom funkcije digitalRead Arduina ako je pin nizak, što znači da je tipka pritisnuta i to će vrijednost povećati za 10 gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Slično tome, checkdown je za smanjenje zadane vrijednosti za 10 gms za svaki pritisak.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Ovo označava kraj programskog dijela.

Ova elektronička vaga zasnovana na Arduinu savršena je za mjerenje težina do 10 kg (ovo ograničenje možemo povećati korištenjem veće nazivne opteretne stanice). To je 99% točno u odnosu na izvorna mjerenja.
Ako imate bilo kakvih pitanja u vezi s ovim krugom LCD uređaja za uravnoteženje težine zasnovan na Arduinu, objavite ga u odjeljku za komentare, hvala!
