아두이노2015. 8. 31. 14:54

스테핑모터는 펄스신호에 의해 작동되는 모터로서 1펄스마다 수도~수십도의 각도만 회전하는 모터이다.

각종 전자기기나 자동차 등의 정밀 제어가 필요한 부분에 두루 쓰이는 모터이다.


이를 아두이노를 통해서 제어해 보겠다.


내가 가지고 있는 모터는 28BYJ-48 라는 모터구동을 위한 라이브러리는 아두이노 IDE에 기본적으로 포함된 것을 사용하였다.




데이터시트: 

28BYJ-48.pdf


모터 드라이버 보드(X113647) 라이브러리:

X113647Stepper-master.zip


이 스텝핑모터를 움직이기 위해서는 아두이노와 스텝핑모터 이외에 모터 드라이버 보드가 필요하다.


연결: 

스테핑모터와 모터 드라이버와의 연결은 잭에 맞도록 그냥 끼우면 된다. 받대방향으로는 끼우지 못하게 되어 있어 잘 못 끼울 위험은 없다.

스테핑모터 드라이버 보드에는 IN1~IN4 까지 아두이노와 의 연결 단자가 있다. 

연결단자를 다음과 같이 연결하였다.


IN1 ---- 아두이노 디지털 8번

IN2 ---- 아두이노 디지털 9번

IN3 ---- 아두이노 디지털 10번

IN4 ---- 아두이노 디지털 11번

-(마이너스)  ---- GND

+(플러스)    ---- 5V


만약 이를 역순으로 연결하면 아래의 소스 업로드 시 반대로 동작하게 된다.


##소스##

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <Stepper.h>
 
// 회전각도 설정 = 2048:한바퀴(360도), 1024:반바퀴(180도)
const int stepsPerRevolution = 2048//360도
 
// 모터 드라이브에 연결된 핀 IN4, IN2, IN3, IN1 (핀연결 설정)
Stepper myStepper(stepsPerRevolution,11,9,10,8);
 
void setup() {
  myStepper.setSpeed(14);  //모터의 회전속도 설정
  Serial.begin(9600);     //시리얼모니터
}
void loop() {
  // 시계 반대 방향으로 한바퀴 회전
  Serial.println("counterclockwise");
  myStepper.step(stepsPerRevolution);
  delay(1000);
 
  // 시계 방향으로 한바퀴 회전
  Serial.println("clockwise");
  myStepper.step(-stepsPerRevolution);
  delay(1000);
}
cs

시계반대방향으로 360도 회전 후 다시 시계방향으로 360도 회전하는 소스.
회전각도는 2048이 360도이니 원하는 값을 계산하여 넣으면 된다. (예: 1024 = 180도)

##결과##


반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. ㅇㅇ

    안녕하세요 아두이노와 모터를 이용하여 엘레베이터를 만드려고하는데 위아래로 작동시키기 위해서는 스텝모터를 사용하는게 낫나요 아님 디씨모터를 사용하는게 낫나요?????

    2016.10.05 17:22 [ ADDR : EDIT/ DEL : REPLY ]
    • 작은 모형 엘레베이터 겠죠? 정확한 제어를 위해서는 스텝모터 그렇지 않을 경우 DC모터+컨트롤러를 사용하면 되겠네요. 뭐 DC모터도 제어를 위한 센서를 추가하면 비교적 정확하게 제어할 수도 있겠네요.

      2016.10.05 17:29 신고 [ ADDR : EDIT/ DEL ]