Module name : dual H bridge motor drive module
Work mode : H bridge drive (double road)
Main control chip : L298N
Packaging : electrostatic bag
Logical voltage : 5V
Drive voltage : 5v-35v
Logical current : 0mA-36mA
Driving current : 2A(MAX single bridge)
Storage temperature : - 20 ℃ to + 135 ℃
Maximum power : 25W
Weight : 30 g
Peripheral dimensions : 43*43*27mm
Product features:
L298N เป็นวงจรขับมอเตอร์ที่มีคุณสมบัติดังนี้:
- สามารถขับมอเตอร์ DC 2 ตัวพร้อมกันได้ หรือขับมอเตอร์ขนาดใหญ่ด้วยระบบ H-Bridge
- สามารถควบคุมทิศทางหมุนของมอเตอร์ไปข้างหน้าหรือถอยหลังได้
- มีระบบปกป้องการลัดวงจรและความร้อนสูงเกินพิกัด
- สามารถจ่ายกระแสให้มอเตอร์ได้สูงสุดประมาณ 2 แอมป์ต่อช่อง
- ใช้สัญญาณควบคุมแบบลอจิก พร้อมขั้วอินพุตและกราวด์สำหรับต่อกับไมโครคอนโทรลเลอร์
โมดูล L298N จึงเป็นโมดูลที่นิยมนำมาใช้ในการสร้างวงจรขับเคลื่อนระบบหุ่นยนต์ หรืออุปกรณ์ที่ต้องการควบคุมมอเตอร์ DC ขนาดเล็กถึงกลางค่อนข้างง่าย
This module USES L298N as the main drive chip, with strong driving ability, low heat and strong anti-interference ability.
Through this module can use the built-in 78 m05 drive power supply parts of their work, but in order to avoid the voltage regulator chip damage, when using the driving voltage is greater than 12 v, please use the external power supply 5 v logic.
This module USES a large capacity filter capacitance, a continuation protection diode, can improve reliability.
หมายเหตุ:
- เมื่อคุณจ่ายแรงดันขับ (ขั้วต่อ 12V เหนือโลโก้ สามารถรับช่วงแรงดันอินพุตได้ระหว่าง 7-12V) ในช่วง 7-12V จะสามารถจ่ายแรงดันไฟเลี้ยง 5V ให้กับวงจรลอจิกบนบอร์ดได้ เมื่อใช้ภายในบอร์ดจากแรงดันไฟเลี้ยง 5V แล้ว ที่ขั้วต่อ +5V ไม่จำเป็นต้องจ่ายแรงดันอินพุต แต่จะมีแรงดัน 5V ที่สามารถนำไปใช้ภายนอกได้
- เมื่อแรงดันขับสูงกว่า 12V แต่ไม่เกิน 24V (ตามคู่มือ ไอซีรองรับได้สูงสุด 35V แต่เพื่อความปลอดภัย ควรใช้ไม่เกิน 24V เช่นขับมอเตอร์แรงดันเรตติ้ง 18V) คุณต้องถอดจั๊มเปอร์แคปบนบอร์ดออกเพื่อตัดการจ่ายแรงดัน 5V ออกจากบอร์ด แล้วให้นำแรงดัน 5V เข้ามาจากภายนอกที่ขั้วต่อ 5V เอาต์พุต แรงดัน 5V จะถูกใช้เป็นสัญญาณควบคุมระดับ 5V เมื่อสัญญาณอินพุตมีผล และมีแรงดันจ่ายปกติในมอดูลขับมอเตอร์ มอดูลจะส่งกระแสให้มอเตอร์ หากไม่มีสัญญาณอินพุตถูกต้อง แม้จะมีแรงดันจ่ายปกติ ก็จะไม่มีกระแสออกจากมอดูล
แรงดัน 5V จะถูกนำมาจ่ายให้วงจรลอจิกควบคุมภายใน L298N (นี่เป็นการใช้งานในกรณีพิเศษสำหรับแรงดันสูงกว่าปกติ)
Notes:
1. When you are driving voltage (above logo for the 12 v input, can actually accept input range is 7 to 12 v) for 7 v to 12 v, can make to onboard power supply 5 v logic, when using the onboard after 5 v power supply, interface of + 5 v
The power supply does not input voltage, but can yield 5V voltage for external use.
2. When the driving voltage is higher than 12V, it is less than or equal to 24V
(the chip manual proposes to support 35V, but according to the book
When the maximum voltage is applied to the maximum voltage of 298 conservative applications to 24V, for example, the motor with a rated voltage of 18V shall be driven.
You must first remove the board 5V output to enable the jumper cap. Then 5V is accessed outside the 5V output port
The 5V enables the power to be a control signal with a level of 5V. When the signal input is valid, and when the power supply is normal in the motor drive module, the motor drive module outputs the current. Otherwise, even if the power supply is normal, there is no current on the motor.
Voltage to L298N internal logic circuit power supply. (this is a high-pressure, unconventional app!)





โคดตัวอย่าง
// กำหนดขาที่ใช้ควบคุมมอเตอร์ผ่าน L298N
// ขาควบคุมความเร็ว (PWM)
const int ENA = 9; // ขา PWM สำหรับมอเตอร์ A
const int ENB = 10; // ขา PWM สำหรับมอเตอร์ B
// ขาควบคุมทิศทาง
const int IN1 = 2; // ขาควบคุมทิศทางที่ 1 สำหรับมอเตอร์ A
const int IN2 = 3; // ขาควบคุมทิศทางที่ 2 สำหรับมอเตอร์ A
const int IN3 = 4; // ขาควบคุมทิศทางที่ 1 สำหรับมอเตอร์ B
const int IN4 = 5; // ขาควบคุมทิศทางที่ 2 สำหรับมอเตอร์ B
void setup() {
// กำหนดขาทั้งหมดเป็น OUTPUT
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// เริ่มต้นโดยหยุดมอเตอร์ทั้งสองตัว
motorStop();
}
void loop() {
// สาธิต 1: เดินหน้าด้วยความเร็วค่อยๆ เพิ่มขึ้น
for (int speed = 50; speed <= 255; speed += 20) {
forward(speed);
delay(500);
}
// หยุดสักครู่
motorStop();
delay(1000);
// สาธิต 2: เดินหน้าด้วยความเร็วค่อยๆ ลดลง
for (int speed = 255; speed >= 50; speed -= 20) {
forward(speed);
delay(500);
}
// หยุดสักครู่
motorStop();
delay(1000);
// สาธิต 3: เลี้ยวซ้ายและขวาด้วยความเร็วต่างๆ
// เลี้ยวซ้ายด้วยความเร็วต่ำ
turnLeft(100);
delay(1000);
// เลี้ยวซ้ายด้วยความเร็วสูง
turnLeft(255);
delay(1000);
// หยุดสักครู่
motorStop();
delay(500);
// เลี้ยวขวาด้วยความเร็วต่ำ
turnRight(100);
delay(1000);
// เลี้ยวขวาด้วยความเร็วสูง
turnRight(255);
delay(1000);
// หยุดสักครู่
motorStop();
delay(1000);
// สาธิต 4: ถอยหลังด้วยความเร็วแตกต่างกันระหว่างล้อซ้ายและขวา (หมุนเป็นวงกลม)
// ล้อซ้ายเร็วกว่าล้อขวา
backwardDifferentSpeeds(200, 100);
delay(2000);
// ล้อขวาเร็วกว่าล้อซ้าย
backwardDifferentSpeeds(100, 200);
delay(2000);
// หยุดสักครู่
motorStop();
delay(1000);
}
// ฟังก์ชันควบคุมมอเตอร์เดินหน้าด้วยความเร็วที่กำหนด
void forward(int speed) {
// มอเตอร์ A เดินหน้า
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, speed); // ความเร็ว 0-255
// มอเตอร์ B เดินหน้า
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, speed); // ความเร็ว 0-255
}
// ฟังก์ชันควบคุมมอเตอร์ถอยหลังด้วยความเร็วที่กำหนด
void backward(int speed) {
// มอเตอร์ A ถอยหลัง
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, speed);
// มอเตอร์ B ถอยหลัง
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENB, speed);
}
// ฟังก์ชันควบคุมมอเตอร์ถอยหลังด้วยความเร็วที่แตกต่างกันระหว่างล้อซ้ายและขวา
void backwardDifferentSpeeds(int speedA, int speedB) {
// มอเตอร์ A ถอยหลัง
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, speedA);
// มอเตอร์ B ถอยหลัง
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENB, speedB);
}
// ฟังก์ชันควบคุมมอเตอร์เลี้ยวซ้ายด้วยความเร็วที่กำหนด
void turnLeft(int speed) {
// มอเตอร์ A หยุด
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
// มอเตอร์ B เดินหน้า
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, speed);
}
// ฟังก์ชันควบคุมมอเตอร์เลี้ยวขวาด้วยความเร็วที่กำหนด
void turnRight(int speed) {
// มอเตอร์ A เดินหน้า
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, speed);
// มอเตอร์ B หยุด
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENB, 0);
}
// ฟังก์ชันหยุดมอเตอร์ทั้งสองตัว
void motorStop() {
// หยุดมอเตอร์ A
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
// หยุดมอเตอร์ B
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENB, 0);
}
โค้ดนี้จะแสดงการทำงานดังนี้:
สาธิตที่ 1: เดินหน้าด้วยความเร็วที่ค่อยๆ เพิ่มขึ้น
เริ่มจากความเร็วต่ำ (50) และเพิ่มขึ้นทีละ 20 จนถึงความเร็วสูงสุด (255)
หยุดทุกๆ 0.5 วินาทีเพื่อให้เห็นการเปลี่ยนแปลงของความเร็ว
สาธิตที่ 2: เดินหน้าด้วยความเร็วที่ค่อยๆ ลดลง
เริ่มจากความเร็วสูงสุด (255) และลดลงทีละ 20 จนถึงความเร็วต่ำ (50)
สาธิตที่ 3: การเลี้ยวซ้ายและขวาด้วยความเร็วต่างๆ
เลี้ยวซ้ายด้วยความเร็วต่ำ (100) และความเร็วสูง (255)
เลี้ยวขวาด้วยความเร็วต่ำ (100) และความเร็วสูง (255)
สาธิตที่ 4: ถอยหลังด้วยความเร็วที่แตกต่างกันระหว่างล้อซ้ายและล้อขวา
ล้อซ้าย (มอเตอร์ A) เร็วกว่าล้อขวา (มอเตอร์ B) ทำให้หมุนเป็นวงกลมในทิศทางหนึ่ง
ล้อขวา (มอเตอร์ B) เร็วกว่าล้อซ้าย (มอเตอร์ A) ทำให้หมุนเป็นวงกลมในทิศทางตรงข้าม