반응형

 【 아두이노 기초 】 #36 스텝(Step Motor)모터 제어5 (버튼제어)


  지난시간 일반적으로 많이 쓰이는 저렴한 가격의 28BYJ-48 스텝모터와 ULN2003 드라이버 모듈에 대해 다루어 보았다. 

 이번 시간에는 조금 더 다루어 보기 위해 버튼을 사용해볼 것이다. 

 앞으로의 실험에서도 버튼제어가 중요한데, 그 이유는 버튼으로 무언가 제어가 가능하다는 뜻은 버튼을 대신해서 그 위치에 그 어떤 센서나 모듈로도 제어를 할 수 있다는 뜻이 된다.  단지, 각 센서 마다 고유의 특징과 사용법만 파악하면 되는 것이다.  버튼은 비록 수동으로 동작을 하지만 매우 직관적이어서 회로의 동작 원리를 이해하기 쉽다는 장점이 있다. 



▶ 실험에 사용되는 스텝 모터 자료 ( 28BYJ-48 ) 

 



[ ULN2003 모듈의 내부 회로도 참고 ]





▶ 스텝모터 구동 원리 





▶ 실습 목표 :  

 버튼 두 개를 이용하여 스텝모터의 정회전과 역회전 제어를 해 볼 것이다. 

버튼 1을 한 번 클릭하면 정회전(시계방향)하고, 

버튼 2를 한 번 클릭하면 역회전(반시계방향)하도록 한다.


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)






▶ 부대품 목록 : 아두이노 보드, 브레드 보드 


▶ 부품 목록    : 스텝 모터(28BYJ48, 5.625˚) , ULN2003모듈, 푸시버튼 2개 (2Pin 이용)


▶ 실습 절차  : 

 1. 회로도를 참고하여 모터 와 보드 등을 연결한다.
 
 2. 모터와 ULN2003 보드 모듈을 연결한다. (연결 소켓은 앞뒤 구분이 되어 있어 잘못 연결할 걱정은 하지 않아도 된다)

 3. ULN 보드 공급 전원은 5V~12V 공급이 가능하고, 
    '+'로 표시된 곳의 점퍼를 아두이노 보드의 VCC(5V) 단자에 연결하고, 
    '-'로 표시된 곳의 점퍼를 아두이노 보드의 GND 단자에 연결한다.  


▶ 프로그램 (코드& 설명) : 


#include <Stepper.h>      // 스테핑 모터 라이브러리 정의 

int stepsPerRev = 2048; // 한바퀴(360): 2048 , 반 바퀴(180) : 1024

Stepper stepper (stepsPerRev, 11,9,10,8); // ( IN4,IN2,IN3,IN1) 

int btn1 = 7;

int btn2 = 6; 

void setup() {

 stepper.setSpeed(10);   // 스텝모터의 스피드 설정

 pinMode(btn1, INPUT_PULLUP);

 pinMode(btn2, INPUT_PULLUP);

}

void loop()  { 

 boolean btn1HL = digitalRead(btn1);

 boolean btn2HL = digitalRead(btn2); 

 if (btn1HL == LOW) {           // 버튼 1의 입력을 확인

    stepper.step(stepsPerRev);  // 한 바퀴 회전 명령

  }

  if (btn2HL == LOW) {           // 버튼 2의 입력을 확인

    stepper.step(-stepsPerRev);  // 반대 방향으로 한 바퀴 회전

  }

}



▶ 실행 영상 : 




▶ 아두이노 소스 코드 다운로드 : 



반응형