آموزش MSP430تکنولوژی

آموزش کنترل سروو موتور با لانچ پد MSP430

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

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

کنترل سروو موتور با موج 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

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

مدار راه اندازی سروو موتور با لانچ پد MSP430

اتصال سروو موتور به لانچ پد MSP430 بسیار ساده است. همانطور که گفته شد برای کنترل سروو موتور به سیگنال PWM نیاز داریم.

قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار راه اندازی سروو موتور با لانچ پد MSP430

بنابراین پین کنترل سروو موتور را به یک پین از لانچ پد متصل کنیم که توانایی ایجاد سیگنال PWM را داشته باشد. در اینجا ما از پین 6 یا همان P1.4 استفاده میکنیم. شما میتوانید از هر پین دیگر که توانایی ایجاد موج PWM را داشته باشد استفاده کنید. تصویر زیر به شما در انتخاب پین مناسب کمک میکند.

توضیحات پین های MSP430G2

برنامه نویسی سروو موترو در Energia IDE

برای MSP430 در Energia کتابخانه هایی داریم که از پیش تعریف شده اند و توابع PWM در این کتابخانه ها نوشته شده اند. بنابراین با کد پیچیده ای روبرو نیستیم زیرا فقط کافیست درجه مورد نظر خود را وارد کنید تا سروو موتور به همان سمت برود.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

برای کنترل سروو موتور ما کتابخانه Servo.H را فراخوانی میکنیم. این کتابخانه به صورت پیشفرض در Energia IDE نصب است و نیازی به دانلود آن نیست.

#include <Servo.h>

سپس با کد زیر یک Object برای سروو موتور تعریف میکنیم و سپس با خط بعدی یک متغیر برای زاویه سروو موتور تعریف میکنیم و مقدار اولیه آن را روی 0 تنظیم میکنیم.

Servo sg90servo; 
int angle = 0;

سپس در void setup() پین مورد نظر برای ایجاد سیگنال PWM برای سروو موتور را تعریف میکنیم. در اینجا ما از پین شماره 4 استفاده میکنیم.

Sg90servo.attach(4);

برای تعیین زاویه سروو موتور ما به سادگی با کد زیر میتوانیم شافت سروو موتور را در زاویه مورد نظر خود تنظیم کنیم. در اینجا به جای angle میتوانید زاویه مورد نظر خود را وارد کنید.

Sg90servo.write(angle);

اما در این آموزش ما فقط به همین تنظیم ساده بسنده نمیکنیم. ما میخواهیم سروو موتور را به طور پیوسته از زاویه 0 درجه به 180 و از 180 به 0 درجه بچرخانیم. برای این کار ما دوبار از دستور for استفاده میکنیم.

  for(angle = 0; angle< 180; angle++)  // شافت از 0 درجه به 180 درجه میرود
  {                                      
    Sg90servo.write(angle);              // دستور به چرخش زاویه 
    delay(20);                       //20 میلی ثانیه تاخیر برای رفتن به درجه بعد
  } 
  for(angle = 180;angle>=1; angle--)     // شافت از 180 درجه به 0 درجه میرود
  {                                
    Sg90servo.write(angle);                  // دستور به چرخش زاویه 
    delay(20);                         //20 میلی ثانیه تاخیر برای رفتن به درجه بعد
  }

کد کامل

کد کامل پروژه راه اندازی سروو موتور با لانچ پد MSP430 در باکس زیر قرار داده شده است.

#include <Servo.h> 

Servo sg90servo; 
int angle = 0;  

void setup() 
{ 
  Sg90servo.attach(4); 
} 

void loop() 
{ 
  for(angle = 0; angle< 180; angle++) 
  {                           
    Sg90servo.write(angle);       
    delay(20);                 
  } 
  for(angle = 180;angle>=1; angle--) 
  {                                
    Sg90servo.write(angle);       
    delay(20);             
  } 
}

اتصالات را انجام دهید و کد را در لانچ پد بارگذاری کنید. به این صورت ما میتوانیم یک سروو موتور را با لانچ پد کنترل کنیم.

4.7 (3 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

1 دیدگاه

  1. سلام من دستور sweep در مثال های ide را برای تست کردن سرو اپلود کردم اما خطای An error occurred while uploading the sketch میده
    ممنون میشم راهنمایی بفرمایید مشکل کجاست ؛ سرو هک اصلا نچرخید

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

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