কোড অনুসন্ধান

L298N মোটর ড্রাইভার ব্যবহার করে একটি ৪-তারের স্টেপার মোটর নিয়ন্ত্রণ করা

L298N মোটর ড্রাইভার ব্যবহার করে একটি ৪-তারের স্টেপার মোটর নিয়ন্ত্রণ করা

এই টিউটোরিয়ালে, আমরা শিখব কীভাবে L298N মোটর ড্রাইভার এবং Arduino ব্যবহার করে একটি 4-তারের স্টেপার মোটর নিয়ন্ত্রণ করা যায়। L298N একটি বহুমুখী ডুয়াল H-ব্রিজ ড্রাইভার যা আমাদের স্টেপার মোটরের দিক এবং গতি কার্যকরভাবে নিয়ন্ত্রণ করতে দেয়। এই গাইডের শেষে, আপনার একটি কার্যকরী সেটআপ থাকবে যা স্টেপার মোটরকে উভয় দিকে ঘোরাতে পারে এবং একটি পটেনশিওমিটার ব্যবহার করে এর গতি নিয়ন্ত্রণ করতে পারে।

L298N motor driver (yellow connector)

প্রক্রিয়াটি আরও ভালোভাবে বুঝতে, আমি সংশ্লিষ্ট ভিডিওটি দেখার পরামর্শ দিচ্ছি, যা ওয়্যারিং এবং কোডিংয়ের একটি ভিজ্যুয়াল প্রদর্শন প্রদান করে (ভিডিওতে 01:30 সময়ে)।

হার্ডওয়্যার ব্যাখ্যা

L298N মোটর ড্রাইভারটি মোটর নিয়ন্ত্রণের জন্য ডিজাইন করা হয়েছে যাতে আপনি সেগুলিকে সামনে এবং পিছনে উভয় দিকে চালাতে পারেন। এটি একটি H-ব্রিজ কনফিগারেশন ব্যবহার করে, যার অর্থ এটি মোটরে প্রয়োগ করা ভোল্টেজের পোলারিটি পরিবর্তন করতে পারে, ফলে এর দিক বিপরীত হয়। এই ড্রাইভারটি 46V পর্যন্ত সরবরাহ ভোল্টেজ এবং প্রতি চ্যানেলে 2A ক্রমাগত কারেন্ট পরিচালনা করতে পারে, যা অনেক অ্যাপ্লিকেশনের জন্য উপযুক্ত।

আমাদের সেটআপে, আমরা স্টেপার মোটর পরিচালনার জন্য চারটি নিয়ন্ত্রণ পিন ব্যবহার করব। মূল পিনগুলি হল ENA এবং ENB, যা ড্রাইভার সক্রিয় করতে HIGH (5V) এ সেট করতে হবে। পিন IN1, IN2, IN3, এবং IN4 মোটরের ওয়াইন্ডিং অবস্থা নিয়ন্ত্রণ করবে, যা এটিকে কাঙ্ক্ষিত দিকে ধাপ করতে দেয়।

ডেটাশিট বিবরণ

নির্মাতাSTMicroelectronics
পার্ট নম্বরL298N
লজিক/IO ভোল্টেজ5 V
সরবরাহ ভোল্টেজ5–46 V (VS)
আউটপুট কারেন্ট (প্রতি চ্যানেল)2 A সর্বোচ্চ/চ্যানেল (ক্রমাগত)
পিক কারেন্ট (প্রতি চ্যানেল)3 A সর্বোচ্চ
PWM ফ্রিকোয়েন্সি নির্দেশিকা1 kHz থেকে 20 kHz
ইনপুট লজিক থ্রেশহোল্ড0.8 V (নিম্ন), 2.0 V (উচ্চ)
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন1.5 V সর্বোচ্চ
থার্মাল সীমা150 °C সর্বোচ্চ
প্যাকেজDIP-15
নোট / ভেরিয়েন্টফ্ল্যাট সংস্করণেও উপলব্ধ (L298P)

  • সঠিক অপারেশনের জন্য ENA এবং ENB 5V এর সাথে সংযুক্ত আছে তা নিশ্চিত করুন।
  • উচ্চ-কারেন্ট অ্যাপ্লিকেশনের জন্য অতিরিক্ত গরম প্রতিরোধ করতে পর্যাপ্ত হিট সিংক ব্যবহার করুন।
  • Arduino এবং মোটর ড্রাইভারের মধ্যে সাধারণ গ্রাউন্ড বজায় রাখুন।
  • মোটর বা ড্রাইভারের ক্ষতি এড়াতে ওয়্যারিং পোলারিটি সম্পর্কে সতর্ক থাকুন।
  • শব্দ ফিল্টার করতে পাওয়ার পিনের কাছে ডিকপলিং ক্যাপাসিটর প্রয়োগ করুন।
  • সর্বোত্তম কর্মক্ষমতার জন্য মোটর স্পেসিফিকেশনের উপর ভিত্তি করে PWM ফ্রিকোয়েন্সি সামঞ্জস্য করুন।

ওয়্যারিং নির্দেশাবলী

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)

L298N মোটর ড্রাইভারকে Arduino এবং স্টেপার মোটরের সাথে ওয়্যার করতে, পাওয়ার সাপ্লাই সংযোগ করে শুরু করুন। L298N এর VIN পিনটি আপনার 12V পাওয়ার উৎসের সাথে সংযুক্ত করুন। এরপর, L298N এর GND পিনটি আপনার পাওয়ার সাপ্লাইয়ের গ্রাউন্ড এবং Arduino গ্রাউন্ডের সাথে সংযুক্ত করুন।

এখন, নিয়ন্ত্রণ পিনগুলির জন্য, ENA Arduino এর পিন 2 এর সাথে এবং ENB পিন 3 এর সাথে সংযুক্ত করুন। এরপর, IN1 পিন 8 এর সাথে, IN2 পিন 9 এর সাথে, IN3 পিন 10 এর সাথে এবং IN4 পিন 11 এর সাথে Arduino তে সংযুক্ত করুন। অবশেষে, স্টেপার মোটরের তারগুলি L298N এর আউটপুট টার্মিনালের সাথে সংযুক্ত করুন। নিশ্চিত করুন যে মোটরের দুটি জোড়া তার সঠিকভাবে আউটপুটগুলির সাথে সংযুক্ত আছে।

কোড উদাহরণ ও ওয়াকথ্রু

কোডে, আমরা প্রথমে স্টেপার মোটর নিয়ন্ত্রণ সহজ করতে Stepper.h লাইব্রেরি অন্তর্ভুক্ত করি। আমরা প্রতি বিপ্লবে মোট ধাপের সংখ্যা সংজ্ঞায়িত করি, যা সঠিক চলাচলের জন্য অত্যন্ত গুরুত্বপূর্ণ। কোডের মূল শনাক্তকারীগুলির মধ্যে রয়েছে stepsPerRevolution, যা একটি সম্পূর্ণ ঘূর্ণনের জন্য প্রয়োজনীয় ধাপের সংখ্যা নির্ধারণ করে, এবং myStepper, যা নির্দিষ্ট পিনগুলির সাথে স্টেপার অবজেক্টটি আরম্ভ করে।

const int stepsPerRevolution = 200;  // প্রতি বিপ্লবে ধাপের সংখ্যা অনুযায়ী এটি পরিবর্তন করুন
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // স্টেপার লাইব্রেরি আরম্ভ করুন

এই অংশটি উপযুক্ত পিনগুলির সাথে স্টেপার মোটর আরম্ভ করে। setup() ফাংশনে, আমরা মোটরের গতি নির্ধারণ করি এবং পিন 2 এবং 3 HIGH করে ড্রাইভার সক্রিয় করি।

void setup() {
  myStepper.setSpeed(300); // গতি 60 rpm এ সেট করুন
  pinMode(2,OUTPUT); // EN1 এর জন্য
  digitalWrite(2,HIGH); // EN1 সক্রিয় করুন
  pinMode(3,OUTPUT); // EN2 এর জন্য
  digitalWrite(3,HIGH); // EN2 সক্রিয় করুন
}

loop() ফাংশনে, মোটরটি ঘড়ির কাঁটার দিকে এবং বিপরীত দিকে এক বিপ্লব ধাপ করে এবং মাঝে বিলম্ব থাকে। এটি আপনাকে মোটরের অপারেশন পর্যবেক্ষণ করতে দেয়।

void loop() {
  myStepper.step(stepsPerRevolution); // এক দিকে এক বিপ্লব ধাপ করুন
  delay(500); // আধা সেকেন্ড অপেক্ষা করুন
  myStepper.step(-stepsPerRevolution); // অন্য দিকে এক বিপ্লব ধাপ করুন
  delay(500); // আধা সেকেন্ড অপেক্ষা করুন
}

এই অংশটি দেখায় কীভাবে মোটরকে উভয় দিকে ঘোরাতে নিয়ন্ত্রণ করা যায়। সম্পূর্ণ কোডটি আপনার রেফারেন্সের জন্য নিবন্ধের নীচে লোড হয়।

প্রদর্শন / কী আশা করবেন

একবার সবকিছু সঠিকভাবে সংযুক্ত হয়ে গেলে এবং কোড আপলোড করা হলে, আপনার স্টেপার মোটরটি এক দিকে একটি সম্পূর্ণ ঘূর্ণন এবং তারপর বিপরীত দিকে একটি সম্পূর্ণ ঘূর্ণন করতে দেখা উচিত। অতিরিক্তভাবে, যদি আপনি গতি নিয়ন্ত্রণের জন্য পটেনশিওমিটার অন্তর্ভুক্ত করেন, তবে এটি সামঞ্জস্য করলে মোটরের ঘূর্ণন গতি পরিবর্তিত হবে। মোটরের কারেন্ট সম্পর্কে সতর্ক থাকুন; গতি বাড়ানোর সাথে সাথে মোটর বেশি কারেন্ট টানতে পারে, যা সঠিকভাবে পরিচালনা না করলে অতিরিক্ত গরম হতে পারে (ভিডিওতে ০৯:৪৫ মিনিটে)।

যদি মোটরটি প্রত্যাশা অনুযায়ী ঘোরে না, তবে তারের সংযোগ পরীক্ষা করুন যাতে নিশ্চিত হন যে সব সংযোগ নিরাপদ এবং সঠিকভাবে নির্দেশিত। এছাড়াও, নিশ্চিত করুন যে পাওয়ার সাপ্লাইয়ের ভোল্টেজ আপনার স্টেপার মোটরের জন্য উপযুক্ত।

ভিডিও টাইমস্ট্যাম্প

  • ০০:০০ - ভূমিকা
  • ০১:৩০ - তারের সংযোগের ব্যাখ্যা
  • ০৫:০০ - কোডের ওভারভিউ
  • ০৯:৪৫ - মোটর নিয়ন্ত্রণের প্রদর্শন

ছবি

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
Nema17_stpper_motor-1
Nema17_stpper_motor-1
Nema17_stpper_motor-2
Nema17_stpper_motor-2
94-Code for One Revolution
ভাষা: C++
/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada

 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  // initialize the serial port:
  Serial.begin(9600);
  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

// L298N for Robojax.com 
  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
95-Code for rotating a stepper motor one step at a time
ভাষা: C++
/*
 Stepper Motor Control - one step at a time

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor will step one step at a time, very slowly. You can use this to
 test that you've got the four wires of your stepper wired to the correct
 pins. If wired correctly, all steps should be in the same direction.

 Use this also to count the number of steps per revolution of your motor,
 if you don't know it. Then plug that number into the oneRevolution
 example to see if you got it right.

 Created 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
  // initialize the serial port:
  Serial.begin(9600);

  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}  


void loop() {
  // step one step:
    // L298N for Robojax.com 
  myStepper.step(-1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(200);
}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

ডেটাশিট (পিডিএফ)