এই টিউটোরিয়ালটি এর একটি অংশ: সার্ভো মোটরস
সার্ভো মোটর সম্পর্কিত সমস্ত ভিডিও এখানে তালিকাভুক্ত করা হয়েছে। অন্যান্য ভিডিওর লিঙ্ক এই নিবন্ধের নীচে রয়েছে।
পোটেনশিওমিটার এবং LCD1602 ব্যবহার করে আরডুইনো দিয়ে সার্ভো নিয়ন্ত্রণ
এই টিউটোরিয়ালে, আমরা শিখব কীভাবে একটি পটেনশিওমিটার ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করতে হয় এবং LCD1602 স্ক্রিনে পটেনশিওমিটারের মান এবং সার্ভোর কোণ প্রদর্শন করতে হয়। এই প্রকল্পটি একাধিক উপাদান একত্রিত করার এবং তারা কীভাবে একটি ইন্টারঅ্যাকটিভ সিস্টেম তৈরি করতে একসাথে কাজ করতে পারে তা বোঝার একটি দুর্দান্ত উপায়। এই টিউটোরিয়ালের শেষে, আপনার একটি কার্যকরী সেটআপ থাকবে যা আপনাকে LCD-তে মান প্রদর্শনের সাথে সাথে একটি নব দিয়ে সার্ভোর কোণ সামঞ্জস্য করতে দেবে।

ওয়্যারিং এবং কোডে ডুব দেওয়ার আগে, আমরা যে উপাদানগুলি ব্যবহার করব সেগুলি বোঝা সহায়ক। পটেনশিওমিটার একটি পরিবর্তনশীল প্রতিরোধক হিসাবে কাজ করে যা তার অবস্থানের উপর ভিত্তি করে ভোল্টেজ আউটপুট সামঞ্জস্য করতে পারে, যা আমরা সার্ভোর কোণ নির্ধারণ করতে ব্যবহার করব। LCD1602 বর্তমান পটেনশিওমিটার মান এবং সার্ভোর সংশ্লিষ্ট কোণ প্রদর্শন করবে। সম্পূর্ণ প্রক্রিয়ার একটি ভিজ্যুয়াল গাইডের জন্য আপনি ভিডিওটি (ভিডিওতে 00:00 এ) দেখতে পারেন।
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পে আমরা যে প্রধান উপাদানগুলি ব্যবহার করব তা হল:
- আরডুইনো বোর্ড: এটি পুরো সিস্টেমের জন্য কন্ট্রোলার হিসাবে কাজ করবে, পটেনশিওমিটার থেকে ইনপুট প্রক্রিয়া করবে এবং সেই ইনপুটগুলির উপর ভিত্তি করে সার্ভোর অবস্থান নিয়ন্ত্রণ করবে।
- পটেনশিওমিটার: একটি 10k ওহম পটেনশিওমিটার আরডুইনোতে একটি অ্যানালগ ইনপুট প্রদান করতে ব্যবহৃত হবে। এটির তিনটি টার্মিনাল রয়েছে: একটি 5V এর সাথে সংযুক্ত, একটি গ্রাউন্ডের সাথে এবং মাঝেরটি আরডুইনোর একটি অ্যানালগ পিনের (A0) সাথে সংযুক্ত।
- সার্ভো মোটর: এই সার্ভোটি পটেনশিওমিটারের অবস্থানের উপর ভিত্তি করে একটি কোণ পাঠিয়ে নিয়ন্ত্রণ করা হবে। সিগন্যাল তারটি আরডুইনোর একটি ডিজিটাল পিনের (পিন 9) সাথে সংযুক্ত থাকে।
- LCD1602 ডিসপ্লে: এই ডিসপ্লেটি পটেনশিওমিটার মান এবং সার্ভোর কোণ দেখাবে। এটি নিয়ন্ত্রণের জন্য আরডুইনোর বেশ কয়েকটি ডিজিটাল পিনের সাথে সংযুক্ত থাকে।
পটেনশিওমিটার প্রতিরোধের এবং এইভাবে এর মাঝের টার্মিনালে ভোল্টেজ পরিবর্তন করে কাজ করে, যা আরডুইনো একটি অ্যানালগ ইনপুট হিসাবে পড়ে। সার্ভো মোটরটিকে পছন্দসই কোণের সাথে সম্পর্কিত একটি নির্দিষ্ট পালস প্রস্থ মডুলেশন (PWM) সংকেত পাঠিয়ে নিয়ন্ত্রণ করা হয়। LCD1602 একটি লাইব্রেরি ব্যবহার করে যা আমাদের সহজেই এর ডিসপ্লে নিয়ন্ত্রণ করতে এবং পটেনশিওমিটার এবং সার্ভো সম্পর্কিত তথ্য আউটপুট করতে দেয়।
ডেটাশিট বিবরণ
| নির্মাতা | বিভিন্ন |
|---|---|
| পার্ট নম্বর | LM016L |
| লজিক/আইও ভোল্টেজ | 5 V |
| সাপ্লাই ভোল্টেজ | 4.5 – 5.5 V |
| আউটপুট কারেন্ট (প্রতি চ্যানেল) | 2 mA পর্যন্ত |
| পিক কারেন্ট (প্রতি চ্যানেল) | 20 mA |
| PWM ফ্রিকোয়েন্সি নির্দেশিকা | 50 Hz |
| ইনপুট লজিক থ্রেশহোল্ড | 0.3 x Vcc (নিম্ন), 0.7 x Vcc (উচ্চ) |
| ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন | 0.2 V সর্বোচ্চ |
| থার্মাল সীমা | 85 °C |
| প্যাকেজ | 16-পিন DIP |
| নোট / ভেরিয়েন্ট | 16x2 অক্ষর ডিসপ্লে |
- পটেনশিওমিটারের মাঝের পিনটি অ্যানালগ পিন A0 এর সাথে সংযুক্ত করুন।
- সার্ভোটি 5V সাপ্লাই দিয়ে চালিত এবং ডিজিটাল পিন 9 এর সাথে সংযুক্ত রয়েছে তা নিশ্চিত করুন।
- LCD এর জন্য উপযুক্ত লাইব্রেরি ব্যবহার করুন এবং এটি আপনার আরডুইনো IDE তে অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন।
- শর্ট সার্কিট এড়াতে ওয়্যারিং সম্পর্কে সতর্ক থাকুন, বিশেষ করে সার্ভো সংযোগগুলির সাথে।
- ডিসপ্লে সমস্যা এড়াতে কোডে LCD সঠিকভাবে initialized হয়েছে কিনা তা পরীক্ষা করুন।

ওয়্যারিং নির্দেশাবলী
উপাদানগুলিকে একসাথে ওয়্যার করতে, পটেনশিওমিটার সংযোগ করে শুরু করুন। পটেনশিওমিটারের একটি বাইরের পিন আরডুইনোর 5V পিনের সাথে এবং অন্য বাইরের পিনটি গ্রাউন্ডের সাথে সংযুক্ত করুন। মাঝের পিনটি অ্যানালগ পিন A0 এ যায়।
এরপর, সার্ভো মোটরের জন্য, বাদামী বা কালো তারটি গ্রাউন্ডের সাথে, লাল তারটি 5V পিনের সাথে এবং হলুদ বা কমলা তারটি আরডুইনোর ডিজিটাল পিন 9 এর সাথে সংযুক্ত করুন। LCD1602 এর জন্য, VDD পিনটি 5V এর সাথে, RW গ্রাউন্ডের সাথে এবং V0 কনট্রাস্ট সামঞ্জস্যের জন্য পটেনশিওমিটারের মাঝের পিনের সাথে সংযুক্ত করুন। RS পিন 12 এর সাথে, EN পিন 11 এর সাথে, D4 পিন 5 এর সাথে, D5 পিন 4 এর সাথে, D6 পিন 3 এর সাথে এবং D7 পিন 2 এর সাথে সংযুক্ত করুন।
আপনি যদি একটি LED ব্যবহার করেন তবে এটির সাথে সিরিজে একটি 220-ওহম রোধ অন্তর্ভুক্ত করার পরামর্শ দেওয়া হচ্ছে, এটি 5V সাপ্লাইয়ের সাথে সংযুক্ত করুন। অতিরিক্তভাবে, অপারেশনের সময় কোনো শব্দ ফিল্টার করতে সার্ভোর পাওয়ার এবং গ্রাউন্ড জুড়ে একটি 470 µF ক্যাপাসিটর সংযুক্ত করা যেতে পারে।
কোড উদাহরণ ও ওয়াকথ্রু
কোডটি প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করে এবং LCD এবং সার্ভোর জন্য পিনগুলি initialized করার মাধ্যমে শুরু হয়। নিম্নলিখিত অংশটি LCD এবং সার্ভোর সেটআপ দেখায়:
void setup() {
lcd.begin(16, 2);
myservo.attach(9); // সার্ভো অবজেক্টের সাথে পিন 9 এ সার্ভো সংযুক্ত করে
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}
এই স্নিপেটটি 16 কলাম এবং 2 সারির জন্য LCD initialized করে, পিন 9 এর সাথে সার্ভো সংযুক্ত করে এবং LCD তে একটি স্বাগত বার্তা প্রদর্শন করে। lcd.clear() ফাংশনটি নিশ্চিত করে যে কোনো পূর্ববর্তী বার্তা মুছে ফেলা হয়েছে।
এরপর, লুপটি ক্রমাগত পটেনশিওমিটারের মান পড়ে এবং সার্ভোর অবস্থান এবং LCD ডিসপ্লে আপডেট করে:
void loop() {
val = analogRead(potpin); // পটেনশিওমিটারের মান পড়ে
angle = map(val, 0, 1023, 0, 180); // সার্ভোর সাথে ব্যবহারের জন্য এটি স্কেল করে
myservo.write(angle); // স্কেল করা মান অনুযায়ী সার্ভোর অবস্থান নির্ধারণ করে
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("পট. মান:");
lcd.setCursor(11, 0);
lcd.print(val);
lcd.setCursor(0, 1);
lcd.print("কোণ :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
}
এই লুপটি পটেনশিওমিটারের মান পড়ে, সার্ভোর জন্য একটি সংশ্লিষ্ট কোণে ম্যাপ করে এবং পটেনশিওমিটারের মান ও সার্ভোর কোণ উভয় দিয়ে LCD ডিসপ্লে আপডেট করে। লুপের শেষে delay(500) ডিসপ্লেকে খুব দ্রুত আপডেট হতে বাধা দেয়।
প্রদর্শন / কী আশা করবেন
যখন আপনি সিস্টেমে পাওয়ার দেবেন, LCD ২ সেকেন্ডের জন্য "Robojax সার্ভো নব" প্রদর্শন করবে, তারপর পটেনশিওমিটারের মান এবং সার্ভোর কোণ দেখাবে। আপনি যখন পটেনশিওমিটার ঘোরাবেন, সার্ভোর কোণ সেই অনুযায়ী পরিবর্তিত হবে এবং নতুন পটেনশিওমিটারের মান LCD-তে প্রতিফলিত হবে। যদি আপনি কোনো অপ্রত্যাশিত আচরণ অনুভব করেন, যেমন সার্ভো ভুল দিকে চলছে, তাহলে পটেনশিওমিটার এবং সার্ভোর সংযোগের তারের বিন্যাস পরীক্ষা করুন (ভিডিওতে ১০:০০ মিনিটে)।
এই টিউটোরিয়ালটি বিভাগের একটি অংশ: সার্ভো মোটরস
- আরডুইনো ব্যবহার করে পুশ বাটনের মাধ্যমে সার্ভো নিয়ন্ত্রণ করা
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- পোটেনশিওমিটার ব্যবহার করে আরডুইনো দিয়ে সার্ভো নিয়ন্ত্রণ করা
- ইনফ্রারেড রিমোট দিয়ে আরডুইনো ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করা
- পোটেনশিওমিটার ব্যবহার করে আর্ডুইনো সার্ভো মোটর নিয়ন্ত্রণ
- হ্যান্ড জেসচার দ্বারা সার্ভো পজিশন নিয়ন্ত্রণ করা আর্দুইনোর জন্য
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- কন্টিনিউয়াস ৩৬০° সার্ভো কীভাবে আরডুইনোর সাথে ব্যবহার করবেন
- আরডুইনো কোড এবং PCA9685 ১৬-চ্যানেল ১২-বিট সার্ভো কন্ট্রোলার V1 এর জন্য ভিডিও
- আরডুইনো সার্ভো টগল সুইচ তৈরি করুন একটি পুশ বাটন দিয়ে
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
// May 20, 2018 20:08
// Written by Ahmad S. for Robojax.com at Ajax, Ontario, Canada
// Watch the video for this code at https://youtu.be/DN1LPMSZtNA
// This code is taken from http://robojax.com/learn/arduino
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// start of servo settings *******
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int angle; // the angle servo is sent to
// END of servo settings *******
void setup() {
// Robojax Servo knob with LCD1602 Test
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
// Robojax Servo knob with LCD1602 Test
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}
void loop() {
// Robojax Servo knob with LCD1602 Test
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
angle = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(angle); // sets the servo position according to the scaled value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pot. Value:");
// set the cursor to column 0, line 1
lcd.setCursor(11, 0);
lcd.print(val);
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Angle :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
// Robojax Servo knob with LCD1602 Test
}
সম্পদ ও রেফারেন্সসমূহ
-
বাহ্যিকLCD1602 library (from GitHub)github.com
-
বাহ্যিকUsing LCD1602 LCD display for Arduinoyoutube.com
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।