Pathfinder Kits

ডাইমেনশন

মটর ড্রাইভার

পাথফাইন্ডার কিটের সাথে একটি মটর ড্রাইভার মডিউল বসানোর ব্যবস্থা রয়েছে, যার মডেল হচ্ছে TB6612FNG।


এটি একটি ডুয়াল H-ব্রিজ মটর ড্রাইভার, অর্থাৎ এটি দিয়ে একই সাথে দুইটি মটর কন্ট্রোল করা সম্ভব। এই মডিউল সর্বোচ্চ ১৬ ভোল্ট পরিচালনা করতে পারে এবং এখানে প্রতি মটরে সর্বোচ্চ ১.২ এম্পিয়ার তড়িৎপ্রবাহ নিয়ন্ত্রণ করতে পারে। এর পিন-আউট সম্পর্কে নিচে ব্যাখ্যা করা হচ্ছেঃ

এই মটর ড্রাইভার কিভাবে কাজ করে তা সম্পর্কে বিস্তারিত জানতে এই লিংকে ক্লিক করে দেখতে পারোঃ https://roboadda.com.bd/courses/basic-lfr-workshop/class/motor-driver/

এখানে মটর ইনপুট পিনগুলো আরডুইনো ন্যানোর নির্দিষ্ট পিনের সাথে সংযুক্ত অবস্থায় আছে যার তালিকে নিচে দেয়া হচ্ছেঃ

মটর ড্রাইভার পিনআরডুইনো পিন
PWMAD3
AIN1D5
AIN2D4
PWMBD11
BIN1D7
BIN2D8

এবং মটর আউটপুট পিনগুলো বোর্ডের ডান কিনারে ৪টি স্ক্রু টার্মিনাল এর মাধ্যমে সংযুক্ত অবস্থায় আছে।

পিসিবি বোর্ডের পেছনের দিকে লক্ষ্য করলে প্রতিটি আউটপুট পিনের নাম্বার মার্কিং করা অবস্থায় দেখা যাবে।

মটর ড্রাইভারে পাওয়ার দেবার জন্য দুইধরনের রাস্তা রয়েছে।

১/ ব্যাটারি থেকে ডাইরেক্ট কানেকশনঃ যেখানে এক্সট্রা কোন কম্পোনেন্ট এর প্রয়োজন পড়বেনা। এক্ষেত্রে বোর্ডের T-কানেক্টর এ ব্যাটারি সংযোগ দিলেই মটর ড্রাইভার এক্টিভেট হবার কথা । এক্ষেত্রে পিসিবি বোর্ডের পেছনে চিহ্নিত জায়গা সোল্ডার করে জোড়া লাগিয়ে দিতে হবে।

২/ বুস্ট মডিউল সংযোজনঃ অনেকেই মটর ড্রাইভারের পারফরম্যান্স ধারাবাহিক রাখার জন্য বুস্ট মডিউল ব্যবহারের পক্ষপাতি হয়ে থাকে। সেক্ষেত্রে এই বোর্ডে আলাদাভাবে বুস্ট মডিউল লাগানোর ব্যবস্থা করা আছে। টি কানেক্টর এর ঠিক পাশেই তিনটি স্ক্রু টারমিনাল রয়েছে। এর একটিতে বুস্ট মডিউলের IN+, একটিতে OUT+ এবং অপরটিতে IN- অথবা OUT- এর যেকোন একটি পিনের সংযোগ চিত্রের মতো দিতে হবে।

পিনের মার্কিং বোর্ডের পেছনেই করা দেয়া আছে যা পূর্বের চিত্রে দেখে কিংবা বোর্ড দেখে বুঝে ফেলার কথা। এভাবে সংযোগ দিতে পারলে সেক্ষেত্রে টি কানেক্টর এ ব্যাটারি বসিয়ে সুইচ অন করে দিলেই মটর ড্রাইভারে বুস্ট মডিউল থেকে ডেডিকেটেড পাওয়ার সাপ্লাই পাবে। কিন্তু এখানে অবশ্যই লক্ষনীয় বিষয় হলোঃ

  • বুস্ট মডিউল লাগালে বোর্ডের নিচে VM-POWER সংযোগকারী সোল্ডার প্যাড অবশ্যই বিচ্ছিন্ন অবস্থায় থাকতে হবে। যেটা কিনা সাধারণত বুস্ট মডিউল কানেক্ট না করলে সোল্ডার করে কানেক্ট করে মটর ড্রাইভারে সরাসরি পাওয়ার দেয়া হতো।
  • বুস্ট মডিউল স্থাপনের পূর্বে অবশ্যই এর আউটপুট ভোল্টেজ এডজাস্ট করে নিতে হবে।

নিচে একটি এক্সাম্পল কোড দেয়া হচ্ছে যা দেখে সহজেই মটর ড্রাইভ করা সম্ভব হবেঃ

#define motor_A_direction 0 //change the value into 1 for opposite direction
#define motor_B_direction 0 //change the value into 1 for opposite direction
int mpin[6] = {3, 4, 5, 7, 8, 11}; //defining the motor driver pins
void setup() {
  pin_define(); //direction setting
  for (byte i = 0; i < 6; i++) pinMode(mpin[i], OUTPUT);
}
void loop() {
  motor(250, 250); delay(5000); //full speed forward
  motor(125, 125); delay(5000); //half speed forward
  motor(0, 250); delay(5000); //motor A off
  motor(250, 0); delay(5000); //motor B off
  motor(0, 0); delay(5000); //both motor off
  motor(-250, -250); delay(5000); //full speed backward
  motor(-125, -125); delay(5000); //half speed backward
}
void pin_define() {
  (motor_A_direction) ? mpin[1] = 5 : mpin[1] = 4;
  (motor_A_direction) ? mpin[2] = 4 : mpin[2] = 5;
  (motor_B_direction) ? mpin[3] = 7 : mpin[3] = 8;
  (motor_B_direction) ? mpin[4] = 8 : mpin[4] = 7;
}
void motor(int a, int b) {
  if (a >= 0) {
    digitalWrite(mpin[1], 1);
    digitalWrite(mpin[2], 0);
  }
  else {
    a = -a;
    digitalWrite(mpin[1], 0);
    digitalWrite(mpin[2], 1);
  }
  if (b >= 0) {
    digitalWrite(mpin[3], 1);
    digitalWrite(mpin[4], 0);
  }
  else {
    b = -b;
    digitalWrite(mpin[3], 0);
    digitalWrite(mpin[4], 1);
  }
  analogWrite(mpin[0], a);
  analogWrite(mpin[5], b);
}

IR সেন্সর অ্যারে সংযোজন

সেন্সর অ্যারে রিডিং সিরিয়াল মনিটরে দেখার জন্য এক্সাম্পল কোডঃ

int s[6]; //for storing the analog output of sensor
void setup() {
  Serial.begin(9600);
}
void loop() {
  for(int i = 0; i < 6; i++)  (i < 4) ? s[i] = analogRead(i) : s[i] = analogRead(i + 2);
  for(int i=5; i>=0; i--) Serial.println(String(s[i]) + " ");
  Serial.println();
}

OLED ডিসপ্লে মডিউল

সাধারণত সবাই OLED ডিসপ্লে তে বিভিন্ন লেখা এবং আকৃতি প্রদর্শনের জন্য Adafruit_SSD1306 এবং Adafruit_GFX লাইব্রেরী বেশি প্রচলিত। কিন্তু আরডুইনো ন্যানো ব্যবহারের ক্ষেত্রে এটি অতিরিক্ত র‍্যাম ব্যবহার করে এবং সেখানে বাকি ফাংশন নাও চলতে পারে। স্বল্প র‍্যামে কাজ চালানোর জন্য আরেকটি লাইব্রেরী আছে যার নাম হলো SSD1306Ascii লাইব্রেরী। ইন্টারনেট থেকে এই লাইব্রেরী সহজেই নামিয়ে ইন্সটল করে নেয়া যায়, তবে এখানে শুধু লেখা প্রদর্শন করা যাবে।

এরপর সেই ডাউনলোড করা জিপ ফাইল টি সিলেক্ট করে ফেললেই কাজ হয়ে যাবে। এরপর আরডুইনোর এক্সাম্পল সেকশনে এই লাইব্রেরীর প্রচুর সিস্টেমের উদাহরণ পাওয়া যাবে যা একে একে নিজে পরীক্ষা করে দেখে ডিসপ্লে মডিউলের কাজ সম্পর্কে ধারণা পেয়ে যাবে।

এছাড়া নিচের একটা এক্সাম্পল কোড দেখানো হচ্ছে যেখানে এই কিটে সংযুক্ত IR সেন্সর অ্যারে এর রিডিং ডিসপ্লে মডিউলের স্ক্রিনে প্রদর্শন করবেঃ

#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
SSD1306AsciiWire oled;
String value; int s[6];
void setup() {
  Wire.begin(); Wire.setClock(400000L);
  oled.begin(&Adafruit128x64, 0x3C);
  oled.setFont(System5x7); oled.set2X();
  analog_display();
}
void loop() {
}
void text(String t, byte x, byte y) {
  oled.setCursor(x, y);
  oled.print(t);
}
void analog_display() {
  while (1) {
    byte i;
    for (i = 0; i < 6; i++)  (i < 4) ? s[i] = analogRead(i) : s[i] = analogRead(i + 2);
    for (i = 0; i < 3 ; i++) {
      value = String(s[i]);
      (s[i] < 100) ? text(value + "  ", 70, 5 - i * 2) : text(value + " ", 70, 5 - i * 2);
    }
    for (i = 3; i < 6 ; i++) {
      value = String(s[i], 10);
      (s[i] < 100) ? text(value + "  ", 10, (i - 3) * 2 + 1) : text(value + " ", 10, (i - 3) * 2 + 1);
    }
  }
}

সার্ভো মটর

এই বোর্ডে ৩ টি সার্ভো মটর সংযোগ করার ব্যবস্থা রয়েছে যা কিনা উপরে বাম কোনায় মেইল হেডার পিন হিসেবে দেখা যায়।

এখানে সার্ভো মটর থেকে যে তার বের হয় তা সরাসরি বসিয়ে দেবার মতো ব্যবস্থা করা আছে এবং পিনের মার্কিং ও করে দেয়া আছে। এখানে ডিজিটাল ৬, ৯ এবং ১০ নাম্বার পিন থেকে সার্ভোতে সিগনাল দেবার জন্য পিন বের করে আনা হয়েছে। কোডে যথাযথ পিনের জন্য সেটিং করে নিলেই সার্ভো নিয়ন্ত্রন সম্ভব হবে।