아두이노 시리얼 제어 스테퍼 모터 회전 스탠드
부품 및 소모품
| 부품 | 수량 |
| 28BYJ-48 스테퍼 모터 | 1 |
| X113647 스테퍼 모터 드라이버 (ULN2003A 기반) | 1 |
| 폴루 유니버설 알루미늄 마운팅 허브 (5mm 샤프트용) | 1 |
| 아두이노 우노 | 1 |
| 나무 베이스 15cm × 15cm | 1 |
| 고무 패드 | 4 |
필요한 도구
프로젝트 소개
스테퍼 모터 기반의 회전 플랫폼입니다. 28BYJ-48 모터를 X113647 드라이버로 제어하며, 시리얼 모니터나 Tera Term을 통해 명령어를 보내 회전을 제어합니다.
지원 명령어
- R - 시계 방향 연속 회전 (여러 바퀴)
- r - 시계 방향 360° 단일 회전
- L - 반시계 방향 연속 회전
- l - 반시계 방향 360° 단일 회전
- S - 회전 정지
기계적 조립
- 합판(약 15×15cm) 대각선 교차점에 6mm 구멍 뚫기
- 스테퍼 허브를 구멍에 끼워 윤곽 그리기
- 실톱으로 스테퍼 윤곽에 맞춰 구멍 내기
- 고무 패드 4개로 바닥과 간격 확보
- 폴루 마운팅 허브로 회전판을 모터 샤프트에 고정
배선
#define motorPin1 4 // Blue
#define motorPin2 5 // Pink
#define motorPin3 6 // Yellow
#define motorPin4 7 // Orange
// Red: VCC, Blue: GND
#define STEPS_PER_TURN 2048
회로도 이미지를 참고하세요. (아두이노 핀 4~7 사용)
코드
AccelStepper 라이브러리를 사용한 전체 스케치입니다. 시리얼 명령어를 파싱해 모터를 제어하며, 가속도와 속도 설정이 포함되어 있습니다.
#include <AccelStepper.h>
#define motorPin1 4
#define motorPin2 5
#define motorPin3 6
#define motorPin4 7
#define STEPS_PER_TURN 2048
int motorSpeed = 500;
int motorAccel = 400;
int myPos = 0;
int LeftTurnUp = 0, RightTurnDown = 0;
int Continuous = 0;
int incomingByte = 0;
AccelStepper stepper(4, motorPin1, motorPin3, motorPin2, motorPin4);
void setup() {
Serial.begin(9600);
stepper.setMinPulseWidth(20);
stepper.setMaxSpeed(motorSpeed);
stepper.setSpeed(motorSpeed);
stepper.setAcceleration(motorAccel);
stepper.setCurrentPosition(stepper.currentPosition());
stepper.runToPosition();
// 명령어 안내 출력
}
void loop() {
// 시리얼 명령어 수신 및 파싱
// 연속/단일 회전 플래그에 따라 stepper.moveTo() 호출
stepper.run();
}
회로도
프리칭(Fritzing)으로 작성된 전체 회로도입니다.