아두이노 L298N 모터드라이버로 DC모터 제어하기

라임 2017-08-05 (토) 21:12 11개월전 9697  

아두이노와  ​L298N 모터드라이버로 DC모터 제어하기

                                                                                                                                                                                                                                                                                                        


모터는 전기에너지를 직선 혹은 회전운동으로 만들어주는 전자부품이며, 간단한 예로 선풍기를 생각할 수 있습니다. 선풍기 내부에는 DC전원으로 

작동하는 DC모터가 들어있으며, 약, 중, 대와 같은 버튼을 누를 경우 회전 속도가 변경합니다. 이와 같이 모터의 회전속도나 방향 등을 제어하려면 

어떻게 해야할까요?

 






DC모터 & 아두이노 우노 보드 & L298N 모터 드라이버

                                                                                                                                                                                                                                                                                                        


DC모터 2개의 단자가 있으며, 단자에 +, - 극을 연결하여 전원을 입력할 경우 모터가 작동합니다. DC모터는 극이 없으며, 전원을  반대로 연결할

경우 반대로 회전하는 성질을 갖습니다. 또한 입력되는 전원(전압)의 크기에 따라 회전수와 힘이 조절됩니다. (전원과 회전수 및 힘은 비례함)


아두이노 보드 프로그램으로 전기신호(PWM)를 제어하기 위한 마이크로컨트롤러 보드입니다. 아두이노 보드에 프로그램을 넣어 전기신호를 제어

함으로써 모터에 입력되는 전원의 크기를 제어할 수 있으며, 모터의 방향 및 속도를 제어하게 됩니다.


모터 드라이버는 아두이노를 보조해주는 역할이라 볼 수 있습니다. 모터는 보통 아두이노와 같은 마이크로컨트롤러가 허용하는 전류보다 전류를 많이

사용하기 때문에 추가적인 회로가 필요하며, 그 역할을 하는것이 바로 모터드라이버입니다.








회로 연결하기

                                                                                                                                                                                                                                                                                                        


L298N 모터 드라이버는 5~35V에 해당되는 DC모터 2개 혹은 스텝모터 1개를 제어할 수 있으며, 각 모터당 2A의 연속 전류를 허용합니다. 성능에

비해 가격이 저렴하기 때문에 부담없이 사용할 수 있으며, 아두이노의 5V 출력 혹은 외부전원을 입력받아 모터에 공급해줄 수 있습니다. 아두이노의 

5V핀에 연결할 경우 ~5V ~300mA 모터까지 사용할 수 있으며, 외부 전원을 입력할 경우 전압 5~35V / 전류 ~2A 모터를 사용할 수 있습니다. (외

부 전원이 받쳐준다는 전제하에)






아두이노 코드 (Arduino IDE)

                                                                                                                                                                                                                                                                                                        


모터드라이버의 전원 입력부는 모터에 전원을 입력하기 위한 단자이며, IN1과 IN2는 로직 전압을 입력함으로써 Motor A의 방향을 설정할 수 있습

니다. ENA핀은 PWM신호를 입력함으로써 Motor A의 속도를 제어할 수 있습니다. IN3,IN4, ENB는 Motor B을 위한 핀이며, 이러한 신호는 아두

노에 코드(프로그램)를 입력함으로써 제어할 수 있습니다.


void setup() {

  pinMode(7, OUTPUT);       // Motor A 방향설정1

  pinMode(8, OUTPUT);       // Motor A 방향설정2

  pinMode(4, OUTPUT);       // Motor B 방향설정1

  pinMode(5, OUTPUT);       // Motor B 방향설정2

}


void loop() {

  /*모터A설정*/

  digitalWrite(7, HIGH);     // Motor A 방향설정1

  digitalWrite(8, LOW);      // Motor A 방향설정2

  analogWrite(9, 100);       // Motor A 속도조절 (0~255)

  /*모터B설정*/

  digitalWrite(4, LOW);      // Motor B 방향설정1

  digitalWrite(5, HIGH);     // Motor B 방향설정2

  analogWrite(3, 50);        // Motor B 속도조절 (0~255)

  delay(3000);                   // 3초 유지


  /*모터A설정*/

  digitalWrite(7, LOW);      // Motor A 방향설정1

  digitalWrite(8, HIGH);     // Motor A 방향설정2

  analogWrite(9, 200);      // Motor A 속도조절 (0~255)

  /*모터B설정*/

  digitalWrite(4, HIGH);    // Motor B 방향설정1

  digitalWrite(5, LOW);     // Motor B 방향설정2

  analogWrite(3, 150);      // Motor B 속도조절 (0~255)

  delay(3000);                    // 3초 유지

}




출처: 메카솔루션 - 제품 구매하기 클릭



모바일 버전으로 보기