تحلیل کتابخانه

تحلیل و بررسی کتابخانه Servo.h

نوشته شده توسط CiferTech

سروو موتور نوعی موتور است که می تواند با دقت زیادی بچرخد. به طور معمول این نوع موتور از یک مدار کنترل تشکیل شده است که بازخوردی را در مورد موقعیت فعلی شافت موتور ارائه می دهد، این بازخورد به موتورهای سروو اجازه می دهد تا با دقت زیادی بچرخند. انواع سرو موتورها بر اساس کاربرد آنها در انواع مختلف طبقه بندی می شوند ، مانند سروو موتور AC و موتور سروو DC. این سروو مونور ها توسط سیگال های PWM تولید شده توسط میکروکنترلر کنترل می‌شوند، موج مربعی یا pwm یا Pulse Width Modulation به معنی مدولاسیون پهنای پالس، روشی برای تنظیم توان الکتریکی، با تغییردادن زمان قطع‌ و‌ وصل شدن منبع در هر سیکل است. در واقع pwm یک سیگنال مربعی می‌باشد که در یک زمان می تواند ۱ یعنی ۵لت و یا ۰ که یعنی ۰ولت باشد که در این بین ما با تغییر Duty Cycle به نتیجه دلخواه که در نور led، حرکت در سروو و موارد دیگر می شویم. برای مثال اگر Duty Cycle یک موج PWM برابر با ۸۰% باشد یعنی در هر سیکل ۸۰% ولتاژ برابر ۵ولت و ۲۰% ولتاژ برابر۰ است. در شکل زیر PWM نشان داده شده است. در ادامه آموزش و تحلیل کتابخانه Servo.h با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نصب کتابخانه Servo.h


ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه Servo.h خواهیم‌کرد. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Servo را جستجو کنید.
  3. کتابخانه را نصب کنید.

 


اتصالات در برد های مختلف


سروو موتورها دارای سه سیم تغذیه، زمین و سیگنال هستند. سیم پاور معمولا قرمز است و باید به پایه ۵ ولت روی برد آردوینو متصل شود. سیم زمین معمولا سیاه یا قهوه ای است و باید به یک پایه زمین روی برد آردوینو متصل شود. پین سیگنال به طور معمول زرد، نارنجی یا سفید است و باید به یک پین دیجیتال در برد آردوینو متصل شود. توجه داشته باشید که سرووها توان قابل توجهی را تامین می کنند، بنابراین اگر شما نیاز به راه‌اندازی بیش از یک یا دو دستگاه دارید، احتمالا باید از طریق منبع جداگانه آنها را تغذیه کنید. البته مطمئن شوید که GND آردوینو و منبع تغذیه خارجی را به یکدیگر متصل کرده باشید.

 


مورد استفاده Servo.h


این کتابخانه به یک برد آردوینو اجازه می دهد تا سرو موتورهای RC را کنترل کند. سروو دارای چرخ دنده های یکپارچه و شافت است که می توان دقیقا آن را کنترل کرد. سرووهای استاندارد امکان قرارگیری شافت را در زوایای مختلف، معمولا بین ۰ تا ۱۸۰ درجه فراهم می کنند. سرووهای چرخشی مداوم امکان تنظیم چرخش شافت را nv سرعت های مختلف فراهم می کنند. کتابخانه Servo از حداکثر ۱۲ موتور در اکثر بردهای Arduino و ۴۸ موتور در Arduino Mega پشتیبانی می کند. در برد های دیگری غیر از Mega، استفاده از کتابخانه قابلیت analogWrite  (PWM) را روی پین های ۹ و ۱۰ غیرفعال می کند، خواه سروو در آن پایه ها وجود داشته باشد یا نه. در Mega، حداکثر ۱۲ سروو می تواند بدون تداخل در پین های PWM استفاده شود. استفاده از ۱۲ تا ۲۳ موتور PWM را روی پایه های ۱۱ و ۱۲ غیرفعال می کند.

 


برد های پشتیبانی شده


کتابخانه Servo.h با معماری avr ،megaavr ،sam ،samd ،nrf52 ،stm32f4 ،mbed سازگار است بنابراین می توانید از آن در برد های Arduino زیر استفاده کنید:

  • Arduino Micro
  • Arduino Leonardo
  • Arduino Mega
  • Arduino Due
  • Arduino MKR FOX 1200
  • Arduino MKR GSM 1400
  • Arduino MKR NB 1500
  • Arduino MKR VIDOR 4000
  • Arduino MKR WAN 1300 (LoRa connectivity)
  • Arduino MKR WAN 1310
  • Arduino MKR WiFi 1010
  • Arduino MKR ZERO (I2S bus & SD for sound, music & digital audio data)
  • Arduino MKR1000 WIFI
  • Arduino Nano
  • Arduino Nano 33 BLE
  • Arduino Nano 33 IoT
  • Arduino Nano Every
  • Arduino Uno
  • Arduino Uno WiFi REV2
  • Arduino Yún
  • Arduino Zero
  • Portenta H7

 


مستندات عملکرد اعضا کتابخانه


برای فراخوانی کتابخانه Servo.h در کد های خود از دستور زیر استفاده خواهیم کرد، تا قابلیت استفاده از توابع مربوط به کتابخانه برای ما فراهم شود. دستور زیر را بدرستی در کد های خود وارد کنید تا از اینحاد ارور و خطاهای احتمالی جلوگیری شود.

#include <Servo.h>

 

  • ;()attach

با استفاده از این تابع به متغیر Servo که از قبل ایجاد کرده‌ایم مقدار دهی برای شماره پین مربوط به سروو خواهیم کرد. توجه داشته باشید که در آردوینو ۰۰۱۶ و بالاتر، کتابخانه Servo از سروو فقط در دو پایه ۹ و ۱۰ پشتیبانی می کند.

servo.attach(pin) 
servo.attach(pin, min, max)

 

  • ;()write

با این تابع برای سروو مقداری می نویسیم تا شافت را بر این اساس کنترل کند. با استفاده از یک سروو استاندارد، زاویه شافت را تنظیم می کند بر اساس درجه. در سروو هایی چرخش مداوم  دارند، این تابع سرعت سروو را تنظیم می کند. مقدار بین ۰ تا ۱۸۰ قابل تنظیم است.

myservo.write(90);

 

  • ;()writeMicroseconds

مقادیر را بر اساس میکروثانیه برای سروو می نویسد و شافت را بر این اساس کنترل می کند. در یک سروو استاندارد، این تابع زاویه شافت را تنظیم می کند. در سرووهای استاندارد مقدار پارامتر ۱۰۰۰ کاملا خلاف جهت عقربه های ساعت، ۲۰۰۰ کاملا در جهت عقربه های ساعت و ۱۵۰۰ در وسط قرار دارد.

myservo.writeMicroseconds(1500);

 

  • ;()read

با استفاده از این تابع قادر خواهیم بود زاویه فعلی سروو را بخوانیم. توجه داشته یاشد زاویه سروو، از ۰ تا ۱۸۰ درجه است.

servo.read()

 

  • ;()attached

این تابع بررسی می‌کند که آیا متغیر Servo به پین متصل است یا خیر. مقدار در خروجی true است اگر سروو به پین متصل باشد. در غیر این صورت false است.

servo.attached()

 

  • ;()detach

این تابع متغیر Servo را از پایه های مربوط جدا خواهد کرد. اگر تمام متغیرهای سروو جدا شده باشند، می توان از پین های ۹ و ۱۰ برای خروجی PWM با analogWrite استفاده کرد.

servo.detach()

 


قطعات سازگار با کتابخانه


سروو موتور SG90

 


جمع بندی


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

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

CiferTech

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

۱ دیدگاه

  • سلام جناب خسته نباشید من سرو موتور mg90s رو سیم زرد در اردینو به پایه ۹ و سیم قرمز به ۵v وسیم قهوه ای رو gnd وصل کردم و سیم رو متصل کردم به کامپیوتر با ویندوز ۱۰ و اینکه بعد از کتابخانه روی servo و بعد sweep اپلود کردم ولی هیچ حرکتی ندیدم تو این باره خیلی مشکل دلرم و اینکه مینی پلاتر و مینی سی ان سی درست کردم روی محور x y حرکت دارم ولی نمیتونم سرو موتور تکون بدم خلاصه تو کد نویسی و پیدا کردن مشکل جدی دارم لطفا کمکم کنید ممنون میشم

    • با سلام
      مهمترین بخش در راه اندازی سرو موتور تامین تغذیه کافی برای سرو است. پیشنهاد می‌شود یک تغذیه جداگانه انتخاب کنید.