کنترل چند موتور سرو با پتانسیومتر
سرو موتور ( Servo Motor ) متشکل از یک موتور الکتریکی ساده است که در کنار موتور تعدادی المان الکترونیکی به منظور کنترل زاویه ، سرعت و یا شتاب به شفت موتور متصل می شوند و کلیه المان ها به همراه موتور در یک پکیج واحد ارائه می شوند. سرو موتور ها ممکن است دارای گیربکس یا فاقد گیربکس باشد و اندازه های بسیار کوچک برای مصارف ساخت تجهیزات مکاترونیکی مانند ربات ها و هواپیما های مدل تا اندازه های بزرگ برای دستگاه های صنعتی ساخته می شوند. در حوزه میکروکنترلر ، آنچه که از سرو موتور مشاهده می نماییم معمولا یک موتور DC جاروبک دار است که به کمک یک سری چرخدنده ( گیربکس ) به یک پتانسیومتر داخلی وصل شده است و خروجی گیربکس نیز از طرف دیگر خارج شده است. پتانسیومتر فقط وضعیت خروجی را کنترل می کند و کاری به وضعیت موتور ندارد.
در این پست قصد داریم تا در ادامه سری آموزش های کنترل موتورهای مختلف با مدارهای واسط مختلف موتورهای سروو را به وسیله پتانسیومتر یا همان ولوم کنترل کنیم. پتانسیومترها همان مقاومت های متغیر هستند. ابزاری که ساخت جوی استیک ها نیز از آن بهره برده است. ساختار داخلی آن بدین گونه است که روی یک صفحه فلزی با حرکت دادن یک شاخص، تقسیم ولتاژ بین دو نقطه با تغییر مقاومت مقدارهای مختلفی از مقاومت را در بازه مورد نظر به ما می دهد. ساختار کلی آن نیز یک المان سه پایه می باشد که با دو پایه آن به ولتاژ تغذیه مورد نظر وصل می شود و پایه وسط نیز خروجی حاصل از تقسیم ولتاژ بین این دو پایانه را به ما می دهد.
برای انجام این پروژه به چهار ولوم ولوم ترجیحا 10k و یک برد آردوینو و چهار موتور سرو نیازمندیم. تعداد این موتورها به دلخواه بوده و برای بالا بردن سطح پست نسبت به پست قبلی که دارای دو موتور بود از چهار موتور استفاده کرده ایم. برای کنترل این موتورها با استفاده از ولوم باید مقدار آنالوگ ولوم ها را با استفاده از واحد تبدیل آنالوگ-دیجیتال به دیجیتال تبدیل کنیم تا داده های حاصل قابل استفاده برای آردوینو باشد و با آن تغییرات مورد نظر را بر روی موتورها اعمال کنیم.
در موتورهای سروو معمولا سیم نارنجی سیم ورودی پالس های موتور(Data) است و سیم قرمز تغذیه مثبت موتور و سیم قهوه ای GND موتور می باشد. در استانداردهای دیگر این موتور نیز سیم زرد به عنوان سیم دیتا و سیم قرمز تغذیه مثبت و سیم سیاه GND موتور می باشد.
اکنون که با ملزومات و قطعات پروژه به اندازه کافی آشنا شدیم نوبت به ساخت آن می رسد. شماتیکی که در زیر می بینید نمونه یک موتوره کنترل سرو با ولوم است و موتورهای دیگز به همین ترتیب در پایه های 3,4,5 و ولوم های دیگر نیز به ترتیب در پایه های A1,A2,A3 قرار می گیرند.
شماتیک کنترل موتور سرو با پتانسیومتر و آردوینو
همانطور که در شماتیک نیز مشاهده می کنید پایه های تغذیه سرو موتور و دو پایه جانبی ولوم به منبع تغذیه متصل شده اند. و پایه Data موتور به پایه اول PWM (پایه شماره 2) و پایه خروجی ولوم نیز به ورودی های واحد تبدیل آنالوگ به دیجیتال وصل شده است. بعد از اتصال تمام المان ها به پایه های مربوط بر روی برد آردوینو نوبت به کامپایل بر روی برد رسیده است.
سورس کد برنامه کنترل چند موتور سرو با پتانسیومتر و آردوینو
#include <Servo.h> //نام گذاری سرو موتورها Servo S1; Servo S2; Servo S3; Servo S4; // تعیین پایه های مربوط به ولوم int P1 = A0; int P2 = A1; int P3 = A2; int P4 = A3; //مقادیر دیجیتال شده ولوم int Pot1; int Pot2; int Pot3; int Pot4; void setup() { //تعیین پایه های سرو S1.attach(2); S2.attach(3); S3.attach(4); S4.attach(5); } void loop() { Pot1 = analogRead(P1); //خواندن مقدار آنالوگ ولوم Pot1 = map (Pot1, 0, 1023, 0, 180); //مقیاس دهی در بازه های مورد نظر دیجیتال و زاویه S1.write(Pot1); //بارگذاری مقدار دیجیتال روی پایه سرو مورد نظر delay (50); Pot2 = analogRead(P2); Pot2 = map (Pot2, 0, 1023, 0, 180); S2.write(Pot2); delay (50); Pot3 = analogRead(P3); Pot3 = map (Pot3, 0, 1023, 0, 180); S3.write(Pot3); delay (50); Pot4 = analogRead(P4); Pot4 = map (Pot4, 0, 1023, 0, 180); S4.write(Pot4); delay (50); }
سلام/میشه دو تا از سیم های ولوم را وصل کرد؟
سلام
چرا حتی اگر زاویه چرخش سرو رو از 180 به 360 تغییر دهیم سرو 360 درجه نمی چرخه؟
(سرو موتور من مدل MG90S هست و 360 درجه هست)
آیا میتوان فقط با خروجی پی ال سی مثلا Y1 (-) به مینی سرو فرمان داد ، واقعیت تا بحال با مینی سرو کار نکردم و با توجه به اینکه در استپ و سروو نیاز به هر دو پالس (-) و (+) میباشد میپرسم ، ضمنا با توجه به اینکه برق ورودی را با رگولاتور به مینی سروو میدم آیا بازهم نیاز است که بر خروجی پی ال سی (-) مقاومت بگذارم