본문 바로가기
아두이노

아두이노로 스텝모터 제어하기!! 완벽 가이드

by 꼬맹님 2025. 11. 25.
반응형

아두이노로 스텝모터 제어하기!! 완벽 가이드

(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)
까지 한 번에 정리해 보았습니다.

 

 

반응형