الجمعة، 21 يونيو، 2013

محركات السيرفو الجزء الثاني Servo Motor

محركات السيرفو الجزء الثاني Servo Motor 2 


Full rotational 360Deg

في الجزء الاول من حديثي عن محركات السيرفو شرحت المبادئ الاساسية في مكتبة السيرفو التي تحتاجها للتحكم في هذا النوع من المحركات , كما عرضت طريقة التحكم في محركات السيرفو ذات الدوران نصف الكامل 180deg و الشق الثاني في حديثنا عن محركات السيرفو هو المحركات ذات الدوران المتواصل 360deg .


هذه المحركات تستطيع بناء روبوت بسهولة عن طريقها ,هناك طريقتين لبرمجتها , باستخدام المؤقتات Timer و تفعيل اوامر ال delayMicroseconds , و طريقة أخرى سهلة من نفس مكتبة الأردوينو الرسمية للسيرفو , و هي ما سأتطرق به هنا لسهوله التحكم به من خلالها  .

اولاً ما ستحتاج إليه لتنفيذ هذه التجربة :


1) بطاقة أردوينو "استعملت هنا بطاقة Arduino Leonardo Micro Pro الرائعة " .
2) محرك سيرفو 360 درجة 
3) مقاومة متغيرة 
4) اسلاك توصيل .
5) مصدر جهد خارجي لتغذية السيرفو .

تحذير : يجب الحذر عند تغذية محركات السيرفو مباشرة من مخرج ال 5 فولت الخاص بالأردوينو لان تيار السيرفو العالي قد يتسبب في اتلاف بطاقة الأردوينو , لذلك يفضل ان تستخدم مصدر جهد خارجي ذو تيار كافي " 5 فولت -1 أمبير " .


طريقة التوصيل : 


البرمجة :

لاحظ فقط أن تغيير الزوايا في للمحرك تتحكم فقط هنا بسرعة دورانه "للزاوية من 0 - 94 " يلتف المحرك عكس عقارب الساعة و من 96 - 180 يلتف مع عقارب الساعة و عند 95 تقريباً يكون في حالة توقف " .
/*
this program taken from arduino Example .
  modified by By Mohannad Rawashdeh
  http://www.genotronex.com
  This code used to control Servo Motor 360 Degree using 
  potebtiometer connected on A0

*/
#include <Servo.h> 
int t=10;
Servo SR04;  // Full rotational
int PinReading=0;
int potentiometer=0;
void setup() {
  // put your setup code here, to run once:
SR04.attach(9);// servo connected to D9
pinMode(A0,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly: 
  PinReading=analogRead(A0);
  delay(t);
  potentiometer=map(PinReading,0,1023,0,180);
  potentiometer=constrain(potentiometer,0,180);
  SR04.write(potentiometer);
  delay(50);
  
}

هذا الفيديو يوضح هذا البرنامج .


يمكنك أيضاً التحكم بمحرك السيرفو باستخدام الأردوينو و اللاب فيو Labview 



يمكنك تحميل البرنامج
من هنا Servo.exe "طبعاً ستحتاج لتحميل ال real time engine لديك لنسخدة متوافقة مع Labview2010 او أعلى . من هنا 

5 التعليقات :

  1. السلام عليكم

    ممكن تشرح وظيفة الامرين التاليين :
    potentiometer=map(PinReading,0,1023,0,180);
    potentiometer=constrain(potentiometer,0,180);

    ردحذف
    الردود
    1. لتحويل القيمة التي يقرأها الأردوينو من المدخل التناظري إلى زاوية ليدور على اساسها المحرك .

      للمزيد

      http://arduino.cc/en/Reference/Map

      http://arduino.cc/en/Reference/Constrain

      حذف
  2. السلام عليكم اردت استفسار عن الزوايا الي اتحكم باثنين سيرفو360 علماباني جربت اكثر من برنامج لاكن في خلل بالدورات وهل احتاج الى شيلد مع السيرفو اولا

    ردحذف
  3. وهذاالبرنامج الذي اشتغل عليه


    #include

    Servo servoleft;
    Servo servoright;
    int pos = 0;
    void setup()
    {
    servoleft.attach(10);
    // servoleft.write(0);
    servoright.attach(9);
    // servoright.write(0);
    }


    void loop()
    {
    forward();
    delay(1000);
    reverse();
    delay(1000);
    turnRight();
    delay(1000);
    //trunLeft();
    // delay(1000);
    trunLeft();
    delay(1000);
    //turnRight();
    //delay(1000);


    stopRobot();
    //delay(2000);
    }

    void forward()
    {
    servoleft.write(0);
    servoright.write(180);
    }

    void reverse()
    {
    servoleft.write(180);
    servoright.write(0);
    }
    void turnRight()
    {
    servoleft.write(180);
    servoright.write(180);
    }
    void trunLeft()
    {
    servoleft.write(0);
    servoright.write(0);
    }
    void stopRobot()
    {
    servoleft.write(90);
    servoright.write(90);
    // delay(3000);
    }

    ردحذف
    الردود
    1. محرك السيرفو 360 درجة لا يمكن التحكم بزاوية دورانه , يتم التحكم فقط باتجاه حركته .

      هذا الكود هو كود روبوت G1 الذي بنيته في وقت سابق .

      حذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.