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-এর । এ সকল ফিচারের মধ্যে রয়েছে:
- Motor Speed Control (Acceleration)
- Motor Direction Control (Clockwise / Counter-Clockwise)
- Motor Step Control (Half-Stepping / Full-Stepping)
- Motor Revolution (angle of rotation) Control
- 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”