모터 제어해보기 순한맛

1 분 소요

Intro

Application using this post

  • PID control

based post

  • 피지컬 컴퓨팅
  • MCU 기본

related post

  • 엔코더 센서

Contents

예시

일상 생활에서 모터를 사용하는 장치들을 꽤 많이 찾아볼 수 있습니다. 냉장고의 응축기, 선풍기, 로봇청소기 등등이 있겠네요.
이 포스트에서는 여러 종류의 모터 중에서 DC모터를 제어하는 방밥에 대해 알아볼 겁니다.

이론

로봇을 움직이게 하는 동력원은 무엇이 있을까요?
사람으로 치면 온 몸의 근육으로 예를 들 수 있습니다.
우리가 머릿속으로 생각한 동작들이 신경계를 통해 근육으로 전달됩니다.
마찬가지로 로봇의 신호 전달은 아래와 같이 가느다란 전선으로 가능합니다.
가장 쉽게 생각할 수 있는 것으로 모터가 있습니다.
두뇌에 해당하는 MCU에서 입력받은 센서 신호를 바탕으로 어떻게 움직일지 모터로 전달하게 됩니다.
마찬가지로 로봇들도 주변 환경들을 받아드리고 그에 맞게 행동들을 수행합니다.

그렇다면 근육을 움직이는 힘? 사람으로 치면 atp결합 정도로 보면 될것 같습니다.
이 힘은 모터드라이버가 만들어주게 됩니다. MCU와는 다르게 투박하게 생겼네요!
정리하면 크게 3가지 정도가 필요합니다.

제어 보드 모터 출력을 만들어 낼 수 있는 MCU를 내장하고 있는 제어 보드가 필요합니다. 아두이노, 뉴클레오, 디스커버리 등의 보드가 필요합니다. 이 포스트에서는 아두이노를 사용합니다.
DC모터: 2개의 단자가 있으며, 단자에 +극과 -극을 연결할 경우 모터가 동작하게 됩니다. 만약 극을 반대로 연결하게 된다면 모터는 반대방향으로 회전합니다.
모터드라이버: 입력받은 신호를 바탕으로 모터를 구동할 수 있는 출력을 만들어냅니다. 모터 드라이버에 구형파 신호와 방향 신호를 입력해주면 해당하는 방향으로 구형파를 증폭하여 출력합니다.

적용

아래 모터드라이버는 L298N 이라는 모터 드라이버입니다. 모터 드라이버에는 입력 핀들과 출력 핀들이 있습니다.
자세히 보면 Motor AMotor B로 표시된 신호입력이 2개가 있네요.
이를 통해 모터 2개를 하나의 모터 드라이버에서 동작하게 할 수 있는것을 의미합니다.
또한 모터의 전원을 따로 입력하는것도 포인트입니다.
아두이노 IDE로 작성한 코드는 아래와 같습니다.
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);
  digitalWrite(8, LOW);
  analogWrite(9, 100);
  /*모터B설정*/
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  analogWrite(3, 50);
  delay(3000);

  /*모터A설정*/
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  analogWrite(9, 200);
  /*모터B설정*/
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  analogWrite(3, 150);
  delay(3000);
}

Expending

이 이론과 기술을 통한 다른 곳으로의 확장

Outro

이 포스트에서 간단한 모터 동작 방법에 대해 알아 봤습니다.
모터를 직접 동작해보는 활동을 초등학교때 접했었는데, 그때는 아~ 도는구나~ 라고 막연하게 생각했었는데,,,
어떻게 제어하는지에 대해서는 대학교 와서야 알게 되었네요 :)

analogWrite()함수로 모터의 속도를 조절하는것을 예제 코드에서 볼 수 있습니다.
기구가 무겁거나, 오르막 내리막이 심한 상황에서 모터의 속도를 일정하게 유지하려면 어떻게 속도조절을 해야 할까요? 다음 시간에 면밀하 알아보도록 하겠습니다.

참고

  • colson