Talaan ng mga Nilalaman:
- Hakbang 1: Listahan ng Mga Bahagi
- Hakbang 2: Pagtitipon
- Hakbang 3:
- Hakbang 4: Susunod, Gamit ang Parehong Pamamaraan Na-secure ko ang Roll Servo. ang Mga Bahagi ay Partikular na Dinisenyo upang Madaling Pagkasyahin ang MG995 Servos
- Hakbang 5: Susunod, Gamit ang Parehong Pamamaraan Na-secure ko ang Roll Servo. ang Mga Bahagi ay Partikular na Dinisenyo upang Madaling magkasya ang MG995 Servos
- Hakbang 6: Mga Koneksyon
- Hakbang 7: Koneksyon Sa 7805 Boltahe Regulator IC
- Hakbang 8: Coding
- Hakbang 9: Kapag Nakakonekta ang Lahat ng Mga Component, Magkatulad ang Mukha sa Larawan na Ito
- Hakbang 10: Ipasok Ngayon ang Lahat ng Base Stuff sa loob ng Can ng Pagkain
- Hakbang 11: Kapag Ang Lahat ng mga Wires at Mga Sangkap ay Inilagay sa Loob ng isang Pagkain Maaari Pagkatapos Mag-apply ng Pandikit na Pandikit sa Base ng Foam Board
- Hakbang 12: Konklusyon
Video: Motion Control Gimbal: 12 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Kamusta Lahat, Ang pangalan ko ay Harji Nagi. Ako ay kasalukuyang isang mag-aaral na pangalawang taon na nag-aaral ng electronics at engineering sa pag-uusap mula sa Pranveer Singh Institute Of Technology, Kanpur (UP). Masigasig akong interes sa robotics, arduino, Artipisyal na Intelihensiya at Analog electronics.
Ang salitang "gimbal" ay tinukoy bilang isang pivoted na suporta na nagbibigay-daan sa pag-ikot ng anumang bagay sa isang solong axis. Kaya't ang isang three-axis gimbal ay nagbibigay-daan sa anumang bagay na naka-mount sa gimbal na maging malaya sa paggalaw ng isang may hawak ng gimbal. Ang gimbal ang nagdidikta ng paggalaw ng bagay, hindi ang nagdadala nito.
Binubuo ito ng 3 MG996R servo motors para sa 3-axis control, at isang batayan kung saan mailalagay ang sensor ng MPU6050, ang Arduino at ang baterya. Ginagamit ito upang mapanatili ang kamera na nagpapatatag nang walang panginginig ng boses. Tinitiyak ng isang 3-axis gimbal na ang paggalaw ng camera ay nagpapatatag kahit na ang nakahawak dito ay paakyat at baba, kaliwa at kanan, harap at likod. Ito ang tinukoy namin bilang yaw, pitch, at roll stabilization.
Hakbang 1: Listahan ng Mga Bahagi
Ang listahan ng sangkap ay:
1) Arduino Uno
2) 8V, 1.5 Amp Baterya para sa pag-power ng Arduino Uno
3) 7805 Boltahe regulator Ic o maaari mong gamitin ang buck conveter
4) MPU 6050
5) 3 * (MG995 SERVO Motors)
6) Mga Jumper Wires
Iba Pang Mga Equipment:
1) Panghinang na Bakal
2) Pandikit Baril
3) Drill machine
4) Can ng Pagkain
Sa halip na gumamit ng breadborad ay gumamit ako ng maliit na coustom perf board para sa positibo at negatibong koneksyon sa bus
Hakbang 2: Pagtitipon
Ang foam foam, foam board, o foam board na nakaharap sa papel ay isang magaan at madaling i-cut ang materyal na ginamit para sa pag-mount ng Servo motor at para sa paggawa ng mga modelo ng scale.
Una gumawa ako ng isang bracket na hugis-DIY upang mai-mount ang servo motor sa tulong ng foam board.
Hakbang 3:
Ang pagtitipon sa gimbal ay medyo madali. Nagsimula ako sa pag-install ng Yaw servo, MPU 6050 sensor at ON-OFF switch. Gamit ang mga bolt at mani ay na-secure ko ito sa base
Hakbang 4: Susunod, Gamit ang Parehong Pamamaraan Na-secure ko ang Roll Servo. ang Mga Bahagi ay Partikular na Dinisenyo upang Madaling Pagkasyahin ang MG995 Servos
Hakbang 5: Susunod, Gamit ang Parehong Pamamaraan Na-secure ko ang Roll Servo. ang Mga Bahagi ay Partikular na Dinisenyo upang Madaling magkasya ang MG995 Servos
Hakbang 6: Mga Koneksyon
Sa circuit diagram maaari mong gamitin ang alinman sa buck converter o 7805 Voltage regulator IC upang i-convert ang 8V hanggang 5 V. Ang microcontroller na binibigyan ng circuit diagram ay Arduino Nano maaari mo ring gamitin ang Arduino Uno, Arduino Mega.
Ang SCL at SDA pin ng MPU 6050 ay konektado sa Arduino Analog pin A5 at A4. (Ang SCL at SDA pin ay maaaring magkakaiba kaya suriin ang datasheet para sa SCl at SDA pin para sa iba pang microcontroller)
Hakbang 7: Koneksyon Sa 7805 Boltahe Regulator IC
Ang circuit diagram na ito ay para sa koneksyon ng 7805 voltage regulator ic, ikonekta ang 8v na baterya sa Vin at makakakuha ka ng isang output boltahe na 5v.
Hakbang 8: Coding
Dapat mong isama ang mga sumusunod na aklatan:
1) #includeClick Hereto download zip file
2) #includeMag-click Dito upang mag-download ng zip file
Pagkatapos i-download ang zip file, magdagdag ng zip library sa arduino sketch
Para sa Code
/*
DIY Gimbal - Ang MPU6050 Arduino Tutorial Code batay sa halimbawa ng MPU6050_DMP6 mula sa i2cdevlib library ni Jeff Rowberg: https://github.com/jrowberg/i2cdevlib * / // I2Cdev at MPU6050 ay dapat na mai-install bilang mga aklatan, o kung hindi.cpp /.h file // para sa parehong klase ay dapat na kasama ang path ng iyong proyekto # isama ang "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" // # isama ang "MPU6050.h" // hindi kinakailangan kung ang paggamit ng MotionApps isama ang file / / Arduino Wire library ay kinakailangan kung ang I2Cdev I2CDEV_ARDUINO_WIRE pagpapatupad // ay ginamit sa I2Cdev.h #kung I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #kasama ang "Wire.h" #endif #include // class default I2C address is 0C68 // be naipasa bilang isang parameter dito // AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board) // AD0 high = 0x69 MPU6050 mpu; // MPU6050 mpu (0x69); // <- gamitin para sa AD0 mataas // Tukuyin ang 3 servo motors Servo servo0; Servo servo1; Servo servo2; float tama; int j = 0; #define OUTPUT_READABLE_YAWPITCHROLL #define INTERRUPT_PIN 2 // use pin 2 on Arduino Uno & most boards bool blinkState = false; // MPU control / status vars bool dmpReady = false; // set true kung matagumpay ang DMP init uint8_t mpuIntStatus; // humahawak ng aktwal na byte ng pagkaantala ng katayuan mula sa MPU uint8_t devStatus; // status ng pagbabalik pagkatapos ng bawat pagpapatakbo ng aparato (0 = tagumpay,! 0 = error) uint16_t packetSize; // inaasahang laki ng packet ng DMP (ang default ay 42 bytes) uint16_t fifoCount; // count ng lahat ng byte na kasalukuyang nasa FIFO uint8_t fifoBuffer [64]; // FIFO storage buffer // orientation / motion vars Quaternion q; // [w, x, y, z] lalagyan ng quaternion na VectorInt16 aa; // [x, y, z] pagsukat ng accel sensor VectorInt16 aaReal; // [x, y, z] walang sukat na gravity na pagsukat ng accel sensor VectorInt16 aaWorld; // [x, y, z] mga sukat ng sensor ng accel sensor ng mundo na sukat ng VectorFloat gravity; // [x, y, z] gravity vector float euler [3]; // [psi, theta, phi] Euler anggulo lalagyan lumutang ypr [3]; // [yaw, pitch, roll] container ng yaw / pitch / roll at gravity vector // na istraktura ng packet para sa InvenSense teapot demo uint8_t teapotPacket [14] = {'$', 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x00, '\ r', '\ n'}; // =_ ==== // === INTERRUPT DETECTION ROUTINE === // ==== =_ pabagu-bago ng loob bool mpuInterrupt = false; // nagpapahiwatig kung MPU makagambala pin ay naging mataas na walang bisa dmpDataReady () {mpuInterrupt = true; } // =_ ================= // === INITIAL SETUP === // ==== =_ void setup () {// sumali sa I2C bus (hindi awtomatiko itong ginagawa ng I2Cdev library) #kung I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C na orasan. Komento sa linyang ito kung nagkakaroon ng mga paghihirap sa pagtitipon #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif // ipasimuno serial serial // (115200 napili dahil kinakailangan ito para sa Teapot Demo output, ngunit ito ay // talagang nasa iyo depende sa iyong proyekto) Serial.begin (38400); habang (! Serial); // hintayin ang bilang ng Leonardo, magpatuloy kaagad ang iba // ipasimuno ang aparato //Serial.println(F("Initializing ang mga I2C device … ")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); devStatus = mpu.dmpInitialize (); // supply your own gyro offset here, scaled for min sensitivity mpu.setXGyroOffset (17); mpu.setYGyroOffset (-69); mpu.setZGyroOffset (27); mpu.setZAccelOffset (1551); // 1688 factory default para sa aking test chip // tiyaking gumana ito (ibabalik ang 0 kung gayon) kung (devStatus == 0) {// i-on ang DMP, ngayong handa na ito // Serial.println (F ("Enabling DMP … ")); mpu.setDMPEn pinagana (totoo); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // itakda ang aming DMP Ready flag kaya alam ng pangunahing pag-andar ng loop na) okay na gamitin ito //Serial.println(F("Handa na ang DMP! Naghihintay para sa unang makagambala … ")); dmpReady = totoo; // makakuha ng inaasahang laki ng packet ng DMP para sa paglaon sa paghahambing packetSize = mpu.dmpGetFIFOPacketSize (); } iba pa {// ERROR! // 1 = Nabigo ang paunang pag-load ng memorya // 2 = Nabigo ang mga pag-update ng pagsasaayos ng DMP // (kung masisira ito, karaniwang ang code ay magiging 1) // Serial.print (F ("Nabigo ang Initialization ng DMP (code")); //Serial.print(devStatus); //Serial.println (F (")")); } // Tukuyin ang mga pin kung saan ang 3 servo motor ay konektado sa servo0.attach (10); servo1.attach (9); servo2.attach (8); } // =_ ================= // === PANGUNAHING PROGRAM LOOP === // ==================== =_ void loop () {/ / kung nabigo ang programa, huwag subukang gumawa ng anumang bagay kung bumalik ((dmpReady); // hintayin ang MPU makagambala o labis na (mga) packet na magagamit habang (! mpuInterrupt && fifoCount <packetSize) {kung (mpuInterrupt && fifoCount
= 1024) {
// reset upang makapagpatuloy kaming malinis mpu.resetFIFO (); fifoCount = mpu.getFIFOCount (); Serial.println (F ("FIFO overflow!")); // kung hindi man, suriin ang data ng DMP na handa nang magambala (dapat itong mangyari nang madalas)} kung iba pa (mpuIntStatus & _BV (MPU6050_INTERRUPT_DMP_INT_BIT)) {// maghintay para sa tamang magagamit na haba ng data, dapat ay isang napaka-maikling paghihintay habang (magagamit ang fifoCount na 1 packet / / (pinapayagan kaagad itong magbasa nang higit pa nang hindi naghihintay para sa isang makagambala) fifoCount - = packetSize; // Kumuha ng mga halagang Yaw, Pitch at Roll #ifdef OUTPUT_READABLE_YAWPITCHROLL mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& mp gravity, & q);.dmpGetYawPitchRoll (ypr, & q, & gravity); // Yaw, Pitch, Roll halaga - Radians hanggang degree ypr [0] = ypr [0] * 180 / M_PI; ypr [1] = ypr [1] * 180 / M_PI; ypr [2] = ypr [2] * 180 / M_PI; // Laktawan ang mga pagbasa ng 300 (proseso sa pag-calibrate sa sarili) kung (j <= 300) {tama = ypr [0]; // Nagsisimula ang Yaw nang sapalarang halaga, kaya't makuha ang huling halaga pagkatapos ng 300 na pagbasa j ++;} // Pagkatapos ng 300 na pagbabasa pa {ypr [0] = ypr [0] - tama; // Itakda ang Yaw sa 0 deg - ibawas ang huling random na halaga ng Yaw mula sa halaga ng currrent upang gawin ang Yaw 0 degree es // Mapa ang mga halaga ng sensor ng MPU6050 mula -90 hanggang 90 hanggang sa mga halagang angkop para sa kontrol ng servo mula 0 hanggang 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); // Kontrolin ang mga servos ayon sa MPU6050 orientation servo0.write (servo0Value); servo1.write (servo1Value); servo2.write (servo2Value); } #tapusin kung } }
Panghuli gamit ang function ng pagsulat, ipinapadala namin ang mga halagang ito sa mga servos bilang mga signal control. Siyempre, maaari mong huwag paganahin ang Yaw servo kung nais mo lamang ang pagpapatibay para sa X at Y axis, at gamitin ang platform na ito bilang camera gimbal
Hakbang 9: Kapag Nakakonekta ang Lahat ng Mga Component, Magkatulad ang Mukha sa Larawan na Ito
Hakbang 10: Ipasok Ngayon ang Lahat ng Base Stuff sa loob ng Can ng Pagkain
Hakbang 11: Kapag Ang Lahat ng mga Wires at Mga Sangkap ay Inilagay sa Loob ng isang Pagkain Maaari Pagkatapos Mag-apply ng Pandikit na Pandikit sa Base ng Foam Board
Hakbang 12: Konklusyon
Mangyaring tandaan ito malayo mula sa magandang camera gimbal. Ang mga paggalaw ay hindi makinis sapagkat ang mga servos na ito ay hindi inilaan para sa gayong layunin. Ang mga tunay na camera gimbal ay gumagamit ng isang espesyal na uri ng BLDC motor para sa pagkuha ng makinis na paggalaw. Kaya, isaalang-alang lamang ang proyektong ito para sa hangaring pang-edukasyon.
Iyon lang ang magiging para sa tutorial na ito, inaasahan kong nasiyahan ka dito at may natutunan ng bago. Huwag mag-atubiling magtanong ng anumang katanungan sa seksyon ng mga komento sa ibaba at huwag kalimutang suriin ang mga koleksyon ng proyekto
Inirerekumendang:
Gimbal Stabilizer Project: 9 Mga Hakbang (na may Mga Larawan)
Gimbal Stabilizer Project: Paano Gumawa ng isang Gimbal Alamin kung paano gumawa ng isang 2-axis gimbal para sa iyong camera ng aksiyon tulad ng nanginginig vide
Line Follower Robot para sa Mga Algorithm ng Control Control: 3 Mga Hakbang
Line Follower Robot para sa Mga Algorithm ng Pagkontrol sa Pagtuturo: Idinisenyo ko ang tagasunod na robot na ito ng ilang taon na ang nakakaraan noong ako ay isang guro ng robotics. Ang layunin para sa proyektong ito ay upang turuan ang aking mga mag-aaral kung paano mag-code ng isang linya na sumusunod sa robot para sa isang kumpetisyon at ihambing din sa pagitan ng If / Else at PID control. At hindi
3 Mga Kamangha-manghang Mga Utak ng Control ng BRAIN / MIND Control LedStrip LED Sa Arduino at Neurosky: 6 na Hakbang (na may Mga Larawan)
3 Kamangha-manghang Mga Utak ng Control ng BRAIN / MIND Control LedStrip LED Sa Arduino at Neurosky: Nais mo bang buksan o i-OFF ang mga ilaw sa pamamagitan lamang ng pag-iisip tungkol dito? O nais mong malaman kung gaano ka-stress sa pamamagitan ng pagtingin sa kulay ng isang humantong sa RGB? Habang ngayon maaari mo sa pamamagitan ng pagsunod sa mga Instructionable na ito! Upang makakuha ng isang pakiramdam para sa kung ano ang pupuntahan namin
Panimula - DIY Gimbal Mount para sa Gopro Session, Atbp.: 5 Mga Hakbang (na may Mga Larawan)
Panimula - DIY Gimbal Mount para sa Gopro Session, Atbp: Gumugol ako ng labis na oras sa paghahanap ng isang solusyon na gagana sa anumang gimbal ng cell phone - isang paraan upang mai-mount ang session ng GoPro. Sa wakas ay nagpasya akong gumawa ng sarili ko. Gagana rin ang parehong pag-mount para sa iba pang mga GoPro camera - i-mount lamang sa mga goma. Ako ay
Detektor ng Motion-Range Motion: 5 Mga Hakbang
Maliit na Saklaw ng Paggalaw: Ang itinuturo na ito ay magtuturo sa iyo kung paano gumawa ng isang maliit na saklaw na detector ng paggalaw mula sa murang mga bahagi na maaari mong makuha sa Radioshack. Sa maayos na proyekto na ito, maaari mong ibahin ang ningning ng detector. Ito ang aking unang itinuturo, kaya't mangyaring isipin ang pagiging simple