ESP8266 - 28BYJ-48 스테퍼 모터 ULN2003 드라이버 | ESP8266 - 28BYJ-48 Stepper Motor ULN2003 Driver

이 튜토리얼은 ESP8266을 사용하여 ULN2003 드라이버를 이용해 28BYJ-48 스테퍼 모터를 제어하는 방법을 안내합니다. 구체적으로, 우리는 다음을 배울 것입니다:

ESP8266 NodeMCU ULN2003 28BYJ-48 stepper motor

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×28BYJ-48 stepper motor + ULN2003 Driver Module Amazon
1×5V Power Adapter Amazon
1×DC Power Jack 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) 5V Power Adapter for ESP8266 Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

28BYJ-48 스테퍼 모터에 관하여

스테퍼 모터는 위치 제어에 이상적입니다. 스테퍼 모터는 전체 회전을 동일한 "단계"로 분할합니다. 이 모터들은 프린터, 3D 프린터, CNC 기계, 산업 자동화 등 다양한 기기에서 사용됩니다.

스테퍼 모터에 대한 지식을 얻는 비용 효율적인 방법 중 하나는 28BYJ-48 스테퍼 모터를 활용하는 것입니다. 이들은 보통 ULN2003 기반 드라이버 보드와 함께 제공되어 사용하기 쉽습니다.

데이터 시트에 명시된 바와 같이, 28BYJ-48 모터는 전단계 모드에서 동작하며, 각 단계는 11.25° 회전을 나타냅니다. 따라서 단일 회전에는 32단계가 있습니다 (360°/11.25° = 32).

게다가, 이 모터는 1/64 감속 기어 세트를 가지고 있습니다. 이는 32 x 64 = 2048 단계로 변환됩니다. 각 단계는 360°/2048 = 0.1758°와 동일합니다.

결론: 모터가 풀-스텝 모드로 설정되어 있다면, 한 바퀴를 완성하기 위해서는 2048 스텝이 필요합니다.

28BYJ-48 스테퍼 모터 및 ULN2003 드라이버 핀배열

28BYJ-48 스테퍼 모터는 5개의 핀을 가지고 있습니다. 이 핀들의 구체적인 사항에 대해 우리가 관심을 가질 필요는 없습니다. 우리가 해야 할 일은 그것을 ULN2003 모터 드라이버 커넥터에 꽂는 것뿐입니다.

28BYJ-48 stepper motor

ULN2003 스테퍼 모터 드라이버 모듈에 관하여

ULN2003은 스텝 모터에 널리 사용되는 모터 드라이버 모듈입니다.

  • 이것은 4개의 제어 입력 라인의 활동을 표시하는 4개의 LED를 갖추고 있으며, 모터가 움직일 때 인상적인 효과를 줍니다.
  • 또한, 스테퍼 모터에 전원 공급을 분리하기 위한 ON/OFF 점퍼를 포함하고 있습니다.

ULN2003 핀배열

ULN2003 Stepper Motor Driver pinout

ULN2003 모듈에는 6개의 핀과 여성 커넥터가 있습니다:

  • IN1: 이 핀은 모터를 구동하는 데 사용되며 ESP8266의 출력 핀에 연결해야 합니다.
  • IN2: 이 핀은 모터를 구동하는 데 사용되며 ESP8266의 출력 핀에 연결해야 합니다.
  • IN3: 이 핀은 모터를 구동하는 데 사용되며 ESP8266의 출력 핀에 연결해야 합니다.
  • IN4: 이 핀은 모터를 구동하는 데 사용되며 ESP8266의 출력 핀에 연결해야 합니다.
  • GND: 이것은 공통 접지 핀이며, ESP8266의 GND와 외부 전원 공급 장치의 GND에 모두 연결해야 합니다.
  • VDD: 이 핀은 모터에 전원을 공급하며 외부 전원 공급 장치에 연결해야 합니다.
  • 모터 커넥터: 여기에 모터를 연결합니다.

※ NOTE THAT:

외부 전원 공급 장치의 전압은 스텝 모터의 전압과 일치해야 합니다. 예를 들어, 스텝 모터가 12V DC로 작동하는 경우 12V 전원 공급 장치를 사용해야 합니다. 5V DC로 작동하는 28BYJ-48 스텝 모터의 경우, 5V 전원 공급 장치를 사용해야 합니다.

그러나, 스텝 모터가 5V 전원 공급이 필요하더라도 VDD 핀은 ESP8266의 5V 핀에 연결되어서는 안 됩니다. 대신, 스텝 모터가 너무 많은 전력을 소모하기 때문에 외부 5V 전원 공급 장치에 연결해야 합니다.

선연결

ESP8266 NodeMCU stepper motor ULN2003 driver wiring diagram

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

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

스텝 모터의 전선 색상을 고려할 필요가 없습니다. 28BYJ-48 스텝 모터의 남성 커넥터를 ULN2003 드라이버의 여성 커넥터에 꽂기만 하면 됩니다.

스텝 모터 제어를 위한 프로그래밍 방법

스테퍼 모터를 제어하는 방법은 세 가지가 있습니다:

  • Full-step: 풀스텝
  • Half-step: 하프스텝
  • Micro-step: 마이크로스텝

기본 애플리케이션의 경우에는 전 단계 방법을 사용할 수 있습니다. 이 세 가지 방법의 구체적인 사항은 이 튜토리얼의 후반부에서 다루어질 예정입니다. 이러한 방법들을 프로그래밍하는 것은 복잡할 수 있습니다. 다행히도, 이미 작업을 완료한 많은 라이브러리가 있으므로 우리가 해야 할 일은 라이브러리를 활용하는 것뿐입니다.

Arduino IDE는 Stepper 라이브러리를 포함하고 있습니다. 그러나, 다음과 같은 이유로 이 라이브러리를 사용하는 것을 권장하지 않습니다:

  • 라이브러리는 차단 중이므로 스테퍼 모터를 제어하는 동안 ESP8266이 다른 작업을 수행하지 못하게 합니다.
  • 충분한 기능을 제공하지 않습니다.

대신, AccelStepper 라이브러리를 사용하는 것이 좋습니다. 이 라이브러리는 다음을 제공합니다:

  • 가속
  • 감속
  • 전단계 및 반단계 주행
  • 여러 스테퍼를 독립적으로 제어할 수 있는 능력
  • 단점: 마이크로 스텝 구동을 지원하지 않습니다.

ESP8266 코드

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-28byj-48-stepper-motor-uln2003-driver */ // AccelStepper 라이브러리 포함 #include <AccelStepper.h> // 정의 단계 상수 #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // 이 값은 데이터시트에서 가져옴 // 적절한 단계 순서를 위해 IN1-IN3-IN2-IN4 순으로 입력된 ESP8266 핀 AccelStepper stepper(FULLSTEP, D1, D5, D2, D6); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // 최대 속도 설정 stepper.setAcceleration(50.0); // 가속도 설정 stepper.setSpeed(200); // 초기 속도 설정 stepper.setCurrentPosition(0); // 위치 설정 stepper.moveTo(STEP_PER_REVOLUTION); // 목표 위치 설정: 64 단계 <=> 한 번의 회전 } void loop() { // 모터가 목표 위치에 도달하면 방향 변경 if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // loop() 함수에서 호출해야 함 Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

사용 방법

ESP8266을 Arduino IDE에서 시작하려면 다음 단계를 따르세요:

  • ESP8266을 처음 사용하는 경우 Arduino IDE에서 ESP8266 환경 설정 방법 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성 요소를 연결하세요.
  • USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드를 선택하세요. 예를 들면 (NodeMCU 1.0 (ESP-12E Module))과 해당 COM 포트입니다.
  • Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭합니다.
  • “AccelStepper”를 검색하여 Mike McCauley가 만든 AccelStepper 라이브러리를 찾으세요.
  • 그런 다음 Install 버튼을 눌러 AccelStepper 라이브러리를 설치하세요.
ESP8266 NodeMCU AccelStepper library
  • 코드를 복사하여 Arduino IDE로 엽니다.
  • Upload 버튼을 클릭하여 코드를 ESP8266에 업로드합니다.
  • 모터가 회전하는지 확인합니다.
  • 시계 방향으로 한 번 회전한 후에 반시계 방향으로 두 번 회전하고, 다시 시계 방향으로 두 번 회전해야 합니다.

이 절차는 계속적으로 실행됩니다.

시리얼 모니터에서 결과를 모니터링하십시오.

COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

추가 지식

스테퍼 모터가 움직일 때 진동합니다.

스텝 모터가 움직이는 동안 떨린다고 해서 걱정하지 마십시오. 이것은 스텝 모터의 전형적인 특성입니다. 마이크로 스텝 제어 기술을 사용함으로써 진동을 줄일 수 있습니다.

또한 이 특성으로 인해, 정확하게 관리된다면 스테퍼 모터는 음악 악기처럼 음악적인 음을 생성할 수 있습니다. 이에 대한 예는 여기 Hackster.io에서 찾을 수 있습니다.

스텝 모터 제어 방법

  • 풀 스텝: 이동 단위는 한 걸음이며, 이는 스테퍼 모터의 데이터시트 또는 설명서에 명시된 도(degree)의 값과 동일합니다.
  • 하프 스텝: 각 풀 스텝은 두 개의 더 작은 스텝으로 나뉩니다. 이동 단위는 풀 스텝의 절반입니다. 이 방법은 모터가 두 배의 해상도로 이동하게 합니다.
  • 마이크로 스텝: 각 풀 스텝은 많은 더 작은 스텝들로 나뉩니다. 이동 단위는 풀 스텝의 일부분입니다. 분수는 1/4, 1/8, 1/16, 1/32 또는 그 이상일 수 있습니다. 이 방법은 모터가 더 높은 해상도로 이동할 수 있게 합니다. 또한, 낮은 속도에서 모터의 움직임을 더 부드럽게 만듭니다. 나눗수가 클수록 해상도가 높아지고 움직임이 더 부드러워집니다.

모터 데이터시트에 1.8도/스텝이 명시되어 있다면:

  • 풀스텝: 모터는 스텝 당 1.8도의 증분으로 이동할 수 있으며, 이는 회전 당 200 스텝을 의미합니다.
  • 하프스텝: 모터는 스텝 당 0.9도의 증분으로 이동할 수 있으며, 이는 회전 당 400 스텝을 의미합니다.
  • 마이크로스텝: 모터는 스텝 당 0.45, 0.225, 1125‬, 0.05625도의 증분으로 이동할 수 있으며, 이는 회전 당 800, 1600, 3200, 6400... 스텝을 의미합니다.

위의 코드는 전단계 제어 기법을 사용했습니다.

3. 공명 문제

이것은 고급 사용자를 위한 것입니다. 초보자들은 이것을 주목할 필요가 없습니다. 이것은 단계 속도가 모터의 자연 주파수와 같은 속도 범위에서 발생합니다. 모터가 내는 소음에 뚜렷한 변화가 있을 수 있으며, 진동이 증가할 수도 있습니다. 실제 애플리케이션에서 개발자들은 이것을 인지해야 합니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, 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!