ESP32 DRV8825 스테퍼 모터 드라이버

이 가이드에서는 DRV8825 스테퍼 모터 드라이버를 탐구하고 ESP32를 사용하여 스테퍼 모터를 작동하는 방법을 알아봅니다. 다음 세부 사항을 다룰 것입니다:

ESP32 DRV8825 모듈

Hardware Preparation

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | 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 Expansion Board for ESP32 쿠팡 | Amazon
1×(추천) Power Splitter For ESP32 Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

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

DRV8825는 CNC 기계, 3D 프린터 및 로봇과 같은 장치에서 양극성 스테퍼 모터를 제어하는 데 사용되는 인기 있는 스테퍼 모터 드라이버입니다. 이 드라이버는 조정 가능한 전류 제한, 과열 보호 및 풀 스텝, 1/2, 1/4, 1/8, 1/16, 1/32과 같은 다양한 마이크로스테핑 옵션과 같은 기능을 포함합니다. 이 모듈은 적절한 냉각으로 코일당 최대 2.2A를 관리할 수 있으며, 8.2V에서 45V까지의 넓은 전압 범위에서 작동하여 다양한 스테퍼 모터에 적합합니다.

풀스텝, 마이크로스테핑, 유니폴라 스테퍼, 바이폴라 스테퍼와 같은 스테퍼 모터 개념을 이해하려면 ESP32 - 스테퍼 모터 가이드를 참조하세요.

NEMA 17과 같은 양극 스테퍼 모터의 속도와 방향을 관리하는 데 ESP32 핀 두 개만 필요하다는 점이 인상적입니다.

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 ESP32
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.
  • 드라이버 관리를 위한 ESP32에 연결된 핀: ENABLE, M1, M2, M3, RESET, SLEEP.
  • 모터 방향 및 속도 제어를 위한 ESP32에 연결된 핀: DIR, STEP.
  • ESP32에 피드백을 보내기 위한 핀: FAULT.
  • 모터의 전원 공급원에 연결된 핀: VMOT, GND (모터 전원 접지).
  • ESP32의 접지에 연결된 핀: GND (논리 접지).

DRV8825 모듈은 내장된 3.3V 전압 조절기를 통해 모터 전원 공급 장치에서 전력을 얻기 때문에 ESP32 보드로부터 로직 전원이 필요하지 않습니다. 그럼에도 불구하고, 올바르게 작동하고 공통 접지 기준을 갖도록 ESP32의 접지를 DRV8825 모듈의 GND (logic) 핀에 연결하는 것이 중요합니다.

마이크로스텝 구성

DRV8825 드라이버는 각 스텝을 더 작은 부분으로 나누어 마이크로스테핑을 가능하게 합니다. 이는 모터 코일에 다양한 수준의 전류를 보내어 이루어집니다.

예를 들어, 1.8도 스텝 각도를 가진 NEMA 17 모터(한 바퀴에 200 스텝):

  • 풀스텝 모드: 한 바퀴에 200단계
  • 하프스텝 모드: 한 바퀴에 400단계
  • 쿼터스텝 모드: 한 바퀴에 800단계
  • 에이스텝 모드: 한 바퀴에 1600단계
  • 식스틴스텝 모드: 한 바퀴에 3200단계
  • 서른두스텝 모드: 한 바퀴에 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 상태를 유지하는 내장 풀다운 저항기를 포함하고 있습니다. 연결되지 않으면 모터는 풀스텝 모드로 작동합니다.

작동 원리

DR8825 모듈로 스테퍼 모터를 작동시키려면 ESP32 핀이 두 개 필요합니다: 하나는 DIR 핀용, 다른 하나는 STEP 핀용입니다. DRV8825는 ESP32로부터 이러한 신호를 처리하여 스테퍼 모터를 정확하게 움직입니다.

  • STEP 핀: STEP 핀의 각 신호는 설정에 따라 모터를 한 작은 단계 또는 한 완전 단계 앞으로 이동시킵니다.
  • DIR 핀: 모터가 회전하는 방향을 설정합니다.

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

DRV8825 모듈의 추가 핀(ENABLE, M1, M2, M3, RESET, SLEEP)을 다음 세 가지 방법 중 하나로 설정할 수도 있습니다:

  • 표준 설정을 사용할 수 있도록 분리해 두세요.
  • 일정한 모드를 위해 직접 GND 또는 VCC에 연결하세요.
  • 프로그래밍을 통해 이러한 기능을 관리하기 위해 ESP32 핀에 연결하세요.

ESP32와 DRV8825 모듈 및 스테퍼 모터 간의 배선도

아래 다이어그램은 ESP32, DRV8825 모듈, 그리고 스테퍼 모터 간의 기본 연결을 보여줍니다. 이 구성에서 DRV8825 드라이버는 기본 모드(풀스텝)로 작동합니다.

ESP32 DRV8825 스테퍼 모터 드라이버 배선도

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

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

심층적으로:

  • VMOT: 모터의 전원 공급원 (예: 12V)에 연결하십시오.
  • GND (for Motor): 모터 전원 공급 장치의 접지에 연결하십시오.
  • 1A, 1B, 2A, 2B: 스테퍼 모터의 코일에 연결하십시오.
  • STEP: ESP32의 디지털 핀 D4에 연결하십시오.
  • DIR: ESP32의 디지털 핀 D3에 연결하십시오.
  • GND (for Logic): ESP32의 GND 핀에 연결하십시오.
  • 기타 핀: 연결하지 마십시오.

ESP32 코드

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN 12 // The ESP32 pin GPIO12 connected to STEP pin of DRV8825 module #define DIR_PIN 14 // The ESP32 pin GPIO14 connected to DIR pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position 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

  • ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정 방법을 참조하세요.
  • 위 이미지와 같이 배선을 연결하세요.
  • USB 케이블을 통해 ESP32 보드를 PC에 연결하세요.
  • PC에서 Arduino IDE를 여세요.
  • 올바른 ESP32 보드(예: ESP32 Dev Module)와 COM 포트를 선택하세요.
  • 위 코드를 복사하여 Arduino IDE에서 여세요.
  • Arduino IDE 왼쪽의 Libraries 섹션으로 이동하세요.
  • "AccelStepper"를 검색한 후 Mike McCauley의 AccelStepper 라이브러리를 찾으세요.
  • Install 버튼을 눌러 AccelStepper 라이브러리를 추가하세요.
ESP32 AccelStepper 라이브러리
  • 코드를 복사하여 Arduino IDE에서 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP32로 전송합니다.
  • 모터가 앞뒤로 움직이는 것을 볼 수 있습니다.

팁: 모터를 풀 스텝 모드로 작동할 때 움직임이 매끄럽지 않을 수 있지만, 이는 일반적입니다. 더 부드러운 움직임을 위해 M1, M2, M3 핀을 설정하여 마이크로스테핑을 켜십시오.

Video Tutorial

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