Obsah:
Video: Digitálna vodováha založená na Arduine a MPU6050: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Vitajte pri mojom prvom pokyne! Dúfam, že vám to príde poučné. Neváhajte nám zanechať spätnú väzbu, či už pozitívnu alebo negatívnu.
Tento projekt má vytvoriť digitálnu vodováhu založenú na arduino a MPU6050. Aj keď je hotový dizajn a kód môj, pôvodný koncept a väčšina kódu, z ktorého som pracoval, nie je. Nie som plagiátorstvo, takže som viac ako šťastný, že môžem oceniť myšlienky, na ktorých som staval. 2 hlavní ľudia, na ktorých by som chcel kričať, sú Paul McWhorter a DroneBot Workshop z YouTuberu. Odkazy na ne uvádzam vo svojich užitočných odkazoch na youtube vo formáte PDF. Ďakujem tiež EEEnthusiast za jeho informačné video o používaní MPU6050 vrátane nastavenia a čítania z modulu bez externej knižnice (jeho odkaz je v rovnakom PDF).
Projekt, ktorý som vyrobil, funguje „tak, ako je“a je rozprávkovo presný, určite až o 45% v oboch smeroch. Môžete ho použiť presne tak, ako som ho navrhol, alebo si ho môžete prispôsobiť svojmu vlastnému vkusu. Tí bystrejší z vás si všimnú, že môj projekt vyzerá takmer identicky s tým, ktorý vyrobila dielňa DroneBot, ale buďte si istí, že existujú značné rozdiely, najmä pokiaľ ide o kód na výpočet uhlov a zariadenie na ukladanie kalibračných hodnôt do Eeprom!
Niektoré funkcie na povzbudenie vašej chuti do jedla:
Uhol sklonu a rolovania je k dispozícii s presnosťou na 0,1 stupňa.
Automatická detekcia orientácie gyroskopu (horizontálna alebo vertikálna)
Plná kalibrácia s výsledkami automaticky uloženými do eeprom
LED indikácia od -2 do +2 stupne (meniteľné v kóde)
Dodatočná zvuková indikácia úrovne (dá sa zapnúť/vypnúť za behu)
Kompaktný obvod, ktorý vyžaduje minimum súčiastok
Začnime.
Zásoby
Tento projekt (tak ako je) používa nasledujúce položky:
1 x Arduino nano (môj je klon)
1 x modul gyroskopu/akcelerometra MPU6050
1 x LCD - 16 x 2 + pripojenie I2C
1 x Prepínač stlačením
1 x Piezo bzučiak
1 x zelená LED
2 x žlté LED diódy
2 x červené LED diódy
Rezistory 5 x 220 ohmov
Rôzne prepojovacie káble
Breadboard
Napájanie (môj používal 5v USB napájaciu banku, keď nie je pripojený k môjmu počítaču, ale môžete použiť batériu vhodne pripojenú)
Krok 1: Okruh
Za predpokladu, že máte všetky súčiastky, budete si musieť postaviť svoj breadboard.
Svoje nastavenie uvádzam ako sprievodcu, ale pripojenia sú nasledujúce:
Arduino pin D2 sa pripája na 1 stranu tlačidlového spínača. Druhá strana tlačidlového spínača sa pripája k zemi
Arduino pin D3 sa pripája na 1 stranu rezistora 220 ohmov. Druhá strana rezistora sa pripája k anóde červenej diódy LED. Katóda červených LED diód ide na zem.
Arduino pin D4 sa pripája na 1 stranu rezistora 220 ohmov. Druhá strana rezistora sa pripája k anóde žltej LED diódy. Katóda žltých LED diód ide na zem.
Arduino pin D5 sa pripája na 1 stranu rezistora 220 ohmov. Druhá strana rezistora sa pripája k anóde zelenej diódy LED. Katóda zelených LED diód ide na zem.
Arduino pin D6 sa pripája na 1 stranu rezistora 220 ohmov. Druhá strana rezistora sa pripája k anóde žltej LED diódy. Katóda žltých LED diód ide na zem.
Arduino pin D7 sa pripája na 1 stranu rezistora 220 ohmov. Druhá strana rezistora sa pripája k anóde červenej diódy LED. Katóda červených LED diód ide na zem.
Arduino pin D8 sa pripája k jednej strane bzučiaka Piezo. Druhá strana bzučiaka sa pripája k zemi.
Arduino pin A4 sa pripája k pinom SDA na MPU6050 A LCD.
Arduino pin A5 sa pripája k pinom SCL na MPU6050 A LCD
Napájanie 5v a GND pre MPU6050 a LCD pochádzajú z pinov Arduino Nano 5v a GND.
Po dokončení by mal byť podobný môjmu zobrazenému nastaveniu. Dal som blu tak pod MPU6050, aby sa zastavil pohyb a tiež na LCD, aby zostal na okraji nepájivej dosky.
Krok 2: Kód
Priložený kód je kód, ktorý som použil pre tento projekt. Jediná knižnica, s ktorou môžete mať problém, je
Knižnica LiquidCrystal_I2C.h, ako som ju importoval, keď som prvýkrát začal pracovať s LCD. Existuje bohužiaľ niekoľko knižníc, ktoré používajú rovnaký príkaz #include, ale mierne sa líšia. Ak máte problémy s vašim, nájdite iný LCD kód, ktorý vám vyhovuje, a zodpovedajúcim spôsobom ho upravte. Je pravdepodobné, že sa bude líšiť iba v nastavení. Všetky príkazy 'print' by mali fungovať rovnako.
Celý kód bol komentovaný a za predpokladu, že som to urobil správne, bude k dispozícii aj video, ktoré všetko vysvetlí, ale je tu niekoľko bodov, ktoré je potrebné poznamenať:
LiquidCrystal_I2C lcd (0x27, 16, 2);
Vyššie uvedený kód je nastavenie pre môj LCD. Ak je vaša knižnica odlišná, možno budete musieť zmeniť nielen svoju knižnicu, ale aj tento riadok.
{lcd.setCursor (0, 1); lcd.print („Horizontálne!“); orientácia = HORIZONTÁLNE; // Čítajte nespracované údaje acc a gyroskopu z MPU-6050 1000-krát pre (int cal_int = 0; cal_int <1000; cal_int ++) {read_mpu_6050_data (); // Pridajte posunutie gyroskopu x do premennej gyro_x_cal gyro_x_cal += gyro_x; // Pridajte posunutie gyroskopu do premennej gyro_y_cal gyro_y_cal += gyro_y; // Pridajte ofset gyro z do premennej gyro_z_cal gyro_z_cal += gyro_z; // Pridajte ofset acc x do premennej acc_x_cal acc_x_cal += acc_x; // Pridajte ofset acc y do premennej acc_y_cal acc_y_cal += acc_y; } // Rozdelením všetkých výsledkov na 1 000 získate priemerný offset gyro_x_cal /= 1 000,0; gyro_y_cal /= 1000,0; gyro_z_cal /= 1000,0; acc_x_cal /= 1000,0; acc_y_cal /= 1000,0; horizonalCalibration = 255; eeprom_address = 0; EEPROM.put (eeprom_address, horizonalCalibration); eeprom_address += sizeof (int); EEPROM.put (eeprom_address, gyro_x_cal); eeprom_address += sizeof (float); EEPROM.put (eeprom_address, gyro_y_cal); eeprom_address += sizeof (float); EEPROM.put (eeprom_address, gyro_z_cal); eeprom_address += sizeof (float); EEPROM.put (eeprom_address, acc_x_cal); eeprom_address += sizeof (float); EEPROM.put (eeprom_address, acc_y_cal); eeprom_address += sizeof (float); // Všimnite si, že kvôli gravitácii neukladáme ofset pre acc_z! oneskorenie (500); }
Vyššie uvedený blok kódu sa spustí do kalibračnej rutiny. Tento kód je pre horizontálnu kalibráciu. Na vertikálnu kalibráciu existuje takmer rovnaký kód (kód vie, či je váš MPU6050 namontovaný horizontálne alebo vertikálne!). MPU6050, je prečítaný 1000 krát. príslušné hodnoty sa kumulatívne sčítajú a potom delia 1 000, aby sa získala priemerná „offsetová“hodnota. Tieto hodnoty sú potom uložené do Nano eeprom. Všetky horizontálne kalibračné hodnoty sú uložené od adresy eeprom 0. Všetky vertikálne hodnoty sú uložené od adresy eeprom 24. Kalibrácia MUSÍ byť vykonaná na úplne rovnom povrchu, inak nič neznamenajú.
/ * * Nasledujúcich niekoľko riadkov spracuje nespracované údaje, aby ich zmenilo na uhly, ktoré je možné výstupom na LCD a LED diódy. * Hodnota 4096, ktorou sú údaje o zrýchlení delené, je prevzatá z technického listu MPU6050 a je založená na vzorkovacej frekvencii. * Hodnota 9,8 je gravitácia * Funkcia atan2 je z matematického modulu a používa sa na výpočet uhlov z daných údajov */thetaM = -atan2 ((acc_x/4096,0)/9,8, (acc_z/4096,0)/9,8) /2/3.141592656 * 360; // nespracované údaje phiM = -atan2 ((acc_y/4096,0)/9,8, (acc_z/4096,0)/9,8) /2/3,141592656 * 360; // nespracované údaje dt = (millis ()-millisOld)/1000.; millisOld = millis (); / * * Táto sekcia používa gyroskopické údaje na zvýšenie odozvy systému * hodnota 65,5, ktorou sú gyro údaje delené, je prevzatá z technického listu MPU6050 a je založená na vzorkovacej frekvencii */ theta = (theta+(gyro_y/ 65,5)*dt)*. 96 + thetaM*, 0,04; // Dolnopriepustný filter phi = (phi + (gyro_x/65,5)*dt)*. 96 + phiM*.04; // Dolnopriepustný filter
Vyššie uvedený kód je materiál, ktorý vypočítava uhly. Dúfajme, že komentáre poskytnú malý prehľad o tom, ako to funguje, ale pre podrobné vysvetlenie si pozrite video Paula McWhorters, na ktoré je odkaz v priloženom PDF. Poviem však, že môžete zmeniť vzorkovaciu frekvenciu pre gyroskop a akcelerometer (čo sa robí v podprograme nastavenia MPU6050 v spodnej časti môjho kódu). Ak zmeníte vzorkovaciu frekvenciu, musíte tiež zmeniť, o koľko sa delia nespracované údaje. Pre údaje akcelerometra je aktuálna hodnota 4096. Pre gyroskop je aktuálna hodnota 65,5.
Podrobnejšie informácie o tom, ako sa nachádzajú hodnoty vzorkovania a ofsetu, nájdete v priložených údajových listoch a videu od EEEntusiast (odkaz v priloženom PDF).
Krok 3: Ďalšie kroky
Do tohto bodu sa tento projekt dúfajme uskutočnil, ale čo teraz?
Po prvé, prečo to vlastne nevybudovať do vodováhy, ktorú môžete použiť. Môžete si kúpiť lacnú vodováhu (uistite sa, že je to typ škatule), ktorú môžete prispôsobiť, alebo ak máte súpravu, vytlačte si vlastnú vodováhu/škatuľu.
Skúste sa pohrať so vzorkovacími hodnotami gyroskopu a akcelerometra, aby ste zistili, či fungujú lepšie pri jednej rýchlosti ako pri druhej.
Skúste kód ešte upresniť. V súčasnej dobe je napríklad uvedený uhol nad 45 stupňov prinajmenšom hrubý. Dá sa to nejako obísť?
Ak máte akékoľvek otázky, bez ohľadu na to, ako jednoduché sa môžu zdať, opýtajte sa. Ak môžem pomôcť, pomôžem.
Ak sa vám páči tento návod, dajte mu lajk, aby som vedel.
Ak to urobíte, ukážte mi to (najmä ak je to v funkčnom prípade).
ĎAKUJEM
Odporúča:
Digitálna vodováha s krížovým laserom: 15 krokov (s obrázkami)
Digitálna úroveň s krížovým laserom: Ahoj všetci, dnes vám ukážem, ako vytvoriť digitálny prístroj s voliteľným integrovaným krížovým laserom. Asi pred rokom som vytvoril digitálny multi-nástroj. Aj keď tento nástroj ponúka mnoho rôznych režimov, pre mňa najbežnejšie a najpoužívanejšie
DIY Lab - HD centrifúga založená na Arduine: 3 kroky
DIY Lab - HD centrifúga založená na Arduine: PT // Konštrukcia vysoko výkonného HD zariadenia, ktoré riadi velocidáciu základne Arduino. SK // Centrifúgu sme postavili pomocou starého HD s reguláciou otáčok na základe Arduina
DIY digitálna vodováha: 5 krokov (s obrázkami)
DIY Digital Spirit Level: V tomto projekte sa bližšie pozrieme na integrované obvody akcelerometra a zistíme, ako ich môžeme použiť s Arduinom. Potom skombinujeme taký integrovaný obvod s niekoľkými doplnkovými komponentmi a krytom s 3D tlačou, aby sme vytvorili digitálny
Hra Crack the Code, logická hra založená na Arduine: 4 kroky (s obrázkami)
Hra Crack the Code, logická škatuľka založená na Arduine: V tomto návode vám ukážem, ako si vytvoriť vlastnú crackovú hru, v ktorej pomocou otočného voliča uhádnete náhodne vygenerovaný kód do sejfu. Na prednej strane trezoru je 8 LED diód, ktoré vám informujú, koľko z
Moja vlastnoručná prevádzková hra Steampunk, založená na Arduine: 9 krokov (s obrázkami)
Moja vlastnoručná prevádzková hra Steampunk, založená na Arduine: Tento projekt je rozsahom dosť rozsiahly. Nevyžaduje veľa nástrojov ani predchádzajúce znalosti, ale každého (vrátane mňa) veľa naučí v mnohých rôznych oddeleniach výroby! Rovnako ako snímanie v zajatí s Arduinom, multitasking s Arduinom