پروژه الکترونیکپروژه های 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
[irp posts=”5156″ name=”آموزش کنترل چند سروو موتور با آردوینو (اتصال Servo Motor به Arduino)”]

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

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

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

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

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

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

اتصال بین STM32 و LCD

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

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
برد STM32 ال سی دی کاراکتری
GND VSS
+5V VDD
پتانسیومتر V0
PB0 RS
GND RW
PB1 E
PB10 D4
PB11 D5
PC13 D6
PC14 D7
+5V A
GND K

اتصالات بین موتور سروو و 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 برای کنترل سروو موتور دقیقا مانند برنامه نویسی آردوینو است. کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

[irp posts=”8549″ name=”آموزش برنامه نویسی 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

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

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

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

محمد رحیمی

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

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

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