કોડ શોધો

L298N મોટર ડ્રાઈવરનો ઉપયોગ કરીને 4-વાયર સ્ટેપર મોટરને નિયંત્રિત કરવું

L298N મોટર ડ્રાઈવરનો ઉપયોગ કરીને 4-વાયર સ્ટેપર મોટરને નિયંત્રિત કરવું

આ ટ્યુટોરિયલમાં, આપણે શીખીશું કે 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 ને Arduino પર પિન 11 સાથે જોડો. છેલ્લે, સ્ટેપર મોટરના વાયરને 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); // અડધી સેકન્ડ રાહ જુઓ
}

આ અંશ દર્શાવે છે કે મોટરને બંને દિશામાં ફેરવવા માટે કેવી રીતે નિયંત્રિત કરવી. સંપૂર્ણ કોડ તમારા સંદર્ભ માટે લેખની નીચે લોડ થાય છે.

પ્રદર્શન / શું અપેક્ષા રાખવી

એકવાર બધું યોગ્ય રીતે વાયર થઈ જાય અને કોડ અપલોડ થઈ જાય, તો તમારે સ્ટેપર મોટરને એક દિશામાં એક સંપૂર્ણ પરિભ્રમણ કરતી જોવી જોઈએ, ત્યારબાદ વિરુદ્ધ દિશામાં એક સંપૂર્ણ પરિભ્રમણ. વધુમાં, જો તમે ઝડપ નિયંત્રણ માટે પોટેન્શિયોમીટરનો સમાવેશ કરો છો, તો તેને સમાયોજિત કરવાથી મોટરની પરિભ્રમણ ગતિ બદલાશે. મોટરના પ્રવાહ પ્રત્યે સચેત રહો; જેમ જેમ તમે ઝડપ વધારશો, તેમ મોટર વધુ પ્રવાહ ખેંચી શકે છે, જે યોગ્ય રીતે સંચાલિત ન કરવામાં આવે તો ઓવરહિટીંગ તરફ દોરી શકે છે (વિડિયોમાં 09:45 પર).

જો મોટર અપેક્ષા મુજબ ફરતી નથી, તો વાયરિંગ તપાસો કે બધા જોડાણો સુરક્ષિત અને યોગ્ય રીતે દિશામાં છે. ઉપરાંત, ખાતરી કરો કે પાવર સપ્લાયનો વોલ્ટેજ તમારી સ્ટેપર મોટર માટે યોગ્ય છે.

વિડિયો સમયસ્ટેમ્પ્સ

  • 00:00 - પરિચય
  • 01:30 - વાયરિંગ સમજૂતી
  • 05:00 - કોડ ઝાંખી
  • 09:45 - મોટર નિયંત્રણનું પ્રદર્શન

છબીઓ

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);
}

તમને જોઈતી વસ્તુઓ

સંસાધનો અને સંદર્ભો

હજી સુધી કોઈ સંસાધનો નથી.

ફાઇલો📁

ડેટાશીટ (pdf)