[아두이노] [강좌] 38. 스텝 모터 (2) - Stepper 함수 알아보기

지난 강좌에서 스텝 모터의 동작 방식에 대해 알아봤었다. 


AB/A/B 순서로 신호를 하나 씩 출력하는 것이 한 스텝이며, 한 스텝이 진행될 때마다 정해진 각도만큼 회전한다,는 것. 각도는 모터마다 다름. 그리고 1상 여자 방식과 2상 여자 방식, 1-2상 여자 방식에 대해서도 설명해썽.



이번 강좌에서는 스텝 모터를 제어하기 위해 아두이노에서 제공하는 Stepper 라이브러리에 대해 알아보자. 




스케치 툴에서 파일예제→Stepper→stepper_oneRevolution”을 선택해보자핀 순서는 아까의 예제와 같지만 여기서는 COM(공통단자핀에 대한 내용이 없으므로, 6개의 핀을 사용하는 스텝모터의 경우 이에 대한 내용을 추가해주도록



그럼 소스를 살펴볼까상단의 주석은 제외하고 옮겨 적은 내용이다. (COM 핀에 대한 내용도 추가되어 있으니필요 없는 사람은 빼도 좋다.)



 stepper_oneRevolution.ino 

  

 #include <Stepper.h>

 

 const int stepsPerRevolution = 200;

 

 Stepper myStepper(stepsPerRevolution, 8,9,10,11);           

 

 void setup() {

   // set the speed at 60 rpm:

   myStepper.setSpeed(60);

   // initialize the serial port:

   Serial.begin(9600);


   // 4선식 모터에서는 제외해도 됨

   pinMode(6, OUTPUT);

   pinMode(7, OUTPUT); 

   digitalWrite(6, HIGH);

   digitalWrite(7, HIGH);

 }

 

 void loop() {

   // step one revolution  in one direction:

   Serial.println("clockwise");

   myStepper.step(stepsPerRevolution);

   delay(1500);

 

   // step one revolution in the other direction:

   Serial.println("counterclockwise");

   myStepper.step(-stepsPerRevolution);

   delay(1500);

 

 }





우선 스텝 모터 라이브러리를 사용하기 위해 “#include <Stepper.h>” 구문으로 헤더 파일을 추가해줬다.


‘stepPerRevolution’ 변수는 이전 강좌에서 살펴본 예제의 ‘stepCnt’ 변수와 동일한 역할로모터가 360° 회전하기 위해 몇 스텝이 필요한지를 설정한다이전 시간에 왜 200인지 설명했었지.

 

스텝 모터 클래스인 “Stepper” 클래스의 객체로 “myStepper”를 선언하고 있다객체를 선언할 때 매개 변수로 ‘stepPerRevolution’ 값과A, B, /A, /B 핀 번호를 순서대로 전달한다. 순서 주의!




Stepper(stepNum, a, b, na, nb) – 생성자

Stepper(stepNum, a, b) – 생성자

 


‘Stepper’ 클래스의 생성자 함수로스텝 모터의 핀이 4개일 경우 핀 번호 4개를, 2개일 경우 2개를 전달한다.



 

 매개 변수

 

 stepNum : 360°를 회전하기 위해 필요한 스텝 수

 a : A 핀 번호

 b : B 핀 번호

 na : /A 핀 번호

 nb : /B 핀 번호


 




그리고 setup() 함수에서는 스텝 모터의 속도를 설정하고, COM(공통단자) 핀을 초기화 한다. 속도를 설정하는 함수는 setSpeed() 함수.




Stepper.setSpeed(rpm)



 

 매개 변수

 

 rpm : 모터 속도로 1분 당 회전 수(Revolution Per Minute)를 설정한다위 예제에서 ‘60’으로 설정했으므로 1분에 60 바퀴 회전 12,000(=60*200) 스텝이 진행된다.





loop() 함수에서 스텝 신호를 출력하는데stepsPerRevolution 값만큼 신호를 출력하므로정확히 360° 회전하게 된다속도가 60rpm이므로 한 바퀴를 도는 데 1그래서 delay() 1초 이상 줘야 한다.




Stepper.step(stepCnt)



 

 매개 변수

 

 stepCnt : 출력할 스텝 수. 예제에서는 360°만큼 회전하기 위해 ‘stepPerRevolution’ 변수 값을 넣어준다이 값이 –(음수)면 반대 방향으로 스텝 수만큼 회전한다.


 




그래서 위 소스를 업로드 한 후 실행해보면, 한 바퀴 돌고 (짝!) 반대로 돌고 (짝!).



cony_special-4

 


스텝 모터는 전류 소모가 크기 때문에 모터 드라이버를 함께 사용하는 경우가 많다모터 드라이버에 따라 제어하는 방법이 다르기 때문에 모든 드라이버에 대한 설명을 할 수는 없고내가 가지고 있는 드라이버(A3967SLB)로 스텝 모터를 제어하는 방법은 다음 강좌에서 알아보자.

 

그럼 이번 강좌는 여기서 이만다음 시간에 또 만나요!



line_love_is_a_rollercoaster-37 



 

안녕.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
58 아두이노 [강좌] 50. 와이파이 통신 (4) - WebServer 예제 icon 양재동메이커 03-21 12,854
57 아두이노 [강좌] 49. 와이파이 통신 (3) - WebClient 예제 icon 양재동메이커 03-21 16,332
56 아두이노 [강좌] 48. 와이파이 통신 (2) - 커맨드 모드 사용하기 (WiFly 쉴드) icon 양재동메이커 03-20 11,649
55 아두이노 [강좌] 47. 와이파이 통신 (1) - 와이파이란 무엇인가 icon 양재동메이커 03-20 16,076
54 아두이노 [강좌] 46. 블루투스 통신 (5) - 프로토콜 만들기 (2) icon 양재동메이커 03-20 11,866
53 아두이노 [강좌] 45. 블루투스 통신 (4) - 프로토콜 만들기 (1) icon 양재동메이커 03-20 13,501
52 아두이노 [강좌] 44. 블루투스 통신 (3) - RN42 모듈에서 직접 접속하기 icon 양재동메이커 03-20 10,555
51 아두이노 [강좌] 43. 블루투스 통신 (2) - 스마트폰과 통신하기 icon 양재동메이커 03-20 12,718
50 아두이노 [강좌] 42. 블루투스 통신 (1) - RN42 블루투스 모듈 실습하기 icon 양재동메이커 03-20 14,017
49 아두이노 [강좌] 41. 서보 모터 (2) - Servo 함수 알아보기 icon 양재동메이커 03-20 15,771
48 아두이노 [아두이노 강좌] 40. 서보 모터 (1) - 서보 모터 동작 방식 icon 양재동메이커 03-20 16,120
47 아두이노 [강좌] 39. 스텝 모터 (3) - 모터 드라이버 EasyDriver(A3967) 사용하기 icon 양재동메이커 03-20 11,990
46 아두이노 [강좌] 38. 스텝 모터 (2) - Stepper 함수 알아보기 icon 양재동메이커 03-20 15,826
45 아두이노 [강좌] 37. 스텝 모터 (1) - 스텝 모터 동작 방식 icon 양재동메이커 03-20 12,441
44 아두이노 [강좌] 36. DC 모터 (2) - DC 모터 드라이버 실습하기 (TB6612FNG) icon 양재동메이커 03-20 12,038
43 아두이노 [강좌] 35. DC 모터 (1) - DC 모터 동작 방식 icon 양재동메이커 03-20 14,548
42 아두이노 [강좌] 34. SPI 통신 (3) - 기압 센서(MPL115A1) 실습하기 icon 양재동메이커 03-20 11,294
41 아두이노 [강좌] 33. SPI 통신 (2) – SPI 함수 알아보기 icon 양재동메이커 03-20 18,008
40 아두이노 [강좌] 32. SPI 통신 (1) - SPI 통신이란 무엇인가 icon 양재동메이커 03-20 22,900
39 아두이노 [강좌] 31. I2C 통신 (3) - 온도 센서(TMP102) 실습하기 icon 양재동메이커 03-20 18,224