Arduino

[Arduino] 아두이노 DC 모터(L298N) 제어하기

Let it out 2024. 2. 2. 17:07
반응형

DC 모터 (L298N)

DC 모터는 PWM((Pulse Width Modulation)을 이용해서 0 ~ 255 까지 속도를 제어 할 수 있다.

숫자가 낮을 수록 회전수가 적어져 속도가 느려진다.

또 한 DC 모터를 제어하기 위해서 드라이버가 필요한데 회로도에 나와있는 L298D다.

(회로도에는 L293D라 되어있지만 L298D가 명칭임.)

L298D는 DC모터 뿐만 아니라 Servo 모터를 제어 할 수 있다.

 
 

회로도

DC모터가 회전 하지 않을 때 아래 방법으로 해결.
1. 회전 속도가 낮아 안 돌아감 -> 1. 손으로 한번 돌려 볼것, 2. 코드에 속도를 255로 해볼것.
2. DC모터의 노란색, 초록색 선을 반대로 연결 -> 바꿔서 연결 해 볼 것.

 

 
 

코드 구현

DC모터를 255 속도로 1초마다 정방향 ~ 역방향으로 회전 하도록 하는 코드

 

// 모터 회전력 제어
#define EN_PIN 11

//모터 제어 핀
#define IN1_PIN 10
#define IN2_PIN 9
boolean bReverse = false;

void setup()
{
  pinMode(EN_PIN, OUTPUT);
  pinMode(IN1_PIN, OUTPUT);
  pinMode(IN2_PIN, OUTPUT);
}
void loop()
{
  setMotor(255, bReverse);
  delay(1000);
  bReverse = !bReverse; // 반향 반전
  delay(1000);
}
void setMotor(int nSpeed, boolean bReverse)
{
  analogWrite(EN_PIN, nSpeed); // 속도 설정
  if(bReverse == 0)
  {
    digitalWrite(IN1Pin, HIGH);
    digitalWrite(IN2Pin, LOW);
  }
  else // 반대로 회전
  {
    digitalWrite(IN1Pin, LOW);
    digitalWrite(IN2Pin, HIGH);
  }
}

 

반응형