የL298N ሞተር ነጂን በመጠቀም ባለ 4-ሽቦ እርምጃ ሞተርን ለመቆጣጠር
በዚህ ትምህርት ውስጥ፣ የL298N ሞተር ሾፌርን ከአርዱኖ ጋር በማጣመር ባለ 4-ሽቦ ስቴፐር ሞተርን እንዴት መቆጣጠር እንደምንችል እንመረምራለን። L298N ሁለገብ ባለ ሁለት H-bridge ሾፌር ሲሆን የስቴፐር ሞተሮችን አቅጣጫ እና ፍጥነት በብቃት እንድንቆጣጠር ያስችለናል። በዚህ መመሪያ መጨረሻ ላይ፣ የስቴፐር ሞተሩን በሁለቱም አቅጣጫዎች የሚያሽከረክር እና ፖቴንሽዮሜትር በመጠቀም ፍጥነቱን የሚቆጣጠር የሚሰራ ዝግጅት ይኖርዎታል።


ሂደቱን በተሻለ ለመረዳት እንዲረዳዎት፣ የሽቦ አያያዥን እና ኮድን የሚያሳይ ተጓዳኝ ቪዲዮ እንዲመለከቱ እመክራለሁ (በቪዲዮው 01:30 ላይ)።
ሃርድዌር ተብራርቷል
የL298N ሞተር ሾፌር ሞተሮችን ወደፊት እና ወደ ኋላ አቅጣጫዎች እንዲሽከረከሩ በማድረግ ለመቆጣጠር የተነደፈ ነው። የH-bridge ውቅር ይጠቀማል፣ ይህም ማለት በሞተሩ ላይ የሚተገበረውን የቮልቴጅ ፖላሪቲ መቀየር ይችላል፣ በዚህም አቅጣጫውን ይቀልሳል። ይህ ሾፌር እስከ 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 ጋር መገናኘታቸውን ያረጋግጡ። - ከፍተኛ ጅረት ላላቸው አፕሊኬሽኖች ከመጠን በላይ ሙቀትን ለመከላከል በቂ የሙቀት መስጫ ይጠቀሙ።
- በአርዱኖ እና በሞተር ሾፌሩ መካከል የጋራ መሬት ይጠብቁ።
- ሞተሩን ወይም ሾፌሩን ከመጉዳት ለመቆጠብ የሽቦ ፖላሪቲን በጥንቃቄ ይያዙ።
- ጫጫታን ለማጣራት በኃይል ፒኖች አጠገብ የዲኮፕሊንግ ካፓሲተሮችን ይጠቀሙ።
- ለተሻለ አፈጻጸም በሞተር ዝርዝሮች ላይ በመመስረት የPWM ድግግሞሽን ያስተካክሉ።
የሽቦ አያያዥ መመሪያዎች

የL298N ሞተር ሾፌሩን ከአርዱኖ እና ከስቴፐር ሞተሩ ጋር ለማገናኘት፣ የኃይል አቅርቦቱን በማገናኘት ይጀምሩ። በL298N ላይ ያለውን VIN ፒን ከ12V የኃይል ምንጭዎ ጋር ያገናኙ። በመቀጠል፣ በL298N ላይ ያለውን GND ፒን ከኃይል አቅርቦትዎ መሬት እና እንዲሁም ከአርዱኖ መሬት ጋር ያገናኙ።
አሁን፣ ለቁጥጥር ፒኖቹ፣ ENAን በአርዱኖ ላይ ካለው ፒን 2 እና ENBን ከፒን 3 ጋር ያገናኙ። በመቀጠል፣ IN1ን ከፒን 8፣ IN2ን ከፒን 9፣ IN3ን ከፒን 10 እና IN4ን በአርዱኖ ላይ ካለው ፒን 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 - የሞተር ቁጥጥር ማሳያ
/*
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);
}
/*
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)
-
Datashet for L298N Dual H-bridge motor driver
robojax_L298N datasheet.pdf0.18 MB