پروژه الکترونیکپروژه های ARMپروژه های STM32

پروژه کنترل سروو موتور با STM32 + آموزش

سلام. پروژه کنترل سروو موتور با STM32 + آموزش را آماده کردیم.

آموزش کامل راه اندازی Servo موتور با برد STM 32

در لوازم الکترونیکی موتورهای سروو بیشتر به دلیل دقت بالا و قابلیت استفاده آسان در پروژه های روباتیک مورد استفاده قرار می گیرند. موتورهای سروو از نظر اندازه کوچک هستند. آنها گشتاور بالایی را ارائه می دهند. در این پروژه STM32 یک سروو موتور را با استفاده از پتانسیومتر کنترل میکنیم و همچنین زاویه فعلی سروو را در یک LCD نمایش میدهیم.

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

برای درک بهتر این پروژه بخوانید : آموزش آنالوگ به دیجیتال در STM32 با کد آردوینو

سروو موتور و PWM

سروو موتور ترکیبی از موتور DCT سیستم کنترل موقعیت و چرخ دنده ها است. سروو ها در دنیای مدرن کاربردهای زیادی دارند و به همین دلیل در شکل ها و اندازه های مختلفی در دسترس هستند. ما در این آموزش از سروو موتور SG90  استفاده خواهیم کرد که یکی از محبوب ترین و ارزان ترین سروو ها است. SG90 یک سروو 180 درجه است. بنابراین با این سروو می توانیم محورها را از 0 تا 180 درجه قرار دهیم.

کنترل سروو موتور با STM32

یک سروو موتور به طور کلی دارای سه سیم است، یکی برای ولتاژ مثبت ، دیگری برای GND و دیگری برای تنظیم موقعیت است. سیم قرمز به برق متصل شده است، سیم قهوه ای به gnd وصل می شود و سیم زرد (یا سفید) به سیگنال ورودی وصل میشود.

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

فرکانس سیگنال PWM براساس نوع سروو موتور متفاوت است. برای SG90 فرکانس سیگنال PWM حدود 50 هرتز است. برای فهمیدن فرکانس عملکرد سروو خود، دیتاشیت مدل مربوطه را بررسی کنید. پس از انتخاب فرکانس ، نکته مهم دیگر در اینجا DUTY RATIO سیگنال PWM است.

جدول زیر موقعیت Servo را برای چرخه وظیفه خاص نشان می دهد. با انتخاب مقدار مناسب، می توانید سروو را در هر زاویه ای قرار دهید. مثلا برای 45º ، نسبت وظیفه باید 5 یا 5٪ باشد.

موقعیتچرخه وظیفه
0 درجه2.5
90 درجه7.5
180 درجه12.5
حتما ببینید :  آموزش کنترل چند سروو موتور با آردوینو (اتصال Servo Motor به Arduino)

توضیحات مدار پروژه

تصویر زیر شماتیک مدار پروژه کنترل سروو موتور با STM32 را نشان میدهد.

آموزش کامل راه اندازی Servo موتور با برد STM 32

جزئیات پین های SMT32

جزئیات پین های STM32

در STM32F103C8 ، ما 10 پین آنالوگ به دیجیتال یعنی از  PA0 تا PB1 داریم، و در اینجا ما فقط از یک پین (PA3) برای analogread() برای تنظیم موقعیت شافت موتورسروو  توسط پتانسیومتر استفاده می کنیم. همچنین در بین 15 پین PWM برد STM32 ما از یک پین برای کنترل سروو استفاده میکنیم. پین PWM موتور (معمولا به رنگ نارنجی است).

اتصال بین STM32 و LCD

اتصالات بین STM32 و LCD کاراکتری در جدول زیر آورده شده است.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
برد STM32ال سی دی کاراکتری
GNDVSS
+5VVDD
پتانسیومترV0
PB0RS
GNDRW
PB1E
PB10D4
PB11D5
PC13D6
PC14D7
+5VA
GNDK

اتصالات بین موتور سروو و STM32F103C8

STM32سروو
+5Vقرمز (+5V)
PA0

نارنجی (PWM )
GNDقهوه ای (GND)

اتصالات پتانسیومتر

ما در اینجا از دو پتانسیلومتر استفاده کرده ایم.

  1. پتانسیومتر در سمت راست برای تغییر کنتراست LCD استفاده می شود. دارای سه پین ​​، پین سمت چپ برای +5 ولت و راست برای GND و پین میانی به V0 ال سی دی وصل شده است.
  2. پتانسیومتر در سمت چپ برای تغییر موقعیت شافت موتور سروو با کنترل ولتاژ ورودی آنالوگ استفاده می شود، پین سمت چپ دارای ورودی 3.3 ولت و سمت راست دارای GND و خروجی به (PA3) برد STM32 وصل می شود.

قطعات مورد نیاز

  1. STM32 – برد توسعه (BluePill) (STM32F103C8T6)
  2. سروو موتور SG90
  3. ال سی دی کاراکتری 16*2
  4. پتانسیومتر

برنامه نویسی STM32 برای سرو موتور

قطعات را مانند شماتیک متصل کنید. و سپس برنامه نویسی را شروع کنید. برنامه نویسی STM32 برای کنترل سروو موتور دقیقا مانند برنامه نویسی آردوینو است. کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

حتما ببینید :  آموزش برنامه نویسی STM32 با پورت USB

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

#include<Servo.h>
#include<LiquidCrystal.h>

سپس پین ها را برای نمایشگر LCD تعریف میکنیم و آن را به صورت اولیه تنظیم میکنیم. همچنین چند متغیر دیگر برای PWM و پتانسیومتر تعریف میکنیم.

const int rs = PB0, en = PB1, d4 = PB10 , d5 = PB11 , d6 = PC13, d7 = PC14;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int servoPin = PA0;
int potPin = PA3;

در اینجا ما متغیر Servo را ایجاد کردیم و آن را به پین PWM که قبلا اعلام شده بود متصل می کنیم.

Servo servo;
servo.attach(servoPin);

سپس مقدار آنالوگ را از پین PA3 میخواین زیرا یک پین ADC است ، ولتاژ آنالوگ (0-3.3) را به فرم دیجیتالی (0-4095) تبدیل می شود.

analogRead(potPin);   

از آنجا که خروجی دیجیتال با وضوح 12 بیتی است ، باید مقادیر را در دامنه 0-170 درجه بدست آوریم، مقدار آنالوگ به دیجیتال 0-4096 را بر اساس زاویه حداکثر 170 درجه تقسیم می کنیم بنابراین ما آن را به 24 تقسیم می کنیم.

angle = (reading/24);

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

servo.write(angle);

فیلم عملکرد پروژه

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم عملکرد کنترل سروو موتور با STM32

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

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

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن