Search Code

پوٹینشیومیٹر کا استعمال کرتے ہوئے آرڈینو سرو موٹر کنٹرول

پوٹینشیومیٹر کا استعمال کرتے ہوئے آرڈینو سرو موٹر کنٹرول

اس ٹیوٹوریل میں، ہم ایک پوتینشیومیٹر کے ذریعے سروو موٹر کو کنٹرول کرنے کا طریقہ سیکھیں گے جس میں آرڈینو استعمال ہوگا۔ مقصد یہ ہے کہ ایک سادہ سرکٹ بنایا جائے جہاں سروو کی پوزیشن پوتینشیومیٹر کی گردش کی بنیاد پر ایڈجسٹ کی جائے۔ اس پروجیکٹ کے آخر تک، آپ کے پاس ایک کام کرنے والا ماڈل ہوگا جو پوتینشیومیٹر کو گھمانے پر سروو کے زاویے کو 0 سے 180 ڈگری تک ہموار طریقے سے تبدیل کرتا ہے۔ یہ آرڈینو میں اینالاگ ان پٹ اور سروو کنٹرول کی بنیادی باتوں کو سمجھنے کا ایک بہترین طریقہ ہے۔

اسے حاصل کرنے کے لیے، ہم ایک آرڈینو بورڈ، ایک سرو موٹر، اور ایک پوٹینشیومیٹر استعمال کریں گے۔ پوٹینشیومیٹر ایک متغیر مزاحمتی کے طور پر کام کرتا ہے، جو آرڈینو کو ایک اینالاگ ان پٹ فراہم کرتا ہے، جو پھر سرو موٹر کی پوزیشن کا تعین کرے گا۔ یہ منصوبہ نہ صرف تفریحی ہے بلکہ تعلیمی بھی ہے، کیونکہ یہ الیکٹرانکس اور پروگرامنگ کے اہم تصورات کو ظاہر کرتا ہے۔ مزید تفصیلی وضاحت کے لیے، ویڈیو (ویڈیو میں 00:00 پر) کو دیکھنا نہ بھولیں۔

ہارڈ ویئر کی وضاحت

اس منصوبے میں، اہم اجزاء آرڈینو بورڈ، سروسو موٹر، اور پوٹینشیومیٹر ہیں۔ آرڈینو آپریشن کا دماغ ہے، جو ان پٹ کو پروسیس کرتا ہے اور آؤٹ پٹ کو کنٹرول کرتا ہے۔ سروسو موٹر وہ ہے جو آرڈینو سے موصول ہونے والے احکامات کی بنیاد پر جسمانی طور پر حرکت کرے گی۔ پوٹینشیومیٹر 1k اوہم سے 1M اوہم تک ہو سکتا ہے، جو صارفین کو ایک متغیر ان پٹ فراہم کرنے کی اجازت دیتا ہے جو سروسو کی حرکت میں تبدیل ہوتا ہے۔

سرور موٹر ایک PWM (پلس چوڑائی ماڈیولیشن) سگنل وصول کرکے کام کرتی ہے جو مطلوبہ مقام کی نشاندہی کرتا ہے۔ جب پوٹینشیومیٹر کو گھمایا جاتا ہے تو اس کی مزاحمت تبدیل ہوتی ہے، جسے آرڈینو ایک اینالاگ وولٹیج کے طور پر پڑھتا ہے۔ سرور موٹر 5V پر کام کرتی ہے۔ یہ 3.3V کے ساتھ کام نہیں کرتی۔ یہ وولٹیج پھر سرور موٹر کی حرکت کی حد میں نقشہ بنایا جاتا ہے، جس سے 0 ڈگری سے 180 ڈگری تک ہموار حرکت کی اجازت ملتی ہے۔

SG90 سرو موٹر کے لئے ڈیٹا شیٹ کی تفصیلات

کارخانہ دارپیراکسلیس
حصہ نمبرSG90
منطق/آئی او وولٹیج5 V
سپلائی وولٹیج4.8-6 V
آؤٹ پٹ کرنٹ (فی چینل)~500 ملی ایمپئر
چوٹی کرنٹ (فی چینل)1 اے
پی ڈبلیو ایم فریکوئنسی کی رہنمائی50 ہرٹز
ان پٹ منطقی حدیں0.5 وی (کم), 2.5 وی (زیادہ)
وولٹیج ڈراپ / RDS(on)/ سچوریشن0.5 V پر 500 mA
حرارتی حدود0°C سے 60°C
پیکجمعیاری 9g سرو
نوٹس / مختلف اقسامآر سی ایپلیکیشنز میں عام طور پر استعمال ہوتا ہے۔

  • یقینی بنائیں کہ سروسو اپنی زیادہ سے زیادہ کرنٹ کی درجہ بندی سے تجاوز نہ کرے۔
  • اگر سروس مسلسل زیادہ بوجھ پر کام کرتا ہے تو ہیٹ سنک کا استعمال کریں۔
  • پوٹینشیومیٹر کو درست پڑھائی کے لیے ایک اینالاگ پن سے جوڑیں۔
  • سرور کنٹرول کے لیے PWM سگنل کے وقت کا خیال رکھیں۔
  • سرور کی حرکت کی حد کو چیک کریں تاکہ جسمانی رکاوٹوں سے بچا جا سکے۔

وائرنگ کی ہدایات

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

اس سیٹ اپ کے لیے، آپ کو اجزاء کو مندرجہ ذیل طریقے سے جوڑنے کی ضرورت ہوگی:

پوٹینشیومیٹر کے درمیانی پن (وائپر) کو آرڈینو کے اینالاگ پن سے جوڑیں۔A0پوٹینشیومیٹر کے دوسرے دو پنوں کو جڑنا چاہیے5VاورGNDآرڈینو پر۔ سرو موٹر کے لیے، سرخ تار کو جوڑیں5Vسیاہ تار کوGNDاور پیلا یا سفید تار ڈیجیٹل پن پر9آرڈینو پر۔ یہ ترتیب پوٹینشیومیٹر کو آرڈینو کو ایک اینالاگ ان پٹ فراہم کرنے کی اجازت دیتی ہے، جو اس ان پٹ کی بنیاد پر سیروموٹور کی پوزیشن کو کنٹرول کرے گی۔

تمام کنکشنز کی تصدیق کرنا یقینی بنائیں اور یہ یقینی بنائیں کہ سیروا اپنی حرکت کی حد میں رکاوٹ نہیں ہے۔ اگر مختلف آرڈوینو ماڈل استعمال کر رہے ہیں تو یہ تصدیق کریں کہ اینالاگ ان پٹ اور سیروا آؤٹ پٹ کے پن کی تفویضات ہم آہنگ ہیں۔

کوڈ کی مثالیں اور رہنمائی

نیچے کوڈ کا ایک اقتباس ہے جو سرو کو شروع کرتا ہے اور پوٹینشیومیٹر کی قیمت پڑھتا ہے:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

اس کوڈ میں، ہم سرور لائبریری شامل کرتے ہیں اور ایک سرور آبجیکٹ بناتے ہیں جس کا نامmyservoسرو کو پن سے منسلک کیا گیا ہے۔9، جو ہمیں اس پن کا استعمال کرتے ہوئے اسے کنٹرول کرنے کی اجازت دیتا ہے۔


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

لوپ فنکشن میں، ہم پن سے پوٹینشیومیٹر کی قیمت پڑھتے ہیں۔A0اور اسے اس کی رینج (0-1023) سے سرو کے رینج (0-180 ڈگری) میں منتقل کریں۔myservo.write(pos)کمانڈ پھر سیروا کو مطلوبہ مقام پر منتقل کرتی ہے جو پوٹینشیومیٹر کی گردش کی بنیاد پر ہوتا ہے۔

نمائش / کیا توقع کریں

جب آپ یہ پروگرام چلائیں گے تو آپ کو سرور موٹر کو 0 سے 180 ڈگری تک ہموار حرکت کرتے ہوئے دیکھنا چاہیے جب آپ پوٹینشیومیٹر کو گھمائیں گے۔ اگر سرور جیسا متوقع ہے ویسا نہیں چلتا تو وائرنگ چیک کریں اور یہ یقینی بنائیں کہ پوٹینشیومیٹر صحیح کام کر رہا ہے۔ اس کے علاوہ، یہ بھی یقینی بنائیں کہ آرڈینو کو صحیح طریقے سے پاور مل رہی ہے اور کوڈ بغیر کسی غلطی کے اپ لوڈ کیا گیا ہے۔ آپ کو توقع کرنی چاہیے کہ سرور پوٹینشیومیٹر کی پوزیشن کو حقیقی وقت میں ظاہر کرے گا (ویڈیو میں 02:00 پر)۔

ویڈیو کے وقت کے نشانات

  • 00:00- منصوبے کا تعارف
  • 01:30- ہارڈ ویئر سیٹ اپ کی وضاحت
  • 03:45- وائرنگ کی ہدایات
  • 05:00- کوڈ کی وضاحت
  • 07:30- مکمل شدہ منصوبے کا مظاہرہ

تصاویر

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
زبان: C++
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/



#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

وسائل اور حوالہ جات

ابھی تک کوئی وسائل نہیں۔

فائلیں📁

ڈیٹا شیٹ (پی ڈی ایف)