فهرست مطالب:

ربات خود متعادل با استفاده از الگوریتم PID (STM MC): 9 مرحله
ربات خود متعادل با استفاده از الگوریتم PID (STM MC): 9 مرحله

تصویری: ربات خود متعادل با استفاده از الگوریتم PID (STM MC): 9 مرحله

تصویری: ربات خود متعادل با استفاده از الگوریتم PID (STM MC): 9 مرحله
تصویری: آموزش آسان ساخت ربات تریدر‌ هوش مصنوعی رایگان 2024, نوامبر
Anonim
ربات خود متعادل با استفاده از الگوریتم PID (STM MC)
ربات خود متعادل با استفاده از الگوریتم PID (STM MC)

اخیراً کارهای زیادی در زمینه خود متعادل سازی اشیا انجام شده است. مفهوم متعادل سازی خود با تعادل پاندول معکوس آغاز شد. این مفهوم در طراحی هواپیماها نیز گسترش یافت. در این پروژه ، ما یک مدل کوچک از روبات خود متعادل با استفاده از الگوریتم PID (متناسب ، انتگرال ، مشتق) طراحی کرده ایم. از آن زمان ، این روش چهره جدید سیستم های کنترل فرآیند صنعتی است. این گزارش روش های مربوط به خود متعادل سازی اشیا را مرور می کند. این پروژه به عنوان یک پروژه نیمساله برای درک همبستگی PID در کارآیی فرآیندهای مختلف صنعتی انجام شد. در اینجا ما فقط بر ارائه یک مرور کوتاه در مورد اثربخشی و کاربرد کنترل PID تمرکز می کنیم. این مقاله با ارائه یک معرفی مختصر در مورد سیستم های کنترل و اصطلاحات مرتبط ، علاوه بر انگیزه های پروژه ، توسعه یافته است. آزمایشات و مشاهدات انجام شده است ، مزایا و معایب با پایان یافتن پیشرفتهای آینده شرح داده شده است. یک مدل ربات متعادل کننده برای درک اثربخشی PID در دنیای سیستم کنترل توسعه داده شد. با گذراندن برخی آزمایش ها و آزمایش های دقیق ، مزایا و معایب سیستم کنترل PID کشف شد. مشخص شد که علیرغم مزایای زیاد کنترل PID نسبت به روش های گذشته ، هنوز این سیستم نیاز به پیشرفت های زیادی دارد. امید است خواننده درک خوبی از اهمیت خود متعادل سازی ، اثربخشی و کمبودهای کنترل PID داشته باشد.

مرحله 1: مقدمه

با ظهور رایانه ها و صنعتی شدن فرایندها ، در طول تاریخ بشر ، همواره تحقیقاتی برای توسعه راه هایی برای بازپرداخت فرآیندها و مهمتر از همه ، کنترل آنها با استفاده از ماشین ها به صورت خودکار انجام شده است. هدف کاهش دخالت انسان در این فرایندها و در نتیجه کاهش خطا در این فرایندها است. از این رو ، زمینه "مهندسی سیستم کنترل" توسعه یافت. مهندسی سیستم کنترل را می توان با استفاده از روش های مختلف برای کنترل عملکرد یک فرآیند یا نگهداری از یک محیط ثابت و مطلوب ، دستی یا خودکار تعریف کرد.

یک مثال ساده می تواند کنترل دمای اتاق باشد. کنترل دستی به معنای حضور شخصی در یک سایت است که شرایط موجود (سنسور) را بررسی می کند ، آن را با مقدار مورد نظر (پردازش) مقایسه می کند و اقدامات مناسب را برای به دست آوردن مقدار مورد نظر (محرک) انجام می دهد. مشکل این روش این است که چندان قابل اعتماد نیست زیرا فردی مستعد خطا یا سهل انگاری در کار خود است. همچنین ، مشکل دیگر این است که سرعت فرآیند شروع شده توسط محرک همیشه یکنواخت نیست ، به این معنی که گاهی اوقات ممکن است سریعتر از مقدار مورد نیاز رخ دهد یا گاهی ممکن است کند باشد. راه حل این مشکل استفاده از میکروکنترلر برای کنترل سیستم بود. میکرو کنترلر است

برنامه ریزی شده برای کنترل فرایند ، با توجه به مشخصات داده شده ، در یک مدار متصل شده (که بعداً مورد بحث قرار می گیرد) ، مقدار یا شرایط مورد نظر را تغذیه می کند و در نتیجه فرآیند را برای حفظ مقدار مورد نظر کنترل می کند. مزیت این فرایند این است که هیچ مداخله انسانی در این فرایند مورد نیاز نیست. همچنین ، سرعت فرآیند یکنواخت است

سیستم کنترل اولیه

نمودار قبلی یک نسخه بسیار ساده از یک سیستم کنترل را نشان می دهد. میکروکنترلر در قلب هر سیستم کنترل قرار دارد. بنابراین یک جزء بسیار مهم است ، بنابراین انتخاب آن باید با توجه به الزامات سیستم به دقت انجام شود. میکروکنترلر ورودی از کاربر دریافت می کند. این ورودی وضعیت مطلوب سیستم را تعیین می کند. میکروکنترلر همچنین یک ورودی بازخورد از سنسور دریافت می کند. این سنسور به خروجی سیستم متصل است که اطلاعات آن به ورودی بازگردانده می شود. ریزپردازنده ، بر اساس برنامه نویسی خود ، محاسبات مختلفی را انجام می دهد و خروجی را به محرک می دهد. محرک ، بر اساس خروجی ، کارخانه را کنترل می کند تا سعی کند آن شرایط را حفظ کند. یک مثال می تواند یک راننده موتور باشد که موتور را رانندگی می کند ، جایی که راننده موتور محرک و موتور کارخانه است. بنابراین ، موتور با سرعت معینی می چرخد. سنسور متصل وضعیت گیاه را در حال حاضر می خواند و آن را به میکروکنترلر باز می گرداند. میکروکنترلر دوباره مقایسه می کند ، محاسبه می کند و بنابراین ، چرخه خود را تکرار می کند. این فرایند تکراری و بی پایان است که به موجب آن میکروکنترلر شرایط مطلوب را حفظ می کند

مرحله 2: سیستم کنترل مبتنی بر PID

سیستم کنترل مبتنی بر PID
سیستم کنترل مبتنی بر PID
سیستم کنترل مبتنی بر PID
سیستم کنترل مبتنی بر PID

الگوریتم PID یک روش کارآمد برای طراحی یک سیستم کنترل است.

تعریف

PID مخفف عبارت Proportional ، Integral و مشتق است. در این الگوریتم ، سیگنال خطای دریافتی ورودی است. و معادله زیر بر روی سیگنال خطا اعمال می شود

U (t) = Kp ∗ e (t) + Kd ∗ d/dt (e (t)) + Ki ∗ انتگرال (e (t)) (1.1)

توضیح مختصر

همانطور که در معادله بالا مشاهده می شود ، انتگرال و مشتق سیگنال های خطا محاسبه می شود ، با ثابت های مربوطه ضرب می شود و همراه با Kp ثابت ضرب در e (t) اضافه می شود. سپس خروجی به محرک تغذیه می شود که باعث می شود سیستم کار کند. اکنون اجازه دهید هر قسمت از تابع را به نوبه خود بررسی کنیم. این عملکرد به طور مستقیم بر زمان افزایش ، زمان سقوط ، اوج روی شلیک ، زمان ته نشینی و خطای حالت پایدار تأثیر می گذارد.

• قسمت متناسب: قسمت متناسب زمان افزایش و خطای حالت پایدار را کاهش می دهد. این بدان معناست که سیستم زمان کمتری برای رسیدن به حداکثر مقدار خود نیاز دارد و هنگامی که به حالت پایدار خود برسد ، خطای حالت پایدار کم خواهد بود. با این حال ، اوج عبور بیش از حد را افزایش می دهد.

• بخش مشتق شده: قسمت مشتق ، فرارفت و زمان نشست را کاهش می دهد. این بدان معناست که حالت گذرا سیستم میرایی بیشتری خواهد داشت. همچنین ، سیستم در زمان کمتری به حالت پایدار خود می رسد. با این حال ، هیچ تاثیری در زمان افزایش یا خطای حالت پایدار ندارد.

• قسمت انتگرال: قسمت جدایی ناپذیر زمان افزایش و خطای حالت پایدار را به طور کامل حذف می کند. با این حال ، افزایش بیشینه اوج و زمان ته نشینی را افزایش می دهد.

• تنظیم: یک سیستم کنترل خوب دارای زمان صعود کم ، زمان ته نشینی ، بیشینه اوج و خطای حالت پایدار خواهد بود. بنابراین ، برای دستیابی به یک سیستم کنترل خوب ، Kp ، Kd ، Ki باید به طور دقیق تنظیم شوند تا سهم عوامل فوق را تنظیم کنند.

شکل پیوست شده است که تأثیر تغییر پارامترهای مختلف در الگوریتم PID را نشان می دهد.

مرحله 3: ربات خود متعادل

ربات خود متعادل
ربات خود متعادل

ربات خود متعادل یک ربات چند لایه و دو چرخ است.

این ربات سعی خواهد کرد تا با اعمال هرگونه نیرو (ها) نابرابر خود را متعادل کند. با اعمال نیرویی که با نیروهایی که بر روبات وارد می شوند مخالفت می کند.

روشهای خود متعادل سازی

چهار روش خود متعادل سازی روبات ها وجود دارد. اینها به شرح زیر است:

خود متعادل با استفاده از سنسور شیب دو IR

این یکی از بدترین روش ها برای ایجاد تعادل در ربات است زیرا به سخت افزار بسیار کمتری نیاز دارد و الگوریتم نسبتاً آسانی نیز دارد. در این رویکرد ، از دو سنسور IR مورب برای اندازه گیری فاصله بین زمین و ربات استفاده می شود. بر اساس فاصله محاسبه شده ، می توان از PID برای حرکت موتورها برای ایجاد تعادل بین ربات استفاده کرد. یکی از معایب این روش این است که سنسور IR می تواند برخی از خواندن ها را از دست بدهد. مشکل دیگر این است که یک وقفه و حلقه برای محاسبه فاصله مورد نیاز است که پیچیدگی زمانی الگوریتم را افزایش می دهد. بنابراین ، این روش تعادل روبات چندان کارآمد نیست.

متعادل سازی خود با استفاده از شتاب سنج

شتاب سنج شتاب بدن را در 3 محور به ما می دهد. شتاب در محور y (به سمت بالا) و محور x (به جلو) به ما این امکان را می دهد که جهت جاذبه را محاسبه کرده و از این رو زاویه شیب را محاسبه کنیم. زاویه به شرح زیر محاسبه می شود:

θ = arctan (Ay/Ax) (1.2)

عیب استفاده از این روش این است که در حین حرکت ربات ، شتاب افقی نیز به خوانش ها اضافه می شود که یک نویز فرکانس بالا است. بنابراین ، زاویه تمایل نادرست خواهد بود.

متعادل سازی خود با استفاده از ژیروسکوپ

ژیروسکوپ برای محاسبه سرعت زاویه دار در طول سه محور استفاده می شود. زاویه شیب با استفاده از رابطه زیر بدست می آید.

θp (i) = θp (i − 1) + 1/6 (vali − 3 + 2vali − 2 + 2vali − 1 + vali) (1.3)

یکی از معایب بزرگ استفاده از ژیروسکوپ این است که دارای یک بایاس DC کوچک است که یک نویز فرکانس پایین است و در چند زمان مقادیر برگشتی کاملاً اشتباه است. این ، پس از ادغام ، باعث دور شدن نقطه صفر می شود. در نتیجه ، روبات برای مدتی در موقعیت عمودی خود باقی می ماند و با رسیدن رانش به پایین سقوط می کند.

متعادل سازی خود با استفاده از شتاب سنج و ژیروسکوپ

همانطور که در بالا مورد بحث قرار گرفت ، استفاده از شتاب سنج یا ژیروسکوپ تنها به ما زاویه تمایل درستی نمی دهد. برای محاسبه آن ، از شتاب سنج و ژیروسکوپ استفاده می شود. این دو در MPU6050 تعبیه شده اند. در این قسمت ما داده ها را از هر دو آنها بدست می آوریم و سپس آنها را با استفاده از فیلتر Kalman یا Filter Complement فیلتر می کنیم.

• فیلتر Kalman: فیلتر Kalman بهترین برآورد از وضعیت یک سیستم پویا را از اندازه گیری های پر سر و صدا محاسبه می کند و خطای میانگین مربع برآورد را به حداقل می رساند. با توجه به معادلات تصادفی مجزا که پویایی سیستم را توصیف می کند ، در دو مرحله پیش بینی و تصحیح عمل می کند. با این حال ، پیاده سازی یک الگوریتم بسیار پیچیده به ویژه در سخت افزار محدود یک میکروکنترلر است.

• فیلتر مکمل: این الگوریتم در درجه اول از داده های بدست آمده از ژیروسکوپ استفاده می کند و به مرور زمان آن را ادغام می کند تا زاویه شیب را بدست آورد. همچنین از نسبت کمی از خواندن شتاب سنج استفاده می کند. در واقع ، فیلتر مکمل ، نویز فرکانس بالای شتاب سنج و نویز فرکانس پایین ژیروسکوپ را به حداقل می رساند و سپس آنها را با هم جوش می دهد تا بهترین زاویه دقیق شیب را ایجاد کند.

مرحله 4: طراحی ربات

طراحی ربات
طراحی ربات

ما یک ربات خود متعادل با استفاده از کنترل کننده مشتق متناسب با فیلتر مکمل برای MPU6050 پیاده سازی کرده ایم. این مدل کوچک از روبات خود متعادل کننده ، کاربرد سیستم های کنترل را در خود متعادل سازی روبات ها نشان می دهد.

پیاده سازی سیستم:

این سیستم یک ربات خود متعادل است. با استفاده از PID Controller که یک کنترل کننده مشتق انتگرالی متناسب است اجرا می شود. ما تعادل روبات را با چرخاندن چرخ های آن در جهت سقوط انجام می دهیم. با انجام این کار ، ما سعی می کنیم مرکز ثقل ربات را بالاتر از نقطه محوری نگه داریم. برای حرکت چرخ ها در جهت سقوط آن ، باید بدانیم که ربات در کجا سقوط می کند و سرعتی که در آن سقوط می کند. این داده ها با استفاده از MPU6050 که دارای شتاب سنج و ژیروسکوپ است به دست می آید. MPU6050 زاویه شیب را اندازه گیری می کند و خروجی آن را به میکروکنترلر می دهد. MPU6050 از طریق I2C با برد STM ارتباط دارد. در I2C ، یک سیم برای ساعت است که SCL نامیده می شود. مورد دیگر برای انتقال داده است که SDA است. در این مورد ، از ارتباط برده اصلی استفاده می شود. آدرس شروع و آدرس پایانی مشخص است که داده ها از کجا شروع می شوند و کجا به پایان می رسند. ما فیلتر مکمل را برای MPU6050 در اینجا پیاده سازی کرده ایم که یک فیلتر ریاضی برای ادغام خروجی های شتاب سنج و ژیروسکوپ است. پس از به دست آوردن داده ها از MPU6050 ، میکروکنترلر محاسباتی را انجام می دهد تا بداند در کجا سقوط می کند. بر اساس محاسبات ، میکروکنترلر STM فرمان هایی را به راننده موتور می دهد تا وسایل نقلیه را در جهت سقوط هدایت کند که باعث تعادل ربات می شود.

مرحله 5: اجزای پروژه

اجزای پروژه
اجزای پروژه
اجزای پروژه
اجزای پروژه
اجزای پروژه
اجزای پروژه

اجزای زیر در پروژه ربات خود متعادل استفاده شد:

STM32F407

میکروکنترلر طراحی شده توسط ST Microelectronics. این بر روی معماری ARM Cortex-M کار می کند.

درایور موتور L298N

این IC برای راه اندازی موتور استفاده می شود. دارای دو ورودی خارجی است. یکی از میکروکنترلرها که به آن سیگنال PWM می دهد. با تنظیم عرض نبض ، می توان سرعت موتور را تنظیم کرد. ورودی دوم آن منبع ولتاژ مورد نیاز برای حرکت موتور است که در مورد ما یک باتری 12 ولت است.

موتور DC

موتور DC با منبع تغذیه DC کار می کند. در این آزمایش ، موتور DC با استفاده از اتصال دهنده های نوری متصل به درایور موتور در حال کار است. برای رانندگی موتور از موتور درایو L298N استفاده کرده ایم.

MPU6050

MPU6050 برای به دست آوردن اطلاعات مربوط به محل سقوط ربات استفاده می شود. این زاویه شیب را با توجه به نقطه شیب صفر که موقعیت MPU6050 هنگام شروع برنامه است ، اندازه گیری می کند.

MPU6050 دارای شتاب سنج 3 محوره و ژیروسکوپ 3 محوری است. شتاب سنج شتاب را در سه محور اندازه گیری می کند و ژیروسکوپ میزان زاویه ای را در مورد سه محور اندازه گیری می کند. برای ترکیب خروجی ، باید صداهای هر دو را فیلتر کنیم. برای فیلتر کردن صداها ، ما کالمن و فیلتر مکمل داریم. ما فیلتر مکمل را در پروژه خود پیاده کرده ایم.

Opto Couple 4N35

اپتوکوپلر دستگاهی است که برای جداسازی قسمت ولتاژ پایین و ولتاژ بالا از مدار استفاده می شود. همانطور که از نامش پیداست ، بر اساس نور کار می کند. هنگامی که قسمت ولتاژ پایین سیگنالی دریافت می کند ، جریان در قسمت ولتاژ بالا جریان می یابد

مرحله 6: ساختار ربات

ساختار ربات به شرح زیر توضیح داده شده است:

ساختار فیزیکی

ربات خود متعادل از دو لایه تشکیل شده از شیشه پلاستیکی شفاف تشکیل شده است. جزئیات دو لایه در زیر آورده شده است:

لایه اول

در قسمت پایین لایه اول ، ما یک سلول برای تغذیه برد STM قرار داده ایم. همچنین دو موتور 4 ولت هر کدام در هر طرف با لاستیک هایی که برای حرکت ربات متصل شده اند ، قرار داده شده است. در قسمت فوقانی لایه اول ، دو باتری هر 4 ولت (در مجموع 8 ولت) و IC موتور راننده (L298N) برای عملکرد موتورها قرار داده شده است.

لایه دوم

در لایه بالایی ربات ، STM Board را روی Perf Board قرار داده ایم. یک تخته پرفیو 4 متصل کننده اپتو در لایه بالایی قرار داده شده است. ژیروسکوپ نیز از طرف پایین روی لایه بالای روبات قرار دارد. هر دو جزء در قسمت میانی قرار گرفته اند تا مرکز ثقل تا حد ممکن پایین نگه داشته شود.

مرکز ثقل ربات

مرکز ثقل تا آنجا که ممکن است پایین نگه داشته می شود. برای این منظور ، باتری های سنگین را روی لایه زیرین و اجزای سبک مانند برد STM و اپتوکوپلرها را در لایه بالایی قرار داده ایم.

مرحله 7: کد

کد در Atollic TrueStudio تدوین شد. استودیو STM برای اهداف اشکال زدایی استفاده شد.

مرحله 8: نتیجه گیری

پس از آزمایش و مشاهده زیاد ، در نهایت به نقطه ای می رسیم که نتایج خود را خلاصه می کنیم و بحث می کنیم که چقدر در پیاده سازی و بررسی اثربخشی سیستم موفق بوده ایم.

بررسی کلی

در طول آزمایش ، سرعت موتور با موفقیت با استفاده از الگوریتم PID کنترل شد. با این حال ، منحنی دقیقاً یک خط مستقیم صاف نیست. دلایل بسیاری برای آن وجود دارد:

• سنسور با وجود اینکه به یک فیلتر کم گذر متصل شده است ، بازخوردهای مشخصی را ارائه می دهد. اینها به دلیل مقاومت غیر خطی و برخی دلایل اجتناب ناپذیر لوازم الکترونیکی آنالوگ است.

• موتور تحت ولتاژ کم یا PWM به آرامی نمی چرخد. تکان هایی را ایجاد می کند که ممکن است باعث ایجاد برخی از مقادیر اشتباه در سیستم شود.

• به دلیل لرزش ، سنسور ممکن است شکاف هایی را که مقادیر بالاتری را ارائه می دهند از دست بدهد. • یکی دیگر از دلایل اصلی خطاها می تواند فرکانس اصلی هسته میکروکنترلر STM باشد. این مدل از میکروکنترلر STM کلاک اصلی 168 مگاهرتز را ارائه می دهد. اگرچه در این پروژه به این مشکل پرداخته شده است ، اما تصور کلی در مورد این مدل وجود دارد که دقیقاً چنین فرکانس بالایی را ارائه نمی دهد.

سرعت حلقه باز یک خط بسیار صاف و تنها با چند مقدار غیر منتظره فراهم می کند. الگوریتم PID در حال کار است و زمان ته نشینی بسیار کم موتور را فراهم می کند. الگوریتم PID موتور تحت ولتاژهای مختلف و ثابت نگه داشتن سرعت مرجع آزمایش شد. تغییر ولتاژ سرعت موتور را تغییر نمی دهد و نشان می دهد که الگوریتم PID در حال کار است

اثر بخشی

در اینجا ما در مورد تأثیر کنترل کننده PID که در طول آزمایش مشاهده کردیم بحث می کنیم.

پیاده سازی ساده

در بخش آزمایش و مشاهدات مشاهده کردیم که پیاده سازی کنترل کننده PID بسیار آسان است. فقط به سه پارامتر یا ثابت نیاز دارد که برای داشتن سیستم کنترل سرعت باید تنظیم شوند

کارآیی بی نظیر برای سیستم های خطی

کنترلر PID خطی در خانواده کنترل کننده ها کارآمدترین است زیرا منطق بسیار ساده است و در صورت کاربردهای خطی یا نسبتاً خطی کاربرد گسترده ای دارد.

محدودیت ها

ما به طور خلاصه در مورد محدودیت های این سیستم توضیح دادیم. در اینجا ما در مورد چند مورد از آنها که مشاهده کردیم بحث می کنیم.

انتخاب ثابت ها

ما مشاهده کرده ایم که اگرچه پیاده سازی یک کنترلر PID آسان است ، اما هنوز هم یک نقطه ضعف عمده سیستم است که مرحله انتخاب مقدار ثابتها یک کار سخت است. چون باید محاسبات سختی انجام داد راه دیگر روش ضربه و آزمایش است اما این نیز کارآمد نیست.

ثابت ها همیشه ثابت نیستند

نتایج تجربی نشان داد که برای مقادیر مختلف سرعت مرجع برای موتور ، کنترل کننده PID برای مقادیر یکسانی از ثابت های PID خراب است. برای سرعتهای مختلف ، ثابتها باید به طور متفاوتی انتخاب شوند و این هزینه محاسباتی را به صورت نمایی افزایش می دهد.

غیر خطی

کنترلر PID مورد استفاده در مورد ما خطی است ، بنابراین می توان آن را فقط در سیستم های خطی اعمال کرد. برای سیستم های غیر خطی ، کنترل کننده باید متفاوت اجرا شود. اگرچه روشهای مختلف غیر خطی PID در دسترس هستند ، اما برای انتخاب آنها به پارامترهای بیشتری نیاز است. این امر سیستم را به دلیل هزینه محاسباتی بالا نامطلوب می کند.

فشار اولیه مورد نیاز است

ما در بخش آزمایش نشان دادیم که برای یک سرعت مرجع نسبتاً کوچک که خطا در ابتدا بسیار کم است ، PWM ارائه شده توسط PID آنقدر کوچک است که گشتاور شروع مورد نیاز موتور را ایجاد نمی کند. بنابراین موتور در برخی آزمایش ها کار نمی کند یا در آزمایش های دیگر یک فرار بزرگ و زمان نشستن طولانی تری را فراهم می کند.

مرحله 9: تشکر ویژه

تشکر ویژه از اعضای گروه من که در این پروژه به من کمک کردند.

بزودی لینک ویدئو را بارگذاری می کنم.

امیدوارم این مطلب آموزنده برای شما جالب باشد.

این طاهر اولحق از امضای UET است. به سلامتی !!!

توصیه شده: