![Motion Control Gimbal: 12 քայլ Motion Control Gimbal: 12 քայլ](https://i.howwhatproduce.com/images/001/image-1928-19-j.webp)
Բովանդակություն:
- Քայլ 1: Բաղադրիչների ցուցակ
- Քայլ 2: հավաքում
- Քայլ 3:
- Քայլ 4: Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար
- Քայլ 5. Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար
- Քայլ 6: Միացումներ
- Քայլ 7: Միացում 7805 Լարման կարգավորիչ IC- ի հետ
- Քայլ 8: Կոդավորում
- Քայլ 9. Երբ բոլոր բաղադրիչները միացված են, դրա տեսքը նման է այս նկարին
- Քայլ 10: Այժմ տեղադրեք ամբողջ հիմքը սննդի տարայի ներսում
- Քայլ 11. Երբ բոլոր լարերը և բաղադրիչները տեղադրվեն սննդի ներսում, այնուհետև կարող են սոսինձ կիրառել փրփուրի հիմքի վրա:
- Քայլ 12: Եզրակացություն
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Image Image](https://i.howwhatproduce.com/images/001/image-1928-21-j.webp)
![](https://i.ytimg.com/vi/aeVnyle7KME/hqdefault.jpg)
Ողջույն բոլորին, իմ անունը Հարջի Նագի է: Ես այժմ երկրորդ կուրսի ուսանող եմ, ով սովորում է էլեկտրոնիկա և հաղորդակցության ճարտարագիտություն Pranveer Singh Institute of Technology, Kanpur (UP) - ից: Ես մեծ հետաքրքրություն ունեմ ռոբոտաշինության, arduino- ի, արհեստական բանականության և անալոգային էլեկտրոնիկայի նկատմամբ:
«Գիմբալ» բառը սահմանվում է որպես առանցքային հենարան, որը թույլ է տալիս պտտել ցանկացած առարկա մեկ առանցքում: Այսպիսով, երեք առանցքի գիմբալը թույլ է տալիս, որ գիմբալի վրա տեղադրված ցանկացած առարկա անկախ լինի գիմբալը պահողի շարժումից: Գիմբալը թելադրում է ոչ թե այն կրող, այլ օբյեկտի շարժումը:
Այն բաղկացած է 3 առանցքի կառավարման 3 MG996R servo շարժիչներից և հիմքից, որի վրա տեղադրվելու են MPU6050 սենսորը, Arduino- ն և մարտկոցը: Այն օգտագործվում է տեսախցիկը կայունացնելու համար ՝ առանց թրթռումների: 3 առանցքի գիմբալը երաշխավորում է, որ տեսախցիկի շարժումը կայունանում է, նույնիսկ եթե այն բռնողը վեր ու վար է գնում, ձախ և աջ, առջև և հետև: Սա այն է, ինչ մենք անվանում ենք yaw, pitch և roll կայունացում:
Քայլ 1: Բաղադրիչների ցուցակ
Բաղադրիչների ցանկն են ՝
1) Arduino Uno
2) 8V, 1.5 Amp մարտկոց Arduino Uno- ն սնուցելու համար
3) 7805 Լարման կարգավորիչ Ic կամ կարող եք օգտագործել կոնվեկտոր
4) MPU 6050
5) 3*(MG995 SERVO Motors)
6) Jumper լարերը
Այլ սարքավորումներ
1) Sոդման երկաթ
2) Սոսինձ ատրճանակ
3) Հորատման մեքենա
4) Սննդամթերք
Հացաբուլկեղեն օգտագործելու փոխարեն, ես օգտագործում եմ փոքրիկ պաստառային տախտակ `դրական և բացասական ավտոբուսային միացման համար:
Քայլ 2: հավաքում
![Հավաքում Հավաքում](https://i.howwhatproduce.com/images/001/image-1928-22-j.webp)
![Հավաքում Հավաքում](https://i.howwhatproduce.com/images/001/image-1928-23-j.webp)
Փրփուրը, փրփուրի տախտակը կամ թղթի երեսպատված փրփուրը թեթև և հեշտությամբ կտրվող նյութ է, որն օգտագործվում է Servo շարժիչը տեղադրելու և մասշտաբի մոդելներ պատրաստելու համար:
Սկզբում ես փրփուր տախտակի օգնությամբ servo շարժիչ տեղադրելու համար պատրաստեցի DI-L ձևի փակագծեր:
Քայլ 3:
![Պատկեր Պատկեր](https://i.howwhatproduce.com/images/001/image-1928-24-j.webp)
Գիմբալը հավաքելը բավականին հեշտ էր: Ես սկսեցի տեղադրել Yaw servo- ն, MPU 6050 սենսորը և ON-OFF անջատիչը: Օգտագործելով պտուտակներ և ընկույզներ, ես այն ամրացրեցի հիմքին
Քայլ 4: Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար
![Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար](https://i.howwhatproduce.com/images/001/image-1928-25-j.webp)
Քայլ 5. Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար
![Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար Հաջորդը, օգտագործելով նույն մեթոդը, ես ապահովեցի Roll Servo- ն: մասերը հատուկ նախագծված են MG995 սերվերին հեշտությամբ տեղավորելու համար](https://i.howwhatproduce.com/images/001/image-1928-26-j.webp)
Քայլ 6: Միացումներ
![Միացումներ Միացումներ](https://i.howwhatproduce.com/images/001/image-1928-27-j.webp)
Շղթայական դիագրամում կարող եք օգտագործել կամ փոխարկիչ, կամ 7805 Լարման կարգավորիչ IC ՝ 8 Վ -ը 5 Վ փոխարկելու համար: Միկրոկոնտրոլերը, որին տրված է սխեմայի սխեման, Arduino Nano- ն է, կարող եք նաև օգտագործել Arduino Uno, Arduino Mega:
MPU 6050 -ի SCL և SDA կապերը միացված են Arduino Analog A5 և A4 կապին: (SCL և SDA քորոցները կարող են տարբեր լինել, այնպես որ ստուգեք SCl և SDA կապերի տվյալների թերթիկը այլ միկրոկոնտրոլերի համար)
Քայլ 7: Միացում 7805 Լարման կարգավորիչ IC- ի հետ
![Միացում 7805 Լարման կարգավորիչ IC- ի հետ Միացում 7805 Լարման կարգավորիչ IC- ի հետ](https://i.howwhatproduce.com/images/001/image-1928-28-j.webp)
Այս սխեմայի դիագրամը նախատեսված է 7805 լարման կարգավորիչի ic- ի միացման համար, միացրեք 8 վ մարտկոցը Vin- ում և կստանաք 5 վ ելքային լարում:
Քայլ 8: Կոդավորում
Դուք պետք է ներառեք հետևյալ գրադարանները.
1) #includeClick Heret ՝ zip ֆայլը ներբեռնելու համար
2) #include Սեղմեք այստեղ ՝ zip ֆայլը ներբեռնելու համար
ZIP ֆայլը ներբեռնելուց հետո ավելացրեք zip գրադարան arduino ուրվագծում
Կոդի համար
/*
DIY Gimbal - MPU6050 Arduino ձեռնարկի ծածկագիր ՝ հիմնված MPU6050_DMP6 օրինակի վրա i2cdevlib գրադարանից ՝ ffեֆ Ռոուբերգի կողմից. Https://github.com/jrowberg/i2cdevlib */// I2Cdev և MPU6050 պետք է տեղադրվեն որպես գրադարաններ, կամ..h ֆայլերը // երկու դասերի համար էլ պետք է լինեն ձեր նախագծի ներառման ուղու մեջ #ներառել «I2Cdev.h» #ներառել «MPU6050_6Axis_MotionApps20.h» // #ներառել «MPU6050.h» // անհրաժեշտ չէ, եթե օգտագործում եք MotionApps ֆայլը / / Arduino Wire գրադարանը պահանջվում է, եթե I2Cdev I2CDEV_ARDUINO_WIRE իրականացումը // օգտագործվում է I2Cdev.h #եթե I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #include // դասի կանխադրված I2C հասցեն կարող է լինել 0x68 // հատուկ I անցել է որպես պարամետր այստեղ // AD0 ցածր = 0x68 (կանխադրված SparkFun- ի ճեղքման և InvenSense գնահատման տախտակի համար) // AD0 բարձր = 0x69 MPU6050 mpu; // MPU6050 մպ (0x69); // <- օգտագործել բարձր AD0- ի համար // Սահմանել 3 servo շարժիչներ Servo servo0; Servo servo1; Servo servo2; բոցը ճիշտ է; int j = 0; #սահմանեք OUTPUT_READABLE_YAWPITCHROLL #սահմանեք INTERRUPT_PIN 2 // օգտագործեք 2 -րդ կապը Arduino Uno- ում և տախտակների մեծ մասում bool blinkState = false; // MPU հսկողություն/կարգավիճակ vars bool dmpReady = false; // սահմանել true, եթե DMP init- ը հաջող էր uint8_t mpuIntStatus; // պահում է փաստացի ընդհատման կարգավիճակի բայթ MPU uint8_t devStatus- ից; // վերադարձնել կարգավիճակը սարքի յուրաքանչյուր գործողությունից հետո (0 = հաջողություն,! 0 = սխալ) uint16_t packetSize; // ակնկալվող DMP փաթեթի չափը (կանխադրվածը 42 բայթ է) uint16_t fifoCount; // FIFO uint8_t fifoBuffer- ում ներկա պահին բոլոր բայթերի հաշվարկը [64]; // FIFO պահեստավորման բուֆեր // կողմնորոշում/շարժում vars Quaternion q; // [w, x, y, z] քառորդ կոնտեյներ VectorInt16 aa; // [x, y, z] accel տվիչ չափումներ VectorInt16 aaReal; // [x, y, z] առանց ինքնահոս արագացման տվիչների չափումներ VectorInt16 aaWorld; // [x, y, z] համաշխարհային շրջանակի արագացուցիչ սենսորային չափումներ VectorFloat gravity; // [x, y, z] ինքնահոս վեկտորը float euler [3]; // [psi, theta, phi] Euler angle container container float ypr [3]; /, 0, 0, 0x00, 0x00, '\ r', '\ n'}; // ================================================ ================= ============================================ անկայուն բոլ mpuInterrupt = false; // ցույց է տալիս, արդյոք MPU- ի ընդհատման քորոցը բարձր է անվավեր dmpDataReady () {mpuInterrupt = true; } // =============================================== ================= // === Նախնական կարգավորումներ === // ===================== =========================================== անվավեր կարգավորում () {// միանալ I2C ավտոբուսին (I2Cdev գրադարանը դա ինքնաբերաբար չի անում) #եթե I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ժամացույց: Մեկնաբանեք այս տողը, եթե կազմման դժվարություններ ունեք #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif // նախաստորագրել սերիական հաղորդակցությունը // (115200 ընտրված է, քանի որ դա անհրաժեշտ է Teapot Demo ելքի համար, բայց դա // իսկապես կախված է ձեր նախագծից) Serial.begin (38400); իսկ (! Սերիա); // սպասեք Լեոնարդոյի թվարկմանը, մյուսները անմիջապես կշարունակեն // սարքի սկզբնականացում //Serial.println(F("I2C սարքերի նախաստորագրում … ")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); devStatus = mpu.dmpInitialize (); // մատակարարեք ձեր սեփական գիրո փոխհատուցումները այստեղ ՝ փոքր զգայունության համար mpu.setXGyroOffset (17); mpu.setYGyroOffset (-69); mpu.setZGyroOffset (27); mpu.setZAccelOffset (1551); // 1688 գործարանային լռելյայն իմ փորձարկման չիպի համար // համոզվեք, որ այն աշխատել է (վերադարձնում է 0 -ն) եթե (devStatus == 0) {// միացրեք DMP- ը, այժմ այն պատրաստ է // Serial.println (F ("Enabling DMP… ")); mpu.setDMP Միացված է (ճշմարիտ); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // սահմանեք մեր DMP Ready դրոշը, որպեսզի հիմնական loop () գործառույթը իմանա, որ այն օգտագործելը նորմալ է //Serial.println(F("DMP պատրաստ է: Սպասում ենք առաջին ընդհատմանը … ")); dmpReady = ճշմարիտ; // ստանալ սպասվող DMP փաթեթի չափը հետագայում համեմատվող packetSize = mpu.dmpGetFIFOPacketSize (); } այլ {// ՍԽԱԼ! // 1 = հիշողության սկզբնական բեռը ձախողվեց // 2 = DMP կոնֆիգուրացիայի թարմացումները ձախողվեցին // (եթե այն կոտրվի, սովորաբար կոդը կլինի 1) // Serial.print (F ("DMP Initialization failed (code")); //Serial.print(devStatus); //Serial.println (F (")")); } // Սահմանեք այն կապերը, որոնց միացված են 3 servo շարժիչները servo0.attach (10); servo1.attach (9); servo2.attach (8); } // =============================================== ================= // === ՀԻՄՆԱԿԱՆ GRՐԱԳՐԻ LՐԱԳԻՐ === // ==================== ============================================ դատարկ հանգույց () { / / եթե ծրագրավորումը ձախողվեց, մի փորձեք որևէ բան անել, եթե (! dmpReady) վերադառնա; // սպասեք MPU- ի ընդհատմանը կամ լրացուցիչ փաթեթին (ներին) մինչև (! mpuInterrupt && fifoCount <packetSize) {if (mpuInterrupt && fifoCount
= 1024) {
// վերականգնել, որպեսզի կարողանանք մաքուր շարունակել mpu.resetFIFO (); fifoCount = mpu.getFIFOCount (); Serial.println (F ("FIFO overflow!")); // հակառակ դեպքում, ստուգեք DMP տվյալների պատրաստ ընդհատումը (դա պետք է հաճախ տեղի ունենա)} այլ դեպքում, եթե (mpuIntStatus & _BV (MPU6050_INTERRUPT_DMP_INT_BIT)) {// սպասեք տվյալների հասանելի ճիշտ երկարությանը, պետք է լինի շատ կարճ սպասելիս (հասանելի է FiveoCount 1 փաթեթ /) / (սա թույլ է տալիս մեզ անմիջապես կարդալ ավելին ՝ առանց ընդմիջման սպասելու) fifoCount -= packetSize; // Get Yaw, Pitch and Roll արժեքները #ifdef OUTPUT_READABLE_YAWPITCHROLL mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGuity &);: ypr [2] = ypr [2] * 180 / M_PI; // Բաց թողնել 300 ընթերցում (ինքնակալիբրացման գործընթաց), եթե (j <= 300) {ճիշտ = ypr [0]; // Yaw- ը սկսվում է պատահական արժեքից, այնպես որ մենք գրեք վերջին արժեքը 300 ընթերցումներից հետո j ++;} // 300 այլ ընթերցումներից հետո ուրիշ {ypr [0] = ypr [0] - ճիշտ է; // Սահմանեք Yaw- ը 0 աստիճանի - հանեք վերջին պատահական Yaw արժեքը ընթացիկ արժեքից, որպեսզի ստանաք Այո 0 աստիճան es // Քարտեզագրեք MPU6050 տվիչի արժեքները -90 -ից 90 -ից մինչև 0 -ից 180 int servo0Value = սերվոյի կառավարման համար պիտանի արժեքներ = քարտեզ (ypr [0], -90, 90, 0, 180); int servo1Value = քարտեզ (ypr [1], -90, 90, 0, 180); int servo2Value = քարտեզ (ypr [2], -90, 90, 180, 0); // Կառավարեք սերվերը ըստ MPU6050 կողմնորոշման servo0.write (servo0Value); servo1.write (servo1Value); servo2.write (servo2Value); } #endif}}
Վերջապես, օգտագործելով գրելու գործառույթը, մենք այդ արժեքները ուղարկում ենք սերվոներին ՝ որպես կառավարման ազդանշաններ: Իհարկե, դուք կարող եք անջատել Yaw servo- ն, եթե ցանկանում եք պարզապես կայունացում X և Y առանցքների համար և օգտագործել այս հարթակը որպես խցիկի գիմբալ:
Քայլ 9. Երբ բոլոր բաղադրիչները միացված են, դրա տեսքը նման է այս նկարին
![Երբ բոլոր բաղադրիչները միացված են, դրա տեսքը նման է այս նկարին Երբ բոլոր բաղադրիչները միացված են, դրա տեսքը նման է այս նկարին](https://i.howwhatproduce.com/images/001/image-1928-29-j.webp)
Քայլ 10: Այժմ տեղադրեք ամբողջ հիմքը սննդի տարայի ներսում
![Այժմ տեղադրեք բոլոր հիմնական իրերը սննդի տարայի ներսում Այժմ տեղադրեք բոլոր հիմնական իրերը սննդի տարայի ներսում](https://i.howwhatproduce.com/images/001/image-1928-30-j.webp)
Քայլ 11. Երբ բոլոր լարերը և բաղադրիչները տեղադրվեն սննդի ներսում, այնուհետև կարող են սոսինձ կիրառել փրփուրի հիմքի վրա:
![Երբ բոլոր լարերը և բաղադրիչները տեղադրվում են սննդի ներսում, այնուհետև կարող եք կիրառել սոսինձ ատրճանակ `փրփուրի հիմքի վրա Երբ բոլոր լարերը և բաղադրիչները տեղադրվում են սննդի ներսում, այնուհետև կարող եք կիրառել սոսինձ ատրճանակ `փրփուրի հիմքի վրա](https://i.howwhatproduce.com/images/001/image-1928-31-j.webp)
Քայլ 12: Եզրակացություն
Խնդրում ենք նկատի ունենալ, որ սա հեռու է լավ տեսախցիկի հնարքից: Շարժումները հարթ չեն, քանի որ այդ սերվոները նախատեսված չեն նման նպատակի համար: Իրական տեսախցիկի գիմբալները սահուն շարժումներ կատարելու համար օգտագործում են BLDC շարժիչի հատուկ տեսակ: Այսպիսով, հաշվի առեք այս նախագիծը միայն կրթական նպատակով:
Սա ամեն ինչ կլիներ այս ձեռնարկի համար: Հուսով եմ, որ այն ձեզ դուր եկավ և ինչ -որ նոր բան սովորեցիք: Ազատորեն տվեք ցանկացած հարց ստորև բերված մեկնաբանությունների բաժնում և մի մոռացեք ստուգել նախագծի հավաքածուները
Խորհուրդ ենք տալիս:
Gimbal Stabilizer Project: 9 քայլ (նկարներով)
![Gimbal Stabilizer Project: 9 քայլ (նկարներով) Gimbal Stabilizer Project: 9 քայլ (նկարներով)](https://i.howwhatproduce.com/images/001/image-1534-j.webp)
Gimbal Stabilizer Project- ը. այսպիսի ցնցող տեսանյութ
Gyroscope հարթակ/ Camera Gimbal: 5 քայլ (նկարներով)
![Gyroscope հարթակ/ Camera Gimbal: 5 քայլ (նկարներով) Gyroscope հարթակ/ Camera Gimbal: 5 քայլ (նկարներով)](https://i.howwhatproduce.com/images/001/image-1572-j.webp)
Գիրոսկոպի հարթակ/ Տեսախցիկ Gimbal. Այս հրահանգը ստեղծվել է Հարավային Ֆլորիդայի համալսարանի Makecourse- ի նախագծի պահանջի կատարման համար (www.makecourse.com)
3D տպագիր տեսախցիկ Gimbal (Tinkercad մրցույթ) ՝ 6 քայլ
![3D տպագիր տեսախցիկ Gimbal (Tinkercad մրցույթ) ՝ 6 քայլ 3D տպագիր տեսախցիկ Gimbal (Tinkercad մրցույթ) ՝ 6 քայլ](https://i.howwhatproduce.com/images/002/image-3490-17-j.webp)
3D տպագիր տեսախցիկ Gimbal (Tinkercad Contest). Բարև, սա տեսախցիկի գիմբալ է, որը ես նախագծել եմ Tinkercad- ում: Հիմնական գիմբալը պատրաստված էր այս բանկայի բռնակից և հինգ մատանի գիմբալից / գիրոյից, որն այլևս կարծես չեմ գտնում: Tinkercad- ի դիզայնը կարելի է գտնել այստեղ: Սա նախատեսված էր լիազորությունների վրա աշխատելու համար
ITTT Rolando Ritzen - Motion Control Arcade ձեռնոց ՝ 5 քայլ
![ITTT Rolando Ritzen - Motion Control Arcade ձեռնոց ՝ 5 քայլ ITTT Rolando Ritzen - Motion Control Arcade ձեռնոց ՝ 5 քայլ](https://i.howwhatproduce.com/images/007/image-19244-j.webp)
ITTT Rolando Ritzen - Motion Control Arcade Ձեռնոց. Ձեռքերը կարող են նաև շարժման վերահսկիչ օգտագործել երկաթուղային հրաձիգների համար: Այս հնարքի նախագիծն այն է, որ բոլոր շարժումների վերահսկումը, ներառյալ, ուսումնասիրվում է: (Je schiet դուռը " մատը բենգեն ")
Simple Gimbal With Micro: bit և 2 Servos ՝ 4 քայլ
![Simple Gimbal With Micro: bit և 2 Servos ՝ 4 քայլ Simple Gimbal With Micro: bit և 2 Servos ՝ 4 քայլ](https://i.howwhatproduce.com/images/007/image-20706-j.webp)
Simple Gimbal With Micro: bit և 2 Servos. Ողջույն: Այսօր ես ձեզ ցույց կտամ, թե ինչպես պատրաստել պարզ գիմբալ կայունացուցիչ: Դուք կարող եք տեսնել YouTube- ի տեսանյութը այստեղ: Այն կպահի թեթև տեսախցիկ: Բայց եթե տեղադրեք ավելի հզոր սերվերներ և կառուցվածք, այն կարող է պահել ձեր սմարթֆոնը կամ նույնիսկ համապատասխան տեսախցիկը: Հաջորդ քայլերում