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

[embed]https://youtu.be/6eFIhuKrwAY[/embed] ]]>

Fahim Reza
Fahim Reza

Research Engineer, TechShop Bangladesh

Leave a Reply

Your email address will not be published. Required fields are marked *

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