Cách dùng Module L298N để điều khiển 4 động cơ DC

Trên cộng đồng đã có nhiều bài viết về động cơ, nhưng chưa có bài viết nào nói về cách để điều khiển cùng 1 lúc 4 động cơ mà chỉ dùng 1 module L298N. Nên hôm nay mình sẽ chia sẻ về cách để điều khiển cùng lúc 4 động cơ trên 1 module L298N.

Bắt đầu thôi!

1. Phần cứng

2. Sơ đồ nối mạch

Chú ý nối dây các động cơ đúng như hướng dẫn trong hình. hehe

3. Code để điều khiển

//Thiết đặt các chân động cơ
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
//Thiết đặt các thông số
#define MAX_SPEED 255 //từ 0-255
#define MIN_SPEED 0
void setup()
{
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
}
 
void motor_1_Dung() {
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
}
 
void motor_2_Dung() {
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
}
 
void motor_1_Tien(int speed) { //speed: từ 0 - MAX_SPEED
    speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
    digitalWrite(IN1, HIGH);// chân này không có PWM
    analogWrite(IN2, 255 - speed);
}
 
void motor_1_Lui(int speed) {
    speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
    digitalWrite(IN1, LOW);// chân này không có PWM
    analogWrite(IN2, speed);
}
 
void motor_2_Tien(int speed) { //speed: từ 0 - MAX_SPEED
    speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
    analogWrite(IN3, speed);
    digitalWrite(IN4, LOW);// chân này không có PWM
}
 
void motor_2_Lui(int speed) {
    speed = constrain(speed, MIN_SPEED, MAX_SPEED);//đảm báo giá trị nằm trong một khoảng từ 0 - MAX_SPEED - http://arduino.vn/reference/constrain
    analogWrite(IN4, 255 - speed);
    digitalWrite(IN3, HIGH);// chân này không có PWM
}
 
void loop()
{
    motor_1_Tien(MAX_SPEED); // motor 1 tiến
    delay(5000);//tiến 5 s
    motor_2_Lui(MAX_SPEED); //motor 2 lùi
    // motor 1 vẫn tiến
    delay(2000);//tiến 2 s
    motor_1_Dung();
    motor_2_Dung();
    delay(10000);//dừng 10s
}

4. Lời kết

Cảm ơn các bạn đã quan tâm. Chúc các bạn thành công hehe!!

Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
25 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 thành viên đã đánh giá bài viết này hữu ích.