반응형

 【 아두이노 기초 】 #33 스텝(Step Motor)모터 제어2 (시리얼통신제어)

  지난시간 스텝모터를 정역 회전 시켜 보았다. 스텝모터 동작 원리를 참고하려면 여기 글을 참고하라. ( ☞ 스텝모터의 이해 )  이제는 스텝모터를 시리얼 통신을 통해 숫자 입력 만으로 정역회전 제어를 해볼 것이다. 


▶ 실험에 사용되는 스텝 모터 자료 ( 모터 뱅크, NK243-01AT )



▶ 스텝모터 구동 원리 





▶ 실습 목표 :  

 스텝모터를 시리얼 모니터 창을 통해 숫자 '1'을 입력 하면, 360도 한 바퀴 '정회전' 시키고, 숫자 '2'를 입력하면, 360도 한 바퀴 '역회전' 시켜보자. 그 이외의 숫자나 문자 입력시에는 다시 입력하라는 안내 메세지도 보내보도록 해보자. 


▶ 실습 회로도면 :

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



 

L293D 모터드라이버 IC의 연결을 위해 아래 이미지를 참고 하라.


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


▶ 부품 목록    : 스텝 모터(NK243-01AT, 모터뱅크, 1.8˚) , L293D


▶ 실습 절차  : 

 1. 회로도를 참고하여 모터 와 부품들을 연결한다.
 
 2. 대부분의 스텝모터를 사용할 때는 아두이노 출력전원과 같은 단일전원 만으로는 스텝모터가 구동 되지 않는다. 따라서 추가 전원을 스텝모터에 따로 공급 해주어야 하는데, L293과 같은 모터 드라이버 IC를 사용하게 될 경우 추가 전원을 IC 8번 핀으로 공급해주면 된다.  (스텝 모터 마다 허용 공급 전원이 상이 함으로 허용 가능 전압을 확인 할 것, 본 실험에서는 5V를 입력함)

 3. 회로의 모든 GND(그라운드, '-' 단자)는 하나로 연결 한다. 

 4. 시리얼 통신창에서 전송속도가 '9600'으로 프로그램과 일치하는지 확인.


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


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

 int in1Pin = 12;            // [A] 상을 정의 한다

 int in2Pin = 11;            // [B] 상을 정의 한다

 int in3Pin = 10;            // [/A] 상을 정의 한다

 int in4Pin = 9;             // [/B] 상을 정의 한다 

 Stepper motor(200, in1Pin, in2Pin, in3Pin, in4Pin);


void setup() {

  pinMode(in1Pin, OUTPUT);  // [A] 상을 출력으로 지정한다

  pinMode(in2Pin, OUTPUT);  // [B] 상을 출력으로 지정한다

  pinMode(in3Pin, OUTPUT);  // [/A] 상을 출력으로 지정한다

  pinMode(in4Pin, OUTPUT);  // [/B] 상을 출력으로 지정한다

  motor.setSpeed(30);   // 스텝모터의 스피드 설정 함수 (RPM)

  Serial.begin(9600);        // 시리얼 통신 가능하도록 설정함

}

void loop() {


  int steps = 200;            // 스텝 수 지정(200X1.8=360)

  if (Serial.available()) {     // 시리얼 입력이 있는지 체크 함

  int direct = Serial.parseInt();시리얼로 받은 정수문자를 정수로 반환

   if (direct ==1) {           // 입력값이 ‘1’ 이면 정회전

     Serial.print("It's Normal Direction!\n\n");

     motor.step(steps);   }   // 지정된 스텝만큼 모터 정회전

   else if (direct ==2)  {     // 입력값이 ‘2’ 이면 역회전

     Serial.print("It's Reverse Direction!\n\n");

     motor.step(-steps);   }  // 지정된 스텝만큼 모터 역회전

   else                          // 그외 입력값은 아래 안내문자 출력

     Serial.print("You only choose '1' or '2'\n\n");  

   }

}



▶ 실행 영상 : 




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



반응형