Qua chuỗi bài học này, mục tiêu cuối cùng của ta là lắp được mạch điều khiển và lập trình được một chiếc xe robot dò line. Như vậy, để xe có thể di chuyển được thì phải có động cơ phải không nào? Trong bài học ngày hôm nay, chúng ta sẽ cùng nhau học cách điều khiển được động cơ giảm tốc V1 bằng mạch điều khiển động cơ L298. Mạch điều khiển này sẽ khá giống với module relay nhưng relay chỉ là công tắc bình thường thôi, còn mạch điều khiển này sẽ giúp ta điều khiển được chiều và tốc độ động cơ. Bắt đầu thôi !
1 board Arduino UNO R3.
1 dây cáp USB để kết nối board với máy tính.
1 Máy tính/Laptop để viết code.
1 breadboard.
Dây breadboard.
Mạch điều khiển L298 (các bạn có thể mua tại đây)
Động cơ giảm tốc V1 (các bạn có thể mua tại đây)
Phần mềm lập trình Arduino - Arduino IDE.
Nói về bản chất thì mạch cầu H (H-Bridge) là một bộ gồm 4 công tắc. Bộ công tắc này được nối theo hình chữ "H". Chúng ta sẽ điều khiển động cơ hay các thiết bị khác bằng cách đóng tắt các công tắc này.
Bây giờ chúng ta có 4 công tắc phải không nào. Như vậy mình sẽ lần lượt đóng ngắt các công tắc như sau:
Khi khóa S1 và S4 đóng thì lúc nào dòng điện sẽ từ nguồn qua khóa S1 rồi qua tải, qua S4 và về lại GND. Lúc này động cơ sẽ quay theo một chiều nào đó mình tạm gọi là chiều thuận.
Trong hình trên thì ta sẽ thấy khóa S2 và S3 đang đóng. Khi này, dòng điện sẽ đi theo hướng ngược lại, đồng nghĩa động cơ sẽ quay theo hướng ngược lại.
LƯU Ý: Khi các bạn xây dựng một mạch cầu H thì có một điều các bạn cần chú ý đến là hiện tượng đoản mạch. Các bạn hãy tự tìm hiểu về hiện tượng này nhé! Đặt trường hợp, nếu các bạn đóng cùng lúc S3 và S4 thì sao?
Nguồn: digilent
Driver: L298N tích hợp hai mạch cầu H để điều khiển được 2 động cơ
Điện áp điều khiển: 5 V ~ 12 V
Điện áp tín hiệu điều khiển: 5 V ~ 7 V
Dòng điện tối đa cho mỗi cầu H: 2A
Dòng của tín hiệu điều khiển: 0 ~ 36mA
Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
Chân 12V và 5V: đây là 2 chân bạn dùng để cấp nguồn trực tiếp cho động cơ và cả module. Thường mình sẽ cấp nguồn có điện áp vào khoảng 9V - 12V vào chân 12V.
Chân GND: chúng ta nối chân này với cực âm của nguồn, nếu như các bạn sử dụng chung một nguồn để cấp cho cả Arduino và mạch cầu H thì nhớ nối chân này với GND của Arduino nhé.
Jumper A Enable và B Enable các bạn cứ để nguyên đừng rút ra nha.
Jumper 5V: jumper này các bạn giữ nguyên thì khi mà các bạn cấp nguồn vào chân 12V, các bạn có thể lấy nguồn có điện áp 5V từ chân 5V cấp cho Arduino.
IN1, IN2, IN3, IN4: đây là 4 chân để các bạn điều khiển động cơ.
OUT A và OUT B: với 2 đầu ra thì sẽ có 4 chân, tương ứng với 4 chân của động cơ A và B. Các bạn nối thì lưu ý chân + và - của mỗi cổng OUT A và OUT B nhé. Nối sai thì động cơ quay ngược => xe quay tròn hoặc sẽ đi ngược với hướng mong muốn.
Nguồn: arduino.vn
Ở mạch phía trên thì các bạn cần lưu ý những điểm sau đây:
Các bạn cần phải nối chân GND của mạch cầu H với chân GND của Arduino và nối với cực âm của Pin 9V.
Nếu trường hợp các bạn muốn dùng nguồn 5V ở mạch cầu H để cấp cho Arduino thì các bạn hãy nối thêm chân 5V của mạch cầu H vào chân Vin của mạch Arduino. Tuyệt đối không cấp vào chân 5V của Arduino nhé.
Các bạn nối động cơ thì lưu ý phải có sự đồng nhất giữa 2 động cơ, hoặc nếu các bạn muốn học điều khiển 1 động cơ thì có thể lắp 1 cái và dùng chân IN1 và IN2 thôi nhé.
Tuyệt đối không cấp nguồn vào cả chân 5V và 12V của module điều khiển khi jumper 5V vẫn đang cắm.
Khi các bạn cấp nguồn lớn hơn 12V thì các bạn phải tháo jumper 5V ra, vì nó có thể làm hư bộ phận điều chỉnh 5V của module. Và lúc này các bạn phải cấp nguồn điện 5V vào chân này để IC hoạt động.
Và một điều đặc biệt ở đây chính là khi bạn cấp nguồn 12V vào module thì ở OUT A và OUT B, điện áp sẽ giảm xuống còn khoảng 10V. Điện áp hao hụt này sẽ dẫn đến tiêu hao năng lượng dưới dạng nhiệt... Giờ thì các bạn hiểu tại sao module lại có một tản nhiệt ở IC rồi chứ?
int in1 = 6;
int in2 = 7;
void setup() {
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
}
void loop() {
digitalWrite (in1, HIGH);
digitalWrite (in2, LOW);
delay (1000);
digitalWrite (in1, LOW);
digitalWrite (in2, LOW);
delay (3000);
}
Trong đoạn code trên, mình sẽ cho chân IN1 nối với chân D6 của Arduino, in2 nối với D7 => Điều khiển động cơ nối với OUT A nhé.
Như mọi khi, điều khiển một thiết bị gì đó thì cấu hình chân đó là OUTPUT nhé. Cú pháp vẫn là pinMode().
Rồi tới phần quan trọng nhất là điều khiển động cơ. Để động cơ hoạt động được, phải có sự chênh lệch điện áp. Mình mặc định điện áp điều khiển ở đây là 5V sẽ giúp động cơ quay nhanh nhất. Như vậy khi mình cấp cho IN1 điện áp 5V (HIGH) và IN2 là 0V (LOW) => động cơ quay. Mình sẽ để nó quay trong 1 giây và dừng trong 3 giây. Và khi dừng thì mình sẽ cho 2 chân điều khiển cùng là 0V hoặc cùng là 5V, nhưng chẳng ai để 5V cả nên mình sẽ để LOW.