아두이노 모터드라이버(L298N)를 이용해서 dc모터제어하기

김가영·2024년 6월 22일
0

아두이노

목록 보기
1/1

dc모터?

dc모터는 아래의 사진과 같이 전류의 방향 전환에 따라 회전력이 생기면서 모터가 움직이게 된다.
따라서 흐르는 전류의 양이 많을수록 회전력도 증가하게 된다.
그러나 DC 모터는 플러스 단자와 마이너스 단자만 존재하여 단순히 HIGH나 LOW 신호만으로는 동작할 수 없고 아두이노의 디지털 핀에서 출력할 수 있는 최대 전류는 40mA에 불과하여 아두이노의 디지털 출력 핀을 직접 사용해 모터를 회전시킬 수는 없다.

이러한 문제를 해결하기 위해 모터 드라이버의 펄스폭 변조(PWM) 방식을 사용하여 모터 사이의 전류를 증폭시키고, 모터의 회전 속도를 제어하려고 한다.

준비물

dc모터, 모터드라이버, 아두이노 보드, 점퍼케이블

회로도

모터드라이버는 이런형식으로 구성되어있다.

참고

  • Ennable A, Ennable B는 점퍼핀으로 묶여있기때문에 제거후에 사용해야한다.
  • 케이블을 연결하기 위해선 드라이버로 나사를 풀어야 연결할 수 있다.

소스코드

int speed1 = 10;
int In1 = 9;
int In2 = 8;

int speed2 = 5;
int In3 = 7;
int In4 = 6;

void setup(){
  pinMode(speed1, OUTPUT);
  pinMode(In1, OUTPUT);
  pinMode(In2, OUTPUT);
  pinMode(speed2, OUTPUT);
  pinMode(In3, OUTPUT);
  pinMode(In4, OUTPUT);
}

void loop(){
  digitalWrite(In1, HIGH);
  digitalWrite(In2, LOW);
  analogWrite(speed1, 100);
  digitalWrite(In3, LOW);
  digitalWrite(In4, HIGH);
  analogWrite(speed2, 100);
}

의문점

◆모터 출력 여부제어◆

모터의 출력을 제어는 enable핀을 HIGH로 설정해 주기만 하면 된다.
이번 실습에서는 모터1만 연결했는데 모터2를 연결해도 방법은 동일하다.
이때 모터1을 구동하다가 모터1을 끄는 상황등에서 간단히 해당모터의 enable핀을 LOW로 만들어 주기만 하면 된다.

◆모터 속도 제어◆

모터의 속도는 해당 모터의 enable핀에 아날로그 출력을 통해 값을 넣어주기만 하면 된다.
아두이노에서는 pwm핀을 통해 아날로그 출력을 할 수 있는데 pwm출력이 가능한 핀과 연결한뒤 0~255사이의 값을 넣어주면 멈춤 ~ 최대 속도로 제어를 할 수 있다.

◆모터 방향 제어◆

모터의 회전방향 제어는 해당모터의 방향제어에 사용되는 2개의 핀의 상태를 교차로 만들면 된다.
예를들어 모터를 정회전 시킬 때에는 IN1은 HIGH, IN2는 LOW로 만들고 역회전 시킬 때에는 반대로 IN1은 LOW, IN2는 HIGH로 만들면 된다.

0개의 댓글