-
아두이노 | DC모터 드라이버 L298N 모듈Technology/Arduino 2024. 1. 12. 18:00
1. DC모터 드라이버 L298N 모듈
L298N은 H-브리지 회로가 내장된 전자 소자로, 이를 이용한 DC모터 드라이버 모듈은 DC모터 2개를 양방향으로 제어할 수 있으며, 앞서 살펴본 L293D보다 더 큰 부하의 DC모터를 다룰 수 있다. DC모터를 모터 A 단자에 연결한 상태에서 모터 A 방향1 단자에만 제어 신호를 입력하면 모터가 한 방향으로 회전하고, 모터 A 방향2 단자에만 제어 신호를 입력하면 다른 방향으로 회전한다. 해당 모듈을 구매하면 모터 A 속력 단자와 모터 B 속력 단자가 다른 단자와 점퍼캡으로 연결되어 있는데, 이를 제거하지 않으면 두 단자에 항상 DC 5V 신호가 입력되어 모터가 최고 속력으로 회전한다. 모터의 회전 속력을 제어하고 싶다면 점퍼캡을 제거하고 각 단자에 PWM 제어 신호를 입력하면 된다. L298N을 이용한 DC모터 드라이버 모듈은 아래 링크로 접속하면 구매할 수 있다.
2. 확인사항
제조사에서 제공하는 L298N의 데이터시트에 의하면 L293N의 최대 허용 공급전압과 최대 허용 전류는 아래 표와 같다. 앞서 다뤘던 L293D와 비교해보면 L293D보다 L298N이 더 큰 전압과 전류를 견딜 수 있다. 만약 사용하고자 하는 DC모터의 부하가 이보다 크다면 L298N보다 더 큰 부하를 견딜 수 있는 DC모터 드라이버를 찾아야 한다. 반대로 DC모터 드라이버로 L298N을 사용하고자 한다면, L293N이 견딜 수 있는 부하보다 적은 부하를 필요로 하는 DC모터를 찾아야 한다.
모델명 L293D L298N 최대 허용 공급전압 36 V 50 V 최대 허용 전류 0.6 A 2 A 허용 전력 5 W 25 W 3. 주의사항
DC모터 드라이버 L298N 모듈에는 다른 모듈과는 다르게 DC 5V 전압 레귤레이터가 포함되어 있다. DC 12V 미만의 외부 전원이 모듈 단자에 연결되면 레귤레이터가 외부 전원의 전압을 DC 5V로 변환하여 모듈 전체에 공급하는 역할을 한다. 해당 모듈을 구매하면 외부 전원 단자 위에 점퍼캡으로 연결된 두 단자가 있는데, 왼쪽 그림과 같이 DC 12V 미만의 외부 전원을 외부 전원 단자에 연결한 상태에서 점퍼캡을 그대로 두면 외부 전원이 레귤레이터로 공급되어 모듈이 정상 작동한다. 이때 5V 입출력 단자는 DC 5V 전원을 출력하는 기능을 하는데, 해당 단자를 아두이노 5V 전원과 연결하면 아두이노 하드웨어에 손상이 갈 수 있으니 주의하자. 반면, DC 12V 이상의 전압은 모듈의 레귤레이터의 허용 전압을 넘어서므로 점퍼캡을 제거해야 한다. 이때 모듈이 정상 작동할 수 있도록 5V 입출력 단자에 아두이노 5V 전원을 연결하여 전원을 공급해주면 된다.
4. 예제
4.1. 회로 구성
4.2. 프로그램 작성
int ENA = 11; // 정수형 변수 선언 후 디지털 핀 번호 11번으로 초기화 int IN1 = 10; int IN2 = 9; int ENB = 6; int IN3 = 5; int IN4 = 4; void setup() { pinMode(ENA, OUTPUT); // 디지털 11번 핀을 출력(OUTPUT) 모드로 설정 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { // DC모터 A 회전 digitalWrite(IN1, HIGH); // 디지털 10번 핀에 디지털 신호 HIGH 출력 digitalWrite(IN2, LOW); // 디지털 9번 핀에 디지털 신호 LOW 출력 analogWrite(ENA, 255); // 디지털 11번 핀에 PWM 아날로그 신호 5V 출력 delay(1000); // 1000ms 대기 analogWrite(ENA, 0); // 디지털 11번 핀에 PWM 아날로그 신호 0V 출력 delay(1000); // DC모터 A 역회전 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, 255); delay(1000); analogWrite(ENA, 0); delay(1000); // DC모터 B 회전 digitalWrite(IN3, HIGH); // 디지털 5번 핀에 디지털 신호 HIGH 출력 digitalWrite(IN4, LOW); // 디지털 4번 핀에 디지털 신호 HIGH 출력 analogWrite(ENB, 255); // 디지털 6번 핀에 PWM 아날로그 신호 5V 출력 delay(1000); analogWrite(ENB, 0); // 디지털 6번 핀에 PWM 아날로그 신호 0V 출력 delay(1000); // DC모터 B 역회전 digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENB, 255); delay(1000); analogWrite(ENB, 0); delay(1000); // DC모터 A 회전 가속 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); for (int i = 1; i <= 255; i++) // 10 ms 간격으로 점점 빠르게 회전 { analogWrite(ENA, i); delay(10); // 10 ms 대기 } delay(1000); // DC모터 A 회전 감속 for (int i = 254; i >= 0; i--) // 10 ms 간격으로 점점 느리게 회전 { analogWrite(ENA, i); delay(10); } delay(1000); // DC모터 A 역회전 가속 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); for (int i = 1; i <= 255; i++) { analogWrite(ENA, i); delay(10); } delay(1000); // DC모터 A 역회전 감속 for (int i = 254; i >= 0; i--) { analogWrite(ENA, i); delay(10); } delay(1000); // DC모터 B 회전 가속 digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); for (int i = 1; i <= 255; i++) { analogWrite(ENB, i); delay(10); } delay(1000); // DC모터 B 회전 감속 for (int i = 254; i >= 0; i--) { analogWrite(ENB, i); delay(10); } delay(1000); // DC모터 B 역회전 가속 digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); for (int i = 1; i <= 255; i++) { analogWrite(ENB, i); delay(10); } delay(1000); // DC모터 B 역회전 감속 for (int i = 254; i >= 0; i--) { analogWrite(ENB, i); delay(10); } delay(1000); }
[함께 읽으면 좋은 페이지]
참고문헌
- 제노몰. (n.d.). L298 DC 모터 스텝 모터 드라이브(5V-35V 2A) 아두이노 호환 (HAM1418). https://www.jenomall.com/goods/goods_view.php?goodsNo=1000012068. 2024.06.09.
- DroneBot Workshop. (2017). Controlling DC Motor with the L298N H Bridge and Arduino. YouTube. https://www.youtube.com/watch?v=dyjo_ggEtVU. 2023.10.26.
- DroneBot Workshop. (2022). Driving DC Motors with Microcontrollers. YouTube. https://www.youtube.com/watch?v=ygrsIqWOh3Y. 2023.10.26.
- How To Mechatronics. (2017). Arduino DC Motor Control Tutorial - L298N | H-Bridge | PWM | Robot Car. YouTube. https://www.youtube.com/watch?v=I7IFsQ4tQU8. 2023.10.26.
- STMicroelectronics. (2000). L298 Dual Full-bridge Driver. SparkFun. https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf. 2023.10.26.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 프로젝트 | 마이크로 서보 로봇 (0) 2024.01.26 아두이노 라이브러리 | 서보모터 (0) 2024.01.19 아두이노 | DC모터 드라이버 L293D 모듈 (1) 2024.01.05 아두이노 | DC모터 드라이버 L293D (0) 2024.01.05 아두이노 | DC모터 PWM 제어 (0) 2023.12.29