Arduino Điều Khiển Động Cơ DC Qua Mạch L298N

Giao tiếp mạch điều khiển động cơ DC L298N với Arduino

Nếu bạn đang có kế hoạch lắp ráp người bạn robot mới của mình, thì cuối cùng bạn sẽ muốn tìm hiểu về cách điều khiển động cơ DC. Một trong những cách dễ nhất và không tốn kém để điều khiển động cơ DC là giao tiếp Trình điều khiển động cơ L298N với Arduino. Nó có thể điều khiển cả tốc độ và hướng quay của hai động cơ DC.

Thậm chí mạch còn có thể điều khiển động cơ bước lưỡng cực như NEMA 17.

Link Sản Phẩm:

Điều khiển động cơ DC

Để có thể điều khiển hoàn toàn động cơ DC, chúng ta phải điều khiển tốc độ và chiều quay của nó. Điều này có thể đạt được bằng cách kết hợp hai kỹ thuật này.

  • PWM - Để kiểm soát tốc độ
  • H-Bridge - Để điều khiển hướng quay

PWM - Để kiểm soát tốc độ

Tốc độ của động cơ DC có thể được điều khiển bằng cách thay đổi điện áp đầu vào của nó. Một kỹ thuật phổ biến để làm điều này là sử dụng PWM (Điều chế độ rộng xung)

PWM là một kỹ thuật trong đó giá trị trung bình của điện áp đầu vào được điều chỉnh bằng cách gửi một loạt các xung BẬT-TẮT (ON-OFF).

Điện áp trung bình tỷ lệ với độ rộng của các xung được gọi là Chu kỳ nhiệm vụ .

Chu kỳ làm việc càng cao, điện áp trung bình đặt vào động cơ một chiều (Tốc độ cao) càng lớn và chu kỳ làm việc càng thấp, điện áp trung bình đặt vào động cơ một chiều (Tốc độ thấp) càng ít.

Hình ảnh dưới đây minh họa kỹ thuật PWM với các chu kỳ nhiệm vụ khác nhau và điện áp trung bình.

Kỹ thuật điều chế độ rộng xung (PWM)

H-Bridge - Để điều khiển hướng quay

Chiều quay của động cơ DC có thể được điều khiển bằng cách thay đổi cực tính của điện áp đầu vào của nó. Một kỹ thuật phổ biến để làm điều này là sử dụng H-Bridge.

Một mạch cầu H chứa bốn công tắc với động cơ ở tâm tạo thành một sự sắp xếp giống như H.

Việc đóng đồng thời hai công tắc cụ thể sẽ đảo ngược cực tính của điện áp đặt vào động cơ. Điều này gây ra sự thay đổi hướng quay của động cơ.

Hình ảnh động bên dưới minh họa mạch H-Bridge hoạt động.

IC điều khiển động cơ L298N


Trung tâm của mô-đun là con chip lớn, màu đen với tản nhiệt lớn là L298N.

L298N là trình điều khiển động cơ H-Bridge kênh đôi có khả năng điều khiển một cặp động cơ DC. Điều đó có nghĩa là nó có thể truyền động riêng lẻ tới hai động cơ, lý tưởng cho việc xây dựng nền tảng rô bốt hai bánh.

Nguồn cấp

Mạch L298N được cấp nguồn thông qua các đầu cuối vít 3 chân 3,5mm. Nó bao gồm các chân để cấp nguồn động cơ (Vs), tiếp đất và cấp nguồn logic 5V (Vss).

IC điều khiển động cơ L298N thực tế có hai chân nguồn đầu vào viz. 'Vss' và 'Vs'.

Từ chân Vs, H-Bridge nhận được sức mạnh của nó để điều khiển các động cơ có thể từ 5 đến 35V. Vss được sử dụng để điều khiển mạch logic có thể là 5 đến 7V. Và cả hai cùng chìm xuống một điểm chung có tên là 'GND'.

Mạch có bộ điều chỉnh 5V 78M05 trên bo mạch của STMicroelectronics. Có thể được bật hoặc tắt thông qua một jumper.

Khi jumper này ở đúng vị trí, bộ điều chỉnh 5V được bật, cung cấp nguồn điện logic (Vss) từ nguồn điện động cơ (Vs). Trong trường hợp này, đầu vào 5V hoạt động như một chân đầu ra và cung cấp 5V 0,5A. Bạn có thể sử dụng nó để cấp nguồn cho Arduino hoặc mạch khác yêu cầu nguồn điện 5V.

Khi jumper được tháo ra, bộ điều chỉnh 5V bị vô hiệu hóa và chúng tôi phải cung cấp 5 Volt riêng biệt thông qua thiết bị đầu cuối đầu vào 5 Volt.

Cảnh báo:

Bạn có thể đặt jumper tại chỗ, nếu nguồn điện động cơ dưới 12V. Nếu lớn hơn 12V, bạn nên tháo jumper để tránh việc bộ điều chỉnh 5V trên bo mạch bị hỏng.

Cũng KHÔNG cấp nguồn cho cả đầu vào nguồn điện động cơ và đầu vào nguồn điện 5V khi có jumper.

Giảm điện áp L298N

Điện áp rơi của mạch điều khiển động cơ L298N là khoảng 2V . Điều này là do sự sụt giảm điện áp bên trong trong các bóng bán dẫn chuyển mạch trong mạch cầu H.

Vì vậy, nếu chúng ta kết nối 12V với đầu nối nguồn điện của động cơ, động cơ sẽ nhận được điện áp khoảng 10V. Điều này có nghĩa là động cơ DC 12V sẽ không bao giờ quay với tốc độ tối đa.

Để đạt được tốc độ tối đa của động cơ, nguồn điện động cơ phải có điện áp cao hơn một chút (2V) so với yêu cầu điện áp thực tế của động cơ.

Xem xét mức giảm điện áp 2V, nếu bạn đang sử dụng động cơ 5V, bạn sẽ cần cung cấp 7V tại đầu cuối cấp nguồn cho động cơ. Nếu bạn có động cơ 12V thì điện áp cung cấp cho động cơ của bạn phải là 14V.

Chân đầu ra

Các kênh đầu ra của mạch điều khiển động cơ L298N cho động cơ A và B được chia ra rìa của mô-đun bằng hai đầu nối vít có bước sóng 3,5 mm.

Bạn có thể kết nối hai động cơ DC có điện áp từ 5 đến 35V với các thiết bị đầu cuối này.

Mỗi kênh trên mô-đun có thể cung cấp tối đa 2A tới động cơ DC. Tuy nhiên, lượng dòng điện cung cấp cho động cơ phụ thuộc vào nguồn điện của hệ thống.

Chân điều khiển

Đối với mỗi kênh của L298N, có hai loại chân điều khiển cho phép chúng ta điều khiển tốc độ và hướng quay của động cơ DC cùng một lúc. Chân điều khiển hướng & Chân điều khiển tốc độ.

Chân điều khiển hướng

Sử dụng các chân điều khiển hướng, chúng ta có thể điều khiển động cơ quay tiến hay lùi. Các chân này thực sự điều khiển các công tắc của mạch H-Bridge bên trong IC L298N.

Mô-đun có hai chân điều khiển hướng cho mỗi kênh. Các chân IN1 và IN2 điều khiển hướng quay của động cơ A trong khi IN3 và IN4 điều khiển động cơ B.

Chiều quay của động cơ có thể được điều khiển bằng cách áp dụng mức logic CAO (5V) hoặc logic LOW (GND) cho các đầu vào này. Biểu đồ dưới đây minh họa cách thực hiện điều này.

Đầu vào 1 Đầu vào 2 Hướng quay
Thấp (0) Thấp (0) Động cơ TẮT
Cao (1) Thấp (0) Thuận
Thấp (0) Cao (1) Nghịch
Cao (1) Cao (1) Động cơ TẮT

 

Chân điều khiển tốc độ

Các chân điều khiển tốc độ ENA và ENB được sử dụng để BẬT, TẮT động cơ và điều khiển tốc độ của nó.

Kéo các chốt này CAO sẽ làm cho động cơ quay, kéo THẤP sẽ làm cho chúng dừng lại. Tuy nhiên, với Điều chế độ rộng xung (PWM), chúng tôi thực sự có thể kiểm soát tốc độ của động cơ.

Mô-đun thường đi kèm với một jumper trên các chân này. Khi jumper này ở đúng vị trí, động cơ sẽ được kích hoạt và quay ở tốc độ tối đa. Nếu bạn muốn điều khiển tốc độ động cơ theo chương trình, bạn cần phải tháo jumper và kết nối chúng với các chân hỗ trợ PWM trên Arduino.

Sơ đồ mô-đun điều khiển động cơ L298N

Trước khi đi sâu vào mã hookup và ví dụ, trước tiên chúng ta hãy xem Sơ đồ chân của nó.

VCCchân cấp nguồn cho động cơ. Nó có thể nằm trong khoảng từ 5 đến 35V. Hãy nhớ rằng, nếu có jumper 5V-EN, bạn cần cung cấp thêm 2V so với yêu cầu điện áp thực tế của động cơ để đạt được tốc độ tối đa của động cơ.

GND là một chân nối đất chung.

5Vchân cấp nguồn cho mạch logic chuyển mạch bên trong IC L298N. Nếu có chân cắm 5V-EN, chân này đóng vai trò như một đầu ra và có thể được sử dụng để cấp nguồn cho Arduino của bạn. Nếu jumper 5V-EN bị loại bỏ, bạn cần kết nối nó với chân 5V trên Arduino.

ENAchân được sử dụng để điều khiển tốc độ của Động cơ A. Kéo chân này CAO (Giữ nguyên vị trí của dây nhảy) sẽ làm cho Động cơ A quay, kéo nó THẤP sẽ làm cho động cơ dừng lại. Tháo jumper và kết nối chân này với đầu vào PWM sẽ cho phép chúng ta điều khiển tốc độ của Động cơ A.

IN1 & IN2các chân được sử dụng để điều khiển hướng quay của Động cơ A. Khi một trong số chúng ở mức CAO và điểm khác ở mức THẤP, thì động cơ A sẽ quay. Nếu cả hai đầu vào CAO hoặc THẤP, Động cơ A sẽ dừng.

IN3 & IN4chân được sử dụng để điều khiển hướng quay của Động cơ B. Khi một trong số chúng ở mức CAO và chân khác ở mức THẤP, thì động cơ B sẽ quay. Nếu cả hai đầu vào CAO hoặc THẤP, Động cơ B sẽ dừng.

ENBchân được sử dụng để điều khiển tốc độ của Động cơ B. Kéo chân này CAO (Giữ nguyên vị trí của dây nhảy) sẽ làm cho Động cơ B quay, kéo nó THẤP sẽ làm cho động cơ dừng lại. Tháo jumper và kết nối chân này với đầu vào PWM sẽ cho phép chúng ta điều khiển tốc độ của Động cơ B.

OUT1 & OUT2 chân được kết nối với Động cơ A.

OUT3 & OUT4 chân được kết nối với động cơ B.

Kết nối mô-đun điều khiển động cơ L298N với Arduino UNO

Bây giờ chúng ta đã biết mọi thứ về mô-đun, chúng ta có thể bắt đầu kết nối nó với Arduino của mình!

Bắt đầu bằng cách kết nối nguồn điện cho động cơ. Trong thử nghiệm của chúng tôi, chúng tôi đang sử dụng Động cơ hộp số DC (còn được gọi là động cơ 'TT') thường được tìm thấy trong rô bốt dẫn động hai bánh. Chúng được đánh giá từ 3 đến 12V. Vì vậy, chúng tôi sẽ kết nối nguồn điện 12V bên ngoài với đầu cuối VCC. Xem xét sự sụt giảm điện áp bên trong của IC L298N, động cơ sẽ nhận 10V và sẽ quay ở tốc độ RPM thấp hơn một chút. Nhưng, không sao cả.

Tiếp theo, chúng ta cần cung cấp 5 Volts cho mạch logic của L298N. Chúng tôi sẽ sử dụng bộ điều chỉnh 5V trên bo mạch và lấy 5 volt từ nguồn điện động cơ, do đó, hãy giữ nguyên đầu nối 5V-EN.

Bây giờ, các chân đầu vào và chân bật (ENA, IN1, IN2, IN3, IN4 và ENB) của mô-đun L298N được kết nối với sáu chân đầu ra kỹ thuật số Arduino (9, 8, 7, 5, 4 và 3). Lưu ý rằng các chân đầu ra 9 và 3 của Arduino đều được kích hoạt PWM.

Cuối cùng, kết nối một động cơ với đầu cuối A (OUT1 & OUT2) và động cơ còn lại với đầu cuối B (OUT3 & OUT4). Bạn có thể thay đổi các kết nối của động cơ, về mặt kỹ thuật, không có cách nào đúng hay sai.

Khi hoàn thành, bạn sẽ có một cái gì đó giống như hình minh họa bên dưới.

Code Arduino - Điều khiển động cơ DC

Bản phác thảo sau đây sẽ cung cấp cho bạn hiểu biết đầy đủ về cách điều khiển tốc độ và hướng quay của động cơ điện một chiều với trình điều khiển động cơ L298N và có thể làm cơ sở cho các thí nghiệm và dự án thực tế hơn.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
	// Set all the motor control pins to outputs
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Turn off motors - Initial state
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

// This function lets you control spinning direction of motors
void directionControl() {
	// Set motors to maximum speed
	// For PWM maximum possible values are 0 to 255
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// Turn on motor A & B
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// Now change motor directions
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// Turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors
void speedControl() {
	// Turn on motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Accelerate from zero to maximum speed
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Decelerate from maximum speed to zero
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Now turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

Giải thích code:

Code arduino khá đơn giản. Nó không yêu cầu bất kỳ thư viện nào để làm cho nó hoạt động. Bản phác thảo bắt đầu với việc khai báo các chân Arduino mà các chân điều khiển của L298N được kết nối.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

Trong phần thiết lập của code, tất cả các chân điều khiển động cơ được khai báo là OUTPUT kỹ thuật số và kéo LOW để TẮT cả hai động cơ.

void setup() {
	// Set all the motor control pins to outputs
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Turn off motors - Initial state
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

Trong phần vòng lặp của code, chúng tôi gọi hai hàm do người dùng xác định ở khoảng thời gian một giây.

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

Các chức năng này là: directionControl() - Chức năng này quay cả hai động cơ về phía trước với tốc độ tối đa trong hai giây. Sau đó, nó đảo ngược hướng quay của động cơ và quay thêm hai giây. Cuối cùng, nó tắt động cơ.

void directionControl() {
	// Set motors to maximum speed
	// For PWM maximum possible values are 0 to 255
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// Turn on motor A & B
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// Now change motor directions
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// Turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

speedControl() - Chức năng này tăng tốc cả hai động cơ từ 0 đến tốc độ tối đa bằng cách tạo ra các tín hiệu PWM bằng cách sử dụng hàm analogWrite() , sau đó nó giảm tốc chúng trở về 0. Cuối cùng, nó tắt động cơ.

void speedControl() {
	// Turn on motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Accelerate from zero to maximum speed
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Decelerate from maximum speed to zero
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Now turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

Nhận xét

  1. Nặc danh21/2/22

    Baccarat Site - Farokh Bar
    You must be 21 years of age or older to access Baccarat Site. We have all 안전 바카라 사이트 the information you 온카지노 need 카지노 사이트 가입 쿠폰 to 바카라 추천 사이트 bet. Learn 실시간 바카라 사이트 more.

    Trả lờiXóa
  2. The Best Bitcoin casinos - GoyangFC
    Best 더온 카지노 Bitcoin casinos 브라 밝기조절 · 파라오 카지노 먹튀 1. BitStarz Casino. 5 · 2. 슬롯사이트 Ignition Casino. 5 · 3. Bovegas 라이브스코어 Casino. 5 · 4. Booming Games.

    Trả lờiXóa
  3. The Casino Debuts With Nolimit City as - CBS News
    Gaming operator Nolimit City has announced 바카라커뮤니티 the gta5카지노지역락 new deal to acquire its 블랙 잭 전략 non-US 프로즌 먹튀 assets, along 스포츠토토 with Nolimit City,

    Trả lờiXóa
Mới hơn Cũ hơn