برد STM رباتیک

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

نوشته شده توسط علی زاهدی

Servo motor یک قطعه مکانیکی است که قابلیت چرخش در زوایای مختلف بسته به نوع سرو موتور دارد. این زاویه بین ۰ تا ۳۶۰ درجه در مدل های مختلف متفاوت است. البته سرو موتورهای ۲۷۰ درجه، ۱۸۰ درجه و ۹۰ درجه فقط قابلیت کنترل زاویه را دارند. جهت تشخیص زاویه سرو موتور کافیست شافت را تغییر دهید تا زاویه مشخص شود. در این آموزش قصد داریم تا با استفاده از برد BluePill یا همان میکروکنترلر STM32F103C8T6 یک سرو موتور را راه اندازی و زاویه آن را تنظیم کنیم. در ادامه راه اندازی سرو با STM32 با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


سرو موتور Servo motor


توسط شافت سرو موتور میتوانید وسیله های مختلفی را در زاویه مورد نظر قرار دهید. انتخاب نوع سرو موتور بسته به ایده ای که دارید، کاملا متفاوت خواهد بود. سرو موتورها در نوع ظاهر، ابعاد، زاویه چرخش و ولتاژ کاری و جریان مورد نیاز بسیار متفاوت هستند. سرو موتورهای ۱۸۰ درجه زاویه پذیر هستند و امکان تعیین زاویه مشخص بین ۰ تا ۱۸۰ برای سرو موتور فراهم است. سرو موتورها همگی دارای ۳ پایه هستند.

راه اندازی سرو با STM32 - دیجی اسپارک

 


موج مربعی یا PWM


موج مربعی یا pwm یا Pulse Width Modulation به معنی مدولاسیون پهنای پالس، روشی برای تنظیم توان الکتریکی، با تغییردادن زمان قطع‌ و‌ وصل شدن منبع در هر سیکل است. در واقع pwm یک سیگنال مربعی می‌باشد که در یک زمان می تواند ۱ یعنی ۵ ولت (یا ۳٫۳ ولت) و یا ۰ ولت که به زمین متصل باشد که در این بین ما با تغییر Duty Cycle به نتیجه دلخواه که در نور led، حرکت در موتور و موارد دیگر می شویم. برای مثال اگر Duty Cycle یک موج PWM برابر با ۸۰% باشد یعنی در هر سیکل ۸۰% ولتاژ برابر ۵ولت و ۲۰% ولتاژ برابر۰ ولت است. در شکل زیر PWM نشان داده شده است. در این آموزش برای راه اندازی سرو با STM32 به موج مربعی یا همان PWM نیاز داریم.

شناخت موج مربعی Pulse Width Modulation - دیجی اسپارک

 


اتصالات پروژه


با اعمال ولتاژ ۵ ولت و GND به سرو موتور، میتوان سرو موتور را با سیگنال PWM کنترل کرد. زاویه سرو موتور توسط سیگنال PWM مشخص می‌شود. پایه مربوط به PWM در این آموزش پایه A0 موجود بر روی برد BluePill است. ترتیب پایه های سرو موتور برای راه اندازی سرو با STM32 به صورت زیر است.

  • سیم نارنجی: پایه سیگنال PWM است که به پایه های PWM برد های آردوینو و ESP8266 متصل می‌شود.
  • سیم قرمز: پایه VCC پایه تغذیه است و به ۵ ولت متصل می‌شود. بسته به نوع انتخاب سرو موتور ولتاژ کاری متفاوت است.
  • سیم قهوه ای: پایه GND است و به پایه GND برد آردوینو و ESP8266 متصل می‌شود.

شماتیک راه اندازی سرو با STM32 - دیجی اسپارک

 


پیکربندی میکروکنترلر در نرم‌افزار CubeMX


پس از ساخت پروژه جدید در نرم‌افزار STM32CubeMX و انتخاب میکروکنترلر STM32F103C8T6 بایستی بخش SYS و RCC را تنظیم کنید. در صورتی که با تنظیمات مربوط به این بخش ها آشنایی کافی ندارید. ابتدا بخش آول آموزش میکروکنترلر های STM32 را مطالعه کنید. سپس مطالعه این آموزش را ادامه دهید. همانطور که گفته شد برای راه اندازی سرو موتور بایستی از PWM استفاده شود. بنابراین پس از انجام تنظیمات اولیه، از نوار سمت چپ تایمر ۲ را انتخاب کنید. بخش Clock Source را بر روی گزینه Internal Clock تنظیم کنید. سپس بخش Channel1 را بر روی گزینه PWM Generation CH1 تنظیم کنید. برای راه اندازی سرو موتور بایستی فرکانس تایمر را بر روی ۵۰ هرتز تنظیم کنیم. از این رو در بخش Parameter Setting گزینه ی Prescale را بر روی ۸۷۹ و گزینه Counter Period را بر روی ۹۹۹ تنظیم کنید.

آموزش راه اندازی سرو با STM32 در نرم افزار STM32Cube - دیجی اسپارک

 

سپس بایستی وارد بخش Clock Configuration شده و فرکانس بخش های HCLK و APB1 Timer Clocks را بر روی ۴۴ مگاهرتز قرار دهید. با محاسبه عدد های تنظیم شده طبق فرمول مربوط به تایمر به عدد ۵۰ هرتز که بالا تر گفته شد خواهیم رسید.

تنظیمات نرم افزار STM32 برای راه اندازی سرو با STM32 - دیجی اسپارک

 

در آخر در قسمت Project Manager ابتدا نام پروژه و مسیر مورد نظر برای ذخیره پروژه را مشخص کنید. سپس گزینه Toolchain را بروی MDK-ARM و ورژن آن را بر روی ۵ تنظیم کرده و بر روی گزینه GENERATE CODE در قسمت نوار بالایی کلیک کنید تا پروژه ساخته شود.

 


کد نویسی در نرم‌افزار KEIL


پس از ورود به نرم افزار KEIL بایستی وارد فایل main.c شده و برنامه نویسی راه اندازی سرو با STM32 را در این فایل انجام دهید. برای شروع کار تایمر بایستی دستور زیر را در تایع main قبل از حلقه while(1) قرار دهید.

سپس برای اعمال پالس PWM بایستی رجیستر CCR1 را مقدار دهی کنیم. برای مقدار دهی به این رجیستر میتوانید از دستور زیر استفاده کنید. بازه چرخش سرو موتور MG90S بین اعداد ۲۵ تا ۱۲۵ است.

در ادامه داخل حلقه while(1) با نوشتن کد زیر سرو موتور در چند مرحله حرکت کرده و به جای اولیه بازمیگردد.
همچنین با نوشتن کد زیر سرو موتور محدوده قابل چرخش خود را یک بار به آرامی طی کرده و به نقطه شروع باز میگردد و این حلقه دائم تکرار خواهد شد.

در اخر برای پروگرام برنامه بر روی میکروکنترلرهای stm32 از منوی Project گزینه‌ی Build Target را انتخاب کنید پس از اتمام کامپایل، از منوی Flash گزینه ی Download را انتخاب کنید. پس از پروگرام شدن کامل برنامه روی میکروکنترلر، بار دیگر کلید reset را فشار دهید. پس از آن اگر اتصالات را به درستی  انجام داده باشید. سرو موتور بایستی شروع به حرکت کند.

آموزش راه اندازی سرو با STM32 - دیجی اسپارک

 


لوازم مورد نیاز


 


جمع بندی


در آموزش راه اندازی سرو با STM32 ایتدا با سرو موتور و نحوه کار آن آشنا شدیم. سپس مفهوم PWM توضیح داده شد. در ادامه اتصالات مورد نیاز برای راه اندازی سرو موتور MG90S معرفی شد. پس از نحوه پیکربندی و انجام تظیمات مورد نیاز PWM برای میکروکنترلر STM32 در نرم‌افزار STM32CubeMX توضیح داده شد. در اخر ۲ نمونه کد برای کار با سرو موتور قرار داده شده است. به عنوان نکته آخر دقت داشته باشید که در این آموزش صرفا برای تست سرو موتور مستقیما به میکروکنترلر متصل شده است. برای استفاده مداوم از مدار بایستی سرو موتور را با استفاده از درایور مناسب به میکروکنترلر متصل کنید.

 

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

 

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

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

  • سلام مهندس وقت بخیر .
    من برد stm32f103 دارم میخوام با پورت usb پروگرمش کنم . اما هر کاری کردم نرم افزار flash loader نمیشناستش . میشه راهنمایی کنید مشکلم حل بشه .

  • سلام وقت بخیر.
    من طبق آموزش بردstm32f1 تونستم راه اندازی کنم . برنامه چشمک زن پایه ۱۳ هم دانلودش کردم . برنامه اوکی شد . فقط یه مشکل دارم میخوام یه برنامه دیگه دانلود در هین بارگزاری از داخل device manager پورت قطع میشه و بارگزاری انجام نمیشه . و برد با همون برنامه قبلی کار میکنه میشه راهنمایی کنید . در قسمت آموزش راه اندازی آردوینو درمورد مشکل راه اندازی پیام گذاشتم خبری نشد . برای همین اینجا پرسیدم.

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