아두이노 나노 ESP32 - 28BYJ-48 스테퍼 모터 ULN2003 드라이버 | Arduino Nano ESP32 - 28BYJ-48 Stepper Motor ULN2003 Driver
이 튜토리얼에서는 다음 주제를 다룰 것입니다:
- Arduino Nano ESP32 및 ULN2003 드라이버로 단일 28BYJ-48 스테퍼 모터를 제어하기.
- Arduino Nano ESP32 및 ULN2003 드라이버를 사용하여 여러 28BYJ-48 스테퍼 모터 관리하기.
스테퍼 모터는 완전한 회전을 이산적인 "단계"로 나눔으로써 정밀한 위치 제어에서 뛰어납니다. 이 모터들은 프린터, 3D 프린터, CNC 기계 및 산업 자동화 시스템을 포함한 다양한 장치에 응용됩니다.
스테퍼 모터에 대한 통찰을 얻기 위한 저렴한 방법은 28BYJ-48 스테퍼 모터로 실험하는 것입니다. 일반적으로 이 모터들은 ULN2003 기반의 드라이버 보드와 함께 제공되어 사용을 크게 단순화합니다.
준비물
1 | × | Arduino Nano ESP32 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | 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 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
28BYJ-48 스테퍼 모터에 관하여
데이터 시트에 따르면, 28BYJ-48 모터는 전체 스텝 모드로 작동할 때 11.25도 증분으로 이동하여, 완전한 회전당 32단계를 가집니다(계산된 바에 따르면: 360°/11.25° = 32).
또한, 이 모터는 1/64 감속 기어 세트를 통합하여 스텝 수를 32 x 64로 실질적으로 증가시켜, 한 회전당 2048 스텝을 결과로 합니다. 이 2048 스텝 각각은 360°/2048에 해당하는 회전을 나타내며, 이는 대략적으로 스텝 당 0.1758도입니다.
결론: 모터가 전체 스텝 모드에서 2048 스텝을 할 경우, 모터는 한 바퀴 회전합니다.
핀배열
28BYJ-48 스테퍼 모터에는 5개의 핀이 포함되어 있습니다. 이 핀들에 대한 세부 사항을 신경 쓸 필요가 없습니다. 우리가 해야 할 일은 그것을 ULN2003 모터 드라이버의 커넥터에 연결하는 것뿐입니다.
ULN2003 스테퍼 모터 드라이버 모듈에 관하여
ULN2003은 스테퍼 모터용으로 널리 사용되는 모터 드라이버 모듈로서 두드러집니다. 이 모듈의 주요 기능은 다음과 같습니다:
모터의 현재 스테핑 상태를 효과적으로 반영하는 네 개의 제어 입력 라인의 활동을 나타내기 위해 밝혀지는 4개의 LED. 이러한 LED는 실용적인 목적을 제공할 뿐만 아니라 스테핑 과정에 시각적 요소도 추가합니다.
모듈에는 ON/OFF 점퍼가 통합되어 있어 연결된 스테퍼 모터의 전력을 분리할 수 있게 합니다. 이 기능은 모터의 전원 공급을 효율적으로 관리할 수 있는 편리한 수단을 제공합니다.
ULN2003 핀배열
ULN2003 모듈에는 6개의 핀과 하나의 암 커넥터가 포함되어 있습니다:
- IN1 핀: 모터를 구동하는데 사용됩니다. Arduino Nano ESP32의 출력 핀에 연결하세요.
- IN2 핀: 모터를 구동하는데 사용됩니다. Arduino Nano ESP32의 출력 핀에 연결하세요.
- IN3 핀: 모터를 구동하는데 사용됩니다. Arduino Nano ESP32의 출력 핀에 연결하세요.
- IN4 핀: 모터를 구동하는데 사용됩니다. Arduino Nano ESP32의 출력 핀에 연결하세요.
- GND 핀: 공통 접지 핀입니다. Arduino Nano ESP32의 두 GND와 외부 전원 공급장치에 모두 연결해야 합니다.
- VDD 핀: 모터에 전원을 공급합니다. 외부 전원 공급장치에 연결하세요.
- 모터 커넥터: 모터가 연결되는 곳입니다.
※ NOTE THAT:
스테퍼 모터를 구동할 때는 다음 지침을 따라야 합니다:
- 외부 전원 공급 장치의 전압이 스테퍼 모터의 전압 요구 사항과 일치하는지 확인합니다. 예를 들어, 스테퍼 모터가 12V DC로 작동하는 경우, 12V 전원 공급 장치를 사용하는 것이 중요합니다. 5V DC로 작동하는 28BYJ-48 스테퍼 모터의 경우, 5V 전원 공급 장치를 사용하는 것이 필수적입니다.
- 스테퍼 모터가 5V 전원 공급 장치에서 작동하도록 설계되었다고 하더라도, Arduino Nano ESP32의 5V 핀에 VDD 핀을 직접 연결해서는 안 됩니다. 대신, VDD 핀을 외부 5V 전원 소스에 연결하세요. 이러한 예방 조치는 스테퍼 모터가 상당한 양의 전력을 소모할 수 있으며, 이것이 ESP32의 전원 공급 장치의 능력을 초과하여 문제나 손상을 일으킬 수 있기 때문에 필수적입니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
주의해야 할 점은, 스테퍼 모터의 전선 색깔을 신경 쓸 필요가 없습니다. 우리가 해야 할 것은 단지 남성 커넥터(28BYJ-48 스테퍼 모터에 있는)를 여성 커넥터(ULN2003 드라이버 위에 있는)에 연결하는 것뿐입니다.
스텝 모터 제어 프로그램 방법
스테퍼 모터를 제어하는 데에는 세 가지 주요 방법이 있습니다:
- Full-Step: 풀-스텝
- Half-Step: 하프-스텝
- Micro-Step: 마이크로-스텝
기본 애플리케이션의 경우, 전체 단계 방법이 종종 충분합니다. 그러나 이 세 가지 방법에 대한 자세한 설명은 이 튜토리얼의 마지막 부분에서 제공될 것입니다. 이러한 방법들의 프로그래밍은 복잡할 수 있다는 점에 유의하는 것이 중요합니다. 좋은 소식은 이러한 복잡성을 대신 처리해주는 많은 라이브러리들이 있다는 것입니다. 우리가 해야 할 일은 적절한 라이브러리를 사용하여, 우리 프로젝트에서 스테퍼 모터의 제어를 단순화하는 것입니다.
Arduino IDE는 내장된 스텝 모터 라이브러리를 포함하고 있지만, 다음과 같은 이유로 사용하지 않는 것이 좋습니다:
차단하는 성격: 이 라이브러리는 차단 방식으로 실행되어, 스테퍼 모터를 제어하는 동안 ESP32의 리소스를 독점하므로 다른 작업을 수행할 수 없습니다.
제한된 기능성: 내장된 스테퍼 라이브러리는 프로젝트에 필요한 모든 기능과 특징을 제공하지 않을 수 있습니다.
대신, AccelStepper 라이브러리를 사용하는 것을 추천합니다. 이 라이브러리는 다음과 같은 여러 가지 장점을 제공합니다:
- 가속 및 감속: 이는 부드러운 가속과 감속을 지원하여 보다 정밀한 제어를 가능하게 합니다.
- 풀스텝 및 하프스텝 구동: 스테퍼 모터에 대해 풀스텝과 하프스텝 구동 모드 중에서 선택할 수 있습니다.
- 여러 대의 스테퍼 동시 제어: AccelStepper는 동시에 여러 대의 스테퍼를 제어할 수 있게 해주며, 각 스테퍼는 독립적으로 동시에 움직입니다.
그러나 도서관에는 한 가지 단점이 있다는 점을 지적하는 것이 중요합니다: 마이크로 스텝 구동을 지원하지 않습니다.
아두이노 나노 ESP32 코드
사용 방법
- 아두이노 나노 ESP32에 익숙하지 않다면, 아두이노 나노 ESP32를 아두이노 IDE에서 설정하는 방법에 대한 튜토리얼을 참조하세요.
- 제공된 다이어그램에 따라 구성요소를 연결하세요.
- USB 케이블을 사용하여 아두이노 나노 ESP32 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 아두이노 IDE를 실행하세요.
- Arduino Nano ESP32 보드와 해당 COM 포트를 선택하세요.
- 아두이노 IDE의 왼쪽 네비게이션 바에 있는 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다.
- “AccelStepper”를 검색한 다음, Mike McCauley가 제작한 AccelStepper 라이브러리를 찾으세요.
- Install 버튼을 클릭하여 AccelStepper 라이브러리를 설치하세요.
- 위의 코드를 복사하고 Arduino IDE로 열기
- Arduino Nano ESP32에 코드를 업로드하기 위해 Arduino IDE에서 Upload 버튼 클릭
- 모터가 회전하는 것을 확인하세요. 다음과 같아야 합니다:
- 시계 방향으로 한 바퀴 회전한 다음,
- 반시계 방향으로 두 바퀴 회전한 다음,
- 시계 방향으로 두 바퀴 회전합니다.
그 과정은 무한히 반복됩니다.
시리얼 모니터에서 결과를 확인하세요.
여러 개의 28BYJ-48 스테퍼 모터 제어하는 방법
동시에 두 개의 스테퍼 모터를 독립적으로 제어하는 방법을 배워봅시다.
두 개의 28BYJ-48 스테퍼 모터를 위한 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.