[모듈] L298N 모터 드라이버
자율주행 자동차를 만들기 위해서 모터 제어와 관련된 모듈인 L298N 모터 드라이버 모듈에 대해 알아봅니다.
여러 검색 결과를 확인해 봤고 그 중에서 여기(https://m.blog.naver.com/chandong83/221309861855)가 가장 참고할만 했습니다.
L298N 모터 드라이버 모듈은 여러가지가 있는 것으로 보이는데 제가 가지고 있는 것은 다음과 같이 생겼습니다.
영어로는 L298 New Dual H Bridge DC Stepper Motor Drive Controller Board Module 라고 하는 모양입니다.
내부 설명은 대체로 다음과 같습니다.
Output A/B : 모터와 연결
Logic Input : 아두이노에 연결하여 모터 제어(Digital)
IN1/IN2 - A모터 제어
IN3/IN4 - B모터 제어
A/B Enable : 점퍼를 제거하고 아두이노에 연결하면 모터의 속도 제어가 가능(0~255:Analog)
점퍼가 연결되어 있으면 항상 풀스피드(255)
Power GND : GND
+12V : 5~35V 전원 입력
+5V : 5V IN/OUT. 5V Enable(아래 사진에서는 12V Jumper) 점퍼를 제거하면 5V 입력받고, 점퍼가 꽂혀있으면 모듈에서 5V 출력합니다.
5V Enable : 점퍼가 꽂혀있으면 5V Linear Regulator에서 5V로 전환하여 내부 제어에 사용 및 외부 출력. 점퍼가 없으면 외부에서 5V를 입력 받아야 함.
(참고한 사이트에서는 7805 레귤레이터라고 하네요)
위에서 말한 사이트의 내용을 참고하고 테스트해 본 결과, 위의 내용이 가장 확실합니다.
처음에는 5V Enable 관련된 내용을 제대로 찾지 못하고 아래와 같이 연결해 보았습니다.
(5V Enable 점퍼는 꽂혀있는 상태)
안되더라고요.
좀더 찾아본 결과 위의 참고 사이트의 내용을 확인하고 그 내용에 따라 아래와 같이 연결해 보았습니다.
(5V Enable 점퍼는 제거한 상태)
이제야 모터가 잘 돌아갑니다.
아두이노의 5V 전원만으로 테스트를 할 경우에는 5V Enable 점퍼를 제거하고 모듈의 +5V에 5V 전원을 연결해줘야만 제대로 됩니다.
7805 레귤레이터가 (+12V를 통해 입력된) 5V만으로는 제대로 동작하지 않기 때문이라고 합니다.
테스트에 사용한 소스는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | int IN1 = 3; int IN2 = 4; void setup() { // put your setup code here, to run once: pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); // Motor A: IN1/2로 제어 // IN1 전압 > IN2 전압 : 전류가 1>2로 흐름. 모터 회전 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); delay(2000); // 반대 방향 회전 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); delay(2000); // 모터 멈춤. 둘다 LOW면 모터를 꺼둔, 풀린 상태라고 함. digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); } void loop() { // put your main code here, to run repeatedly: } | cs |
모터 속도까지 테스트하려면 Enable A/B 점퍼를 제거하고 아날로그로 연결해서 해보면 될 것 같습니다.
그리고 fritzing에 L298N 모듈이 없는데 검색해서 찾은 것을 import 해서 사용했습니다. 해당 파일은 아래에.
마지막으로 실사용 시에는 외부전원을 연결해서 사용해야 안정적이라고 합니다. 모터 사용 시 전압 강하가 커서 모터 2개 쓰면 아두이노가 잘 안 돌아간다고...