반응형
아두이노로 스텝모터 제어하기!! 완벽 가이드
(5V 스텝모터 + ULN2003 드라이버 + Arduino UNO)
스텝모터는 각도 제어가 정밀하고 회전 속도·방향을 정확히 설정할 수 있어 3D 프린터, CNC, 자동화 장치 등에 널리 사용됩니다.
이번 글에서는 가장 많이 사용되는 5V 스텝모터(28BYJ-48) + ULN2003 드라이버 + Arduino UNO 조합으로 제어하는 방법을 완벽하게 정리해보겠습니다.
준비물
Arduino UNO
28BTJ-48 5V 스텝모터
ULN2003 드라이버 보드
회로 연결
| ULN2003 | Arduino UNO |
| IN1 | D5 |
| IN2 | D4 |
| IN3 | D3 |
| IN4 | D2 |
| +5V | 5V |
| GND | GND |

스텝모터는 ULN2003 드라이버에 직접 연결하고,
ULN2003의 전원은 아두이노 5V를 사용해도 되고 별도 5V 공급도 가능합니다.
⚠️ 주의
아두이노의 5V 전류로 돌릴 수 있지만, 스텝모터에 부하가 걸릴 경우
전류 부족으로 리셋될 수 있으니 외부 5V 전원 사용을 권장합니다.
(외부 전원 사용 시 GND는 반드시 아두이노와 공통으로 연결!)
제어 원리 간단 요약
스텝모터는 코일을 일정한 순서로 자극해 한 스텝씩 회전합니다.
- CW (시계 방향) : A → B → C → D 순서
- CCW (반시계 방향) : D → C → B → A 순서
- 속도 조절 : 스텝 간 딜레이 시간을 변경
아두이노 예제 코드 (가장 많이 쓰는 기본 단계 구동)
#include <Stepper.h>
#define STEPS 2048 // 28BYJ-48 한바퀴(약 2048스텝)
Stepper stepper(STEPS, 5, 4, 3, 2);
// (IN1=5, IN3=4, IN2=3, IN4=2) — 라이브러리 요구 순서
void setup() {
stepper.setSpeed(10); // 10RPM
}
void loop() {
stepper.step(2048); // 시계 방향 1바퀴
delay(1000);
stepper.step(-2048); // 반시계 방향 1바퀴
delay(1000);
}
이 코드는
정방향 1바퀴 → 대기 → 역방향 1바퀴 → 대기 → 반복합니다.
속도 조절 & 각도 계산 팁
● 속도 조절
stepper.setSpeed(5); // 5RPM (느리게)
stepper.setSpeed(15); // 15RPM (빠르게)
● 원하는 각도로 회전시키기
28BYJ-48 기준 →
2048 스텝 = 360°
1° = 2048 / 360 ≈ 5.688 스텝
90° = 5.688 * 90 = 512 스텝
예: 90° 회전
stepper.step(512);
더 정밀하고 부드럽게 회전시키고 싶다면?
AccelStepper 라이브러리 추천 (가속/감속 지원)
#include <AccelStepper.h>
AccelStepper stepper(AccelStepper::FULL4WIRE, 5, 4, 3, 2);
void setup() {
stepper.setMaxSpeed(600);
stepper.setAcceleration(200);
}
void loop() {
stepper.moveTo(2048);
stepper.runToPosition();
delay(500);
stepper.moveTo(0);
stepper.runToPosition();
delay(500);
}
장점
✔ 부드러운 회전
✔ 고속에서도 안정적
✔ 로봇/3D 프린터/CNC에 적합
발생할 수 있는 문제 & 해결 팁
증상원인해결 방법
| 떨림 / 약한 토크 | 전류 부족 | 외부 5V 전원 사용 |
| 발열 | 과속 또는 장시간 정지 상태 | RPM 낮추기, 절전 코딩 |
| 부정확한 회전 | 스텝 손실 | 가속/감속 사용 or 기계적 부하 줄이기 |
| 방향 반대 | 배선 순서 오류 | IN1~IN4 순서 다시 확인 |
마무리
이번 글에서는
🔹 스텝모터 + ULN2003 + Arduino UNO 연결
🔹 예제 코드
🔹 각도/속도 제어 팁
🔹 고급 제어 (AccelStepper)
까지 한 번에 정리해 보았습니다.
반응형
'아두이노' 카테고리의 다른 글
| 아두이노로 BLDC 모터 제어하기!! 완벽 가이드 (0) | 2025.11.18 |
|---|---|
| 아두이노 서보모터 제어 - 라이브러리 없이 PWM 직접 만들기 (Tinkercad 한계 포함) (0) | 2025.04.22 |
| 아두이노 버튼(Pull-down, Pull-up) & LED 제어 예제 (0) | 2025.04.22 |
| 아두이노 버튼 풀업(Pull-up), 풀다운(Pull-down) 회로 예제 (0) | 2025.04.21 |
| 아두이노로 DC 모터 제어하기! L298N 모듈 완벽 가이드 (0) | 2025.04.18 |