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

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

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

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

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

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

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

مانند تمام موتورها ، موتورهای استپر نیز دارای استاتور و روتور هستند، اما برخلاف موتور 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
PA0IN1
PA1IN2
PA2IN3
PA3IN4
5VCOM
GNDGND

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 ، مراحل چرخش را بصورت دستی یا در جهت عقربه های ساعت (+مقدار) یا جهت خلاف جهت عقربه های ساعت (-مقدار) وارد کنید.

مقدار ارسالی در سریال مانیتورچرخش
2048360 درجه در جهت عقربه های ساعت
1024180 درجه در جهت عقربه های ساعت
51290 درجه در جهت عقربه های ساعت
-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

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

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

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

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

محمد رحیمی

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

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

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

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