- Arduino svēršanas mašīna strādā
- Komponenti, kas nepieciešami svariem Arduino
- Arduino svēršanas mašīna - shēmas shēma
- Circuit veidošana uz punktēta perfboard
- Korpusa veidošana svēršanas mašīnai, kuras pamatā ir Arduino
- Arduino svēršanas mašīna - kods
Digitālās slodzes skalas ir vēl viens mūsdienu inženierijas un dizaina brīnums. Jā, mēs runājam par svēršanas skalu, kuru mēs bieži redzam lielākajā daļā pārtikas preču veikalu un citās vietās, bet vai jūs kādreiz esat domājis, kā darbojas svara skala? Lai atbildētu uz šo jautājumu, šajā projektā mēs aplūkosim slodzes elementu un tā darbību. Visbeidzot, mēs izveidosim pārnēsājamu Arduino bāzes slodzes skalu ar HX711 svara sensoru, kas var izmērīt svaru līdz 10 kg.
Šī svēršanas mašīna ir lieliski piemērota vietējiem veikaliem, kur viņi iesaiņo preces lielos daudzumos. Tāpat kā komerciāliem produktiem, arī mūsu svara skalā būs nulle, kas nulles mērogu. Turklāt tam ir iespēja iestatīt svaru mērīšanai, kad mērīšanas svars sasniedz iestatīto svaru, skaņas signāls ātri pīkst un apstājas, kad iestatītais svars ir vienāds ar mērīšanas svaru. Tādā veidā lietotājs to var iesaiņot, tikai dzirdot skaņu, un viņam nevajadzētu skatīties displejā. Tā kā tas ir ļoti vienkāršs projekts, mēs to izveidosim ļoti viegli, izmantojot tādus komponentus kā Arduino un deformācijas mērierīces slodzes šūnu. Tāpēc bez turpmākas kavēšanās iedziļināsimies tajā.
Iepriekšējā rakstā mēs esam izveidojuši tādus projektus kā Raspberry Pi balstīts svara sensors un IoT viedais konteiners ar e-pasta brīdinājumu un tīmekļa uzraudzību, izmantojot populāro HX711 slodzes šūnu pastiprinātāja moduli. Tātad, pārbaudiet, vai tā ir jūsu prasība.
Arduino svēršanas mašīna strādā
Šī projekta galvenā sastāvdaļa ir slodzes elementu un HX711 slodzes elementu pastiprinātāja modulis. Kā redzat, viena puse ir atzīmēta ar desmit kilogramiem. Turklāt jūs varat pamanīt sava veida baltu aizsarglīmi pār slodzes devēju, un iznāk četru dažādu krāsu vadi, kas vēlāk rakstā atklās zem baltās aizsarglīmes esošo noslēpumu un šo četrkrāsu vadu funkciju.
Slodzes elements ir devējs, kas spēku vai spiedienu pārveido par elektrisko jaudu. Tam ir divas puses, teiksim, labā un kreisā puse, un tas ir izgatavots no alumīnija blokiem. Kā redzat materiāla vidū, tas tiek atšķaidīts, ievietojot lielu caurumu. Tieši tāpēc tieši tā deformējas, ja slodze tiek novietota stiprinājuma pusē. Tagad iedomājieties, ka labās puses šūna ir piestiprināta pie pamatnes, un kreisajā pusē ir vieta, kur tiek novietota slodze, šī konfigurācija deformē spriedzes mērītāja slodzes elementu, jo vidū ir milzīgs caurums.
Kad slodze tiek novietota uz slodzes elementa slodzes pusi, augšējā daļa cietīs, un apakšējā daļa saspiedīsies. Tāpēc alumīnija stienis kreisajā pusē noliekas uz leju. Ja mēs izmērām šo deformāciju, mēs varam izmērīt spēku, kas tika pielikts alumīnija blokam, un mēs tieši to darīsim.
Tagad paliek jautājums, kas ir baltās aizsarglīmes iekšpusē? Šīs aizsarglīmes iekšpusē mēs atradīsim ļoti plānu elastīgu komponentu, ko sauc par deformācijas mērītāju. Sprieguma mērītājs ir sastāvdaļa, ko izmanto, lai izmērītu deformāciju. Ja rūpīgāk aplūkosim šo komponentu, mēs varam redzēt divus savienojuma spilventiņus, un tad mums ir vadītspējīgs stieples modelis ar atkārtotām novirzēm. Šim vadošajam vadam ir noteikta pretestība. Kad mēs to salieksim, pretestības vērtība mainīsies? Tātad, viena deformācijas mērierīces puse ir uzstādīta un piestiprināta vietā, ja alumīnija stieņa otrā pusē novietosim svaru, tas piespiedīs deformācijas mērierīci saliekties, kas izraisīs izmaiņas pretestībā. Kā tas notiek patiesībā? Sprieguma mērītāja vadošais modelis ir izgatavots no vara, šim vadam būs noteikts laukums un garums, tāpēc šīs divas vienības sniegs stieples pretestību. Vada pretestība pretojas strāvas plūsmai. Tagad ir skaidrs, ka, ja šī stieples laukums kļūst mazāks,mazāk elektronu varētu iziet, kas nozīmē zemāku strāvu. Tagad, ja mēs palielināsim laukumu, tas palielinās vadītāja pretestību. Ja šim vadam tiek piemērots zināms spēks, tas izstiepj laukumu un tajā pašā laikā tas kļūs mazāks, palielināsies pretestība. Bet šīs pretestības variācijas ir ļoti zemas. Ja mēs izstiepjam deformācijas mērītāju, pretestība palielināsies, un, ja mēs to saspiedīsim, pretestība kļūs mazāka. Lai izmērītu spēku, mums jāmēra pretestība. Tieši izmērīt pretestību ne vienmēr ir praktiski, jo izmaiņas ir ļoti mazas. Tātad pretestības mērīšanas vietā mēs varam viegli izmērīt spriegumu. Tātad, šajā gadījumā mums jāpārvērš mērierīces izeja no pretestības vērtībām sprieguma vērtībās.Ja šim vadam tiek piemērots zināms spēks, tas izstiepj laukumu un tajā pašā laikā tas kļūs mazāks, palielināsies pretestība. Bet šīs pretestības variācijas ir ļoti zemas. Ja mēs izstiepjam deformācijas mērītāju, pretestība palielināsies, un, ja mēs to saspiedīsim, pretestība kļūs mazāka. Lai izmērītu spēku, mums jāmēra pretestība. Tieši izmērīt pretestību ne vienmēr ir praktiski, jo izmaiņas ir ļoti mazas. Tātad pretestības mērīšanas vietā mēs varam viegli izmērīt spriegumu. Tātad, šajā gadījumā mums jāpārvērš mērierīces izeja no pretestības vērtībām sprieguma vērtībās.Ja šim vadam tiek piemērots kāds spēks, tas izstiepj laukumu un tajā pašā laikā tas kļūs mazāks, palielināsies pretestība. Bet šīs pretestības variācijas ir ļoti zemas. Ja mēs izstiepjam deformācijas mērītāju, pretestība palielināsies, un, ja mēs to saspiedīsim, pretestība kļūs mazāka. Lai izmērītu spēku, mums jāmēra pretestība. Tieši izmērīt pretestību ne vienmēr ir praktiski, jo izmaiņas ir ļoti mazas. Tātad pretestības mērīšanas vietā mēs varam viegli izmērīt spriegumu. Tātad, šajā gadījumā mums jāpārvērš mērierīces izeja no pretestības vērtībām sprieguma vērtībās.pretestība kļūs mazāka. Lai izmērītu spēku, mums jāmēra pretestība. Tieši izmērīt pretestību ne vienmēr ir praktiski, jo izmaiņas ir ļoti mazas. Tātad pretestības mērīšanas vietā mēs varam viegli izmērīt spriegumu. Tātad, šajā gadījumā mums jāpārvērš mērierīces izeja no pretestības vērtībām sprieguma vērtībās.pretestība kļūs mazāka. Lai izmērītu spēku, mums jāmēra pretestība. Tieši izmērīt pretestību ne vienmēr ir praktiski, jo izmaiņas ir ļoti mazas. Tātad pretestības mērīšanas vietā mēs varam viegli izmērīt spriegumu. Tātad, šajā gadījumā mums jāpārvērš mērierīces izeja no pretestības vērtībām sprieguma vērtībās.
Mēs to varam izdarīt, izmantojot Wheatstone tiltu. Ja tilts ir līdzsvarots, vidējā punkta spriegumam jābūt nullei (ja mēs esam izveidojuši projektu, kurā mēs aprakstījām, kā darbojas Wheatstone tilts, mēs to varam pārbaudīt, ja vēlaties uzzināt vairāk par tēmu). Kad sprieguma mērītājs mainīs pretestību, tas izlīdzinās tiltu un mainīsies arī spriegums. Tātad, Wheatstone tilts pārveido pretestības svārstības sprieguma vērtībās.
Bet šīs sprieguma izmaiņas joprojām ir ļoti mazas, tāpēc, lai to palielinātu, mums jāizmanto HX711 modulis. HX711 ir 24 bitu diferenciālā ADC, tādā veidā mēs varētu izmērīt ļoti mazas sprieguma izmaiņas. tas dos vērtības no 0 līdz 2 eksponenciāliem 24.
Komponenti, kas nepieciešami svariem Arduino
Lai padarītu šo projektu pēc iespējas vienkāršāku, mēs esam izmantojuši ļoti vispārīgus komponentus, kurus varat atrast jebkurā vietējā vaļasprieku veikalā. Zemāk esošais attēls sniegs jums priekšstatu par komponentiem. Turklāt mums ir zemāk uzskaitītais materiālu saraksts (BOM).
- Mērīšanas elements (mēs izmantojam 10 kg svaru svaru)
- HX 711 pastiprinātāja modulis
- Arduino Nano
- I2C LCD 16X2 - saderīgs ar I2C
- 1k rezistors -2 Nr
- Gaismas diodes -2Nos
- Buzzer
- Kopējā PCB
- 7.4V akumulators (ja vēlaties, lai tas būtu pārnēsājams)
- LM7805 sprieguma regulators
Arduino svēršanas mašīna - shēmas shēma
Kravas kamerā ir četri vadi, kas ir sarkani, melni, zaļi un balti. Šī krāsa var atšķirties atkarībā no ražotāja, tāpēc labāk ir atsaukties uz datu lapu. Pievienojiet sarkano krāsu HX711 plāksnes E +, melno - E-, balto - A +, zaļo - A-, Dout un pulksteņa pulksteni savienojiet attiecīgi ar D4 un D5. Savienojiet vienu spiedpogu galu ar D3, D8, D9 un citus galus ar zemi. Mums ir I2C LCD, tāpēc savienojiet SDA ar A4 un SCL ar A5. Savienojiet LCD, HX711 un Arduino zemi ar zemi, pievienojiet VCC arī Arduino 5Vpin. Visi moduļi darbojas uz 5V, tāpēc esam pievienojuši LM7805 sprieguma regulatoru. Ja nevēlaties, lai tas būtu pārnēsājams, varat tieši barot Arduino, izmantojot USB kabeli.
Circuit veidošana uz punktēta perfboard
Visus komponentus mēs esam pielodējuši uz kopīga punktota perfboard. Mēs izmantojām sieviešu galvenes, lai lodētu Arduino un ADC ar shēmu, kā arī esam izmantojuši vadus, lai savienotu visas spiedpogas un gaismas diodes. Pēc tam, kad viss lodēšanas process ir pabeigts, mēs esam pārliecinājušies, ka no LM7805 iziet pareizs 5V. Visbeidzot, mēs esam ieslēguši ķēdes ieslēgšanas / izslēgšanas slēdzi. Kad visi bijām pabeiguši, izskatījās, kā zemāk redzamais attēls.
Korpusa veidošana svēršanas mašīnai, kuras pamatā ir Arduino
Kā redzat, slodzes elementā ir daži skrūvju vītnes, tāpēc mēs to varētu uzstādīt uz pamatnes plāksnes. Mēs izmantosim PVC dēli mūsu skalas pamatnei, lai to izdarītu, vispirms no PVC dēļa izgriezām 20 * 20 cm kvadrātveida un četrus 20 * 5 taisnstūrus. Tad, izmantojot cieto līmi, mēs salīmējām katru gabalu un izveidojām nelielu apvalku.
Atcerieties, ka mēs nenovērsām vienu pusi, jo mums uz tā jānovieto spiedpogas, gaismas diodes un LCD. Tad skalas augšdaļai izmantojām plastmasas dēli. Pirms padarīt šo iestatījumu pastāvīgu, mums jāpārliecinās, vai mums ir pietiekami daudz vietas no zemes līdz slodzes devējam, tāpēc tā varēs saliekties, tāpēc starp slodzes elementu un pamatni ievietojām skrūves un uzgriežņus, kā arī pievienojām daži plastmasas starplikas starp slodzes devēju un augšējo daļu. Mēs izmantojām apaļu plastmasas loksni kā līdzsvaru.
Tad mēs novietojām LCD, gaismas diodes un spiedpogas uz priekšējā paneļa un visu, kas savienots ar garu izolētu vadu. Pēc elektroinstalācijas pabeigšanas priekšējo paneli ar nelielu slīpumu pielīmējām pie pamatnes, lai mēs varētu ļoti viegli nolasīt LCD vērtības. visbeidzot, mēs pievienojām galveno slēdzi līdzsvara pusē, un viss. Tā mēs izveidojām ķermeni savai svara skalai.
Jūs varat noformēt ar savām idejām, taču atcerieties ievietot slodzes elementus līdzīgi kā attēlā.
Arduino svēršanas mašīna - kods
Tā kā mūsu digitālā mēroga izveides process ir pabeigts, mēs varam pāriet uz programmēšanas daļu. Ērtai programmēšanai mēs izmantosim bibliotēku HX711, EEPROM bibliotēku un LiquidCrystal bibliotēku. Varat lejupielādēt HX711 bibliotēku no oficiālās GitHub krātuves vai doties uz rīkiem > iekļaut bibliotēku > pārvaldīt bibliotēku, pēc tam meklēt bibliotēkā, izmantojot atslēgvārdu HX711, pēc bibliotēkas lejupielādes instalējiet to Arduino ide.
Pirmkārt, mums jākalibrē slodzes šūna un šī vērtība jāuzglabā EEPROM, tam dodieties uz failu> piemēri> HX 711_ADC, pēc tam atlasiet kalibrēšanas kodu. Pirms koda augšupielādes novietojiet atlikumu uz stabilas plaknes virsmas. Pēc tam augšupielādējiet kodu Arduino un atveriet sērijas monitoru. Pēc tam mainiet datu pārraides ātrumu uz 572600. Tagad monitors lūdz ņemt svaru, tāpēc mums jānospiež t un jāievada.
Tagad mums svarā ir jāievieto zināmais svars, manā gadījumā tas ir 194 gm. Pēc zināmā svara ievietošanas sērijveida monitorā ierakstiet svaru un nospiediet taustiņu Enter.
Tagad sērijveida monitors jautā, vai vēlaties saglabāt vērtību EEPROM vai nē, tāpēc ierakstiet Y, lai izvēlētos jā. Tagad sērijveida monitorā mēs varam redzēt svaru.
Šī projekta galvenais kods, kuru mēs izstrādājām no HX711 bibliotēkas skices parauga. Jūs varat lejupielādēt šī projekta kodu no apakšas.
Kodēšanas sadaļā vispirms pievienojām visas trīs bibliotēkas. HX711 bibliotēka ir paredzēta slodzes šūnu vērtību noteikšanai. EEPROM ir iebūvēta Arduino ide bibliotēka, ko izmanto vērtību glabāšanai EEPROM, un LiquidCrystal bibliotēka ir paredzēta l2C LCD modulim.
# iekļaut
Tad definēti veseli skaitļi dažādām tapām un piešķirtajām vērtībām. HX711_ADC loadcell funkcija ir paredzēta Dout un pulksteņa tapas iestatīšanai.
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; garš t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; pludiņa pogaPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Iestatīšanas sadaļā vispirms mēs sākām seriālo monitoru, tas ir paredzēts tikai atkļūdošanai. Tad mēs definējām tapu režīmus, visas spiedpogas ir definētas kā ievade. Ar Arduino PULL UP funkcijas palīdzību mēs parasti iestatām tapas uz loģiski augstu. Tātad, mēs nevēlamies tam izmantot nekādus ārējos rezistorus.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Šīs kodu rindas ir paredzētas I2C LCD iestatīšanai. Pirmkārt, mēs parādījām sveiciena tekstu, izmantojot LCD.print () funkciju, pēc divām sekundēm mēs notīrījām displeju, izmantojot lcd.clear () . Tas ir, sākumā displejā kā sveiciena teksts tiek parādīts ARDUINO BALANCE, un pēc divām sekundēm tas tiks notīrīts un parādīts mērīšanas svars.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("izmērīsim"); kavēšanās (2000); lcd.clear ();
Pēc tam sāka lasīt vērtības no loadcell, izmantojot funkciju loadCell.begin () , pēc tam mēs nolasījām EEPROM kalibrētajām vērtībām, mēs to darām, izmantojot funkciju EEPROM.get () . Tas ir, mēs jau saglabājām vērtību, izmantojot kalibrēšanas skici EEPROM adresē, mēs vienkārši pārņemam šo vērtību.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Cilpas sadaļā vispirms mēs pārbaudām, vai ir pieejami dati no slodzes šūnas, izmantojot LoadCell.update (), ja tie ir pieejami, mēs šos datus lasām un glabājam, tāpēc mēs izmantojam LoadCell.getData () . Tālāk mums jāparāda saglabātā vērtība LCD. Lai to izdarītu, mēs izmantojām LCD.print () funkciju. arī mēs izdrukājam iestatīto svaru. Iestatītā svara iestatīšana notiek ar spiedpogas skaitītāja palīdzību. Tas izskaidrots pēdējā sadaļā.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (milis ()> t + serialPrintInterval) { pludiņš 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 ("svars:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Tālāk mēs iestatām taras vērtību, tam vispirms mēs nolasām taras spiedpogas stāvokli, izmantojot funkciju digitalRead () , ja stāvoklis ir zems, mēs šo svaru uz nulli. Šīs svara skalas taras funkcija ir nolīdzināt nulli. Piemēram, ja mums ir bļoda, kurā lietas ir iekrautas, tad neto svars būs bļodas svars + lietu svars. Ja pirms lietu iekraušanas mēs nospiedīsim taras pogu ar bļodu uz slodzes devēja, groza svars tiks noliegts, un mēs varēsim izmērīt lietu svaru atsevišķi.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Tagad mums ir jānosaka nosacījumi dažādām indikācijām, piemēram, skaņas signāla aizkavēšanās un LED statusa iestatīšana. Mēs to izdarījām, izmantojot nosacījumus, ja mums ir trīs nosacījumi. Pirmkārt, mēs aprēķinām starpību starp noteikto svaru un svara svaru, pēc tam saglabājam šo vērtību mainīgajā k.
pludiņš k = buttonPushCounter-i;
1. Ja starpība starp iestatīto svaru un svara svaru ir lielāka vai vienāda ar 50 gms, skaņas signāls iepīkstas ar 200 milisekunžu aizturi (lēni).
ja (k> = 50) { digitalWrite (6, HIGH); kavēšanās (200); digitalWrite (6, LOW); kavēšanās (200); }
2. Ja starpība starp iestatīto svaru un svara svaru ir mazāka par 50 un lielāka par 1 gramu, skaņas signāls iepīkstas ar 50 milisekunžu kavēšanos (ātrāk).
ja (k <50 && k> 1) { digitalWrite (6, HIGH); kavēšanās (50); digitalWrite (6, LOW); kavēšanās (50); }
3. Kad mērīšanas svars ir vienāds vai lielāks par iestatīto vērtību, tas ieslēdz zaļo un izslēgtu skaņas signālu un sarkano.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, HIGH); }
Mums ir vēl divas tukšas funkcijas () iestatītā svara iestatīšanai (pogas nospiešanas skaitīšanai).
Funkcija palielina iestatīto vērtību par 10 gms katram nospiešanai. Tas tiek darīts, izmantojot Arduino digitalRead funkciju, ja piespraude ir zema, tas nozīmē, ka poga ir nospiesta un vērtība palielināsies par 10 gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Līdzīgi
pārbaude ir paredzēta iestatītās vērtības samazināšanai par 10 gms katram nospiešanai.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Tas iezīmē programmēšanas daļas beigas.
Šī Arduino bāzētā elektroniskā skala ir ideāli piemērota svara mērīšanai līdz 10kg (mēs varam palielināt šo robežu, izmantojot augstāku nominālo slodzes elementu). Tas ir par 99% precīzs sākotnējiem mērījumiem.
Ja jums ir kādi jautājumi par šo Arduino bāzes LCD svara līdzsvarošanas mašīnas shēmu, lūdzu, ievietojiet to komentāru sadaļā, paldies!