- خود توازن رکھنے والے روبوٹ کے حصے منتخب کرنا
- 3 ڈی پرنٹنگ اور ہمارے سیلف بیلینسنگ روبوٹ کو جمع کرنا
- سرکٹ ڈایاگرام
- سیلف بیلینسنگ روبوٹ کوڈ
- ارڈینو سیلف بیلینسنگ روبوٹ کا کام کرنا
سی وے سے RYNO موٹرز اور دیگر خود توازن رکھنے والے اسکوٹرز سے متاثر ہونے کے بعد ، میں ہمیشہ اپنی ہی آردوینو سیگ وے روبوٹ کو کچھ بنانا چاہتا تھا ۔ کچھ دیر سوچتے ہوئے ، میں نے ارڈینو کا استعمال کرتے ہوئے سیلف بیلینس روبوٹ بنانے کا فیصلہ کیا ۔ اس طرح میں ان تمام سکوٹروں کے پیچھے بنیادی تصور کو سمجھنے کے قابل ہوں گا اور یہ بھی سیکھ سکتا ہوں کہ پی آئی ڈی الگورتھم کیسے کام کرتا ہے۔
ایک بار جب میں نے تعمیرات شروع کیں ، تو میں نے محسوس کیا کہ یہ بوٹ تعمیر کرنا تھوڑا سا چیلنج ہے۔ انتخاب کرنے کے لئے بہت سارے اختیارات موجود ہیں اور اسی وجہ سے الجھنیں موٹروں کا انتخاب کرتے ہوئے صحیح فارم شروع کردیتی ہیں اور PID اقدار کی تشکیل تک باقی رہتی ہیں۔ اور بہت ساری چیزوں پر غور کرنے کی ضرورت ہے جیسے بیٹری کی قسم ، بیٹری کی پوزیشن ، پہیے کی گرفت ، موٹر ڈرائیور کی قسم ، CoG (سینٹر کشش ثقل) کو برقرار رکھنا اور بہت کچھ۔
لیکن مجھے آپ کے ساتھ یہ توڑنے دو ، ایک بار جب آپ اسے تعمیر کریں گے تو آپ اس سے اتفاق کریں گے کہ جتنا مشکل لگتا ہے اتنا مشکل نہیں ہے۔ تو آئیے اس کا سامنا کریں ، اس ٹیوٹوریل میں میں خود توازن رکھنے والے روبوٹ کی تعمیر کے اپنے تجربے کو دستاویز کروں گا۔ آپ ایک مطلق ابتدائی شخص ہوسکتے ہیں جو ابھی ابھی شروعات کررہا ہے یا آپ کی بیوٹی کو کام نہ کرنے کی ایک طویل مایوسی کے بعد یہاں جا پہنچا ہے۔ اس جگہ کا مقصد آپ کی آخری منزل مقصود ہے۔ تو آئیے شروع کریں……
خود توازن رکھنے والے روبوٹ کے حصے منتخب کرنا
اس سے پہلے کہ میں آپ کو بوٹ کی تعمیر کے سبھی آپشن بتاؤں ، مجھے ان اشیاء کی فہرست آنے دیں جو میں نے خود توازن رکھنے والے روبوٹ پروجیکٹ میں استعمال کیے ہیں۔
- اردوینو یو این او
- ڈی سی موٹرز (پیلا رنگ) - 2 نمبر
- L298N موٹر ڈرائیور ماڈیول
- MPU6050
- پہیوں کا ایک جوڑا
- 7.4V لی آئن بیٹری
- مربوط تاروں
- 3D طباعت شدہ باڈی
آپ خود توازن رکھنے والی روبوٹ کٹ بنانے کے لئے دستیابی کی بنیاد پر مذکورہ بالا کسی بھی اجزاء کے لئے اختلاط اور انتخاب کرسکتے ہیں ، صرف اس بات کو یقینی بنائیں کہ اجزا درج ذیل معیار پر پورا اتریں۔
کنٹرولر: جو کنٹرولر میں نے یہاں استعمال کیا ہے وہ اردوینو یو این او ہے ، کیوں کہ اسے استعمال کرنا آسان ہے۔ آپ ایک ارڈینو نینو یا ارڈینو مینی بھی استعمال کرسکتے ہیں لیکن میں آپ کو یو این او کے ساتھ رہنے کی سفارش کروں گا کیونکہ ہم اسے کسی بیرونی ہارڈویئر کے بغیر براہ راست پروگرام کرسکتے ہیں۔
موٹرز: موٹر کا بہترین انتخاب جسے آپ خود توازن رکھنے والے روبوٹ کے ل use استعمال کرسکتے ہیں ، اس میں کوئی شک نہیں اسٹیپر موٹر ہوگی۔ لیکن چیزوں کو آسان رکھنے کے لئے میں نے ڈی سی گئر موٹر استعمال کی ہے۔ ہاں یہ لازمی نہیں ہے کہ اس کے ساتھ اسٹپر رکھے۔ بوٹ ان سستے عام طور پر دستیاب پیلے رنگ کے ڈی سی گئر موٹروں کے ساتھ بھی ٹھیک کام کرتا ہے۔
موٹر ڈرائیور: اگر آپ نے میری طرح ڈی سی گئر موٹرز کا انتخاب کیا ہے تو آپ یا تو مجھ جیسے L298N ڈرائیور ماڈیول استعمال کرسکتے ہیں ، یا یہاں تک کہ L293D بھی ٹھیک کام کرنا چاہئے۔ L293D اور Ardino کا استعمال کرتے ہوئے DC موٹر کو کنٹرول کرنے کے بارے میں مزید معلومات حاصل کریں۔
پہیے: ان لڑکوں کے بارے میں اندازہ نہ لگائیں؛ مجھے یہ معلوم کرنے میں ایک مشکل وقت درپیش تھا کہ مسئلہ میرے پہیelsوں سے ہے۔ لہذا اس بات کو یقینی بنائیں کہ آپ جس پہیے کو استعمال کررہے ہیں اس پر آپ کے پہیے کی اچھی گرفت ہے۔ قریب سے دیکھیں ، آپ کی گرفت کو کبھی بھی اپنے پہیے کو فرش پر نہیں جانے دینا چاہئے۔
accelerometer اور Gyroscope کی: آپ کے بیوٹی لئے Accelerometer اور Gyroscope کی بہترین انتخاب MPU6050 ہو جائے گا. لہذا ADXL345 جیسے عام Accelerometer یا اس طرح کی کوئی چیز تیار کرنے کی کوشش نہ کریں ، یہ کام نہیں کرے گا۔ اس مضمون کے آخر میں آپ کو پتہ چل جائے گا۔ آپ ارڈوینو کے ساتھ ایم پی یو 6050 کے استعمال سے متعلق ہمارے سرشار مضمون کو بھی چیک کرسکتے ہیں۔
بیٹری: ہمیں ایک ایسی بیٹری کی ضرورت ہے جو زیادہ سے زیادہ ہلکی ہو اور آپریٹنگ وولٹیج 5V سے زیادہ ہونی چاہئے تاکہ ہم بغیر کسی فروغ دینے والے ماڈیول کے اپنے اردوینو کو براہ راست طاقت بناسکیں۔ لہذا مثالی انتخاب 7.4V لی پولیمر بیٹری ہوگی۔ یہاں ، چونکہ میرے پاس 7.4V لی آئن بیٹری آسانی سے دستیاب ہے میں نے اسے استعمال کیا ہے۔ لیکن یاد رکھنا ایک لی پو پو لی آئن سے فائدہ مند ہے۔
چیسس: ایک اور جگہ جہاں آپ کو سمجھوتہ نہیں کرنا چاہئے وہ آپ کے بوٹوں کے چیسس کے ساتھ ہے۔ آپ گتے ، لکڑی ، پلاسٹک کی کوئی بھی چیز استعمال کرسکتے ہیں جس سے آپ اچھ areا ہو۔ لیکن ، صرف اس بات کو یقینی بنائیں کہ چیسی مضبوط ہے اور جب بوٹ توازن پیدا کرنے کی کوشش کر رہا ہے تو اس سے جھگڑا نہیں ہونا چاہئے۔ میں نے دوسرے بوٹس سے اندازہ لگانے والے سالیڈورکس پر خود ہی چیسیس کے ذریعہ ڈیزائن کیا ہے اور تھری ڈی نے اسے پرنٹ کیا ہے۔ اگر آپ کے پاس پرنٹر ہے تو آپ ڈیزائن کو بھی پرنٹ کرسکتے ہیں ، آئندہ سرخی میں ڈیزائن فائلیں منسلک ہوجائیں گی۔
3 ڈی پرنٹنگ اور ہمارے سیلف بیلینسنگ روبوٹ کو جمع کرنا
اگر آپ نے وہی چیسیس 3 ڈی پرنٹ کرنے کا فیصلہ کیا ہے جسے میں اپنی بوٹ بنانے کے لئے استعمال کررہا ہوں ، تو ایس ٹی ایل فائلوں کو چیز مختلف سے ڈاؤن لوڈ کیا جاسکتا ہے۔ میں نے اس کے ساتھ ساتھ ڈیزائن فائلوں کو بھی شامل کیا ہے تاکہ آپ اپنے اہلکاروں کی ترجیحات کے مطابق بھی اس میں ترمیم کرسکیں۔
پرزوں کی کوئی زیادہ ساخت نہیں ہے لہذا آپ انہیں بغیر کسی سہارے کے آسانی سے پرنٹ کرسکتے ہیں اور 25٪ کی رقم ٹھیک ہوجائے گی۔ ڈیزائن بہت سادہ ہیں اور کوئی بھی بنیادی پرنٹر آسانی کے ساتھ اسے سنبھالنے کے قابل ہونا چاہئے۔ میں نے ماڈل کو ٹکرانے کے لئے کورا سافٹ ویئر کا استعمال کیا اور اپنے ٹیویو ٹرانٹولا کا استعمال کرتے ہوئے طباعت کی ، جس کی ترتیب ذیل میں دکھائی گئی ہے۔
آپ کو جسمانی حص asہ کے ساتھ ساتھ موٹر موٹرٹنگ کے چار حصوں کو بھی پرنٹ کرنا ہوگا۔ جمع کافی سیدھے آگے ہے؛ موٹر اور بورڈ کو جگہ پر محفوظ رکھنے کے لئے 3 ملی میٹر گری دار میوے اور بولٹ استعمال کریں۔ جمع کرنے کے بعد اسے نیچے کی تصویر میں دکھایا گیا کچھ اس طرح نظر آنا چاہئے۔
جیسا کہ اوپر دکھایا گیا ہے اس کے اوپر نیچے آرڈوینو اور بیٹری میں ریک میں ایل 298 این ڈرائیو ماڈیول کے ساتھ اصل ڈیزائن کی منصوبہ بندی کی گئی تھی۔ اگر آپ اسی ترتیب کی پیروی کر رہے ہیں تو آپ بورڈ کے گرت کو فراہم کردہ سوراخوں کو براہ راست سکرو سکتے ہیں اور لی پو پو بیٹری کے ل wire وائر ٹیگ استعمال کرسکتے ہیں۔ یہ انتظام بھی کام کرنا چاہئے ، سوائے سویلین پہیے کے جو مجھے بعد میں تبدیل کرنا پڑا۔
میں نے اپنی بیوٹی میں پروگرامنگ میں آسانی کے ل battery بیٹری اور ارڈینو یو این او بورڈ کی پوزیشن تبدیل کردی ہے اور کنکشن مکمل کرنے کے لئے ایک پرف بورڈ بھی متعارف کرانا تھا۔ تو میرا بوٹ ایسا نہیں لگتا تھا جیسے میں نے ابتدائی مرحلے میں منصوبہ بنایا تھا۔ وائرنگ پروگرامنگ ٹیسٹنگ اور ہر چیز کو مکمل کرنے کے بعد ، میرے دو پہیے کا روبوٹ آخر کار ایسا لگتا ہے
سرکٹ ڈایاگرام
اس آرڈوینو پر مبنی سیلف بیلنسنگ روبوٹ کے لئے رابطے کرنا آسان ہے۔ یہ ارڈینو اور MPU6050 کا استعمال کرتے ہوئے ایک خود توازن رکھنے والا روبوٹ ہے لہذا ہم MPU6050 کو آرڈینو کے ساتھ انٹرفیس کرنے اور موٹرسائک کو اگرچہ موٹر ڈرائیور ماڈیول سے مربوط کرنے کا عزم رکھتے ہیں۔ پورا سیٹ اپ 7.4V لی آئن بیٹری سے چلتا ہے۔ اس کے لئے سرکٹ ڈایاگرام نیچے دکھایا گیا ہے۔
اردوینو اور L298N موٹر ڈرائیور ماڈیول بالترتیب ون پن اور 12 وی ٹرمینل کے ذریعہ براہ راست طاقت کرتا ہے۔ ارڈینو بورڈ پر آن بورڈ ریگولیٹر ان پٹ 7.4V کو 5V میں تبدیل کرے گا اور اے ٹی میگا آئی سی اور ایم پی یو 6050 اس کے ذریعے طاقت حاصل کرے گا۔ DC موٹریں وولٹیج 5V سے 12V تک چل سکتی ہیں۔ لیکن ہم موٹر ڈرائیور ماڈیول کے 7.4V مثبت تار کو بیٹری سے 12V ان پٹ ٹرمینل سے جوڑ رہے ہیں۔ اس سے موٹرز 7.4V کے ساتھ چل پائے گی۔ مندرجہ ذیل جدول میں درج کیا گیا ہے کہ MPU6050 اور L298N موٹر ڈرائیور ماڈیول کس طرح Ardino کے ساتھ جڑا ہوا ہے۔
اجزاء کی پن |
ارڈینو پن |
MPU6050 |
|
وی سی سی |
+ 5 وی |
زمین |
Gnd |
ایس سی ایل |
A5 |
ایس ڈی اے |
A4 |
INT |
ڈی 2 |
L298N |
|
IN1 |
ڈی 6 |
IN2 |
ڈی 9 |
IN3 |
ڈی 10 |
IN4 |
ڈی 11 |
MPU6050 I2C انٹرفیس کے ذریعے Ardino کے ساتھ بات چیت کرتا ہے ، لہذا ہم Ardino کے SPI پنوں A4 اور A5 کا استعمال کرتے ہیں۔ ڈی سی موٹرز بالترتیب PWM پنوں D6 ، D9 D10 اور D11 سے منسلک ہیں۔ ہمیں انہیں پی ڈبلیو ایم پنوں سے مربوط کرنے کی ضرورت ہے کیونکہ ہم پی ڈبلیو ایم سگنل کے ڈیوٹی سائیکل کو مختلف کرکے ڈی سی موٹر کی رفتار کو کنٹرول کریں گے۔ اگر آپ ان دونوں اجزاء سے واقف نہیں ہیں تو پھر سفارش کی جاتی ہے کہ آپ MPU6050 انٹرفیسنگ اور L298N موٹر ڈرائیور سبق کے ذریعہ پڑھیں۔
سیلف بیلینسنگ روبوٹ کوڈ
اب ہمیں روبوٹ کو متوازن کرنے کے لئے اپنے ارڈینو یو این او بورڈ کو پروگرام کرنا ہے۔ یہیں سے سارا جادو ہوتا ہے۔ اس کے پیچھے تصور آسان ہے۔ ہمیں جانچنا ہے کہ اگر بوٹ MPU6050 کا استعمال کرتے ہوئے سامنے کی طرف یا پیٹھ کی طرف جھکاؤ رکھتا ہے اور پھر اگر یہ سامنے کی طرف جھکا ہوا ہے تو ہمیں پہیے کو آگے کی سمت میں گھماانا ہے اور اگر یہ پیچھے کی طرف جھکا ہوا ہے تو ہمیں پہیے کو گھومانا ہے۔ الٹا سمت میں.
اسی کے ساتھ ساتھ ہمیں اس رفتار پر بھی قابو رکھنا ہے کہ پہیے کون سے گھوم رہے ہیں ، اگر بوٹ سنٹر پوزیشن سے تھوڑا سا دور ہوجاتا ہے تو پہیے آہستہ آہستہ گھومتے ہیں اور اس کی رفتار میں اضافہ ہوتا ہے کیونکہ یہ مرکز کی پوزیشن سے زیادہ دور ہوجاتا ہے۔ اس منطق کو حاصل کرنے کے لئے ہم پی آئی ڈی الگورتھم کا استعمال کرتے ہیں ، جس میں مرکز کی حیثیت سیٹ پوائنٹ کے طور پر ہوتی ہے اور آؤٹ پٹ کی طرح بگاڑ کی سطح ہوتی ہے۔
بوٹ کی موجودہ پوزیشن کو جاننے کے لئے ہم MPU6050 استعمال کرتے ہیں ، جو 6 محور ایکسلرومیٹر اور گائروسکوپ سینسر مشترکہ ہے۔ سینسر سے پوزیشن کی قابل اعتماد قیمت حاصل کرنے کے ل we ہمیں ایکسلریومیٹر اور گائروسکوپ دونوں کی قدر کو استعمال کرنے کی ضرورت ہے ، کیونکہ ایکسلریومیٹر سے ملنے والی قدروں میں شور کا مسئلہ ہوتا ہے اور جائروسکوپ سے ملنے والی قدریں وقت کے ساتھ بہہ جاتی ہیں۔ لہذا ہمیں دونوں کو اکٹھا کرنا پڑے گا اور اپنے روبوٹ کی یاوا کی پچ اور رول کی قیمت حاصل کرنی ہوگی ، جس میں سے ہم صرف یاو کی قدر ہی استعمال کریں گے۔
ٹھیک ہے سر کا تھوڑا سا آواز؟ لیکن آپ پریشان نہ ہوں ، اردوینو کمیونٹی کا شکریہ کہ ہمارے پاس آسانی سے دستیاب لائبریریاں دستیاب ہیں جو PID حساب کتاب انجام دے سکتی ہیں اور MPU6050 سے یاو کی قدر بھی حاصل کرسکتی ہیں۔ یہ لائبریری بالترتیب بر 3 ٹی بی اور جروبرگ نے تیار کی ہے۔ آگے بڑھنے سے پہلے ان کی لائبریریوں کو ڈاؤن لوڈ کرنے کے لئے درج ذیل لنک بنائیں اور انہیں اپنے اردوینو لب ڈائریکٹری میں شامل کریں۔
github.com/br3ttb/Ardino-PID-Library/blob/master/PID_v1.h
github.com/jrowberg/i2cdevlib/tree/master/Ardino/MPU6050
اب ، جب ہمارے پاس لائبریریاں ہمارے آرڈینو آئ ڈی ای میں شامل ہوگئیں۔ آئیے اپنے توازن روبوٹ کے لئے پروگرامنگ شروع کرتے ہیں۔ ہمیشہ کی طرح ایم پی یو 6050 بیلنسنگ روبوٹ کے لئے مکمل کوڈ اس صفحے کے آخر میں دیا گیا ہے ، یہاں میں صرف اس کوڈ میں انتہائی اہم ٹکڑوں کی وضاحت کر رہا ہوں۔ ایک نے پہلے بتایا کہ کوڈ MPU6050 مثال کے کوڈ کے اوپر بنتا ہے ہم صرف اپنے مقصد کے لئے کوڈ کو بہتر بنانے اور اپنے توازن روبوٹ کے لئے پی آئی ڈی اور کنٹرول تکنیک شامل کرنے جارہے ہیں۔
پہلے ہم ان لائبریریوں کو شامل کرتے ہیں جو اس پروگرام کے کام کرنے کے ل. ضروری ہیں۔ ان میں ان بلٹ I2C لائبریری ، PID لائبریری اور MPU6050 لائبریری شامل ہے جو ہم نے ابھی ڈاؤن لوڈ کی ہے۔
# شامل کریں "I2Cdev.h" # شامل کریں
پھر ہم ان متغیرات کا اعلان کرتے ہیں جن کو MPU6050 سینسر سے ڈیٹا حاصل کرنے کے لئے ضروری ہوتا ہے ۔ ہم کشش ثقل ویکٹر اور کوآٹرنین دونوں اقدار کو پڑھتے ہیں اور پھر بوٹ کی یاو پِچ اور رول ویلیو کا حساب لگاتے ہیں فلوٹ صف ypr حتمی نتیجہ روک دے گا.
// MPU کنٹرول / حیثیت vars bool dmpReady = غلط؛ // اگر DMP init کامیاب تھا uint8_t mpuIntStatus؛ // MPU uint8_t devStatus کی طرف سے اصل مداخلت کی حیثیت کا بائٹ رکھتا ہے ؛ ہر آلے کے آپریشن کے بعد // واپسی کی حیثیت (0 = کامیابی ، 0 = غلطی) uint16_t ਪੈਕੇٹ سائز؛ // متوقع DMP پیکٹ کا سائز (پہلے سے طے شدہ 42 بائٹ ہے) uint16_t ফি فاؤنٹ؛ فی الحال فیفا uint8_t فیمو بفر میں موجود تمام بائٹس کی گنتی ؛ // FIFO اسٹوریج بفر // واقفیت / تحریک vars Quaternion q؛ // کوارٹرین کنٹینر ویکٹرفلوٹ کشش ثقل؛ // کشش ثقل ویکٹر فلوٹ ypr؛ // یاو / پچ / رول کنٹینر اور کشش ثقل ویکٹر
اگلا کوڈ کا ایک بہت اہم طبقہ آتا ہے ، اور یہی وہ جگہ ہے جہاں آپ قدروں کے صحیح سیٹ کے لing ایک طویل وقت گزاریں گے۔ اگر آپ کا روبوٹ کشش ثقل کے ایک بہت اچھے مرکز کے ساتھ بنایا گیا ہے اور اجزاء متوازن طور پر ترتیب دیئے گئے ہیں (جو زیادہ تر معاملات میں نہیں ہیں) تو آپ کے سیٹ پوائنٹ کی قیمت 180 ہوگی۔ ورنہ اپنے بوٹ کو اردوینو سیریل مانیٹر سے مربوط کریں اور اسے جھکاؤ تک آپ کو متوازن حیثیت بہتر مل جاتی ہے ، سیریل مانیٹر پر دکھائی جانے والی قدر پڑھیں اور یہ آپ کی سیٹ پوائنٹ ویلیو ہے۔ کے پی ، کے ڈی اور کی کی قدر کو آپ کے بوٹ کے مطابق بنانا ہوگا۔ کوئی دو یکساں بوٹس کے پی ، کے ڈی اور کی کی قدر نہیں رکھتے ہیں لہذا اس سے کوئی بچنے والا نہیں ہے۔ ان اقدار کو ایڈجسٹ کرنے کا اندازہ حاصل کرنے کے لئے اس صفحے کے آخر میں ویڈیو دیکھیں ۔
/ ********* ان 4 قدروں کو اپنے BOT ********* / ڈبل سیٹ پوائنٹ = 176 کے مطابق بنائیں؛ // جب بیوٹ سیریل مانیٹر کا استعمال کرتے ہوئے زمین پر کھڑا ہو تو قدر کا تعین کریں ۔ // ان اقدار کو ڈبل ترتیب دینے کا طریقہ سیکھنے کے لئے سرکٹ ڈائیجسٹ ڈاٹ کام پر پروجیکٹ دستاویزات پڑھیں Kp = 21؛ // یہ پہلا ڈبل کے ڈی = 0.8 مرتب کریں ؛ // یہ سیکنڈ ڈبل کی سیٹ کریں = 140؛ // آخر میں اس کو مقرر کریں / ****** اقدار کی ترتیب کا اختتام ********* /
اگلی لائن میں ہم ان پٹ متغیر ان پٹ ، آؤٹ پٹ ، سیٹ پوائنٹ ، کے پی ، کی اور کے ڈی پاس کرکے پی آئی ڈی الگورتھم کی ابتدا کرتے ہیں ۔ ان میں سے ہم نے پہلے ہی کوڈ کے اوپر کے ٹکڑوں میں سیٹ پوائنٹ کے پی ، کی اور کے ڈی کی قدریں ترتیب دی ہیں۔ ان پٹ کی قیمت یاو کی موجودہ قیمت ہوگی جو MPU6050 سینسر سے پڑھی جاتی ہے اور آؤٹ پٹ کی قدر وہ قیمت ہوگی جو PID الگورتھم کے ذریعہ حساب کی جاتی ہے۔ لہذا بنیادی طور پر پی آئی ڈی الگورتھم ہمیں ایک آؤٹ پٹ ویلیو دے گا جو ان پٹ ویلیو کو سیٹ پوائنٹ کے قریب ہونے کی وجہ سے اسے درست کرنے کے لئے استعمال کیا جانا چاہئے۔
پی آئی ڈی پیڈ (& ان پٹ ، اور آؤٹ پٹ ، & سیٹ پوائنٹ، کے پی، کی، کے ڈی، ڈائریکٹ)؛
باطل سیٹ اپ فنکشن کے اندر ہم MPU6050 کو DMP (ڈیجیٹل موشن پروسیسر) تشکیل دے کر شروع کرتے ہیں ۔ اس سے ہمیں ایلیسیروومیٹر ڈیٹا کو جیروسکوپ کے اعداد و شمار کے ساتھ جوڑنے میں مدد ملے گی اور یاو ، پچ اور رول کی قابل اعتماد قیمت مہیا ہوگی۔ ہم اس میں زیادہ گہرائی میں نہیں جاسکیں گے کیوں کہ یہ اس موضوع سے بہت دور ہوگا۔ کسی بھی طرح کے کوڈ کا ایک طبقہ جو آپ کو سیٹ اپ فنکشن میں ڈھونڈنا ہے وہ ہے جیرو آفسیٹ ویلیوز۔ ہر MPU6050 سینسر کی اپنی آفسیٹس کی اپنی اقدار ہوتی ہیں آپ اپنے سینسر کی آفسیٹ قیمت کا حساب لگانے اور اپنے پروگرام میں درج ذیل لائنوں کو اپ ڈیٹ کرنے کے لئے اس اردوینو خاکہ کا استعمال کرسکتے ہیں۔
// یہاں اپنی جیرو آفسیٹ فراہم کریں ، جو کم سے کم حساسیت کے لئے چھوٹی گئی ہیں mpu.setXGyroOffset (220)؛ mpu.setYGyroOffset (76)؛ mpu.setZGyroOffset (-85)؛ mpu.setZAccelOffset (1688)؛
ہمیں ڈیجیٹل پی ڈبلیو ایم پنوں کی ابتدا بھی کرنی ہے جس کا استعمال ہم اپنی موٹرز سے منسلک کرنے کے لئے کر رہے ہیں۔ ہمارے معاملے میں یہ D6 ، D9 ، D10 اور D11 ہے۔ لہذا ہم ان پنوں کو ابتدا کرتے ہیں کیونکہ آؤٹ پٹ پنوں کو بطور ڈیفالٹ ان کم بناتا ہے۔
// موٹر آؤٹ پیو پن پن کو شروع کریں (6 ، آؤٹپٹ)؛ پن موڈ (9 ، آؤٹپٹ)؛ پن موڈ (10 ، آؤٹپٹ)؛ پن موڈ (11 ، آؤٹپٹ)؛ // پہلے سے طے شدہ طور پر دونوں موٹرز اینالاگ رائٹ کو بند کردیں (6، LOW)؛ اینالاگ رائٹ (9 ، LOW)؛ ینالاگ رائٹ (10 ، LOW)؛ اینالاگ رائٹ (11 ، LOW)؛
مین لوپ فنکشن کے اندر ہم جانچ کرتے ہیں کہ آیا MPU6050 کا ڈیٹا پڑھنے کے لئے تیار ہے یا نہیں ۔ اگر ہاں تو ہم اسے PID ویلیو کی گنتی کے لئے استعمال کرتے ہیں اور پھر PID کی ان پٹ اور آؤٹ پٹ ویلیو کو سیریل مانیٹر پر ڈسپلے کرتے ہیں تاکہ چیک کریں کہ PID کس طرح سے جواب دے رہا ہے۔ پھر آؤٹ پٹ کی قدر کی بنیاد پر ہم فیصلہ کرتے ہیں کہ بوٹ کو آگے بڑھنا ہے یا پسماندہ یا پھر کھڑا ہے۔
چونکہ ہم فرض کرتے ہیں کہ جب بوٹ سیدھے ہو تو MPU6050 180 واپس آجائے گا۔ جب اصلاحی اقدار سامنے کی طرف جارہے ہیں تو ہمیں اصلاحی اقدار مثبت ملیں گی اور اگر بوٹ پیچھے کی طرف گر رہا ہے تو ہمیں منفی میں قدر مل جائے گی ۔ لہذا ہم اس حالت کی جانچ پڑتال کرتے ہیں اور بوٹ کو آگے یا پیچھے والے وارڈ میں منتقل کرنے کیلئے مناسب افعال کو کال کرتے ہیں۔
جبکہ (! mpuInterrupt &&ifoCount <packetSize) { // کوئی mpu ڈیٹا نہیں - PID کے حساب کتاب کو انجام دے رہا ہے اور موٹروں کو pid پر آؤٹ پٹ دے گا۔ // سیریل مانیٹر پر ان پٹ اور آؤٹ پٹ کی قدر کو پرنٹ کریں تاکہ معلوم ہو کہ یہ کیسے کام کر رہا ہے۔ سیریل.پرنٹ (ان پٹ)؛ سیریل.پرنٹ ("=>")؛ سیریل.پرنٹلن (آؤٹ پٹ)؛ if (ان پٹ> 150 && ان پٹ <200) {// اگر بوٹ گر رہا ہے اگر (آؤٹ پٹ> 0) // سامنے کی طرف گرنا ()؛ // پہیوں کو پھر گھمائیں اگر اور (آؤٹ پٹ <0) // پیچھے پیچھے کی طرف گرنا ()؛ // گھمائیں پہیوں پسماندہ } ورنہ // بوٹ گرنے نہیں تو بند کرو ()؛ // پہیے اب بھی تھام لو}
پی آئی ڈی کی پیداوار متغیر بھی کتنی تیزی سے موٹر گھمایا جائے ہے فیصلہ کرتا ہے. اگر بوٹ گرنے ہی والا ہے تو ہم پہیے کو آہستہ سے گھوماتے ہوئے معمولی اصلاح کرتے ہیں۔ اگر یہ معمولی اصلاحی کام نہیں اور پھر بھی اگر بوٹ نیچے پڑ رہا ہے تو ہم موٹر کی رفتار میں اضافہ کرتے ہیں۔ پہیوں کی کتنی تیزی سے گردش ہوتی ہے اس کی قیمت کا فیصلہ PI الگورتھم کرے گا۔ نوٹ کریں کہ ریورس فنکشن کے ل we ہم نے آؤٹ پٹ کی ویلیو کو -1 سے ضرب کیا ہے تاکہ ہم منفی قدر کو مثبت میں تبدیل کرسکیں۔
باطل آگے () // پہیے کو آگے بڑھانے کے لئے کوڈ { اینالاگ رائٹ (6 ، آؤٹ پٹ)؛ ینالاگ رائٹ (9،0)؛ ینالاگ رائٹ (10 ، آؤٹ پٹ)؛ ینالاگ رائٹ (11،0)؛ سیریل.پرنٹ ("F")؛ // ڈیبگنگ کی معلومات } باطل ریورس () // پہیے کو پیچھے کی طرف گھومنے کے لئے کوڈ { اینالاگ رائٹ (6،0)؛ ینالاگ رائٹ (9 ، آؤٹ پٹ * -1)؛ ینالاگ رائٹ (10،0)؛ ینالاگ رائٹ (11 ، آؤٹ پٹ * -1)؛ سیریل.پرنٹ ("R")؛ } باطل سٹاپ () // کوڈ پہیوں دونوں کو روکنے کے لئے { analogWrite (6،0)؛ ینالاگ رائٹ (9،0)؛ ینالاگ رائٹ (10،0)؛ ینالاگ رائٹ (11،0)؛ سیریل.پرنٹ ("ایس")؛ }
ارڈینو سیلف بیلینسنگ روبوٹ کا کام کرنا
ایک بار جب آپ ہارڈ ویئر کے ساتھ تیار ہوجائیں تو ، آپ کوڈ کو اپنے ارڈینو بورڈ میں اپ لوڈ کرسکتے ہیں۔ اس بات کو یقینی بنائیں کہ رابطے مناسب ہیں کیوں کہ ہم لی آئن بیٹری استعمال کررہے ہیں تو انتہائی احتیاط کی ضرورت ہے۔ لہذا شارٹ سرکٹس کے ل double ڈبل چیک کریں اور اس بات کو یقینی بنائیں کہ ٹرمینلز رابطے میں نہیں ہوں گے یہاں تک کہ اگر آپ کے بوٹ کو کچھ چھوٹے اثرات پڑیں۔ اپنے ماڈیول کو طاقتور بنائیں اور اپنے سیریل مانیٹر کو کھولیں ، اگر آپ کا اردوینو MPU6050 کے ساتھ کامیابی کے ساتھ بات چیت کرسکتا ہے اور اگر سب کچھ توقع کے مطابق کام کر رہا ہے تو آپ کو مندرجہ ذیل اسکرین کو دیکھنا چاہئے۔
یہاں ہم PID الگورتھم کی ان پٹ اور آؤٹ پٹ اقدار کو شکل ان پٹ => آؤٹ پٹ میں دیکھتے ہیں ۔ اگر بوٹ بالکل متوازن ہے تو آؤٹ پٹ کی قدر 0 ہوگی۔ ان پٹ ویلیو MPU6050 سینسر کی موجودہ قیمت ہے۔ حرف تہجی "F" نمائندگی کرتا ہے کہ بوٹ آگے بڑھ رہا ہے اور "R" اس کی نمائندگی کرتا ہے جو اس کے معکوس میں ہوتا ہے۔
پی آئی ڈی کے ابتدائی مراحل کے دوران میں آپ کی آردوینو کیبل کو بوٹ سے منسلک رکھنے کی تجویز کرتا ہوں تاکہ آپ آسانی سے ان پٹ اور آؤٹ پٹ کی قدروں کی نگرانی کرسکیں اور کے پی ، کی اور کے ڈی کی اقدار کے ل your آپ کے پروگرام کو درست اور اپلوڈ کرنا بھی آسان ہوجائے گا۔ شو بیوٹی کے مکمل کام کر ذیل میں ویڈیو اور بھی شو آپ کی پی آئی ڈی اقدار کو درست کرنے کے لئے کس طرح.
امید ہے کہ یہ آپ کے خود توازن رکھنے والا روبوٹ بنانے میں مدد کرتا ہے اگر آپ کو کام کرنے میں کوئی پریشانی ہو تو ، پھر اپنے سوالات کو ذیل میں تبصرہ سیکشن میں چھوڑ دیں یا مزید تکنیکی سوالات کے لئے فورمز کا استعمال کریں۔ اگر آپ مزید تفریح چاہتے ہیں تو آپ بال بیلنسنگ روبوٹ بنانے کیلئے بھی اسی منطق کا استعمال کرسکتے ہیں ۔