Bạn không rành về việc tự làm mạch cầu H ?, đơn giản là bạn chỉ cần mua Module L298 về để sử dụng. Bài hướng dẫn này sẽ hướng dẫn cho các bạn làm sao để lập trình điều khiển động cơ dùng L298 và Arduino. Với L298 bạn có thể dễ dàng mua online nếu nơi bạn ở ko bán.
Tìm hiểu cầu H L298
Thông số kỹ thuật:
Driver: L298N tích hợp hai mạch cầu H.
Điện áp điều khiển: +5 V ~ +12 V
Dòng tối đa cho mỗi cầu H là: 2A
Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
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 ℃
Datasheet bạn có thể tải về tại đây
L298 gồm các chân:
12V power, 5V power. Đây là 2 chân cấp nguồn trực tiếp đến động cơ. Nếu bạn dùng động cơ 5V thì bạn phải cấp nguồn 5V, cùng với đó chuyển Jump 5V enable về phía 5V. và ngược lại nếu bạn dùng điện áp 12V.
Power GND chân này là GND của nguồn cấp cho Động cơ.
2 Jump A enable và B enable, nếu bạn dùng Board để điều khiển động cơ bức thì giữa nguyên Vị trí của nó. Nếu điều khiển động cơ bình thường thì nối với chân PWM để điều khiển tốc độ.
Gồm có 4 chân Input. IN1, IN2, IN3, IN4. Chức năng các chân này tôi sẽ giải thích ở bước sau.
Output A: nối với động cơ A. bạn chú ý chân +, -. Nếu bạn nối ngược thì động cơ sẽ chạy ngược. Và chú ý nếu bạn nối động cơ bước, bạn phải đấu nối các pha cho phù hợp.
Board này gồm 2 phần điều khiển động cơ. Và có thể điều khiển cho 1 động cơ bước 6 dây hoặc 4 dây.
Linh kiện, vật dụng cần thiết.
Arduino uno
Trục vít
Dây cắm
Cầu H L298
Động cơ DC.
Đấu nối
- Nếu bạn điều khiển 2 Động cơ của robot, bạn cần chú ý bài đấu nối Cực +,- của động cơ tương ứng với chân +,- của OUTPUT X.
- Tiếp bạn cấp nguồn cho Module L298 như phần giải thích ở trên. Chú ý chọn Jump cho đúng.
- Nếu bạn dùng 5V và động cơ dưới 1A bạn có thể dùng chân 5V của Arduino, nếu không nguồn cấp cho động cơ ở L298 phải là nguồn riêng để không làm hỏng Arduino của bạn.
- Các chân số D9, D8, D7 và D6 của Arduino sẽ nối tương ứng với IN1, IN2, IN3 và IN4 của L298.
- Gỡ Jump A enable và nối với chân D10 của Arduino. và Jump B enable vào chân D5. (2 chân này có chức năng thây đổi tốc độ động cơ nếu bạn băm xung PWM ra nó).
- Chiều quay của động cơ được điều khiển bằng cách xuất các đầu ra HIGH hoặc LOW tại các chân INx.
Ví dụ với Động Cơ A: Logic HIGH ở IN1 và IN2 Logic LOW sẽ làm động cơ quay 1 hướng nếu đặt Logic ngược lại sẽ làm động cơ quay theo hướng khác.
- Bạn cần phải nhớ, đây là làm động cơ chỉ quay hết công suất mà thôi. Nếu muốn thay đổi tốc độ của nó, bạn cần phải băm xung PWM vào các chân A enable (như ở trên nó được nối với chân D 10).
Viết chương trình Điều khiển 1 Động cơ.
void setup ()
{ //đầu tiên ta cần phải cấu hình các chân điều khiển như đầu ra.Với động cơ 1,
pinMode (7 , OUTPUT);
pinMode( 8 , OUTPUT);
pinMode(9 , OUTPUT);
}
void loop()
{
//Quay phải
digitalWrite(8 , HIGH);
digitalWrite(7 , LOW);
analogWrite(9 , 80);
delay(1000); //trễ 1s.
//quay trái
digitalWrite(8 , LOW);
digitalWrite(7, HIGH);
analogWrite(9 , 80);
delay(100);
}
Chương trình điều khiển 2 động cơ
// Kết nối các chân động cơ sẵn sàng.
// Động cơ 1
int enA = 10;
int in1 = 9;
int in2 = 8; //
//động vơ 2
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup() { // cấu hình các chân là output.
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoOne() {
// hàm này sẽ chạy 2 động cơ ở cùng tốc độ
// cho chạy động cơ A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200); // tốc độ 200, giá trị từ 0~255, băm xung PWM, mức cao 200/255. mức thấp 55/255. Tốc độ chạy khoảng (200/255)%.
// cho chạy động cơ B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW); // tốc độ 200, giá trị từ 0~255, băm xung PWM, mức cao 200/255. mức thấp 55/255. Tốc độ chạy khoảng (200/255)%.
analogWrite(enB, 200);
delay(2000); //Chờ 2s rồi đảo chiều.
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000); // Tắt hết động cơ.
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo() {
// hàm này sẽ thay đổi tốc độ của 2 động cơ liên tục.
// cho chạy tất cả động cơ. Nhìn vào bạn đã hiểu làm sao để điều khiển chiều động cơ tương ứng rồi. thay đổi các tín hiệu inx tương ứng, LOW, HIGH -> chạy.HIGH , LOW chạy ngược lại, LOW, LOW -> dừng.
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Cho động cơ chạy từ từ...từ PWM 0 đến 255. Động cơ sẽ chạy nhanh dần lên.
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
//Tương tự...chạy chậm dần.
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// tắt hết
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
demoOne();
delay(1000);
demoTwo();
delay(1000);
}
Trên đây là tất cả các hướng dẫn của tôi về động cơ bước. Hi vọng sẽ giúp ích cho bạn.