পাঠ ৮৫: সার্ভো মোটরের পরিচিতি | আরডুইনো ধাপে ধাপে কোর্স
এই প্রজেক্ট গাইড আপনাকে কন্টিনিউয়াস রোটেশন সার্ভো মোটর, যা ৩৬০-ডিগ্রি সার্ভো নামেও পরিচিত, তার জগতের সাথে পরিচয় করিয়ে দেয়। স্ট্যান্ডার্ড সার্ভোর বিপরীতে, যা একটি নির্দিষ্ট কোণে (যেমন ০ থেকে ১৮০ ডিগ্রি) ঘোরে, এই মোটরগুলো যেকোনো দিকে অবিরাম ঘুরতে থাকে।这使得它们非常适合构建小型机器人、坦克履带或任何需要简单、经济实惠的驱动电机的项目。এই গাইড আপনাকে দেখাবে কিভাবে একটি Arduino এবং কয়েকটি পুশ বাটন ব্যবহার করে এটি নিয়ন্ত্রণ করতে হয়, যা আপনাকে এর দিক এবং গতির উপর হাতে-কলমে নিয়ন্ত্রণ দেবে।
এখানে একটি ৩৬০-ডিগ্রি সার্ভোর জন্য কয়েকটি ব্যবহারিক প্রয়োগ রয়েছে:
- একটি ছোট দুই-চাকার রোবট গাড়ি তৈরি করা।
- একটি প্যান-এন্ড-টিল্ট ক্যামেরা মাউন্ট তৈরি করা যা অবিরাম ঘোরে।
- একটি ছোট কনভেয়র বেল্ট বা উইঞ্চ চালানো।
- একটি সহজ রাডার বা সেন্সর স্ক্যানিং প্ল্যাটফর্ম তৈরি করা।

হার্ডওয়্যার এবং উপাদানসমূহ
এই প্রজেক্টের জন্য, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে:
- Arduino বোর্ড (যেমন, Uno)
- কন্টিনিউয়াস রোটেশন সার্ভো মোটর (যেমন, FS90R বা অনুরূপ)
- তিনটি পুশ বাটন
- জাম্পার তার
- ব্রেডবোর্ড (ঐচ্ছিক, সহজ তারের সংযোগের জন্য)
ওয়্যারিং গাইড
এই প্রজেক্টের ওয়্যারিং সহজবোধ্য। সার্ভো মোটরের তিনটি তার রয়েছে: সাধারণত বাদামী (গ্রাউন্ড), লাল (পাওয়ার), এবং কমলা বা হলুদ (সিগন্যাল)। পুশ বাটনগুলো একটি সহজ কনফিগারেশনে সংযুক্ত থাকে।
এখানে সংযোগগুলির একটি বিবরণ দেওয়া হল:
- সার্ভো মোটর:
- বাদামী তার (গ্রাউন্ড) Arduino-এর GND পিনের সাথে সংযুক্ত হয়।
- লাল তার (পাওয়ার) Arduino-এর 5V পিনের সাথে সংযুক্ত হয়।
- কমলা/হলুদ তার (সিগন্যাল) Arduino পিন 9-এর সাথে সংযুক্ত হয়।
- পুশ বাটন:
- প্রতিটি বাটনের এক পাশ Arduino-এর GND পিনের সাথে সংযুক্ত থাকে।
- "কাউন্টার-ক্লকওয়াইজ" বাটনের অন্য পাশ পিন 2-এর সাথে সংযুক্ত থাকে।
- "স্টপ" বাটনের অন্য পাশ পিন 3-এর সাথে সংযুক্ত থাকে।
- "ক্লকওয়াইজ" বাটনের অন্য পাশ পিন 4-এর সাথে সংযুক্ত থাকে।
ভিডিওতে, নির্মাতা জোর দিয়ে বলেছেন যে সার্ভোর সিগন্যাল তারটি অবশ্যই Arduino-এর একটি PWM-সক্ষম পিনের সাথে সংযুক্ত থাকতে হবে, যা প্রায়শই একটি টিল্ড (~) চিহ্ন দিয়ে চিহ্নিত করা হয়। পিন 9 এই পিনগুলির মধ্যে একটি। পুশ বাটনগুলো Arduino-এর অভ্যন্তরীণ pull-up রোধক ব্যবহার করে, যা বাহ্যিক রোধকের প্রয়োজনীয়তা দূর করে ওয়্যারিংকে সহজ করে (ভিডিওতে 07:02-এ)।
কোড ব্যাখ্যা
কোডটি তিনটি পুশ বাটনের অবস্থা পড়তে এবং সার্ভো মোটরে সংশ্লিষ্ট কমান্ড পাঠাতে ডিজাইন করা হয়েছে। আসুন ব্যবহারকারী-কনফিগারযোগ্য অংশগুলো ভেঙে দেখি।
পিন এবং কমান্ড কনফিগার করা
কোডের শীর্ষে, আপনি পিন এবং সার্ভো নিয়ন্ত্রণ মানগুলির জন্য সংজ্ঞা পাবেন। এখানেই আপনি আপনার প্রজেক্টের আচরণ কাস্টমাইজ করতে পারেন।
const int servoPin = 9; // সার্ভো সিগন্যালের জন্য PWM পিন
const int stopPin = 3; // স্টপ বাটনের জন্য পিন
const int cwPin = 4; // ক্লকওয়াইজ বাটনের জন্য পিন
const int ccwPin = 2; // কাউন্টার-ক্লকওয়াইজ বাটনের জন্য পিন
এই ধ্রুবকগুলো নির্ধারণ করে যে কোন Arduino পিনগুলো বাটন এবং সার্ভোর সাথে সংযুক্ত। যদি আপনি আপনার বাটনের জন্য ভিন্ন পিন ব্যবহার করেন, তাহলে আপনি এখানে সংখ্যাগুলো পরিবর্তন করবেন। servoPin অবশ্যই একটি PWM-সক্ষম পিন হতে হবে।
const int csServoCommand[3] = {106, 52, 0}; // {CCW, STOP, CW}
const String csServoCommandText[3] = {"Counter Clockwise", "Stopped", "Clockwise"};
এটি বোঝার এবং টিউন করার জন্য সবচেয়ে গুরুত্বপূর্ণ অংশ। csServoCommand অ্যারে সার্ভোতে পাঠানো মানগুলো ধারণ করে। একটি কন্টিনিউয়াস সার্ভোর জন্য, এই মানগুলো একটি কোণ নয় বরং একটি গতি এবং দিক নির্দেশ করে।
- 106 হল পূর্ণ-গতির কাউন্টার-ক্লকওয়াইজ ঘূর্ণনের মান।
- 52 হল সম্পূর্ণ স্টপের মান।
- 0 হল পূর্ণ-গতির ক্লকওয়াইজ ঘূর্ণনের মান।
এই মানগুলো সর্বজনীন নয়। উৎপাদনের পার্থক্যের কারণে, "স্টপ" মান (52) সামঞ্জস্য করার প্রয়োজন হতে পারে। যদি আপনার সার্ভো স্টপ বাটন চাপার সময় ধীরে ধীরে সরে যায়, তাহলে আপনাকে এই মানটি সূক্ষ্ম-টিউন করতে হবে। ভিডিওটি এই প্রক্রিয়াটি প্রদর্শন করে, দেখায় কিভাবে মানটি 54 বা 51-এ পরিবর্তন করা মোটরের আচরণকে প্রভাবিত করতে পারে (ভিডিওতে 13:45-এ)।
আপনি মোটরের গতি পরিবর্তন করতে ঘূর্ণনের মানগুলোও সামঞ্জস্য করতে পারেন। উদাহরণস্বরূপ, কাউন্টার-ক্লকওয়াইজ মানটি 70-এ সেট করলে এটি 106-এর তুলনায় ধীরে ঘুরবে (ভিডিওতে 12:23-এ)।
csServoCommandText অ্যারে টেক্সট স্ট্রিংগুলো ধারণ করে যা বর্তমান কমান্ড অবস্থা দেখানোর জন্য Serial Monitor-এ প্রিন্ট করা হয়।
কাস্টম ফাংশন: servoCommand()
কোডটি কমান্ড লজিক পরিচালনা করার জন্য একটি কাস্টম ফাংশন ব্যবহার করে। এই ফাংশনটি একটি সংখ্যা (0, 1, বা 2) আর্গুমেন্ট হিসেবে নেয়, স্ট্যাটাস টেক্সট আপডেট করে, এবং সার্ভোতে সংশ্লিষ্ট কমান্ড পাঠায়।
void servoCommand(int n) {
statusText = csServoCommandText[n];
myservo.write(csServoCommand[n]);
Serial.println(csServoCommandText[n]);
Serial.println(csServoCommand[n]);
}
এই ফাংশনটি মূল লুপ থেকে কল করা হয় যখন একটি বাটন চাপা হয়। এটি ডিসপ্লে আপডেট এবং সার্ভো নিয়ন্ত্রণের লজিককে কেন্দ্রীভূত করে, যা কোডকে পরিষ্কার এবং পরিবর্তন করা সহজ করে তোলে।
লাইভ প্রজেক্ট এবং প্রদর্শন
ভিডিওতে, নির্মাতা প্রজেক্টটি কাজ করতে দেখান। "ক্লকওয়াইজ" বাটন চাপলে সার্ভোতে মান 0 পাঠানো হয়, যা এটিকে এক দিকে ঘুরতে বাধ্য করে। "কাউন্টার-ক্লকওয়াইজ" বাটন চাপলে মান 106 পাঠানো হয়, যা এটিকে অন্য দিকে ঘুরায়। "স্টপ" বাটন 52 পাঠায়, যা মোটর থামানো উচিত।
সিরিয়াল মনিটরটি বর্তমান অবস্থা এবং সার্ভোতে পাঠানো সঠিক মান প্রদর্শনের জন্য ব্যবহৃত হয়। ডিবাগিং এবং আপনার নির্দিষ্ট মোটরের জন্য নিখুঁত "স্টপ" মান খুঁজে বের করার জন্য এটি অত্যন্ত মূল্যবান। ভিডিওতে যেমন উল্লেখ করা হয়েছে, সার্ভোর অভ্যন্তরীণ সার্কিট্রির কারণে স্টপ কমান্ডটি নিখুঁত নাও হতে পারে, এবং আপনি ধীর গতির সরে যাওয়া বা কম্পন দেখতে পারেন। এটি সস্তা কন্টিনিউয়াস সার্ভোগুলির একটি সাধারণ বৈশিষ্ট্য এবং কোডে স্টপ মানটি টিউন করে (ভিডিওতে ০১:১৫-এ) এটি কমানো যেতে পারে।
অধ্যায়সমূহ
- [০০:০৫] ৩৬০-ডিগ্রি সার্ভো মোটরের পরিচিতি
- [০২:০২] উপাদান এবং হার্ডওয়্যার সংক্ষিপ্ত বিবরণ
- [০২:৪০] বিস্তারিত ওয়্যারিং ডায়াগ্রাম এবং সংযোগ
- [০৫:০৭] কোড ব্যাখ্যা: কনস্ট্যান্ট, অ্যারে এবং সেটআপ
- [০৯:৫৬] কোড ব্যাখ্যা: সার্ভো কমান্ড ফাংশন
- [১০:৫৪] লাইভ প্রদর্শন এবং সিরিয়াল মনিটর আউটপুট
- [১২:২৩] সার্ভো গতি এবং স্টপ মান সমন্বয়
/*
* নিরবচ্ছিন্ন সার্ভো (৩৬০ সার্ভো) নিয়ন্ত্রণের প্রদর্শনী
* এই কোডটি আপনাকে সিরিয়াল মনিটর থেকে একটি কমান্ডের মাধ্যমে ৩৬০-ডিগ্রি সার্ভো নিয়ন্ত্রণ করতে দেয়।
* এই ৩৫০ সার্ভো মোটরটি শুধুমাত্র মজা করার জন্য। এটি এমন বাস্তব অ্যাপ্লিকেশনের জন্য ব্যবহার করা যাবে না যেখানে সঠিক অবস্থান প্রয়োজন। স্টেপার মোটর বা ব্যয়বহুল সার্ভো মোটর নিন।
*
* আহমদ শামশিরি দ্বারা পরিবর্তিত রোবোজ্যাক্স.কমের জন্য
* রবিবার, ১ জুলাই, ২০১৮, দুপুর ১১:০৯ এ অ্যাজাক্স, অন্টারিও, কানাডায়
* এই প্রকল্পের একটি ভিডিও নির্দেশনা দেখুন: https://youtu.be/b_xvu6wWafA
* এই কোডটি রোবোজ্যাক্স.কম থেকে পান
*
* মূল কোড ব্যারাগান <http://barraganstudio.com>
* এই উদাহরণ কোডটি পাবলিক ডোমেইনে রয়েছে।
* ৮ নভেম্বর ২০১৩-এ পরিবর্তিত
* স্কট ফিটজেরাল্ড দ্বারা
* http://www.arduino.cc/en/Tutorial/Sweep
*/
#include <Servo.h>
Servo myservo; // সার্ভো নিয়ন্ত্রণ করার জন্য সার্ভো অবজেক্ট তৈরি করুন।
// বেশিরভাগ বোর্ডে বারোটি সার্ভো অবজেক্ট তৈরি করা যেতে পারে।
int pos = 0; // সার্ভো অবস্থান সংরক্ষণের জন্য ভেরিয়েবল
int incomingByte = 0; // প্রবাহিত সিরিয়াল ডেটার জন্য
void setup() {
Serial.begin(9600);
myservo.attach(9); // পিন ৯-এ সার্ভো অবজেক্টের সাথে সার্ভো সংযুক্ত করে
}
void loop() {
// ডেটা শুধুমাত্র তখন পাঠান যখন আপনি ডেটা পান:
if (Serial.available() > 0) {
// আসন্ন বাইটটি পড়ুন:
incomingByte = Serial.read();
// তুমি কী পেয়েছ বলো:
Serial.print("received: ");
Serial.print (incomingByte);
if(incomingByte == 108){
Serial.println(" sent 0 Rotating CW ");
myservo.write(0);
}else if(incomingByte == 114){
Serial.println(" sent 180 Rotating CCW ");
myservo.write(180);
}else if(incomingByte == 60){
Serial.println(" sent Stopped ");
myservo.write(60);
}else{
Serial.println(" moving Randomly");
myservo.write(incomingByte);
}
}
}
/*
*
* Demonstration of Controlling Continuous Servo (360 servo)
360 Servo -2
* This code allows you to control a 360-degree servo by a command from the Serial Monitor.
* this 350 servo motor is a just for fun. it can't be used for real application where you need exact positioning. get stepper motor or expensive servo motor.
📚⬇️ Download and resource page https://robojax.com/RJT762
*
* Modified by Ahmad Shamshiri for Robojax.com
* on Sunday, July 1, 2018, at 11:09 AM in Ajax, Ontario, Canada
* Watch a video instruction of this project: https://youtu.be/b_xvu6wWafA
* Get this code from Robojax.com
*
Original code by BARRAGAN <http://barraganstudio.com>
This example code is in the public domain.
Modified 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Sweep
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int servoPin = 9;// this pin must be of those with PWM ~
int pos = 0; // variable to store the servo position
int incomingByte = 0; // for incoming serial data
int CWBS, CCWBS, SBS;
void setup() {
Serial.begin(9600);
pinMode(2,INPUT_PULLUP);// set pin for push button STOP
pinMode(3,INPUT_PULLUP);// set pin for push button CCW
pinMode(4,INPUT_PULLUP);// set pin for push button CW
myservo.attach(servoPin); // attaches the servo on pin 9 to the servo object
}
void loop() {
CCWBS = digitalRead(2);// read status of button CCW
SBS = digitalRead(3);// read status of button STOP
CWBS = digitalRead(4);// read status of button CW
if(CCWBS == LOW){
Serial.println(" sent 0 Rotaing CW ");
myservo.write(0);
}else if(CWBS == LOW){
Serial.println(" sent 180 Rotaing CCW ");
myservo.write(180);
}else if(SBS == LOW){
Serial.println(" sent Stopped ");
myservo.write(60);
}else{
Serial.println(" moving Random");
myservo.write(48);
}
}// loop
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজন360 Degree Servo motor on Amazonlink.amazon
-
অ্যামাজন
-
ইবে360 Degree Servo motor on eBayebay.us
-
অলি এক্সপ্রেস360 Degree Servo motor on AliExpresss.click.aliexpress.com
-
অলি এক্সপ্রেস360 Degree Servo motor on AliExpress-2s.click.aliexpress.com
সম্পদ ও রেফারেন্সসমূহ
-
অভ্যন্তরীণ
ফাইলসমূহ📁
অন্যান্য ফাইলগুলি
-
SG90 সিরো মোটর ডেটাশিট
robojax-servo-SG90_datasheet.pdf0.12 MB