Stepper Motor Driver কিভাবে ব্যবহার করবেন ?

মূলত এটি একটি Unipolar-Stepper-Motor-Driver । মডিউলটি Unipolar-Stepper-Motor ছাড়াও Solenoids, Relays, DC-Motors, LEDs, Filament lamps ইত্যাদি নিয়ন্ত্রনের কাজে ব্যবহার করা যায়। এছাড়াও এটিকে একটি high power buffers হিসাবেও ব্যবহার করা যেতে পারে ।

Power Pins (VCC-GND)
মডিউলটিকে Power-Up করার জন্য লাল রঙের 4-Pin-Male Connector ব্যবহার করা হয়েছে । এই কানেক্টর এর VCC এবং GND পিনে 3V থেকে 20V ব্যবহার করে বোর্ডটিকে চালু করা যাবে । বোর্ড চালু হলে RED LED এর মাধ্যমে বোঝা যাবে ।
আমি এই Power Pins-কে Arduino-এর 5V পিনের সাথে কানেক্ট করছি ।

Motor Power (Vin )
যে ডিভাইসটি driver টির মাধ্যমে অপারেট করা হবে, তার ভোল্টের রেটিং অনুযায়ী এই Vin পিনে power দিতে হবে । আমি এখানে 24BYJ-48 মডেলের Stepper-Motor ব্যবহার করেছি । এই মোটরের অপারেটিং ভোল্টেজ 5V । তাই VCC এবং VIN পিনকে আমি Jumper দিয়ে short-circuit করে দিয়েছি।

Input Signal (IN1, IN2, IN3, IN4)
ইনপুট সিগন্যাল High হলে, Corresponding Output Pin (যেমন: C1, C2, C3, C4 ইত্যাদি) এবং COM পিন এর মধ্যে বিভব-পার্থক্য তৈরী হবে । অথাৎ current এর flow হবে । ফলে এই পিনদ্বয়ের মধ্যে থাকা Load একটিভেট হবে । যেমন Stepper Motor এর ক্ষেত্রে Corresponding coil-টি energized হবে ।

Output (COM, C1, C2, C3, C4)
মডিউলটি থেকে আউটপুট এর জন্য এখানে যথাক্রমে 5-Pin-White-JST  এবং 8-Pin-Yellow-Male-Connector এই ২ ধরণের connector ব্যবহার করা হয়েছে । যেখানে 5-Pin-White-JST-Connector-টিতে সরাসরি 24BYJ-48 মডেল এর Stepper Motor প্লাগ-এন্ড-প্লে করা যাবে । অন্য সকল মোটর এর জন্য একজন ব্যবহারকারী সরাসরি 8-Pin-Yellow-Male-Connector-টি ব্যবহার করতে পারবেন ।

Connection-Diagram

Arduino UNO

 

Stepper Motor Driver

+5V

⇐======⇒

VCC

GND

⇐======⇒

GND

+5V

⇐======⇒

VIN

8

⇐======⇒

IN1

9

⇐======⇒

IN2

10

⇐======⇒

IN3

11

IN4

এখন এখানে ক্লিক করে AccelStepper লাইব্রেরীটি ডাউনলোড করে নিন । এবং Arduino IDE টি ওপেন করে নিচের প্রোগ্রামটুকু টাইপ করুন ।

#include <AccelStepper.h>
 
// Motor pin definitions:
#define motorPin1  2      //IN1 on the Stepper Motor Driver 
#define motorPin2  3      //IN2 on the Stepper Motor Driver 
#define motorPin3  4      //IN3 on the Stepper Motor Driver 
#define motorPin4  5      //IN4 on the Stepper Motor Driver 
 
/*
 * 28BYJ-48 Stepper Motor Technical Specifications: 
 *          >> Rated Voltage: 5V DC 
 *          >> Number of Phases: 4 
 *          >> Stride Angle: 5.625°/64 
 *          >> Gear ratio is 64:1 (Exactly = 63.68395:1)   
 *          >> Approximately 4076 steps per full revolution (in half step mode).
 *          >> Pull in torque: 300 gf.cm 
 *          >> Insulated Power: 600VAC/1mA/1s 
 *          >> Coil: Unipolar 5 lead coil
 */
 
// Define the AccelStepper interface type; 4 wire motor in half step mode:
#define MotorInterfaceType 8 // FUNCTION = 0, DRIVER = 1, FULL2WIRE = 2, FULL3WIRE = 3, FULL4WIRE = 4, HALF3WIRE = 6, HALF4WIRE = 8
 
// Initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
 
void setup() 
{
  stepper.setMaxSpeed(1000); //Set the maximum steps per second. 
}
 
void loop() 
{
  StepperCW(1000); //StepperCW(motorSpeed);
  delay(2000); 
 
  StepperCCW(1000); //StepperCCW(motorSpeed);
  delay(2000); 
 
  StepperRevolutionCW(1000, 1); //StepperRevolutionCW(motorSpeed, motorRevolution);
  delay(2000); 
 
  StepperRevolutionCCW(1000, 1); //StepperRevolutionCCW(motorSpeed, motorRevolution);
  delay(2000); 
}
 
void StepperCW(uint16_t motorSpeed)
{
  stepper.setSpeed(motorSpeed);
  stepper.runSpeed();
}
 
void StepperCCW(uint16_t motorSpeed)
{
  int16_t _motorSpeed = (motorSpeed * (-1));
 
  stepper.setSpeed(_motorSpeed);
  stepper.runSpeed();
}
 
void StepperRevolutionCW(uint16_t motorSpeed, uint16_t motorRevolution)
{
  stepper.setCurrentPosition(0); //Set the current position to 0. 
 
  while (stepper.currentPosition() != (motorRevolution * 4096)) 
  {
    stepper.setSpeed(motorSpeed);
    stepper.runSpeed();
  }
}
 
void StepperRevolutionCCW(uint16_t motorSpeed, uint16_t motorRevolution)
{
  int16_t _motorSpeed = (motorSpeed * (-1));
  int16_t _motorRevolution = ((motorRevolution * 4096) * (-1));
 
  stepper.setCurrentPosition(0); //Set the current position to 0. 
 
  while (stepper.currentPosition() != _motorRevolution) 
  {
    stepper.setSpeed(_motorSpeed);
    stepper.runSpeed();
  }
}

ডাউনলোডকৃত AccelStepper-এর ZIP ফাইলটির লোকেশন (directory) দেখিয়ে দিন । এবার প্রোগ্রামটি Arduino UNO-তে আপলোড করুন ।

ব্যাস! কাজ শেষ । Let’s Enjoy !

Project Video

Fahim Reza

Research Engineer, TechShop Bangladesh

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.