Obsah:
- Krok 1: Zoznam komponentov
- Krok 2: Zostavenie
- Krok 3:
- Krok 4: Ďalej som rovnakou metódou zaistil servo Roll. diely sú špeciálne navrhnuté tak, aby sa dali ľahko namontovať na serva MG995
- Krok 5: Ďalej som rovnakou metódou zaistil servo Roll. diely sú špeciálne navrhnuté tak, aby sa dali ľahko namontovať na servá MG995
- Krok 6: Pripojenia
- Krok 7: Pripojenie pomocou integrovaného obvodu regulátora napätia 7805
- Krok 8: Kódovanie
- Krok 9: Keď sú všetky súčasti prepojené, vyzerá to podobne ako na tomto obrázku
- Krok 10: Teraz vložte všetky základné veci do nádoby na potraviny
- Krok 11: Keď sú všetky drôty a súčasti umiestnené vo vnútri potraviny, môže sa na spodok penovej dosky naniesť lepiaca pištoľ
- Krok 12: Záver
Video: Gimbal na ovládanie pohybu: 12 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Ahoj všetci, volám sa Harji Nagi. Momentálne som študentom druhého ročníka študujúcim elektroniku a komunikačné inžinierstvo na Technologickom inštitúte Pranveer Singh v Kanpure (UP). Mám veľký záujem o robotiku, arduino, umelú inteligenciu a analógovú elektroniku.
Slovo „kardan“je definované ako otočná podpera, ktorá umožňuje otáčanie akéhokoľvek objektu v jednej osi. Trojosový záves teda umožňuje, aby akýkoľvek predmet namontovaný na závese bol nezávislý na pohybe toho, ktorý drží záves. Gimbal určuje pohyb predmetu, nie toho, ktorý ho nesie.
Skladá sa z 3 servomotorov MG996R pre 3-osové ovládanie a základne, na ktorej bude umiestnený senzor MPU6050, Arduino a batéria. Slúži na stabilizáciu fotoaparátu bez vibrácií. 3-osý kardan zaisťuje, že pohyb kamery je stabilizovaný, aj keď ten, kto ju drží, ide hore a dole, vľavo a vpravo, vpredu a vzadu. To je to, čo nazývame stabilizácia vybočenia, rozstupu a valenia.
Krok 1: Zoznam komponentov
Zoznam komponentov je:
1) Arduino Uno
2) 8 V, 1,5 A batéria pre napájanie Arduino Uno
3) 7805 Regulátor napätia Ic alebo môžete použiť Buck Converter
4) MPU 6050
5) 3*(Motory MG995 SERVO)
6) Prepojovacie vodiče
Ďalšie vybavenie:
1) Spájkovačka
2) Lepiaca pištoľ
3) Vŕtačka
4) Jedlo môže
Namiesto použitia breadborad som použil malú vlastnú výkonnú dosku na pozitívne a negatívne pripojenie zbernice
Krok 2: Zostavenie
Foamcore, penová doska alebo penová doska s papierovým povrchom je ľahký a ľahko rezateľný materiál používaný na montáž servomotora a výrobu zmenšených modelov.
Najprv som vyrobil DIY konzoly v tvare L na montáž servomotora pomocou penovej dosky.
Krok 3:
Zostavenie závesu bolo celkom jednoduché. Začal som s inštaláciou serva Yaw, senzora MPU 6050 a vypínača ON-OFF. Pomocou skrutiek a matíc som ho pripevnil k základni
Krok 4: Ďalej som rovnakou metódou zaistil servo Roll. diely sú špeciálne navrhnuté tak, aby sa dali ľahko namontovať na serva MG995
Krok 5: Ďalej som rovnakou metódou zaistil servo Roll. diely sú špeciálne navrhnuté tak, aby sa dali ľahko namontovať na servá MG995
Krok 6: Pripojenia
V schéme zapojenia môžete použiť buď prevodník buck alebo IC regulátor napätia 7805 na konverziu 8 V na 5 V. Mikrokontrolér, ktorému je priradená schéma zapojenia, je Arduino Nano, môžete tiež použiť Arduino Uno, Arduino Mega.
Piny SCL a SDA MPU 6050 sú pripojené k analógovému kolíku Arduino A5 a A4. (Kolíky SCL a SDA sa môžu líšiť, preto si pozrite technický list pinov SCl a SDA pre iný mikrokontrolér)
Krok 7: Pripojenie pomocou integrovaného obvodu regulátora napätia 7805
Táto schéma zapojenia je na pripojenie ic regulátora napätia 7805, pripojte 8v batériu na Vin a dostanete výstupné napätie 5v.
Krok 8: Kódovanie
Musíte zahrnúť nasledujúce knižnice:
1) #includeKliknutím sem stiahnete súbor zip
2) #includeKliknutím sem stiahnete súbor zip
Po stiahnutí súboru zip pridajte knižnicu zip do skici arduino
Pre kód
/*
DIY Gimbal - výukový kód Arduino MPU6050 na základe príkladu MPU6050_DMP6 z knižnice i2cdevlib od Jeffa Rowberga: https://github.com/jrowberg/i2cdevlib */// I2Cdev a MPU6050 musia byť nainštalované ako knižnice, inak.cpp/.h súbory // pre obidve triedy musia byť v ceste zahrnutia vášho projektu #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" // #include "MPU6050.h" // nie je potrebné, ak používate MotionApps zahrnúť súbor / / Knižnica Arduino Wire je potrebná, ak sa v I2Cdev používa implementácia I2Cdev I2CDEV_ARDUINO_WIRE // // #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #include // predvolená adresa I2C triedy môže byť 0x68 // špecifické adresy I2C môžu byť prešlo ako parameter sem // AD0 low = 0x68 (predvolené pre SparkFun breakout a hodnotiacu dosku InvenSense) // AD0 high = 0x69 MPU6050 mpu; // MPU6050 mpu (0x69); // <- použitie pre AD0 vysoký // Definujte 3 servomotory Servo servo0; Servo servo1; Servo servo2; správne plávať; int j = 0; #define OUTPUT_READABLE_YAWPITCHROLL #define INTERRUPT_PIN 2 // použitie pinu 2 na Arduino Uno & väčšina dosiek bool blinkState = false; // MPU control/status vars bool dmpReady = false; // set true, ak bol DMP init úspešný uint8_t mpuIntStatus; // uchováva bajt skutočného stavu prerušenia z MPU uint8_t devStatus; // návrat stavu po každej operácii zariadenia (0 = úspech,! 0 = chyba) uint16_t packetSize; // očakávaná veľkosť paketu DMP (predvolená hodnota je 42 bajtov) uint16_t fifoCount; // počet všetkých bajtov aktuálne vo FIFO uint8_t fifoBuffer [64]; // Vyrovnávacia pamäť FIFO // orientácia/pohyb vars Quaternion q; // [w, x, y, z] kvartérny kontajner VectorInt16 aa; // [x, y, z] merania snímača zrýchlenia VectorInt16 aaReal; // [x, y, z] merania gravitačného senzora zrýchlenia VectorInt16 aaWorld; // [x, y, z] merania snímača zrýchlenia vo svetovom rámci VectorFloat gravitácia; // [x, y, z] gravitačný vektorový plavákový euler [3]; // [psi, theta, phi] Eulerov uholný kontajner float ypr [3]; // [vybočenie, rozstup, zvinutie] vybočenie/rozteč/zvinutie kontajnera a gravitačný vektor // štruktúra paketu pre ukážku čajníka InvenSense uint8_t teapotPacket [14] = {'$', 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x00, '\ r', '\ n'}; // ======================================================================== ================> =============================================================================================================================================== // indikuje, či pin prerušenia MPU dosiahol vysokú neplatnosť dmpDataReady () {mpuInterrupt = true; } // ===================================================================== ================== // === Počáteční nastavení === // ======================== ================================================= neplatné nastavenie () {// pripojiť sa na zbernicu I2C (knižnica I2Cdev to nerobí automaticky) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz hodiny I2C. Komentujte tento riadok, ak máte problémy so kompiláciou #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif // inicializácia sériovej komunikácie // (115200 zvolených, pretože je to potrebné pre demo výstup Teapot, ale je to // skutočne na vás v závislosti od vášho projektu) Serial.begin (38400); while (! Serial); // počkajte na vyčíslenie Leonarda, ostatní pokračujú ihneď // inicializácia zariadenia //Serial.println(F("inicializácia zariadení I2C … ")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); devStatus = mpu.dmpInitialize (); // tu zadajte svoje vlastné gyroskopy, zmenšené na minimálnu citlivosť mpu.setXGyroOffset (17); mpu.setYGyroOffset (-69); mpu.setZGyroOffset (27); mpu.setZAccelOffset (1551); // 1688 výrobný štandard pre môj testovací čip // uistite sa, že funguje (ak je, vráti 0), ak (devStatus == 0) {// zapnite DMP, keď je pripravený // Serial.println (F ("Povolenie DMP … “)); mpu.setDMPEnabled (true); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // nastavte náš príznak DMP Ready, aby funkcia main loop () vedela, že je v poriadku ho používať //Serial.println(F("DMP pripravený! Čakanie na prvé prerušenie … ")); dmpReady = true; // získať očakávanú veľkosť paketu DMP pre neskoršie porovnanie packetSize = mpu.dmpGetFIFOPacketSize (); } else {// CHYBA! // 1 = úvodné načítanie pamäte zlyhalo // 2 = Aktualizácie konfigurácie DMP zlyhali // (ak sa má prerušiť, zvyčajne bude kód 1) // Serial.print (F ("Inicializácia DMP zlyhala (kód")); //Serial.print(devStatus); //Serial.println (F (")")); } // Definujte kolíky, ku ktorým sú pripojené 3 servomotory servo0.attach (10); servo1.attach (9); servo2.attach (8); } // ===================================================================== ================== //==== HLAVNÁ PROGRAMOVÁ SMYČKA === // ====================== ================================================== prázdna slučka () { / / ak programovanie zlyhalo, nepokúšajte sa urobiť nič, ak sa (! dmpReady) vráti; // počkajte na prerušenie MPU alebo ďalšie pakety dostupné počas (! mpuInterrupt && fifoCount <packetSize) {if (mpuInterrupt && fifoCount
= 1024) {
// reset, aby sme mohli čisto pokračovať mpu.resetFIFO (); fifoCount = mpu.getFIFOCount (); Serial.println (F ("Prepad FIFO!")); // inak skontrolujte prerušenie pripravenosti údajov DMP (to by sa malo často stávať)} inak, ak (mpuIntStatus & _BV (MPU6050_INTERRUPT_DMP_INT_BIT)) {// počkajte na správnu dostupnú dĺžku údajov, malo by to byť VEĽMI krátke čakanie (k dispozícii je paket fifoCount 1 / / (to nám umožní okamžite prečítať viac bez čakania na prerušenie) fifoCount -= packetSize; // Získanie hodnôt vybočenia, rozstupu a rolovania #ifdef OUTPUT_READABLE_YAWPITCHROLL mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& gravity, & q);.dmpGetYawPitchRoll (ypr, & q, & gravity); // Hodnoty vybočenia, rozstupu a zvitku - radiány v stupňoch ypr [0] = ypr [0] * 180 / M_PI; ypr [1] = ypr [1] * 180 / M_PI; ypr [2] = ypr [2] * 180 / M_PI; // Vynechajte 300 meraní (proces vlastnej kalibrácie), ak (j <= 300) {correct = ypr [0]; // Stáčanie sa začína náhodnou hodnotou, takže zachytiť poslednú hodnotu po 300 odčítaniach j ++;} // Po 300 odčítaniach iné {ypr [0] = ypr [0] - správne; // Nastaviť vybočenie na 0 stupňov - odpočítať poslednú náhodnú hodnotu vybočenia od aktuálnej hodnoty, aby sa Stáčanie 0 stupňov es // Namapujte hodnoty senzora MPU6050 od -90 do 90 na hodnoty vhodné pre ovládanie serva od 0 do 180 int servo0Value = mapa (ypr [0], -90, 90, 0, 180); int servo1Value = mapa (ypr [1], -90, 90, 0, 180); int servo2Value = mapa (ypr [2], -90, 90, 180, 0); // Ovládajte serva podľa orientácie MPU6050 servo0.write (servo0Value); servo1.write (servo1Value); servo2.write (servo2Value); } #koniec Ak } }
Nakoniec pomocou funkcie zápisu pošleme tieto hodnoty na servá ako riadiace signály. Servo Yaw môžete samozrejme deaktivovať, ak chcete iba stabilizáciu pre osi X a Y, a použiť túto platformu ako kardanový záves
Krok 9: Keď sú všetky súčasti prepojené, vyzerá to podobne ako na tomto obrázku
Krok 10: Teraz vložte všetky základné veci do nádoby na potraviny
Krok 11: Keď sú všetky drôty a súčasti umiestnené vo vnútri potraviny, môže sa na spodok penovej dosky naniesť lepiaca pištoľ
Krok 12: Záver
Upozorňujeme, že od dobrého kamerového závesu je to ďaleko. Pohyby nie sú plynulé, pretože tieto servá nie sú určené na takýto účel. Skutočné kardanové kardany používajú na plynulé pohyby špeciálny typ motora BLDC. Považujte tento projekt iba za vzdelávací účel.
To by bolo k tomuto návodu všetko, dúfam, že sa vám páčil a naučili ste sa niečo nové. Neváhajte sa opýtať na čokoľvek v nižšie uvedenej sekcii komentárov a nezabudnite si pozrieť moje zbierky projektu
Odporúča:
Dávkový súbor: Ovládanie pohybu: 3 kroky
Dávkový súbor: Pohybové ovládače: Keď som sa pozrel na to, ako vytvoriť ovládacie prvky pohybu v CMD, nenašiel som žiadne presné výsledky, a tak som sa rozhodol vytvoriť vlastné ovládacie prvky, ktoré fungujú s klávesmi WASD na pohyb a 1234 klávesmi na otáčanie
ITTT Rolando Ritzen - arkádová rukavica na ovládanie pohybu: 5 krokov
ITTT Rolando Ritzen - pohybová arkádová rukavica: Ručne ovládané pohybové ovládače alebo palubné strieľačky. Ide o trik, ktorý zahŕňa všetky možnosti pohybu, vrátane zahrnutia. (Je schiet door te " finger bangen ")
ESP8266 RGB LED STRIP WIFI ovládanie - NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi - Ovládanie smartfónu RGB LED STRIP: 4 kroky
ESP8266 RGB LED STRIP WIFI ovládanie | NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi | Ovládanie smartfónu RGB LED STRIP: Ahoj, v tomto návode sa naučíme, ako používať nodemcu alebo esp8266 ako IR diaľkové ovládanie na ovládanie RGB LED pásu a Nodemcu budete ovládať smartfónom cez wifi. V zásade teda môžete RGB LED STRIP ovládať pomocou svojho smartfónu
Vylepšite svojpomocný zavlažovací hrniec pomocou WiFi na kutilský detektor pohybu s detekciou pohybu a sadbovačom: 17 krokov
Vylepšite svojpomocný zavlažovací kvetináč pomocou WiFi na kutilský detektor pohybu detektora pohybu : V tomto článku vám ukážeme, ako upgradovať svoj vlastný zavlažovací kvetináč s WiFi na samonavlažovací kvetináč s WiFi a alarmom detekcie pohybu. nečítali ste článok o tom, ako si postaviť svojpomocný zavlažovací hrniec pomocou WiFi, môžete
Ovládanie DC výfukového ventilátora na báze senzora pohybu bez Arduina: 4 kroky
Ovládanie ventilátora výfukového ventilátora na báze senzora pohybu bez Arduina: Dobrý deň, bratia a sestry, pripravil som malý projekt na ovládanie vášho ventilátora na jednosmerný prúd (Ak pridáte jedno relé, môžete ovládať aj ventilátor na striedavý prúd). Toto je možné použiť aj v pokoji. miestnosť na osušenie mokrých rúk. a použil aj inú aplikáciu