아두이노 DRV8825 스텝 모터 드라이버

이 튜토리얼에서는 DRV8825 스테퍼 모터 드라이버에 대해 배우고 Arduino를 사용하여 스테퍼 모터를 제어하는 방법을 배워보겠습니다. 자세히 알아볼 내용은 다음과 같습니다:

아두이노 DRV8825 모듈

Hardware Preparation

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B (for USB-A PC) 쿠팡 | Amazon
1×USB 2.0 cable type C/B (for USB-C PC) Amazon
1×Stepper Motor Nema 17 Amazon
1×DRV8825 Stepper Motor Driver Amazon
1×Expansion Board for DRV8825 Motor Driver Amazon
1×12V Power Adapter Amazon
1×DC Power Jack 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(추천) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(추천) Breadboard Shield For Arduino Uno 쿠팡 | Amazon
1×(추천) Enclosure For Arduino Uno 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

DRV8825 스테퍼 모터 드라이버 소개

DRV8825는 CNC 기계, 3D 프린터, 로봇 공학과 같은 응용 프로그램에서 양극성 스텝 모터 제어에 널리 사용되는 스텝 모터 드라이버 모듈입니다. 이 모듈은 조정 가능한 전류 제한, 과열 보호, 및 전체 스텝, 1/2, 1/4, 1/8, 1/16, 1/32을 포함한 6단계 마이크로스테핑 옵션을 제공합니다. 모듈은 적절한 냉각을 통해 코일당 2.2A까지 처리할 수 있으며, 8.2V부터 45V까지 넓은 전압 범위에서 작동하여 다양한 스텝 모터에 적합합니다.

스테퍼 모터의 개념, 예를 들어 풀스텝, 마이크로스테핑, 유니폴라 스테퍼 및 바이폴라 스테퍼에 대해 배우려면 Arduino - Stepper Motor 튜토리얼을 참조하세요.

NEMA 17과 같은 양극 스테퍼 모터의 속도와 방향을 제어하는 것이 아두이노의 단 두 핀만 필요하다는 것은 인상적입니다.

DRV8825 스테퍼 모터 드라이버 핀아웃

DRV8825 모듈 핀아웃

DRV8825 스테퍼 모터 드라이버는 16개의 핀이 있습니다. 아래는 DRV8825 스테퍼 모터 드라이버 모듈의 일반적인 핀 배열입니다. 일부 모듈 변형은 핀 레이블이 약간 다를 수 있지만, 기능은 동일합니다.

Pin Name Description
VMOT Motor power supply (8.2 V to 45 V). This powers the stepper motor.
GND (for Motor) Ground reference for the motor power supply. Connect this pin to the GND of the motor power supply
2B, 2A Outputs to Coil B of the stepper motor.
1A, 1B Outputs to Coil A of the stepper motor.
FAULT Fault Detection Pin. This is an output pin that drives LOW whenever the H-bridge FETs are disabled as the result of over-current protection or thermal shutdown.
GND (for Logic) Ground reference for the logic signals. Connect this pin to the GND of Arduino
ENABLE Active-Low pin to enable/disable the motor outputs. LOW = Enabled, HIGH = Disabled.
M1, M2, M3 Microstepping resolution selector pins (see table below).
RESET Active-Low reset pin - pulling this pin LOW resets the driver.
SLEEP Active-Low sleep pin - pulling this pin LOW puts the driver into low-power sleep mode.
STEP Step input - a rising edge on this pin advances the motor by one step (or one microstep, depending on microstepping setting).
DIR Direction input - sets the rotation direction of the stepper motor.

또한, 스텝 모터와 드라이버의 과열을 방지하기 위해 전류 제한을 설정할 수 있도록 조정 가능한 작은 온보드 포텐셔미터가 있습니다.

요약하자면, 이 16개의 핀은 기능에 따라 다음과 같은 범주로 분류됩니다:

  • 스테퍼 모터에 연결된 핀: 1A, 1B, 2A, 2B.
  • 드라이버 제어를 위한 아두이노에 연결된 핀: ENABLE, M1, M2, M3, RESET, SLEEP.
  • 모터 방향 및 속도 제어를 위한 아두이노에 연결된 핀: DIR, STEP.
  • 아두이노에 피드백을 위한 핀: FAULT.
  • 모터 전원 공급에 연결된 핀: VMOT, GND(모터 전원 접지).
  • 아두이노 접지에 연결된 핀: GND(논리 접지).

DRV8825 모듈은 Arduino 보드에서 논리 전원을 필요로 하지 않으며, 내부 3.3V 전압 조정기를 사용하여 모터 전원 공급 장치에서 전력을 끌어옵니다. 그러나 DRV8825 모듈의 GND (logic) 핀에 Arduino의 그라운드를 연결하여 적절한 작동과 공유된 그라운드 참조를 보장하는 것이 중요합니다.

마이크로스텝 구성

DRV8825 드라이버는 각 스텝을 더 작은 단계로 나누어 마이크로스테핑을 가능하게 합니다. 이는 모터 코일에 중간 전류 레벨을 적용함으로써 달성됩니다.

예를 들어, 1.8° 스텝 각도를 가진 NEMA 17 모터(회전당 200 스텝):

  • 풀 스텝 (1/1) 모드: 회전당 200 스텝
  • 1/2 스텝 모드: 회전당 400 스텝
  • 1/4 스텝 모드: 회전당 800 스텝
  • 1/8 스텝 모드: 회전당 1600 스텝
  • 1/16 스텝 모드: 회전당 3200 스텝
  • 1/32 스텝 모드: 회전당 6400 스텝

마이크로스테핑 레벨을 올리면 모터가 더 부드럽고 정밀하게 움직이지만, 회전당 필요한 추가 단계가 증가합니다. 동일한 스텝 펄스 속도(초당 펄스 수)를 계속 사용하는 경우, 회전당 시간이 길어져 모터가 실질적으로 느려지게 됩니다.

하지만 마이크로컨트롤러가 더 높은 스텝 수에 맞춰 충분히 빠르게 펄스를 출력할 수 있다면, 속도를 유지하거나 증가시킬 수 있습니다. 실제 한계는 드라이버와 마이크로컨트롤러가 스텝 손실 없이 이러한 펄스를 처리할 수 있는 속도에 달려 있습니다.

DRV8825 마이크로스텝 선택 핀

DRV8825에는 세 개의 마이크로스텝 해상도 선택 입력이 있습니다: M0, M1, M2 핀. 이러한 핀을 특정 논리 수준으로 구성함으로써 여섯 가지 마이크로스테핑 해상도 중에서 선택할 수 있습니다.

M0 Pin M1 Pi M2 Pi Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low 1/4 step
High High Low 1/8 step
Low Low High 1/16 step
High Low High 1/32 step
Low High High 1/32 step
High High High 1/32 step

이 마이크로스텝 선택 핀에는 기본적으로 LOW 상태를 유지하는 온보드 풀다운 저항이 장착되어 있습니다. 연결하지 않으면 모터는 풀스텝 모드로 작동합니다.

작동 방식

DRV8825 모듈을 사용하여 스테퍼 모터를 제어하려면 최소 두 개의 아두이노 핀이 필요합니다. 하나는 DIR 핀을 위해서, 또 하나는 STEP 핀을 위해서입니다. DRV8825는 아두이노에서 오는 이 신호들을 해석하여 스테퍼 모터를 정밀하게 움직입니다.

  • STEP 핀: STEP 핀에 들어오는 각 펄스는 모터를 한 마이크로스텝(또는 마이크로스테핑 설정에 따라 한 전체 스텝)만큼 전진시킵니다.
  • DIR 핀: 모터의 회전 방향을 결정합니다.

그 후 드라이버는 이러한 신호와 자체 설정을 사용하여 1A, 1B, 2A, 2B 핀을 통해 제어 출력을 모터로 보냅니다.

다음 단자들(ENABLE, M1, M2, M3, RESET, SLEEP)을 DRV8825 모듈에서 세 가지 방법 중 하나로 추가 구성할 수 있습니다:

  • 드라이버가 기본 설정으로 작동하도록 하려면 연결하지 않은 상태로 두십시오.
  • 고정 작동 모드를 위해 GND 또는 VCC에 하드와이어링 하십시오.
  • Arduino 핀에 연결하여 코드 내에서 동적으로 이 기능들을 제어할 수 있습니다.

아두이노, DRV8825 모듈 및 스테퍼 모터 간의 배선도

다음 배선도는 Arduino, DRV8825 모듈, 스테퍼 모터 사이에 필요한 최소 연결을 보여줍니다. 이 설정으로 DRV8825 드라이버는 기본 모드(풀스텝)로 작동합니다.

아두이노 DRV8825 스텝 모터 드라이버 배선도

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

자세히:

  • VMOT: 모터 전원 공급 장치(예: 12V)에 연결합니다.
  • GND (for Motor): 모터 전원 공급 장치의 접지에 연결합니다.
  • 1A, 1B, 2A, 2B: 스테퍼 모터 코일에 연결합니다.
  • STEP: Arduino 디지털 핀 D4에 연결합니다.
  • DIR: Arduino 디지털 핀 D3에 연결합니다.
  • GND (for Logic): Arduino GND 핀에 연결합니다.
  • 다른 핀: 연결하지 않습니다.

아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-drv8825-stepper-motor-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // Define pin connections #define DIR_PIN 3 #define STEP_PIN 4 // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position stepper.setMaxSpeed(1000); stepper.setAcceleration(200); stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

Detailed Instructions

  • 위 코드를 복사하여 Arduino IDE에서 엽니다.
  • Arduino IDE의 왼쪽 막대에서 Libraries 아이콘으로 이동합니다.
  • "AccelStepper"를 검색한 후 Mike McCauley의 AccelStepper 라이브러리를 찾습니다.
  • AccelStepper 라이브러리를 설치하기 위해 Install 버튼을 클릭합니다.
아두이노 AccelStepper 라이브러리
  • 위의 코드를 복사하여 Arduino IDE로 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino에 업로드합니다.
  • 모터가 앞뒤로 회전하는 것을 볼 수 있습니다.

참고: 모터를 풀스텝 모드로 작동할 때 움직임이 아주 부드럽지 않을 수 있으며, 이는 정상입니다. 더 부드러운 움직임을 원하면 M1, M2, M3 핀을 설정하여 마이크로스테핑을 활성화하세요.

Video Tutorial

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