검색
홈으로 마이페이지 주문조회 장바구니
로그인
회원정보 게시판
회사소개 이메일
도서(BOOK)
키트(KIT)
특판 상품
졸업작품&전자기초
응용모듈
전자부품
모터
기구
엔클로져
고객센터 게시판
자유게시판
MCU 통합 게시판
강좌-RaspberryPi
강좌-드론(쿼드콥터)
강좌-아두이노(기초)
강좌-아두이노(응용)
신제품/신기술 소개
DIY 공작 게시판
윤교수의 연구실 칼럼
 ☎ : 02-776-4868

 F: 02-779-6757

☞ 평일 : 09~18시
☞ 주말 : 10~13시


국민822401-04-027758
☞ 예금주 : Ohm사
국민822401-04-027761
☞ 예금주 : R&C사
 
 
1 (주)알트소프트 사이트
 
2 LabVIEW 강좌 사이트
 
3 윤교수의 마이크로프로세서 월드
 
4 전자 엔지니어
 

 

 
강좌-아두이노(기초)
 
2014. 05. 20 (10:23)
제목[아두이노] 13. 스테핑 모터 제어
작성자 조회 : 13597

13. 스테핑 모터 제어


기초 강좌는 어느 정도 마무리가 되어 간다. 이번 강좌를 포함하여 3개의 강좌를 끝으로 기초 강좌를 마치고, 여러 가지 쉴드 보드를 사용하는 방법에 대해서 다뤄 볼 예정이다. 아두이노는 다양한 기능의 쉴드 보드를 가지고 있는데, 응용 강좌를 통해서 10가지 이상의 제품을 다뤄 보도록 할 테니, 기대 하셔도 좋을 듯 하다.

이번 강좌는 스테핑 모터 제어하는 방법을 다뤄 보도록 한다. 직접 포트를 제어하여 모터를 구동하는 예제와 내장된 라이브러리를 이용해서 구동하는 예제에 대해서 다루고자 한다.

그럼, 이번 강좌에서 사용할 스테핌 모터에 대해서 잠깐 알아 보도록 하자

모양은 위와 같고, 5V로 구동이 되는 작은 스테핌 모터다. 내부에 1/64의 감속 기어가 내장되어 있으며, 54상으로 제작되어 있다.

아두이노 포트로는 바로 구동을 할 수가 없어서, 간단히 제작된 드라이버를 사용하며, ULN2003을 이용한 드라이버로 아래 그림과 같다.

 

구동 방식은 아래와 같다.



 연결 회로는 아래와 같다.



아두이노와의 실제 결선은 아래와 같이 구성한다.



처음에 언급 했듯이, 예제는 두 가지로 작성해 보도록 하자.

우선, 포트를 직접 제어해서 구동하는 방식을 살펴 보면,

 

 

 

#include

 

#define A1 2               //포트 정의  

#define B1 3

#define C1 4 

#define D1 5

 

void setup()  

{

       pinMode(A1,OUTPUT);        //포트 출력 설정

 

       pinMode(B1,OUTPUT);

 

       pinMode(C1,OUTPUT);

 

       pinMode(D1,OUTPUT);

}

 

void loop()  

{

       Phase_A();                 //A

       delay(10);                 //시간지연

 

       Phase_B();                 //B

       delay(10);

 

       Phase_C();                 //C

       delay(10);

 

       Phase_D();                 //D  

       delay(10);

}

 

void Phase_A()  

{

       digitalWrite(A1,HIGH);                 

       digitalWrite(B1,LOW);

       digitalWrite(C1,LOW); 

       digitalWrite(D1,LOW);

}  

 

void Phase_B()  

{

       digitalWrite(A1,LOW);      

       digitalWrite(B1,HIGH);                   

       digitalWrite(C1,LOW);  

       digitalWrite(D1,LOW);  

}

 

void Phase_C()  

{  

       digitalWrite(A1,LOW);       

       digitalWrite(B1,LOW);  

       digitalWrite(C1,HIGH);            

       digitalWrite(D1,LOW);  

}  

  

void Phase_D()  

{  

       digitalWrite(A1,LOW);       

       digitalWrite(B1,LOW);  

       digitalWrite(C1,LOW);  

       digitalWrite(D1,HIGH);                   

}

 


4개의 포트를 정의한 후에, 모터 드라이버와 연결된 각각의 포트를 신호를 주어서 회전을 하게 한다.  4개의 상을 구현 한 후에 차례로 호출하여 위에 설명한 표와 같이 신호를 줄 수 있게 하였다.

그럼, 이번에는 라이브러리를 사용하여 구동하는 방식에 대해서 알아 보도록 하자. 예제는 내장되어 있는 예제를 사용하였고, 메뉴->예제->Stepper->MotorKnob를 열어 보자.

 

 

#include < Stepper.h>  

 

// change this to the number of steps on your motor  

#define STEPS 100

  

// create an instance of the stepper class, specifying 

// the number of steps of the motor and the pins it's  

// attached to

Stepper stepper(STEPS, 2, 3, 4, 5);

 

 

 

// the previous reading from the analog input  

int previous = 0;  

 

void setup()  

{  

  // set the speed of the motor to 30 RPMs

  stepper.setSpeed(30);

 

}

 

void loop()  

{

 

  // get the sensor value

  int val = analogRead(0);

 

  // move a number of steps equal to the change in the  

  // sensor reading  

  stepper.step(val - previous);

 

  // remember the previous value of the sensor  

  previous = val;

 

}

 

 

위 예제는 아날로그 포트의 신호를 읽어서 변하는 값만큼 스텝을 지정하는 예제이지만, 그거에 상관없이 보도록 하자.


우선, 라이브러리인 만큼

           #include < Stepper.h>

 이 반드시 필요하다. 스테핑 모터를 사용할 때, 꼭 추가해야 되는 걸 잊지 말도록


           Stepper stepper(STEPS, 2, 3, 4, 5);  

           Stepper(steps, pin1, pin2, pin3, pin4)

 

새로운 인스턴스를 생성하면서, 각 파라미터들을 지정해 준다.

steps는 해당 모터가 한 바퀴 돌 때 필요한 각을 지정해 준다. pin1~pin4는 모터를 회전 시킬 수 있는 상()이 출력될 포트를 지정한다.


           stepper.setSpeed(30);  

       setSpeed(rpm);


모터의 rpm(1분당 회전 ) 지정해 준다.

예제에서는 사용하는 모터가 1/64 감속 기어가 있다는 잊지 말자….모터가 상당히 늦게 회전을 하는 보고는 당황하지 말자.

stepper.step(val - previous);

       step(steps);

steps, 회전 하고자 하는 스텝의 수를 기입한다. , steps의 값을 100을 지정하면, 스테핑 모터가 100 스텝만 회전하게 된다.

 간단한 예제로 스테핑 모터의 구동에 대해서 알아 보았다. 강좌에서 사용한 모터가 아닌 실제 응용할 수 있는 스테핑 모터를 가지고 실험해 볼 수도 있으니 직접 해 보시기 바란다. 물론, 드라이버는 반드시 있어야 된다. 모터 선을 아두이노 출력 단자에 바로 물리는 일이 없도록 주의한다.

http://blog.naver.com/rnc_ohm

http://cafe.naver.com/rnc2013.cafe

비밀번호 확인 닫기
name password
  Content name date hits
[아두이노] 13. 스테핑 모터 제어  
2014/05/20 13597
상호명 : R&C사 사업자등록번호 : 106-02-43112 통신판매업신고번호 : 용산 03564
대표 : 곽민수 사업장소재지 : 서울시 용산구 갈월동 17-1번지 세기빌딩 101호
전화 : ☎ : 02-776-4868 ,F: 02-779-6757 개인정보담당자 : 곽민수
[회사소개] [이용안내] [이용약관] [개인정보취급방침]
Copyright ⓒ 도서출판 OHM사와 학습기기 R&C사 All Rights Reserved.