아두이노 - 직류 모터 | Arduino - DC Motor

이 튜토리얼에서 우리는 다음을 배울 예정입니다:

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×L298N Motor Driver Module Amazon
1×5V DC Motor Amazon
1×5V Power Adapter for 5V DC motor Amazon
1×DC Power Jack 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

DC 모터에 관하여

DC 모터 핀배열

DC 모터는 두 개의 전선이 있습니다:

  • Positive wire: 보통 빨간색
  • Negative wire: 보통 검은색
DC Motor Pinout

작동 방법

DC 모터를 구매할 때는 어떤 전압의 DC 모터인지 알아야 합니다. 예를 들어, 12V DC 모터를 예로 들어봅시다.

12V 전원 소스로 12V DC 모터를 작동시킬 때:

  • 12V와 GND를 각각 긍정선과 부정선에 연결: DC 모터가 시계 방향으로 최대 속도로 회전합니다.
  • 12V와 GND를 각각 부정선과 긍정선에 연결: DC 모터가 반시계 방향으로 최대 속도로 회전합니다.

위에서 설명한 바와 같이, 직류 모터의 두 전선 간에 전력 극이 교체될 때, 회전 방향이 반전됩니다. 이 방법은 직류 모터의 방향을 제어하는 데 사용됩니다. 물론, 수동으로 변경하는 것이 아니라 프로그래밍을 통해 제어합니다.

12V 미만으로 DC 모터에 전력을 공급하면 모터가 여전히 회전하지만 최대 속도는 아닙니다. 이는 전력 공급의 전압을 변경하면 DC 모터의 속도를 변경할 수 있다는 것을 의미합니다. 그러나 전원의 전압을 제어하기 어렵기 때문에 이 방법은 실제로 사용되지 않습니다. 대신, 우리는 전원의 전압을 고정시키고 PWM 신호를 통해 DC 모터의 속도를 제어합니다. PWM의 듀티 사이클이 클수록 DC 모터가 회전하는 속도가 높아집니다.

How to control DC motor

아두이노를 사용하여 DC 모터를 제어하는 방법

DC 모터를 제어하는 것에는 두 가지 요소가 포함됩니다: 속도와 방향. 아두이노는 PWM 신호를 생성할 수 있습니다. 그러나 이 PWM 신호는 전압과 전류가 낮아서 DC 모터를 제어하는 데 사용할 수 없습니다. 아두이노와 DC 모터 사이에 하드웨어 드라이버를 사용해야 합니다. 드라이버는 두 가지 작업을 합니다:

  • 아두이노에서 나오는 PWM 신호의 전류 및 전압을 증폭합니다 → 속도 제어용
  • 아두이노에서 제어 신호를 받아 전원 공급 장치의 극성을 바꿉니다 → 방향 제어용
Arduino control DC motor

※ NOTE THAT:

이 튜토리얼은 모든 DC 모터에 적용될 수 있습니다. 12V DC 모터는 단지 예시일 뿐입니다.

5V DC 모터를 제어할 때, 아두이노 핀이 5V(DC 모터의 전압과 같음)를 출력하더라도, 아두이노 핀이 DC 모터에 필요한 충분한 전류를 제공하지 않기 때문에 아두이노와 DC 모터 사이에 드라이버가 필요합니다.

여러 종류의 칩, 모듈(예: L293D, L298N)이 DC 모터 드라이버로 사용될 수 있습니다. 이 튜토리얼에서는 L298N 드라이버를 사용할 것입니다.

L298N 드라이버에 대하여

L298N 드라이버는 직류 모터와 스텝 모터를 제어하는데 사용될 수 있습니다. 이 튜토리얼에서는 직류 모터를 제어하는 방법을 배웁니다.

L298N 드라이버 핀아웃

L298N Driver Pinout

L298N 드라이버는 동시에 두 개의 DC 모터를 독립적으로 제어할 수 있으며, 이를 모터 A와 모터 B라고 합니다. L298N 드라이버는 13개의 핀을 가지고 있습니다:

두 모터에 공통적인 핀들:

  • VCC 핀: 모터에 전원을 공급합니다. 5V에서 35V 사이 어디든 될 수 있습니다.
  • GND 핀: 공통 접지 핀으로, GND(0V)에 연결해야 합니다.
  • 5V 핀: L298N 모듈에 전원을 공급합니다. 아두이노에서 5V로 공급할 수 있습니다.

모터 A 핀 (채널 A):

  • ENA 핀: 모터 A의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면 모터 A의 속도를 제어할 수 있습니다.
  • IN1 & IN2 핀: 모터 A의 회전 방향을 제어하는 데 사용됩니다. 하나는 HIGH이고 다른 하나는 LOW일 때, 모터 A는 회전할 것입니다. 두 입력이 모두 HIGH이거나 LOW이면 모터 A는 정지할 것입니다.
  • OUT1 & OUT2 핀: 모터 A에 연결됩니다.

모터 B 핀 (채널 B):

  • ENB 핀: Motor B의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면 Motor B의 속도를 제어할 수 있습니다.
  • IN3 & IN4 핀: Motor B의 회전 방향을 제어하는 데 사용됩니다. 둘 중 하나가 HIGH이고 다른 하나가 LOW일 때, Motor B가 회전합니다. 두 입력 모두 HIGH이거나 LOW인 경우 Motor B는 멈출 것입니다.
  • OUT3 & OUT4 핀: Motor B에 연결됩니다.

위에서 설명한 바와 같이, L298N 드라이버는 두 가지 입력 전원을 가지고 있습니다:

  • DC 모터용(VCCGND 핀): 5에서 35V까지.
  • L298N 모듈의 내부 작동용(5V 및 GND 핀): 5에서 7V까지.

L298N 드라이버에는 고급 사용 또는 기타 용도를 위한 점퍼 3개도 있습니다. 단순함을 위해, L298N 드라이버에서 모든 점퍼를 제거해 주세요.

아두이노와 L298N 드라이버를 사용하여 두 개의 DC 모터를 동시에 독립적으로 제어할 수 있습니다. 각 모터를 제어하려면 아두이노에서 단 3개의 핀만 필요합니다.

※ NOTE THAT:

이 튜토리얼의 나머지 부분은 채널 A를 사용하여 DC 모터를 제어합니다. 다른 DC 모터를 제어하는 것은 비슷합니다.

DC 모터의 속도를 L298N 드라이버를 통해 제어하는 방법

DC 모터의 속도를 L298N의 ENA 핀에 PWM 신호를 생성함으로써 간단히 제어할 수 있습니다. 우리는 다음과 같이 이것을 할 수 있습니다:

  • 아두이노 핀을 L298N의 ENA에 연결하십시오.
  • analogWrite() 함수를 사용하여 ENA 핀에 PWM 신호를 생성하십시오. L298N 드라이버는 PWM 신호를 DC 모터로 증폭합니다.
analogWrite(ENA_PIN, speed); // 속도는 0에서 255 사이의 값입니다.

속도는 0과 255 사이의 값입니다. 속도가 0이면 모터가 멈춥니다. 속도가 255이면 모터가 최대 속도로 회전합니다.

L298N 드라이버를 통한 DC 모터 방향 제어 방법

모터의 회전 방향은 IN1 및 IN2 핀에 로직 HIGH/LOW를 적용함으로써 제어할 수 있습니다. 아래 표는 두 채널 모두에서 방향을 제어하는 방법을 설명합니다.

IN1 pin IN2 pin Direction
LOW LOW Motor A stops
HIGH HIGH Motor A stops
HIGH LOW Motor A spins Clockwise
LOW HIGH Motor A spins Anti-Clockwise

제어 모터 A가 시계 방향으로 회전합니다.

digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);

제어 모터 A가 반시계 방향으로 회전합니다.

digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ NOTE THAT:

OUT1 및 OUT2 핀이 DC 모터의 두 핀에 반대 방향으로 연결되면 회전 방향이 반전됩니다. 그럴 경우에는 OUT1 및 OUT2 핀을 서로 바꾸거나 코드 내의 IN1 및 IN2 핀에 대한 제어 신호를 변경하면 됩니다.

DC 모터 회전을 멈추는 방법

DC 모터를 멈추는 두 가지 방법이 있습니다.

속도를 0으로 조절합니다.

analogWrite(ENA_PIN, 0);

IN1 IN2 핀을 동일한 값(LOW 또는 HIGH)으로 제어합니다.

digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • 또는
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

DC 모터를 L298N 드라이버를 사용하여 제어하는 방법

배선도

L298N 모듈에 연결하기 전에 모든 세 개의 점퍼를 제거해 주세요.

Arduino DC Motor L298N Driver Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 코드

아래 코드는 다음과 같은 작업을 수행합니다:

  • DC 모터 속도 올리기
  • 방향 바꾸기
  • DC 모터 속도 낮추기
  • 모터 정지
/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-dc-motor */ // 상수는 변하지 않음 const int ENA_PIN = 9; // EN1 핀 L298N에 연결된 아두이노 핀 const int IN1_PIN = 6; // IN1 핀 L298N에 연결된 아두이노 핀 const int IN2_PIN = 5; // IN2 핀 L298N에 연결된 아두이노 핀 // setup 함수는 보드에 리셋을 누르거나 전원을 켤 때 한 번 실행됩니다. void setup() { // 디지털 핀을 출력으로 초기화합니다. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // loop 함수는 계속해서 영원히 반복 실행됩니다 void loop() { digitalWrite(IN1_PIN, HIGH); // 모터 A가 시계 방향으로 회전하도록 제어 digitalWrite(IN2_PIN, LOW); // 모터 A가 시계 방향으로 회전하도록 제어 for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // 속도 제어 delay(10); } delay(1000); // 시계 방향으로 최대 속도로 1초 동안 회전 // 방향 변경 digitalWrite(IN1_PIN, LOW); // 모터 A가 반시계 방향으로 회전하도록 제어 digitalWrite(IN2_PIN, HIGH); // 모터 A가 반시계 방향으로 회전하도록 제어 delay(1000); // 반시계 방향으로 최대 속도로 1초 동안 회전 for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // 속도 제어 delay(10); } delay(1000); // 모터 정지 1초 }

사용 방법

L298N 모듈의 세 점퍼를 모두 제거하세요.

위의 코드를 복사하여 Arduino IDE로 열기

Arduino IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하세요.

다음을 확인할 수 있습니다:

  • DC 모터의 속도가 빨라지고 최대 속도로 1초간 회전합니다.
  • DC 모터의 방향이 변경됩니다.
  • DC 모터가 반대 방향으로 최대 속도로 1초간 회전합니다.
  • DC 모터의 속도가 줄어듭니다.
  • DC 모터가 1초 동안 정지합니다.
  • 위의 과정이 반복됩니다.

※ NOTE THAT:

이 튜토리얼에서는 최대 속도에 상대적인 DC 모터 속도를 제어하는 방법을 배웁니다. 절대 속도(초당 회전 수)를 제어하기 위해서는 PID 컨트롤러와 엔코더를 사용해야 합니다. DC 모터의 절대 속도를 제어하는 방법은 다른 튜토리얼에서 소개될 예정입니다.

L298N 드라이버를 사용하여 두 개의 DC 모터 제어 방법

(곧 출시됩니다)

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!