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

Bipolar Stepper Motor-এ প্রতিটি phase-এর জন্য একটি মাত্র winding থাকে । যেখানে কোন common-winding নাই । তাই মোটরের rotation continue করতে প্রয়োজন হবে magnetic pole-এর দিক পরিবর্তনের । অর্থাৎ winding-এর মধ্যদিয়ে প্রবাহিত কারেন্টর দিক পরিবর্তন করতে হবে । আর তাই Stepper Motor Driver-এর চেয়ে Bipolar Stepper Motor Driver-টি একটু তুলনামূলক complex ।

তবে চিন্তার কিছু নেই । কারণ আমরা developed করেছি এমন একটি Bipolar Stepper Motor Driver, যা এই complexity-কে ততটাই সহজ করে দিয়েছে । প্রাথমিক ভাবে operation-এর জন্য একজন ব্যবহারকারীর প্রয়োজন হবে না কোন মাইক্রোকন্ট্রোলার ব্যবহারের । শুধুমাত্র Bipolar Stepper Motor-টি এই মোটর ড্রাইভারটির সঙ্গে জুড়ে দিলেই কাজ শেষ । এবার শুধু push-switch টি অন/অফ করতে হবে । সুইচটি যত দ্রুত অন/অফ করবেন, মোটরের speed ততই বাড়বে ।

তবে ড্রাইভারটি সকল ফিচার উপভোগ করতে হলে, প্রয়োজন হবে আরো বেশ কিছু switch-এর । এ সকল ফিচারের মধ্যে রয়েছে:

  1. Motor Speed Control (Acceleration)
  2. Motor Direction Control (Clockwise / Counter-Clockwise)
  3. Motor Step Control (Half-Stepping / Full-Stepping)
  4. Motor Revolution (angle of rotation) Control
  5. Sleep Mode
ফিচার গুলো সম্পর্কে বিস্তারিত জানতে হলে L297 এর datasheet পড়ুন ।

কিন্তু এত বেশি switch-এর ব্যবহার এবং এদের manual control system সম্পূর্ণ operation-কে আরো বেশি complex করে তুলবে । তাই এক্ষেত্রে Micro-Controller ব্যবহার করাই শ্রেয় । আমি এখানে আপনাদের সুবিধার জন্য Arduino UNO-এর সাথে এই Bipolar Stepper Motor Driver এর interfacing করে দেখাবো।

এখানে যেসব feature আপনার প্রয়োজন  নেই, সেই কানেকশন গুলো চাইলে আপনি ignore করতে পারেন ।

যা যা লাগবে

SR. No. Component Name Quantity Link
1 Bipolar Stepper Motor Driver 1 Buy
2 Nema17 Stepper Motor 1 Buy
3 Arduino Uno R3 (China) 1 Buy
4 Male To Female Jumper Wire – Single 6 Buy
5 Male To Male Jumper Wire – Single 2 Buy

কানেকশন ডায়াগ্রাম

প্রোগ্রাম

#define stepper_hf_pin 8
#define stepper_clk_pin 9
#define stepper_cw_pin 10
#define stepper_EN_pin 11

boolean cw = 0;
boolean ccw = 1;
boolean full_step = 0;
boolean half_step = 1;
boolean sleep = 0;
uint8_t m_acceleration = 1;

uint8_t step_per_rotation = 200; //Step angle: 1.8°, 360/1.8=200 


void setup()
{
  pinMode(stepper_cw_pin, OUTPUT);
  pinMode(stepper_clk_pin, OUTPUT);
  pinMode(stepper_hf_pin, OUTPUT);
  pinMode(stepper_EN_pin, OUTPUT);

  Serial.begin(9600);
}

void loop()
{
  if(Serial.available() > 0)
  {
    String data = Serial.readString();
    int value = data.toInt();
    Serial.println(value);
    stepper_motor(full_step,100,cw,value); //step_type, motor_acceleration, motor_direction, motor_revolution 
  }
  stepper_motor_sleep();
}


void stepper_motor (uint8_t m_step, uint8_t m_acceleration, boolean m_direction, uint8_t m_revolution)
{
  digitalWrite(stepper_EN_pin, HIGH);
  
  for(int i=1; i<=(step_per_rotation*m_revolution); i++)
  {
    digitalWrite(stepper_cw_pin, m_direction);
    digitalWrite(stepper_hf_pin, m_step);
    
    digitalWrite(stepper_clk_pin, HIGH);
    delay(101-m_acceleration);

    digitalWrite(stepper_clk_pin, LOW);
    delay(101-m_acceleration);
  }
}

void stepper_motor_sleep(void)
{
  digitalWrite(stepper_EN_pin, LOW);
}

প্রোগ্রামটি Arduino UNO-তে আপলোড করুন এবং Serial Monitor ওপেন করে, মোটরটি কে কতটুকু ঘোরাতে চাইছেন তা টাইপ করে Enter দিন । এছাড়াও আপনি চাইলে stepper_motor(full_step,100,cw,value) এই ফাংশন এর parameter গুলোর মান পরিবর্তন করে যথাক্রমে Step, Acceleration, Direction ও পরিবর্তন করতে পারবেন । 

যেমন:
  • Half Step = stepper_motor(half_step,100,cw,value)—————————- half_step / full_step
  • Decreasing Speed = stepper_motor(half_step,100,cw,value) ——————- 1 to 100 
  • Direction Control = stepper_motor(half_step,100,cw,value) ——————- cw / ccw 
  • Number of Revolution = stepper_motor(half_step,100,cw,value) ————- “Input the number of rotation you want” 

ভিডিও

[embed]https://youtu.be/B8geeU6eVRI[/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.