কোড অনুসন্ধান

পোটেনশিওমিটার ব্যবহার করে আর্ডুইনো সার্ভো মোটর নিয়ন্ত্রণ

পোটেনশিওমিটার ব্যবহার করে আর্ডুইনো সার্ভো মোটর নিয়ন্ত্রণ

এই টিউটোরিয়ালে, আমরা একটি পটেনশিওমিটার ব্যবহার করে একটি সার্ভো মোটর নিয়ন্ত্রণ করার পদ্ধতি অন্বেষণ করব একটি আর্ডুইনোর মাধ্যমে। লক্ষ্য হল একটি সহজ সার্কিট তৈরি করা যেখানে সার্ভোর অবস্থান পটেনশিওমিটারটির ঘূর্ণনের উপর ভিত্তি করে সমন্বয় করা হয়। এই প্রকল্পের শেষে, আপনার কাছে একটি কার্যকরী মডেল থাকবে যা পটেনশিওমিটারটি ঘুরানোর সাথে সাথে 0 থেকে 180 ডিগ্রি পর্যন্ত সার্ভো কোণটি মসৃণভাবে পরিবর্তন করে। এটি আর্ডুইনোর অ্যানালগ ইনপুট এবং সার্ভো নিয়ন্ত্রণের মৌলিক বিষয়গুলি বোঝার জন্য একটি দুর্দান্ত উপায়।

এটি অর্জন করতে, আমরা একটি আর্ডুইনো বোর্ড, একটি সার্ভো মোটর এবং একটি পোটেনশিওমিটার ব্যবহার করব। পোটেনশিওমিটার একটি পরিবর্তনশীল রেজিস্টর হিসেবে কাজ করে, আর্ডুইনোতে একটি অ্যানালগ ইনপুট প্রদান করে, যা পরে সার্ভো মোটরের অবস্থান নির্ধারণ করবে। এই প্রকল্পটি কেবল মজারই নয় বরং শিক্ষামূলকও, কারণ এটি ইলেকট্রনিক্স এবং প্রোগ্রামিংয়ের মূল ধারণাগুলি প্রদর্শন করে। আরও বিস্তারিত ব্যাখ্যার জন্য, ভিডিওটি দেখার জন্য নিশ্চিত হন (ভিডিওতে 00:00)।

হার্ডওয়্যার ব্যাখ্যা করা

এই প্রকল্পে প্রধান উপাদানগুলি হল আর্ডুইনো বোর্ড, সার্ভো মোটর এবং পোটেনশিওমিটার। আর্ডুইনো হল অপারেশনের মস্তিষ্ক, ইনপুট প্রক্রিয়া করে এবং আউটপুট নিয়ন্ত্রণ করে। সার্ভো মোটরটি শারীরিকভাবে চলবে আর্ডুইনো থেকে প্রাপ্ত কমান্ডের ভিত্তিতে। পোটেনশিওমিটার 1k ওহম থেকে 1M ওহম হতে পারে যা ব্যবহারকারীদের একটি পরিবর্তনশীল ইনপুট প্রদান করতে দেয় যা সার্ভো আন্দোলনে রূপান্তরিত হয়।

সার্ভো মোটর একটি PWM (পালস প্রস্থ মডুলেশন) সংকেত গ্রহণ করে যা কাঙ্ক্ষিত অবস্থান নির্দেশ করে। পটেনশিওমিটার, যখন ঘোরানো হয়, তার প্রতিরোধ ক্ষমতা পরিবর্তন করে, যা আর্দুইনো দ্বারা একটি অ্যানালগ ভোল্টেজ হিসেবে পড়া হয়। সার্ভো মোটর 5V এ কাজ করে। এটি 3.3V এ কাজ করে না। এই ভোল্টেজটি সার্ভো মোটরের গতির পরিসরে মানচিত্রিত হয়, যা 0 ডিগ্রি থেকে 180 ডিগ্রি পর্যন্ত মসৃণ গতির অনুমতি দেয়।

SG90 সার্ভো মোটরের ডেটাশিটের বিস্তারিত

উৎপাদকপ্যারালাক্স
পার্ট নম্বরSG90
লজিক/আইও ভোল্টেজ৫ ভ
সরবরাহ ভোল্টেজ৪.৮-৬ ভি
আউটপুট কারেন্ট (প্রতি চ্যানেল)~500 মি.এ.
পিক কারেন্ট (প্রতি চ্যানেল)১ এ
পিডব্লিউএম ফ্রিকোয়েন্সি নির্দেশিকা৫০ হার্জ
ইনপুট লজিক থ্রেশহোল্ডস0.5 ভি (নিম্ন), 2.5 ভি (উচ্চ)
ভোল্টেজ ড্রপ / আরডিএস(অন)/ স্যাচুরেশন0.5 ভি 500 মিএতে
তাপীয় সীমা০°C থেকে ৬০°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)।

ভিডিও টাইমস্ট্যাম্পস

  • ০০:০০- প্রকল্পের পরিচিতি
  • ০১:৩০- হার্ডওয়্যার সেটআপ ব্যাখ্যা
  • ০৩:৪৫- তারের নির্দেশাবলী
  • ০৫:০০- কোড ওয়াকথ্রু
  • ০৭:৩০- সম্পন্ন প্রকল্পের প্রদর্শনী

ছবি

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
  }
}

সম্পদ ও রেফারেন্সসমূহ

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

ডেটাশিট (পিডিএফ)