-
아두이노 | DC모터 드라이버 L298N 모듈Technology/Arduino 2024. 1. 12. 18:00
1. DC모터 드라이버 L298N 모듈
DC모터 드라이버 L298N 모듈 L298N은 H-브리지 회로가 내장된 전자 소자로, 이를 이용한 DC모터 드라이버 모듈은 DC모터 2개를 양방향으로 제어할 수 있으며, 앞서 살펴본 L293D보다 더 큰 부하의 DC모터를 다룰 수 있다. DC모터를 모터 A 단자에 연결한 상태에서 모터 A 방향1 단자에만 제어 신호를 입력하면 모터가 한 방향으로 회전하고, 모터 A 방향2 단자에만 제어 신호를 입력하면 다른 방향으로 회전한다. 해당 모듈을 구매하면 모터 A 속력 단자와 모터 B 속력 단자가 다른 단자와 점퍼캡으로 연결되어 있는데, 이를 제거하지 않으면 두 단자에 항상 DC 5V 신호가 입력되어 모터가 최고 속력으로 회전한다. 모터의 회전 속력을 제어하고 싶다면 점퍼캡을 제거하고 각 단자에 PWM 제어 신호를 입력하면 된다. L298N을 이용한 DC모터 드라이버 모듈은 아래 링크로 접속하면 구매할 수 있다.
2A L298 모터드라이버 모듈 (아두이노 호환) [SZH-EK001]
ST사의 고전압 고전류 모터 드라이버 칩인 L298N을 탑재한 Dual H-Bridge 모터 드라이버 / 작동 전압 : 5V-35V / 전류 : 2A(MAX single bridge)
www.devicemart.co.kr
</div >H-Bridge L298N | 3D CAD Model Library | GrabCAD
The CAD files and renderings posted to this website are created, uploaded and managed by third-party community members. This content and associated text is in no way sponsored by or affiliated with any company, organization, or real-world good that it may
grabcad.com
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모터 드라이버 L298N 모듈에는 다른 모듈과는 다르게 DC 5V 전압 레귤레이터가 포함되어 있다. DC 12V 미만의 외부 전원이 모듈 단자에 연결되면 레귤레이터가 외부 전원의 전압을 DC 5V로 변환하여 모듈 전체에 공급하는 역할을 한다. 해당 모듈을 구매하면 외부 전원 단자 위에 점퍼캡으로 연결된 두 단자가 있는데, 왼쪽 그림과 같이 DC 12V 미만의 외부 전원을 외부 전원 단자에 연결한 상태에서 점퍼캡을 그대로 두면 외부 전원이 레귤레이터로 공급되어 모듈이 정상 작동한다. 이때 5V 입출력 단자는 DC 5V 전원을 출력하는 기능을 하는데, 해당 단자를 아두이노 5V 전원과 연결하면 아두이노 하드웨어에 손상이 갈 수 있으니 주의하자. 반면, DC 12V 이상의 전압은 모듈의 레귤레이터의 허용 전압을 넘어서므로 점퍼캡을 제거해야 한다. 이때 모듈이 정상 작동할 수 있도록 5V 입출력 단자에 아두이노 5V 전원을 연결하여 전원을 공급해주면 된다.
4. 예제
4.1. 회로 구성
회로 구성 마부치 DC모터 (RK-280RA) 12V
Ø23.8mm x 30.5mm / DC12V / 9,100rpm / 1.6W / 고출력 / 저소음 / 저진동 / 일제 / 마부치모터 / 마이크로DC모터 / 마사지기 / 이미용기 / 카본브러쉬 / 감속기 체결가능
www.devicemart.co.kr
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); }
[함께 읽으면 좋은 페이지]
아두이노 | DC모터 PWM 제어
1. DC모터 DC모터는 직류(Direct Current, DC) 전원을 공급하면 구동축이 회전하는 구동기이다. 부가 기능이 없는 DC모터에는 두 개의 전극이 노출되어 있는데, 여기에 DC 전원을 연결하면 구동축이 한
vedacube.tistory.com
아두이노 | DC모터 드라이버 L293D 모듈
1. DC모터 드라이버 L293D 모듈 DC모터 2개를 양방향으로 제어하기 위해 L293D와 전자 소자를 탑재한 DC모터 드라이버 모듈이다. 모터 방향 단자에 디지털 신호를 입력하거나 입력하지 않는 것으로 DC
vedacube.tistory.com
아두이노 프로젝트 | 적외선 무선 원격 통신을 이용한 무선 RC카
1. 적외선 무선 원격 통신을 이용한 무선 RC카 일상에서 쉽게 발견할 수 있는 무선 RC카를 아두이노 플랫폼으로 구현해보자. 구현하고자 하는 무선 RC카는 DC모터에 기어박스가 추가된 하비 기어
vedacube.tistory.com
참고문헌
- 제노몰. (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 아두이노 라이브러리 | 서보모터 Servo.h (0) 2024.01.19 아두이노 | DC모터 드라이버 L293D 모듈 (1) 2024.01.05 아두이노 | DC모터 드라이버 L293D (0) 2024.01.05 아두이노 | DC모터 PWM 제어 (0) 2023.12.29