- Arduino mérleg gépi munka
- Az Arduino alapú mérleghez szükséges alkatrészek
- Arduino alapú mérleg - áramköri ábra
- Az áramkör elkészítése pontozott táblán
- Tok készítése Arduino alapú mérleghez
- Arduino mérleg - kód
A digitális mérleg a modern mérnöki tervezés és tervezés másik csodája. Igen, arról a mérlegről beszélünk, amelyet a legtöbb élelmiszerboltban és más helyeken gyakran látunk, de vajon elgondolkodott már azon, hogy hogyan működik a súlymérleg? A kérdés megválaszolásához ebben a projektben megnézzük a terheléscellát és annak működését. Végül egy hordozható Arduino-alapú mérleget építünk a HX711 súlyérzékelővel, amely akár 10 kg súlyt is képes mérni.
Ez a mérőgép tökéletes a helyi üzletekben, ahová ömlesztve csomagolják az elemeket. A kereskedelmi termékekhez hasonlóan a súlymérlegünknek is lesz egy nulla gombja, amely nullázza a mérleget. Lehetősége van arra is, hogy beállítsa a súlyt a méréshez, amikor a mérési súly eléri a beállított súlyt, egy hangjelző gyorsan csipog és megáll, amikor a beállított súly megegyezik a mérési tömeggel. Így a felhasználó csak a hang meghallgatásával tudja becsomagolni, és nem kellene a kijelzőt néznie. Mivel ez egy nagyon egyszerű projekt, ezt nagyon egyszerűen meg fogjuk építeni olyan alkatrészek segítségével, mint az Arduino és a nyúlásmérő terhelésmérő. Tehát további késedelem nélkül menjünk bele közvetlenül.
Egy korábbi cikkünkben olyan projekteket készítettünk, mint a Raspberry Pi alapú súlyérzékelő és az IoT intelligens konténer e-mail riasztással és webfigyeléssel, a népszerű HX711 tehercellás erősítő modul használatával. Tehát ellenőrizze, ha ez a követelmény.
Arduino mérleg gépi munka
A projekt fő alkotóeleme egy mérőcella és a HX711 mérőcellás erősítő modul. Amint láthatja, az egyik oldalát tíz kilogrammal jelölik. Ezenkívül észrevehet valamilyen fehér védőragasztót a mérőcella felett, és négy különböző színű vezeték jön ki, amelyek a cikk későbbi részében felfedik a fehér védőragasztó alatt rejlő titkot és e négyszínű huzalok funkcióját.
A mérőcella olyan jelátalakító, amely az erőt vagy a nyomást elektromos kimenetté alakítja. Két oldala van, mondjuk a jobb és a bal, és alumínium tömbökből készül. Amint az közepén látható, az anyag elvékonyodik egy nagy lyuk elhelyezésével. Ezért van az a pont, amely deformációt szenved, amikor a teher a tartó oldalára kerül. Most képzelje el, hogy a jobb oldali cella az aljzathoz van szerelve, és a bal oldalon található a teher, ez a konfiguráció deformálja a feszültségmérő terhelő celláját a közepén lévő óriási lyuk miatt.
Amikor a terhelést a mérőcella teherfelületére helyezzük, a felső része feszültséget szenved, az alsó része pedig összenyomódik. Ezért az alumínium rúd lefelé hajlik a bal oldalon. Ha megmérjük ezt a deformációt, akkor megmérhetjük az alumínium tömbre kifejtett erőt, és pontosan ezt fogjuk tenni.
Most marad a kérdés, hogy mi van a fehér védőragasztóban? A védőragasztó belsejében találunk egy nagyon vékony elasztikus alkatrészt, amelyet feszültségmérőnek nevezünk. A nyúlásmérő egy olyan elem, amelyet a megterhelés mérésére használnak. Ha közelebbről megvizsgáljuk ezt a komponenst, két csatlakozó párnát láthatunk, majd ismétlődő lehajlásokkal rendelkezünk vezetőképes vezetékmintával. Ennek a vezető vezetéknek meghatározott ellenállása van. Amikor meghajlítjuk, az ellenállás értéke megváltozik? Tehát, a feszültségmérő egyik oldala egy helyen van rögzítve és rögzítve, ha egy súlyt helyezünk az alumínium rúd másik oldalára, ez a feszültségmérő hajlítását kényszeríti, ami megváltoztatja az ellenállást. Hogyan történik ez valójában? A feszültségmérő vezetőképes mintázata rézből készül, ennek a huzalnak bizonyos területe és hossza lesz, így ez a két egység adja meg a huzal ellenállását. A huzal ellenállása ellenáll az áramlásnak. Most nyilvánvaló, hogy ha ennek a vezetéknek a területe kisebb lesz,kevesebb elektron haladhat át, ami alacsonyabb áramot jelent. Ha megnöveljük a területet, ez növeli a vezető ellenállását. Ha valamilyen erőt fejtünk ki erre a vezetékre, ez megnyújtja a területet, és ugyanakkor kisebb lesz, nő az ellenállás. De ez az ellenállási variáció nagyon alacsony. Ha megnyújtjuk a feszültségmérőt, az ellenállás növekszik, és ha összenyomjuk, az ellenállás kisebb lesz. Az erő méréséhez meg kell mérnünk az ellenállást. Az ellenállás közvetlen mérése nem mindig praktikus, mert a változás nagyon kicsi. Tehát az ellenállás mérése helyett könnyen mérhetjük a feszültségeket. Tehát ebben az esetben át kell alakítanunk a szelvény kimenetét az ellenállási értékekről a feszültségértékekre.Ha valamilyen erőt fejtünk ki erre a vezetékre, ez megnyújtja a területet, és ugyanakkor kisebb lesz, nő az ellenállás. De ez az ellenállási variáció nagyon alacsony. Ha megnyújtjuk a feszültségmérőt, az ellenállás növekszik, és ha összenyomjuk, az ellenállás kisebb lesz. Az erő méréséhez meg kell mérnünk az ellenállást. Az ellenállás közvetlen mérése nem mindig praktikus, mert a változás nagyon kicsi. Tehát az ellenállás mérése helyett könnyen megmérhetjük a feszültségeket. Tehát ebben az esetben át kell alakítanunk a szelvény kimenetét az ellenállási értékekről a feszültségértékekre.Ha valamilyen erőt fejtünk ki erre a vezetékre, ez megnyújtja a területet, és ugyanakkor kisebb lesz, nő az ellenállás. De ez az ellenállási variáció nagyon alacsony. Ha megnyújtjuk a feszültségmérőt, az ellenállás növekszik, és ha összenyomjuk, az ellenállás kisebb lesz. Az erő méréséhez meg kell mérnünk az ellenállást. Az ellenállás közvetlen mérése nem mindig praktikus, mert a változás nagyon kicsi. Tehát az ellenállás mérése helyett könnyen megmérhetjük a feszültségeket. Tehát ebben az esetben át kell alakítanunk a szelvény kimenetét az ellenállási értékekről a feszültségértékekre.az ellenállás kisebb lesz. Az erő méréséhez meg kell mérnünk az ellenállást. Az ellenállás közvetlen mérése nem mindig praktikus, mert a változás nagyon kicsi. Tehát az ellenállás mérése helyett könnyen megmérhetjük a feszültségeket. Tehát ebben az esetben át kell alakítanunk a szelvény kimenetét az ellenállási értékekről a feszültségértékekre.az ellenállás kisebb lesz. Az erő méréséhez meg kell mérnünk az ellenállást. Az ellenállás közvetlen mérése nem mindig praktikus, mert a változás nagyon kicsi. Tehát az ellenállás mérése helyett könnyen megmérhetjük a feszültségeket. Tehát ebben az esetben át kell alakítanunk a szelvény kimenetét az ellenállási értékekről a feszültségértékekre.
Ezt a Wheatstone híd segítségével tehetjük meg. Ha a híd kiegyensúlyozott, akkor a feszültségmérőt a Wheatstone-hídba helyezzük, a középső pont feszültségének nullának kell lennie (korábban építettünk egy projektet, ahol leírtuk, hogyan működik egy Wheatstone-híd, ezt megnézheti, ha akarja többet tudni a témáról). Amikor a feszültségmérő megváltoztatja ellenállását, kiegyensúlyozatlan lesz a híd, és a feszültség is változik. Tehát a Wheatstone-híd így alakítja át az ellenállásváltozásokat feszültségértékekké.
De ez a feszültségváltozás még mindig nagyon kicsi, ezért ennek növeléséhez a HX711 modult kell használnunk. A HX711 egy 24 bites Differential ADC, így nagyon kicsi feszültségváltozásokat tudnánk mérni. 0-tól 2-ig ad exponenciális 24 értéket.
Az Arduino alapú mérleghez szükséges alkatrészek
Annak érdekében, hogy ez a projekt a lehető legegyszerűbb legyen, nagyon általános összetevőket használtunk, amelyeket bármely helyi hobbiboltban megtalálhat. Az alábbi kép ötletet ad az alkatrészekről. Ezenkívül megvan az alább felsorolt anyagjegyzék.
- Mérőcella (10 kg-os mérőcellát használunk)
- HX 711 erősítő modul
- Arduino Nano
- I2C LCD 16X2 - I2C kompatibilis
- 1k ellenállás -2 Nos
- LED-ek -2Nem
- Berregő
- Közös PCB
- 7,4 V-os akkumulátor (ha hordozhatónak akarja)
- LM7805 feszültségszabályozó
Arduino alapú mérleg - áramköri ábra
A mérőcellának négy vezetéke van, vörös, fekete, zöld és fehér. Ez a szín a gyártóktól függően változhat, ezért jobb, ha az adatlapra hivatkozik. Csatlakoztassa a pirosat a HX711 kártya E + -jához, a feketét az E-hez, a fehéret az A + -hoz, a zöldet pedig az A-, a Dout-hoz, és a kártya csatlakozásának óráját a D4-hez, illetve a D5-hez. Csatlakoztassa a nyomógombok egyik végét a D3, D8, D9, másik végét pedig a földhöz. I2C LCD-vel rendelkezünk, ezért csatlakoztassa az SDA-t az A4-hez, az SCL-t pedig az A5-hez. Csatlakoztassa az LCD, a HX711 és az Arduino földjét a földhöz, és csatlakoztassa a VCC-ket az Arduino 5Vpinjéhez is. Az összes modul 5V-on működik, ezért hozzáadtunk egy LM7805 feszültségszabályozót. Ha nem szeretné, hogy hordozható legyen, akkor az Arduino-t USB-kábellel közvetlenül táplálhatja.
Az áramkör elkészítése pontozott táblán
Az összes alkatrészt egy közös pontozott perfboardra forrasztottuk. Női fejlécekkel forrasztottuk az Arduino és az ADC áramkört, valamint vezetékeket használtunk az összes nyomógomb és LED összekapcsolására. Miután az összes forrasztási folyamat befejeződött, megbizonyosodtunk arról, hogy megfelelő 5V jön-e ki az LM7805-ből. Végül kapcsolót kapcsoltunk az áramkör be- és kikapcsolására. Miután mindannyian végeztünk, úgy nézett ki, mint az alábbi kép.
Tok készítése Arduino alapú mérleghez
Amint láthatja, a mérőcellának van néhány csavarmenete, így egy alaplemezre tudtuk felszerelni. Mérlegünk alapjául PVC táblát fogunk használni, ehhez először 20 * 20 cm négyzetet és négy 20 * 5 téglalapot vágunk ki a PVC tábláról. Ezután kemény ragasztóval minden darabot felragasztottunk és egy kis burkolatot készítettünk.
Ne feledje, hogy nem oldottuk meg az egyik oldalt, mert rá kell helyezni a nyomógombokat, a LED-eket és az LCD-t. Ezután egy műanyag táblát használtunk a mérleg tetejére. Mielőtt ezt a beállítást véglegessé tennénk, meg kell győződnünk arról, hogy elegendő helyünk van-e a talajtól a mérőcelláig, így az képes lesz hajlítani, ezért csavarokat és anyákat helyeztünk el a mérőcella és az alap közé, valamint hozzáadtuk néhány műanyag távtartó a mérőcella és a felső rész között. kerek műanyag lapot használtunk a mérleg legfőbb okosaként.
Ezután az LCD-t, a LED-eket és a nyomógombokat az előlapra helyeztük, és mindent hosszú szigetelt vezetékkel összekötöttünk. Miután befejeztük a huzalozási folyamatot, az előlapot némi dőléssel a fő alaphoz ragasztottuk, így az LCD-ről nagyon könnyen leolvashatjuk az értékeket. végül a főkapcsolót a mérleg oldalához rögzítettük, és ennyi. Így készítettük el a testet a súlymérlegünkhöz.
Tervezhet ötleteivel, de ne felejtse el elhelyezni a terheléscellát, mint a képen.
Arduino mérleg - kód
Miután befejeztük a digitális lépték összeállításának folyamatát, áttérhetünk a programozási részre. Az egyszerű programozás érdekében a HX711 könyvtárat, az EEPROM könyvtárat és a LiquidCrystal könyvtárat fogjuk használni. Töltheti le a HX711 könyvtárat a hivatalos GitHub tárházból, vagy lépjen az Eszközök > könyvtár beillesztése > könyvtár kezelése elemre, majd a könyvtár letöltése után a HX711 kulcsszóval kereshet a könyvtárban, telepítse az Arduino ide.
Először kalibrálnunk kell a terhelési cellát, és ezt az értéket az EEPROM-on kell tárolnunk, ehhez lépjen a fájl> példák> HX 711_ADC menüpontba, majd válassza ki a kalibrációs kódot. A kód feltöltése előtt helyezze a mérleget egy stabil sík felületre. Ezután töltse fel a kódot az Arduino-ra, és nyissa meg a soros monitort. Ezután állítsa át az átviteli sebességet 572600-ra. Most kérje a monitorot, hogy vegye figyelembe a súlyt, ehhez meg kell nyomnunk a t gombot, és be kell írnunk.
Most az ismert súlyt kell elhelyeznünk a mérlegen, esetemben ez 194 g. Az ismert súly elhelyezése után írja be a súlyt a soros monitorra, és nyomja meg az Enter billentyűt.
Most a soros monitor megkérdezi, hogy el akarja-e menteni az értéket az EEPROM-ban, vagy sem, ezért írja be az Y-t az igen választásához. Most a soros monitoron láthatjuk a súlyt.
A projekt fő kódja, amelyet a HX711 könyvtár példavázlatából fejlesztettünk ki. Alulról letöltheti a projekt kódját.
A kódolási szakaszban először mindhárom könyvtárat felvettük. A HX711 könyvtár a terhelési cellák értékeinek felvételére szolgál. Az EEPROM az Arduino ide beépített könyvtára, amelyet értékek tárolására használnak az EEPROM-ban, a LiquidCrystal könyvtár pedig az l2C LCD modulhoz készült.
#include
Ezután egész számokat ad meg a különböző csapokhoz és a hozzárendelt értékekhez. A HX711_ADC loadcell funkció a Dout és az óra tű beállítására szolgál.
const int HX711_outout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; hosszú t; const int Up_buttonPin = 9; const int Le_gombPin = 8; lebegő gombPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; lebeg le_utolsóButtonState = 0;
A beállítási részben először a soros monitort indítottuk el, ez csak a hibakereséshez használható. Ezután definiáltuk a pin-üzemmódokat, az összes nyomógomb bemenetként van meghatározva. Az Arduino PULL UP funkció segítségével a csapokat normál esetben logikai magasra állítjuk. Tehát nem akarunk ehhez külső ellenállást használni.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
A következő kódsorok az I2C LCD beállítására szolgálnak. Először az üdvözlő szöveget jelenítettük meg az LCD.print () függvény segítségével, két másodperc múlva kitisztítottuk a kijelzőt az lcd.clear () segítségével . Vagyis az elején a kijelzőn az ARDUINO BALANCE jelenik meg üdvözlő szövegként, és két másodperc múlva kitisztul és megjeleníti a mérési súlyokat.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO MÉRLEG"); lcd.setCursor (0, 1); lcd.print ("mérjünk"); késés (2000); lcd.clear ();
Ezután a loadCell.begin () függvény segítségével elkezdtük olvasni a loadcell értékeit, ezt követően a kalibrált értékek EEPROM- ját olvastuk le, ezt az EEPROM.get () függvény segítségével tesszük meg . Vagyis már kalibrációs vázlat segítségével tároltuk az értéket az EEPROM címben, csak újra felvettük ezt az értéket.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
A ciklus szakaszban először a LoadCell.update () használatával ellenőrizzük , hogy rendelkezésre állnak- e adatok a terhelő cellából, ha rendelkezésre állnak, ezeket az adatokat elolvassuk és tároljuk, ehhez a LoadCell.getData () fájlt használjuk. Ezután meg kell jelenítenünk a tárolt értéket LCD-ben. Ehhez az LCD.print () függvényt használtuk. kinyomtatjuk a beállított súlyt is. A beállított súly beállítása a nyomógomb számláló segítségével történik. Ezt az utolsó szakasz magyarázta.
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 ("súly:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Ezután beállítjuk a táraértéket, ehhez először a digitalRead () függvény segítségével olvassuk le a kátrány nyomógomb állapotát, ha alacsony az állapot, akkor ezt a súlyt nullára tároljuk . Ennek a súlyskálának az önműködő funkciója az, hogy nullára nullázza az értékeket. Például, ha van egy tálunk, ahová a dolgok be vannak töltve, akkor a nettó súly a tál súlya lesz és a dolgok súlya. Ha a rakodógombot úgy nyomjuk meg, hogy az edény a tálcán van, a dolgok betöltése előtt a kosár súlya semmissé válik, és egyedül mérhetjük a dolgok súlyát.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Most meg kell adnunk a feltételeket a különféle jelzésekhez, például a hangjelzés késleltetésének és a led állapotának beállításához. Ha a feltételek használatával megtettük, akkor összesen három feltételünk van. Először kiszámoljuk a beállított tömeg és a mérési súly közötti különbséget, majd ezt az értéket eltároljuk a k változóban.
úszó k = buttonPushCounter-i;
1. Ha a beállított tömeg és a mérési súly közötti különbség nagyobb vagy egyenlő, mint 50 g, a hangjelző 200 milliszekundum késéssel (lassan) sípol.
if (k> = 50) { digitalWrite (6, HIGH); késés (200); digitalWrite (6, LOW); késés (200); }
2. Ha a beállított tömeg és a mérési súly közötti különbség 50-nél kisebb és 1 grammnál nagyobb, a hangjelző 50 milliszekundum késéssel (gyorsabban) sípol.
if (k <50 && k> 1) { digitalWrite (6, HIGH); késés (50); digitalWrite (6, LOW); késés (50); }
3. Ha a mérési súly megegyezik vagy meghaladja a beállított értéket, ez bekapcsolja a zöld LED-et, és kikapcsolja a hangjelzőt és a piros LED-et.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, HIGH); }
Még két üres funkciónk van () a beállított súly beállításához (a gombnyomás számlálásához).
A funkció növeli a beállított értéket 10gms-rel minden egyes megnyomáskor. Ez az Arduino digitalRead funkciójának használatával történik, ha a tű alacsony, ami azt jelenti, hogy megnyomják a gombot, és ez 10gms-rel növeli az értéket.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Hasonlóképpen, az ellenőrzés a beállított érték 10 gms-mal történő csökkentését jelenti minden egyes megnyomáskor.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Ez a programozási rész végét jelenti.
Ez az Arduino alapú elektronikus mérleg tökéletes a 10 kg-os súlyok mérésére (magasabb névleges terheléssel növelhetjük ezt a határt). Ez 99% -ban pontos az eredeti mérésekhez képest.
Ha kérdése van ezzel az Arduino alapú LCD súlymérleg gép áramkörével kapcsolatban, kérjük, tegye meg a megjegyzés részben, köszönöm!