آموزش STM32آموزش های ARMپروژه های ARMپروژه های STM32

پروژه کنترل استپر موتور با STM32 (موتور پله ای)

سلام. پروژه کنترل استپر موتور با STM32 (راه اندازی موتور پله ای با ARM) را آماده کردیم.

آموزش کنترل موتور پله ای با STM32

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

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

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

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

استپر موتور چیست و چگونه کار میکند ؟

مانند تمام موتورها ، موتورهای استپر نیز دارای استاتور و روتور هستند، اما برخلاف موتور DC معمولی ، استاتور از مجموعه های کویل جداگانه ای تشکیل شده است. تعداد سیم پیچ ها بر اساس نوع موتور پله ای متفاوت خواهد بود، اما بدانید که در یک موتور استپ روتور از قطب های فلزی تشکیل شده است و هر قطب توسط مجموعه ای از سیم پیچ در استاتور جذب می شود. نمودار زیر یک موتور استپ با 8 قطب استاتور و 6 قطب روتور را نشان می دهد.

استپر موتور چیست و چگونه کار میکند ؟

اگر به کویل های استاتور نگاهی بیندازید، آنها جفت کویل چیده شده اند، مانند A و A یک جفت را و B و B نیز یک جفت کویل را تشکیل می دهند. بنابراین هر یک از این جفت کوئلها یک الکترومغناطیس تشکیل می دهند و می توانند با استفاده از مدار درایور بصورت جداگانه انرژی بگیرند. هنگامی که یه سیم پیچ انرژی وارد می شود ، به عنوان آهنربا عمل می کند و قطب روتور با آن هم تراز می شود. هر بار که روتور می چرخد ​​تا خودش را تنظیم کند تا با استاتور تراز شود، آن را یک مرحله می نامند. به طور مشابه با انرژی دادن به کویلها در یک دنباله می توانیم موتور را در پله های کوچک بچرخانیم تا یک چرخش کامل انجام شود.

بحث استپر موتور ها بسیار پیچیده است به همین دلیل اگر میخواهید به طور کامل با استپر موتور ها آشنا شوید مطلب زیر را بخوانید :

IC درایور موتور ULN2003

از این IC برای رانندگی موتور مطابق پالس های دریافت شده از میکروکنترلر استفاده می شود. در زیر نمودار تصویر ULN2003 آمده است:

IC درایور موتور ULN2003

پین IN1 تا IN7 پین های ورودی هستند و OUT 1 تا OUT 7 پین های خروجی هستند. COM به ولتاژ مثبت منبع برای دستگاههای خروجی داده می شود.

توضیحات شماتیک پروژه استپر موتور STM32

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

شماتیک پروژه استپر موتور STM32

همانطور که در تصویر زیر می بینیم ، پین های PWM با فرمت موج (~) نشان داده شده اند ، 15 پین وجود دارد که می تواند برای خروجی پالس به موتور پله ای استفاده شود. ما فقط چهار پین احتیاج داریم.

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

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

پین های (PA0 تا PA3) به عنوان پین های خروجی در نظر گرفته می شوند که به پین های ورودی (IN1-IN4) از ULN2003 IC وصل می شوند.

پین های STM32 پین های ULN2003
PA0 IN1
PA1 IN2
PA2 IN3
PA3 IN4
5V COM
GND GND

ULN2003 IC با استپ موتور (28BYJ-48)

پین های خروجی OUT1-OUT4 از ULN2003 IC به پین ​​های موتور پله ای (نارنجی ، زرد ، صورتی و آبی) وصل می شوند.

پین های ULN2003 پین های استپر موتور
OUT1 نارنجی
OUT2 زرد
OUT3 صورتی
OUT4 آبی
COM قرمز

از پتانسیومتر برای تنظیم سرعت موتور استپر استفاده می شود.

پتانسیومتر STM32F103C8
چپ (ورودی) 3.3
وسط (خروجی) PA4
راست GND

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

  1. STM32 – برد توسعه (BluePill) (STM32F103C8T6)
  2. موتور استپر (28BYJ-48)
  3. IC موتور درایور ULN2003
  4. پتانسیومتر 10 کیلو اهم

چرخش استپر موتور با STM32F103C8

در زیر چند مرحله برای استفاده از استپ موتور وجود دارد:

سرعت موتور پله ای را با تغییر پتانسیومتر تنظیم کنید. سپس از طریق سریال مانیتور موجود در نرم افزار آردوینو > Tools > Serial Monitor یا CTRL + SHIFT + M ، مراحل چرخش را بصورت دستی یا در جهت عقربه های ساعت (+مقدار) یا جهت خلاف جهت عقربه های ساعت (-مقدار) وارد کنید.

مقدار ارسالی در سریال مانیتور چرخش
2048 360 درجه در جهت عقربه های ساعت
1024 180 درجه در جهت عقربه های ساعت
512 90 درجه در جهت عقربه های ساعت
-2048 -360 درجه در خلاف جهت عقربه های ساعت
-1024 -180 درجه در خلاف جهت عقربه های ساعت
-512 -90 درجه در خلاف جهت عقربه های ساعت

برنامه نویسی STM32 برای کنترل استپ موتور

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

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

ابتدا باید برای استفاده از توابع استپر موتور، پرونده های کتابخانه ای استپر Stepper.h را فراخوانی می کنیم.

#include <Stepper.h>

برای تعریف مراحل چرخش ، در اینجا از 32 استفاده می کنیم زیرا از حالت فول استپ استفاده می کنیم بنابراین (360/32 = 11.25 درجه). بنابراین برای یک مرحله ، شافت 11.25 درجه حرکت می کند.

#define STEPS 32

همچنین می توانیم از حالت نیمه مرحله استفاده کنیم (360/64 = 5.625).

Steps per revolution = 360 / STEP ANGLE
مراحل برای هر چرخش = 360 / زاویه

از آنجا که سرعت را تنظیم می کنیم ، باید مقدار آنالوگ را از PA4 که به پتانسیومتر متصل است ، بگیریم. بنابراین باید پین را برای آن اعلام کنیم

const int speedm = PA4

سپس با ذخیره کردن آن مقادیر در متغیر از نوع عدد صحیح ، مقدار آنالوگ را به دیجیتال تبدیل کرده ایم ، پس از آن باید از map استفاده کنیم. درباره استفاده از ADC در STM32 بیشتر بیاموزید.

int adc = analogRead(speedm);    
int result = map(adc, 0, 4096, 1, 1023);

برای تنظیم سرعت ، ما از stepper.setSpeed استفاده می کنیم. دامنه سرعت ما (1-1023) است.

ما باید مثالی مانند زیر ایجاد کنیم تا پین هایی که به موتور متصل هستند را تنظیم کنیم.

Stepper stepper(STEPS, PA0, PA2, PA1, PA3);

در زیر عبارت برای دریافت مقدار مراحل از مانیتور سریال استفاده شده است. به عنوان مثال برای یک چرخش کامل به مقادیر 2048 نیاز داریم (32 * 64 = 2048)

rotate = Serial.parseInt();

از کد زیر برای دریافت نمونه و اجرای آن در موتور استفاده می شود.

stepper.step(rotate); 

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

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

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

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

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