Sử dụng module điều khiển động cơ L298 với Arduino để điều khiển xe mô hình

Bài này sẽ hướng dẫn các bạn làm một cái xe mô hình điều khiển. 

Chúng ta sẽ làm một cái xe mô hình 3 bánh đơn giản nhất, chạy tự động theo một chương trình, không có cảm biến, không cần điều khiển từ xa. Sau khi chúng ta làm quen được với các điều khiển cơ bản chúng ta sẽ nâng cấp dần cho chiếc oto này. Như nó có thể điều khiển được bằng điện thoại, tự động tránh vật cản hay dò đường...

Những thứ chính cần chuẩn bị:

- Kit Arduino Uno R3

- Module điều khiển động cơ L298

- Khung xe mô hình 3 bánh

- Dây nối

- 4 Pin tiểu 1.5V

Kết nối nguồn và Arduino với module L298:

- Chân VCC của module L298 nối với cực dương của hộp pin (6VDC)

- GND của module L298 nối với cực âm của hộp pin (0VDC)

- OUT1, OUT2  kết nối với động cơ B bên phải của xe mô hình

- OUT3, OUT4  kết nối với động cơ A bên trái của xe mô hình

- IN1 nối với chân số  2  của Arduino (Tín hiệu logic cấp đến IN1, IN2 dùng để điều khiển hướng quay của động cơ B)

- IN2 nối với chân số  3  của Arduino

- IN3 nối với chân số  4  của Arduino  (Tín hiệu logic cấp đến  IN3, IN4 dùng để điều khiển hướng quay của động cơ A)

- IN4 nối với chân số  5  của Arduino

- ENA nối với chân số 9 của Arduino  (ENA, ENB lấy tín hiệu PWM từ chân số 9 và số 10 của Arduino để điều khiển tốc độ động cơ)

- ENB nối với chân số 10 của Arduino

- Để cấp nguồn cho Arduino, sau khi đã nạp chương trình xong ta có thể lấy nguồn từ chân '5V' và 'GND' trên module L298 cấp cho Arduino. Cấn lưu ý không được cắm ngược nguồn.

Viết chương trình:

// Declare L298N Dual H-Bridge Motor Controller directly since there is not a library to load.
 
// Motor 1
int dir1PinA = 2;
int dir2PinA = 3;
int speedPinA = 9; // Needs to be a PWM pin to be able to control motor speed
 
// Motor 2
int dir1PinB = 4;
int dir2PinB = 5;
int speedPinB = 10; // Needs to be a PWM pin to be able to control motor speed
 
void setup() {  // Setup runs once per reset
// initialize serial communication @ 9600 baud:
Serial.begin(9600);
 
//Define L298N Dual H-Bridge Motor Controller Pins
 
pinMode(dir1PinA,OUTPUT);
pinMode(dir2PinA,OUTPUT);
pinMode(speedPinA,OUTPUT);
pinMode(dir1PinB,OUTPUT);
pinMode(dir2PinB,OUTPUT);
pinMode(speedPinB,OUTPUT);
 
}
 
void loop() {
// Cho xe tiến trong 2 giay >> 2 bánh quay về phía trước, cùng tốc độ 
analogWrite(speedPinA, 127);//Đặt tốc độ motor A thông qua PWM, các chỉ số đặt từ 0-255 tương ứng với tốc độ từ 0 đến Max 
                            //Để tiết kiệm pin nên đặt chỉ số <=127 
digitalWrite(dir1PinA, HIGH); // Điều khiển động cơ A quay tiến về phía trước
digitalWrite(dir2PinA, LOW);  //Nếu không quay theo đúng chiều ta đảo 2 dây motor ở 2 chân OUT1, OUT2
 
analogWrite(speedPinB, 127);  //Đặt tốc độ motor B thông qua PWM, các chỉ số đặt từ 0-255 tương ứng với tốc độ từ 0 đến Max  
digitalWrite(dir1PinB, HIGH); // Điều khiển động cơ B quay tiến về phía trước
digitalWrite(dir2PinB, LOW);  //Nếu không quay theo đúng chiều ta đảo 2 dây motor ở 2 chân OUT3, OUT4
delay(2000);
 
// Cho xe lùi trong 2 giây >> cần điều khiển 2 bánh quay lùi về sau,  cùng tốc độ 
analogWrite(speedPinA, 127);
digitalWrite(dir1PinA, LOW);   // Điều khiển động cơ A quay lùi về sau
digitalWrite(dir2PinA, HIGH);  //
 
analogWrite(speedPinB, 127);
digitalWrite(dir1PinB, LOW);   // Điều khiển động cơ B quay lùi về sau
digitalWrite(dir2PinB, HIGH);
delay(2000);
 
// Cho xe quay tròn ngược chiều kim đồng hồ>> cần điều khiển bánh bên phải(động cơ B)tiến về phía trước, bánh xe bên trái (động cơ A)lùi về phía sau, cùng tốc độ
analogWrite(speedPinA, 127);
digitalWrite(dir1PinA, LOW);   // Điều khiển động cơ A quay lùi về sau
digitalWrite(dir2PinA, HIGH);  //
 
analogWrite(speedPinB, 127);
digitalWrite(dir1PinB, HIGH);   // Điều khiển động cơ B tiến về phía trước
digitalWrite(dir2PinB, LOW);
delay(2000);
 
// Cho xe quay tròn thuận chiều kim đồng hồ>> cần điều khiển bánh bên phải(động cơ B) lùi về phía sau, bánh xe bên trái (động cơ A)tiến về phía trước, cùng tốc độ
analogWrite(speedPinA, 127);
digitalWrite(dir1PinA, LOW);   // Điều khiển động cơ A quay lùi về sau
digitalWrite(dir2PinA, HIGH);  //
 
analogWrite(speedPinB, 127);
digitalWrite(dir1PinB, HIGH);   // Điều khiển động cơ B tiến về phía trước
digitalWrite(dir2PinB, LOW);
delay(2000);
 
 
}

Nạp chương trình và chạy thử:

Sau khi nạp chương trình xong, cấp nguồn 5VDC từ module L298 cho Arduino vào 2 chân 5V và GND >> bấm nút S1 trên module L298 để cho xe chạy thử

Video :

 http://mlab.vn/(Phạm Tuấn Anh - MLAB )

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: