راه اندازی سروو موتور با آردوینو + پروژه بازو رباتیک

سلام امروز میخوایم با  شما به راه اندازی سروو موتور با آردوینو بپردازیم که  یک پروژه جذاب میتونیم باهاش راه بندازیم که در صنعت ماشین آلات صنعتی کاربرد زیادی داره  ، که همه ما اونو به اسم بازو رباتیک دو محوره میشناسیم.

توضیح مختصر در مورد راه اندازی سروو موتور با آردوینو:

ما با راه اندازی سروو موتور با آردوینو  قصد داریم تا شما را با سروو موتور آشنا کنیم و همچنین استفاده آن در صنایع همچون بازو های صنعتی ، صنایع پروازی و…

وسایل مورد نیازبرای راه اندازی سروو موتور با آردوینو:

[icon name=”fighter-jet” class=”” unprefixed_class=””]   آردوینو UNO

[icon name=”fighter-jet” class=”” unprefixed_class=””]   برد برد

[icon name=”fighter-jet” class=”” unprefixed_class=””]   پتانسیومتر

[icon name=”fighter-jet” class=”” unprefixed_class=””]  ماژول جو استیک

[icon name=”fighter-jet” class=”” unprefixed_class=””]  سروو موتور

[vc_row][vc_column][vc_message message_box_color=”orange” icon_fontawesome=”fas fa-store-alt”]اگر دنبال خرید قطعات هستی فقط کافیه به  فروشگاه رباتیک ربات افزار سر بزنی [/vc_message][/vc_column][/vc_row][vc_column_text]

 آشنایی با عملکرد قطعات در راه اندازی سروو موتور با آردوینو :

راه اندازی سروو موتور با آردوینو

 سروو موتور:

سروو موتور ها مدل های زیادی دارن ، اما بعنوان نمونه در راه اندازی سروو موتور توسط آردوینو از سروو موتور SG92R استفاده می نماییم. که نسبت به قیمت و حجم مناسبش پرکاربرد می باشد. این موتور 3 سیمه ، که دوسیم آن  مربوط به تغذیه (سیم قرمز و قهوه ای)و سیم دیگر سیم کنترل(سیم زرد)که به میکرو(آردوینو) وصل می شود.

بازه ی حرکت موتور 180 درجه می باشد  که میشه با زاویه ی 90 درجه به طرفین بچرخند. زاویه ی چرخش با عرض پالسی تعیین میشه که به سیم کنترلی اعمال میشه.

 

مورد استفاده این موتورها:

[icon name=”star-half-o” class=”” unprefixed_class=””] صنایعی مثل روباتیک . هواپیما سازی..

قسمت های تشکیل دهتده سروو موتور :

[icon name=”star-half-o” class=”” unprefixed_class=””]موتور DC

[icon name=”star-half-o” class=”” unprefixed_class=””]قسمت مکانیکی برای افزایش گشتاور

[icon name=”star-half-o” class=”” unprefixed_class=””]مدار حسگر موقعیت و کنترل موتور

[icon name=”star-half-o” class=”” unprefixed_class=””] نکته جالبی که در  کتابخونه ی Servo در آردوینو وجود دارد

این است که ، توابع کتابخونه ی Servo.h تا 12 موتور در بردهای معمولی و 48 موتور توی بردهای سری Mega  را می توانند  پشتیبانی کنند.

البته بدی هایی هم دارند ، مثلا توی بردهای غیر Mega ، هنگام استفاده از این توابع ،عملکرد PWM پایه های 9 و 10 غیرفعال میشه و توی بردهای Mega اگر تعداد موتور ها از 12 تا بیشتر بشه پایه های 11 و 12 خروجی PWM نمیدن.

 

 

نمای فنی پتانسیومتر:

 

 

راه اندازی سروو موتور با آردوینو

 

پتاسیومتر چیست؟

مقاومت متغییر یا پتاسیومتر در واقع از 2 مقاومت متغییر تشکیل شده استو دارای 3پایه است، و پایه وسط آن مقاومت را کم و زیاد می کند. این قطعه وظیفه محدود كردن جريان و ايجاد ولتاژ را دارد و واحد سنجش  این قطعه همانند مقاومت اهم و آن را با علامت Ω نمایش می‌دهند. دراثرکم و زیاد کردن مقاومت در پتاسیومتر،سروو ما در جهت عقربه ساعت و بالعکس چرخش و تغییر حالت می دهد.

به دلخواه از سمت چپ یا راست یک کدام را (VCC)و یکی دیگر را (GND ) و پایه وسط پایه متغییر ولتاژ است.

جدول اتصال پایه ها :

[su_table responsive=”yes”]

آردوینو سروو موتور
پین ۹ سیم زرد
5v سیم قرمز
gnd سیم قهوه ای
A0 پایه پتانسیومتر
یکی مثبت و دیگر منفی دو پایه دیگر پتانسیومر

[/su_table]

شمای چگونه اتصال پایه پتانسیومتر به آردوینو:

راه اندازی سروو موتور با آردوینو

دستورات راه اندازی سروو موتور با پتانسیومتر:

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <Servo.h>

دراین دستور ما کتابخانه سروو موتور را فراخوانی کرده ایم

مانند کد زیر:

#include <Servo.h>

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

Servo s1;

در این دستور ما نام سروو مان را s1 نام گذاری کرده ایم

مانند کدزیر:

Servos1;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

int a;

در این دستور ما متغییرa را معرفی کرده ایم تا مقدار آنالوگ پتانسیومتر در آن ریخته شود

مانند کد زیر:

inta;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

s1.attach(9);

در این دستور ما تعریف می کنیم که پایه سروو موترمان به کدام پایه آردوینو متصل است

مانند کد زیر:

  s1.attach(9);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

a = analogRead(A0);

در این دستور آردوینو مقدار پتانسیومتر را که آنالوگ می باشد را می خواند

مانند کد زیر:

  a = analogRead(A0);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

a= map(a, 0, 1023, 0, 180);

در این دستور ما تابع map را تعریف کرده ایم تا مقدار آنالوگ پتانسیومتر از ۰ تا ۱۰۲۳ بین درجه ی سروو(servo) از ۰ تا ۱۸۰ تناسب بندی کند

مانند کد زیر:

  a = map(a, 0, 1023, 0, 180);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

s1.write(a);

در این دستور زمانی که پتانسیومتر در موقعیتی قرار گیرد سروو به همان سمت می رود

مانند کد زیر:

  s1.write(a);

سورس کامل برنامه:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

#include <Servo.h>
Servo s1;
int a;
 
void setup() {
  s1.attach(9);
}
 
void loop() {
  a= analogRead(A0);
  a= map(a, 0, 1023, 0, 180);
  s1.write(a);
}

 

[vc_row][vc_column][vc_message message_box_color=”orange” icon_fontawesome=”fas fa-store-alt”]اگر دنبال خرید قطعات هستی فقط کافیه به  فروشگاه رباتیک ربات افزار سر بزنی [/vc_message][/vc_column][/vc_row][vc_column_text]

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

[su_table responsive=”yes”]

سروو موتور آردوینو
سیم زرد پایه ۹
سیم قرمز 5v
سیم قهوه ای gnd

[/su_table]

شمای اتصال پایه ها:

راه اندازی سروو موتور با آردوینو

دستورات راه اندازی سروو موتور بدون پتانسیومتر:

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <Servo.h>

در این دستور ما کتابخانه سروو را معرفی کرده ایم

مانند کد زیر:

#include <Servo.h>

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

Servo s1;

در این دستور ما نام سروو مان را s1 نام گذاری کرده ایم

مانند کد زیر:

Servo s1;

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

s1.attach(9);

در این دستور ما تعریف می کنیم که پایه سروو موترمان به کدام پایه آردوینو متصل است

مانند کد زیر:

  s1.attach(9);

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

s1.writeنوشتن درجه مورد نظرمان مثالا از ۰تا۹۰درجه);

در این دستور ما اندازه چرخش موتور را به سروو تعریف می کنیم(pwm)

مانند کد زیر:

s1.writeنوشتن درجه مورد نظرمان مثالا از ۰تا۹۰درجه);

سورس کامل برنامه:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

#include <Servo.h>
Servo s1;
 
void setup() {
  s1.attach(9);
}
 
void loop() {
  s1.write(نوشتن درجه چرخش سروو مثالا از ۰تا۹۰درجه)
}

 

پروژه:

راه اندازی  سروو موتور با جواستیک توسط آردوینو:

 

[vc_row][vc_column][vc_message message_box_color=”orange” icon_fontawesome=”fas fa-store-alt”]اگر دنبال خرید قطعات هستی فقط کافیه به  فروشگاه رباتیک ربات افزار سر بزنی [/vc_message][/vc_column][/vc_row][vc_column_text]

جو استیک :

دقت کنید جوی استیک با توجه به ساختار اهرمی مانند آن از دو پتانسیومتر در زوایه ۹۰ درجه بر روی یک پایه تشکیل شده ‌است.  این ماژول در حالتی که اهرم‌ها هیچ حرکتی در راستای محور X و Y ندارند، خروجی ولتاژ ۲٫۵ ولت را تولید می‌کند.

با حرکت محور جوی استیک در راستای محور X و Y ولتاژ خروجی از ۰ تا ۵ ولت DC تغییر خواهد کرد.  جوی استیک دارای ۴ پایه به ترتیب GND , 5v , VRx , VRy , SW می‌باشد. پایه VRx مربوط به تغییرات اهرم  در راستای محور X یا همان محور افقی می‌باشد.

[icon name=”star-half-o” class=”” unprefixed_class=””]  پایه VRy مربوط به تغییرات اهرم جوی استیک در راستای محور Y یا همان محور عمودی می‌باشد. پایه SW مربوط بهکلید فشاری بر روی ماژول می‌باشد.

راه اندازی سروو موتور با آردوینو

جدول اتصال پایه های جو استیک به آردوینو:

[su_table responsive=”yes”]

پایه های جواستیک پایه های آردوینو
Vcc 5v
Gnd Gnd
VRX A0
VRY A1

[/su_table]

جدول اتصال پایه های سروو موتور به آردوینو:

[su_table responsive=”yes”]

پایه سروو موتور پایه آردوینو
سیم قرمز 5V
سیم قهوه ای GND
سیم زرد پایه 3
سیم زرد دومین موتور پایه4

[/su_table]

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

شمای فنی چگونه اتصال پایه های راه اندازی سروو موتور با آردوینو :

راه اندازی سروو موتور با آردوینو

نمای پروتئوسی اتصال ماژول جو استیک و سروو به آردوینو:

راه اندازی سروو موتور با آردوینو

دستورات راه اندازی سروو موتور:

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <Servo.h>

این دستور برای فراخوانی و راه اندازی سروو موتور می باشد

مانند کد زیر:

#include <Servo.h>

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

Servo S1;

این دستور برای معرفی سروو موتور اولمان می باشد برای دستور بعد هم به اینصورت است

مانند کد  زیر:

Servo S1;

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

int x=0;

در این قسمت ما یک متغییر X داریم که مساوی صفر  را قرار داده ایم

مانند کد زیر:

int x=0;

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

S1.attach(3);

در این دستور ما تعریف کرده ایم که سروو موتور یک را به پایه 3 آردوینو متصل کرده ایم

مانند کد زیر:

  S1.attach(3);

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

joy = analogRead(x);

در این دستور ما متغییر جو استیک را مساوی پایه خوانده شده متغییر X قرار داده ایم

مانند کد زیر:

  joy = analogRead(x);

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

joy = map(joy, 0, 1023, 0, 180);

در این دستور ما متغییر جواستیک را مساوی زمانی که جو استیک درهر محوردر موقعیتی قرار می گیرد کرده ایم

مانند کد زیر:

  joy = map(joy, 0, 1023, 0, 180);

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

S1.write(joy);

در این دستور زمانی که جواستیک در هر محوری قرار گیرد موتور به سرعت به همان طرف حرکت می کند

مانند کد زیر:

  S1.write(joy);

 

[icon name=”circle-o” class=”” unprefixed_class=””]دستور:

delay(10);

در این دستور با زمان تاخیر را را تعریف کرده ایم

مانند کد زیر:

  delay(10);

 

کد کامل:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

//تعریف کتابخانه سروو به آردوینو
#include <Servo.h>
//تعریف دو متغییر به نام سروو ۱ و۲ برای دو موتور های استفاده شده در این پروژه
Servo S1;
Servo S2;
 //در این قسمت ما یک متغییر X داریم که مساوی صفر  را قرار داده ایم
int x=0;
int y=1;
int joy;
 
void setup()
{
  //در این دستور ما تعریف کرده ایم که سروو موتور یک را به پایه 3 آردوینو متصل کرده ایم
  S1.attach(3);
  S2.attach(4);
}
 
void loop()
{
  //در این دستور ما متغییر جو استیک را مساوی پایه خوانده شده متغییر X قرار داده ایم
  joy = analogRead(x);
  //در این دستور ما متغییر جواستیک را مساوی زمانی که جو استیک درهر محوردر موقعیتی قرار می گیرد کرده ایم
  joy = map(joy, 0, 1023, 0, 180);
  //در این دستور زمانی که جواستیک در هر محوری قرار گیرد موتور به سرعت به همان طرف حرکت می کند
  S1.write(joy);
 
  joy = analogRead(y);
  joy = map(joy, 0, 1023, 0, 180);
  S2.write(joy);
  //زمان تاخیر
  delay(10);
}
فیلم پروژه :

 

با ساخت پروژه بالا و انتشار فیلم آن در صفحات اینستاگرام خو و تگ کردن پیج Robotafzar کد تخفیف برای خرید از فروشگاه های ربات افزار بگیرید ، منتظر فیلما قشنگ شما هستیم

اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

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

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