সুচিপত্র:

সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: 3 ধাপ
সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: 3 ধাপ

ভিডিও: সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: 3 ধাপ

ভিডিও: সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম: 3 ধাপ
ভিডিও: ‘সেলফ ব্যালেন্সিং রোবট’ দেশি তরুণদের উদ্ভাবন 2024, নভেম্বর
Anonim
সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম
সেলফ ব্যালেন্সিং রোবট - পিআইডি কন্ট্রোল অ্যালগরিদম

এই প্রকল্পটি কল্পনা করা হয়েছিল কারণ আমি নিয়ন্ত্রণ অ্যালগরিদম এবং কীভাবে কার্যকরী পিআইডি লুপগুলি কার্যকরভাবে প্রয়োগ করতে পারি সে সম্পর্কে আরও জানতে আগ্রহী ছিলাম। একটি ব্লুটুথ মডিউল এখনো যোগ করা হয়নি যা ব্লুটুথ সক্ষম স্মার্টফোন থেকে রোবটের উপর নিয়ন্ত্রণের অনুমতি দেবে বলে প্রকল্পটি এখনও উন্নয়নের পর্যায়ে রয়েছে।

ব্যবহৃত N20 ডিসি মোটর তুলনামূলকভাবে সস্তা ছিল, এবং তাই তাদের মধ্যে যথেষ্ট পরিমাণে খেলা আছে। এটি একটি ছোট পরিমাণে ঝাঁকুনির দিকে নিয়ে যায় কারণ মোটরগুলি 'স্ল্যাক' অতিক্রম করে কারণ এটি চাকার উপর টর্ক প্রয়োগ করে। অতএব, পুরোপুরি মসৃণ গতি অর্জন করা অসম্ভব। আমার লেখা কোডটি যুক্তিসঙ্গতভাবে সহজ কিন্তু কার্যকরভাবে PID অ্যালগরিদমের ক্ষমতা প্রদর্শন করে।

প্রকল্পের সারসংক্ষেপ:

রোবটের চেসিস একটি এন্ডার 3 প্রিন্টার ব্যবহার করে 3D মুদ্রিত এবং এটি একসাথে প্রেস-ফিট করার জন্য ডিজাইন করা হয়েছে।

রোবটটি একটি Arduino Uno দ্বারা নিয়ন্ত্রিত হয় যা MPU6050 থেকে সেন্সর ডেটা নেয় এবং একটি বাহ্যিক মোটর ড্রাইভারের মাধ্যমে DC মোটরগুলিকে নিয়ন্ত্রণ করে। এটি একটি 7.4V, 1500mAh ব্যাটারি চালায়। মোটরচালক এটিকে 5V তে নিয়ন্ত্রণ করে আরডুইনোকে শক্তি দেয় এবং মোটরগুলিতে 7.4V সরবরাহ করে।

GitHub থেকে 'Arduino-KalmanFilter-master' এবং 'Arduino-MPU6050-master' লাইব্রেরির সাহায্যে সফটওয়্যারটি শুরু থেকেই লেখা হয়েছিল।

সরবরাহ:

  • 3D মুদ্রিত যন্ত্রাংশ
  • আরডুইনো ইউএনও
  • MPU6050 6-অক্ষ সেন্সর
  • ডিসি মোটর ড্রাইভার
  • N20 D. C মোটর (x2)
  • 9V ব্যাটারি

ধাপ 1: রোবট বিল্ড

রোবট বিল্ড
রোবট বিল্ড
রোবট বিল্ড
রোবট বিল্ড
রোবট বিল্ড
রোবট বিল্ড

মুদ্রণ এবং সমাবেশ

পুরো বিল্ডটি প্রেস-ফিট হওয়া উচিত কিন্তু ভারসাম্য বজায় রাখার সময় রোবটটি সম্পূর্ণ অনমনীয় তা নিশ্চিত করার জন্য আমি উপাদানগুলিকে সুরক্ষিত করার জন্য সুপারগ্লু ব্যবহার করেছি।

আমি ফিউশন in০ -এ পার্টস ডিজাইন করেছি এবং শক্ত সহনশীলতা এবং ক্লিনার সারফেস ফিনিসের অনুমতি দেওয়ার জন্য সাপোর্ট ছাড়াই প্রিন্ট করার জন্য প্রতিটি অংশ অপ্টিমাইজ করেছি।

এন্ডার 3 প্রিন্টারে ব্যবহৃত সেটিংস ছিল: 0.16 মিমি লেয়ার হাইটস @ 40% ইনফিল সব অংশের জন্য।

ধাপ 2: 3D প্রিন্ট রোবট

3D প্রিন্ট রোবট
3D প্রিন্ট রোবট

চ্যাসি (x1)

বাম চাকা (x2)

বাম মোটর হাউজিং (x2)

Arduino কেস (x1)

ধাপ 3: পিআইডি নিয়ন্ত্রণ অ্যালগরিদম

পিআইডি কন্ট্রোল অ্যালগরিদম
পিআইডি কন্ট্রোল অ্যালগরিদম

আমি gitHub থেকে 'Arduino-KalmanFilter-master' এবং 'Arduino-MPU6050-master' লাইব্রেরি ব্যবহার করে শুরু থেকে একটি PID কন্ট্রোল অ্যালগরিদম লিখেছি।

অ্যালগরিদমের ভিত্তি নিম্নরূপ:

  • MPU6050 থেকে কাঁচা তথ্য পড়ুন
  • সেন্সরের ত্বরণের কারণে গাইরোস্কোপ রিডিংয়ের ভুলগুলি বাতিল করতে গাইরোস্কোপ এবং অ্যাকসিলরোমিটার উভয়ের ডেটা বিশ্লেষণ করতে কালম্যান ফিল্টার ব্যবহার করুন। এটি সেন্সরের পিচের জন্য ডিগ্রিতে দুই দশমিক স্থানে অপেক্ষাকৃত মসৃণ মান প্রদান করে।
  • কোণে E রর গণনা করুন, যেমন: সেন্সর এবং সেটপয়েন্টের মধ্যে কোণ।
  • আনুপাতিক ত্রুটি হিসাবে গণনা করুন (অনুপাত x ত্রুটির ধ্রুবক)।
  • চলমান যোগফল হিসাবে ইন্টিগ্রাল ত্রুটি গণনা করুন (ইন্টিগ্রেশন x ত্রুটির ধ্রুবক)।
  • ডেরিভেটিভ ত্রুটিকে ধ্রুবক হিসাবে গণনা করুন
  • মোটরগুলিতে পাঠানো গতির আউটপুট দিতে সমস্ত ত্রুটি যোগ করুন।
  • ত্রুটি কোণের চিহ্নের ভিত্তিতে মোটর কোন দিকে ঘুরবে তা গণনা করুন।
  • লুপ অনির্দিষ্টকালের জন্য চলবে এবং ইনপুট পরিবর্তিত হওয়ার সাথে সাথে আউটপুটের উপর তৈরি হবে। এটি একটি প্রতিক্রিয়া লুপ, পরবর্তী পুনরাবৃত্তির জন্য নতুন ইনপুট মান হিসাবে আউটপুট মান ব্যবহার করে।

চূড়ান্ত ধাপ হল PID লুপ Kp, Ki & Kd প্যারামিটার টিউন করা।

  1. একটি ভাল শুরু বিন্দু হল ধীরে ধীরে কেপি বৃদ্ধি করা যতক্ষণ না রোবট ব্যালেন্স পয়েন্টের চারপাশে দোলায় এবং পতন ধরতে পারে।
  2. এরপরে, কেপি কেপি এর মান প্রায় 1% এ শুরু করুন এবং ধীরে ধীরে বৃদ্ধি করুন যতক্ষণ না দোলনাগুলি অদৃশ্য হয়ে যায় এবং রোবটটি ধাক্কা দেওয়ার সময় মসৃণভাবে সরে যায়।
  3. অবশেষে, কি দিয়ে প্রায় 20% Kp দিয়ে শুরু করুন এবং রোবটটি সক্রিয়ভাবে পতন ধরতে এবং উল্লম্বভাবে ফিরে আসার জন্য সেটপয়েন্টটি "ওভারশুট" না হওয়া পর্যন্ত পরিবর্তিত হয়।

প্রস্তাবিত: