সুচিপত্র:

গতি নিয়ন্ত্রণ গিম্বাল: 12 টি ধাপ
গতি নিয়ন্ত্রণ গিম্বাল: 12 টি ধাপ

ভিডিও: গতি নিয়ন্ত্রণ গিম্বাল: 12 টি ধাপ

ভিডিও: গতি নিয়ন্ত্রণ গিম্বাল: 12 টি ধাপ
ভিডিও: SpaceX Starship Fully Stacked for the first time, Starliner and Starlink Updates 2024, জুলাই
Anonim
Image
Image

হ্যালো সবাই, আমার নাম হারজি নাগি। আমি বর্তমানে কানপুর (ইউপি) প্রণবীর সিং ইনস্টিটিউট অফ টেকনোলজি থেকে ইলেকট্রনিক্স এবং কমিউনিকেশন ইঞ্জিনিয়ারিং অধ্যয়নরত দ্বিতীয় বর্ষের ছাত্র।

"গিম্বাল" শব্দটি একটি পিভোটেড সাপোর্ট হিসাবে সংজ্ঞায়িত করা হয়েছে যা একটি অক্ষের মধ্যে যেকোনো বস্তুর আবর্তনের অনুমতি দেয়। সুতরাং একটি তিন-অক্ষের জিম্বাল গিম্বালে লাগানো যেকোন বস্তুকে গিম্বাল ধারণকারী ব্যক্তির চলাচল থেকে স্বাধীন হতে দেয়। জিম্বল বস্তুর গতিবিধি নির্দেশ করে, এটি বহনকারী নয়।

এটি 3-অক্ষ নিয়ন্ত্রণের জন্য 3 MG996R সার্ভো মোটর, এবং একটি বেস যার উপর MPU6050 সেন্সর, Arduino এবং ব্যাটারি স্থাপন করা হবে। একটি 3-অক্ষের গিম্বাল নিশ্চিত করে যে ক্যামেরার গতি স্থির থাকে এমনকি যদি এটি ধরে রাখা ব্যক্তিটি উপরে এবং নিচে, বাম এবং ডান, সামনে এবং পিছনে যায়। এটাকে আমরা ইয়াও, পিচ এবং রোল স্টেবিলাইজেশন বলে উল্লেখ করি।

ধাপ 1: উপাদান তালিকা

উপাদান তালিকা হল:

1) আরডুইনো ইউনো

2) Arduino Uno কে পাওয়ার করার জন্য 8V, 1.5 Amp ব্যাটারি

3) 7805 ভোল্টেজ রেগুলেটর আইসি অথবা আপনি বক কনভেটার ব্যবহার করতে পারেন

4) এমপিইউ 6050

5) 3*(MG995 সার্ভো মোটরস)

6) জাম্পার তারের

অন্যান্য সরঞ্জাম:

1) সোল্ডারিং আয়রন

2) আঠালো বন্দুক

3) ড্রিল মেশিন

4) খাদ্য ক্যান

ব্রেডবোর্ড ব্যবহারের পরিবর্তে আমি ইতিবাচক এবং নেতিবাচক বাস সংযোগের জন্য ছোট কাস্টম পারফ বোর্ড ব্যবহার করেছি।

ধাপ 2: একত্রিত করা

একত্রিত করা
একত্রিত করা
একত্রিত করা
একত্রিত করা

ফোমকোর, ফোম বোর্ড, বা কাগজের মুখোমুখি ফোম বোর্ড হল একটি হালকা ও সহজে কাটা উপাদান যা সার্ভো মোটর মাউন্ট এবং স্কেল মডেল তৈরিতে ব্যবহৃত হয়।

প্রথমে আমি ফোম বোর্ডের সাহায্যে সার্ভো মোটর মাউন্ট করার জন্য একটি DIY L- আকৃতির বন্ধনী তৈরি করেছি।

ধাপ 3:

ছবি
ছবি

জিম্বাল একত্রিত করা বেশ সহজ ছিল। আমি ইয়া সার্ভো, এমপিইউ 6050 সেন্সর এবং অন-অফ সুইচ ইনস্টল করে শুরু করেছি। বোল্ট এবং বাদাম ব্যবহার করে আমি এটি বেসে সুরক্ষিত করেছি

ধাপ 4: পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়

পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়
পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়

ধাপ 5: পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়

পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়
পরবর্তী, একই পদ্ধতি ব্যবহার করে আমি রোল সার্ভো সুরক্ষিত করেছি। যন্ত্রাংশগুলি বিশেষভাবে ডিজাইন করা হয়েছে যাতে সহজেই MG995 Servos ফিট করা যায়

ধাপ 6: সংযোগ

সংযোগ
সংযোগ

সার্কিট ডায়াগ্রামে আপনি বক কনভার্টার বা 7805 ভোল্টেজ রেগুলেটর আইসি ব্যবহার করতে পারেন 8V থেকে 5 V তে রূপান্তর করতে।

এমপিইউ 6050 এর এসসিএল এবং এসডিএ পিনগুলি আরডুইনো এনালগ পিন এ 5 এবং এ 4 এর সাথে সংযুক্ত।

ধাপ 7: 7805 ভোল্টেজ রেগুলেটর আইসি এর সাথে সংযোগ

7805 ভোল্টেজ রেগুলেটর আইসি এর সাথে সংযোগ
7805 ভোল্টেজ রেগুলেটর আইসি এর সাথে সংযোগ

এই সার্কিট ডায়াগ্রামটি 7805 ভোল্টেজ রেগুলেটর আইসি এর সংযোগের জন্য, 8v ব্যাটারিকে ভিনে সংযুক্ত করুন এবং আপনি 5v এর একটি আউটপুট ভোল্টেজ পাবেন।

ধাপ 8: কোডিং

আপনাকে অবশ্যই নিম্নলিখিত গ্রন্থাগারগুলি অন্তর্ভুক্ত করতে হবে:

1) #includeClick Hereto জিপ ফাইল ডাউনলোড করুন

2) #includeCip ফাইলটি ডাউনলোড করতে এখানে ক্লিক করুন

জিপ ফাইলটি ডাউনলোড করার পরে, আরডুইনো স্কেচে জিপ লাইব্রেরি যুক্ত করুন

কোডের জন্য

/*

DIY গিম্বাল - MPU6050 Arduino টিউটোরিয়াল কোড MPU6050_DMP6 এর উপর ভিত্তি করে i2cdevlib লাইব্রেরি থেকে জেফ রোবার্গ: https://github.com/jrowberg/i2cdevlib */// I2Cdev এবং MPU6050 অবশ্যই লাইব্রেরি হিসেবে ইনস্টল করতে হবে, অন্যথায়.cpp/.h ফাইল // উভয় ক্লাসের জন্য অবশ্যই আপনার প্রকল্পের অন্তর্ভুক্ত পথের অন্তর্ভুক্ত থাকতে হবে #অন্তর্ভুক্ত "I2Cdev.h" #অন্তর্ভুক্ত "MPU6050_6Axis_MotionApps20.h" // #অন্তর্ভুক্ত "MPU6050.h" // মোশন অ্যাপস ব্যবহার করলে ফাইল প্রয়োজন / / I2Cdev I2CDEV_ARDUINO_WIRE বাস্তবায়ন // I2Cdev.h #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #include // class // IxC নির্দিষ্ট ঠিকানা হতে পারে এখানে একটি প্যারামিটার হিসাবে পাস করা হয়েছে // AD0 low = 0x68 (SparkFun ব্রেকআউট এবং InvenSense মূল্যায়ন বোর্ডের জন্য ডিফল্ট) // AD0 উচ্চ = 0x69 MPU6050 mpu; // MPU6050 mpu (0x69); // <- AD0 উচ্চের জন্য ব্যবহার করুন // 3 servo মোটর Servo servo0 সংজ্ঞায়িত করুন; Servo servo1; Servo servo2; সঠিক ভাসা; int j = 0; #ডিফাইন OUTPUT_READABLE_YAWPITCHROLL #ডিফাইন INTERRUPT_PIN 2 // Arduino Uno এ পিন 2 ব্যবহার করুন এবং অধিকাংশ বোর্ড বুল ব্লিংকস্টেট = মিথ্যা; // MPU নিয়ন্ত্রণ/অবস্থা vars bool dmpReady = false; // DMP init সফল হলে uint8_t mpuIntStatus সফল হয়; // MPU uint8_t devStatus থেকে প্রকৃত বাধা অবস্থা বাইট ধারণ করে; // প্রতিটি ডিভাইস অপারেশনের পর রিটার্ন স্ট্যাটাস (0 = সাফল্য,! 0 = ত্রুটি) uint16_t প্যাকেট সাইজ; // প্রত্যাশিত DMP প্যাকেটের আকার (ডিফল্ট 42 বাইট) uint16_t fifoCount; // FIFO uint8_t fifoBuffer এ বর্তমানে সমস্ত বাইটের সংখ্যা [64]; // FIFO স্টোরেজ বাফার // ওরিয়েন্টেশন/মোশন ভার্স Quaternion q; // [w, x, y, z] quaternion ধারক VectorInt16 aa; // [x, y, z] অ্যাকসেল সেন্সর পরিমাপ VectorInt16 aaReal; // [x, y, z] মাধ্যাকর্ষণ মুক্ত অ্যাকসেল সেন্সর পরিমাপ VectorInt16 aaWorld; // [x, y, z] বিশ্ব-ফ্রেম অ্যাকসেল সেন্সর পরিমাপ ভেক্টরফ্লোট মাধ্যাকর্ষণ; // [x, y, z] মাধ্যাকর্ষণ ভেক্টর ফ্লোট ইউলার [3]; // [psi, theta, phi] অয়লার এঙ্গেল কন্টেইনার ফ্লোট ypr [3]; // [ইয়াও, পিচ, রোল] ইয়াও/পিচ/রোল ধারক এবং মাধ্যাকর্ষণ ভেক্টর // ইনভেনসেন্স টিপট ডেমো uint8_t টিপটপ্যাকেটের জন্য প্যাকেট কাঠামো [14] = {'$', 0x02, 0, 0, 0, 0, 0, 0 {0, 0, 0x00, 0x00, '\ r', '\ n'}; // ==================================================== ================== // =============================================== উদ্বায়ী বুল mpuInterrupt = মিথ্যা; // নির্দেশ করে যে এমপিইউ ইন্টারাপ্ট পিন উচ্চ অকার্যকর হয়েছে কিনা dmpDataReady () {mpuInterrupt = true; } // ===================================================== =================== // === প্রাথমিক সেটআপ === // ================================================= অকার্যকর সেটআপ () {// I2C বাসে যোগ দিন (I2Cdev লাইব্রেরি এটি স্বয়ংক্রিয়ভাবে করে না) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C ঘড়ি। সংকলন করতে সমস্যা হলে এই লাইনে মন্তব্য করুন #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif // সিরিয়াল যোগাযোগ শুরু // যখন (! সিরিয়াল); // লিওনার্দো গণনার জন্য অপেক্ষা করুন, অন্যরা অবিলম্বে চালিয়ে যান // ডিভাইস শুরু করুন // Serial.println(F("Initializing 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) {// ডিএমপি চালু করুন, এখন এটি প্রস্তুত // সিরিয়াল.প্রিন্টলন (এফ ডিএমপি … ")); mpu.setDMPEnabled (সত্য); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // আমাদের ডিএমপি রেডি ফ্ল্যাগ সেট করুন যাতে প্রধান লুপ () ফাংশন জানে এটা ব্যবহার করা ঠিক আছে // সিরিয়াল.প্রিন্টলন dmpReady = সত্য; // পরবর্তী তুলনা প্যাকেটের জন্য প্রত্যাশিত DMP প্যাকেটের আকার পান সাইজ = mpu.dmpGetFIFOPacketSize (); } অন্যথায় {// ভুল! // 1 = প্রাথমিক মেমরি লোড ব্যর্থ হয়েছে // 2 = ডিএমপি কনফিগারেশন আপডেট ব্যর্থ হয়েছে // (যদি এটি ভেঙে যাচ্ছে, সাধারণত কোডটি 1 হবে) // সিরিয়াল.প্রিন্ট (F ("DMP আরম্ভ ব্যর্থ (কোড")); //Serial.print(devStatus); //Serial.println (F (")")); } // পিনগুলি সংজ্ঞায়িত করুন যার সাথে 3 টি servo মোটর সংযুক্ত servo0.attach (10); servo1.attach (9); servo2.attach (8); } // =================================================== =================== // === প্রধান প্রোগ্রাম লুপ === // ================================================== অকার্যকর লুপ () { / / যদি প্রোগ্রামিং ব্যর্থ হয়, ((dmpReady) রিটার্ন হলে কিছু করার চেষ্টা করবেন না; // এমপিইউ ইন্টারাপ্ট বা অতিরিক্ত প্যাকেটের জন্য অপেক্ষা করুন (!

= 1024) {

// রিসেট করুন যাতে আমরা পরিষ্কারভাবে mpu.resetFIFO () চালিয়ে যেতে পারি; fifoCount = mpu.getFIFOCount (); Serial.println (F ("FIFO overflow!")); // অন্যথায়, ডিএমপি ডেটা প্রস্তুত বাধাপ্রাপ্তির জন্য চেক করুন (এটি ঘন ঘন হওয়া উচিত)} অন্যথায় যদি (mpuIntStatus & _BV (MPU6050_INTERRUPT_DMP_INT_BIT)) {// সঠিক উপলব্ধ ডেটা দৈর্ঘ্যের জন্য অপেক্ষা করুন, খুব ছোট অপেক্ষা করা উচিত (ফিফোকাউন্ট 1 প্যাকেট পাওয়া যায় / / (এটি আমাদের অবিলম্বে বাধা না দিয়ে আরও পড়তে দেয়) । ypr [2] = ypr [2] * 180 / M_PI; // 300 রিডিং এড়িয়ে যান (স্ব-ক্রমাঙ্কন প্রক্রিয়া) যদি (j <= 300) {সঠিক = ypr [0]; // ইয়াও এলোমেলো মান থেকে শুরু হয়, তাই আমরা 300 রিডিং এর পরে শেষ মান ক্যাপচার করুন j ++;} // 300 রিডিং এর পরে অন্য {ypr [0] = ypr [0] - সঠিক; // Yaw কে 0 ডিগ্রীতে সেট করুন - কারেন্ট মান থেকে শেষ এলোমেলো ইয়া মান বিয়োগ করুন ইয়াও 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 অনুযায়ী servos নিয়ন্ত্রণ করুন (servo0Value); servo1.write (servo1Value); servo2.write (servo2Value); } #যদি শেষ } }

অবশেষে রাইট ফাংশন ব্যবহার করে, আমরা এই মানগুলিকে নিয়ন্ত্রণ সংকেত হিসাবে সার্ভোসে পাঠাই। অবশ্যই, যদি আপনি X এবং Y অক্ষের জন্য স্থিতিশীলতা চান তবে আপনি Yaw servo অক্ষম করতে পারেন এবং এই প্ল্যাটফর্মটিকে ক্যামেরা গিম্বাল হিসাবে ব্যবহার করতে পারেন।

ধাপ 9: যখন সমস্ত উপাদানগুলি সংযুক্ত থাকে, তখন এটি এই ছবির মতো দেখতে

যখন সমস্ত উপাদানগুলি সংযুক্ত থাকে, তখন এটি এই ছবির মতো দেখতে
যখন সমস্ত উপাদানগুলি সংযুক্ত থাকে, তখন এটি এই ছবির মতো দেখতে

ধাপ 10: এখন খাবারের ভিতরে সমস্ত বেস স্টাফ সন্নিবেশ করান

এখন খাবারের ভিতরে সমস্ত বেস স্টাফ োকান
এখন খাবারের ভিতরে সমস্ত বেস স্টাফ োকান

ধাপ 11: যখন সমস্ত তার এবং উপাদানগুলি খাবারের ভিতরে রাখা হয় তখন ফোম বোর্ডের বেসে আঠালো বন্দুক লাগানো যায়।

যখন সমস্ত তার এবং উপাদানগুলি খাবারের ভিতরে রাখা হয় তখন ফোম বোর্ডের বেসে আঠালো বন্দুক লাগানো যায়।
যখন সমস্ত তার এবং উপাদানগুলি খাবারের ভিতরে রাখা হয় তখন ফোম বোর্ডের বেসে আঠালো বন্দুক লাগানো যায়।

ধাপ 12: উপসংহার

ভাল ক্যামেরা গিম্বাল থেকে এটি দয়া করে নোট করুন। আন্দোলনগুলি মসৃণ নয় কারণ এই সার্ভগুলিগুলি এমন উদ্দেশ্যে নয়। রিয়েল ক্যামেরা জিম্বাল মসৃণ চলাফেরার জন্য একটি বিশেষ ধরনের BLDC মোটর ব্যবহার করে। সুতরাং, এই প্রকল্পটি শুধুমাত্র শিক্ষাগত উদ্দেশ্যে বিবেচনা করুন।

এই টিউটোরিয়ালের জন্য এটিই হবে, আমি আশা করি আপনি এটি উপভোগ করেছেন এবং নতুন কিছু শিখেছেন। নীচের মন্তব্য বিভাগে কোন প্রশ্ন জিজ্ঞাসা করুন এবং প্রকল্পের সংগ্রহগুলি চেক করতে ভুলবেন না

প্রস্তাবিত: