본문으로 바로가기

  아두이노(Arduino) 중급 모터 3편 - 스텝퍼(스텝핑) 모터  


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.


참고로 중급편 부터는 응용편이 없습니다.

왜냐하면 고급편에서 중급에 사용했던 부품의 응용편을 다룰 예정이기 때문이죠!! 


안녕하세요. 애드라이프 입니다.

모터 3편에서는 스텝퍼 모터를 다루게 되었습니다.

스텝퍼 모터는 흔히 스텝핑모터라고도 불리는 대요.

정밀제어가 필요한 분야에 사용합니다. 

그래서 3D프린터나 프린터 에서 볼수 있습니다..


스텝모터는 유니폴라와 바이폴라 이렇게 두종류가 있습니다.

유니폴라(6권선) : 간단한 TEST나 프로젝트에 적합 합니다.

바이폴라(4권선) : 정밀함과 힘이 필요한 분야에 적합 합니다.


제가 이번에 쓰는 스텝퍼 모터는 KH42HM2-901(유니폴라)입니다.

위에 화살표는 회전방향을 알수있게 제가 붙여놓은 것입니다.


1스텝당 1.8도를 움직이는 스펙을 갖는 모터입니다.

(1바퀴 360도 = 200스텝)

이번에도 모터 드라이버가 필요합니다.

이번엔 진짜 L293D IC를 사용합니다.▼

스텝퍼(스텝핑)모터 드라이버

이전에 다뤘던 L293B와 핀맵은 거의 같습니다.


그럼 바로 핀들의 역할을 살펴보겠습니다.

 핀 번호

핀 설명 

 1

1,2 Enable

HIGH신호시 스텝핑모터를 구동가능 LOW신호시 구동 불가

 2

 1A - 스텝퍼모터의 A제어, 아두이노 디지털포트 8번에 연결합니다.

 3

1Y - 스테퍼모터 3번과 연결

 4,5,12,13

 GND

 6

 2Y - 스텝퍼 모터의 1번과 연결

 7

2A - 스텝퍼 모터 A`제어, 아두이노 디지털포트 9번에 연결합니다.

 8

 모터 구동 전원(최대 36V)

 9

 3,4 Enable

HIGH신호시 스텝핑모터를 구동가능 LOW신호시 구동 불가

 10

 3A - 스텝퍼모터의 B제어, 아두이노 디지털포트 10번에 연결합니다.

 11

  3Y - 스텝퍼 모터의 6번과 연결

 14

4Y - 스텝퍼 모터의 4번과 연결

 15

 4A - 스텝퍼모터의 B`제어, 아두이노 디지털포트 11번에 연결합니다. 

 16

 모터 구동 IC 전원(4.5V~36V)

유니폴라 모터라 6개의 선이있지만 2번과 5번 선은 연결하지 않아도 됩니다.


위 표를 참고해 그린 회로도를 살펴보겠습니다.▼

아두이노 스텝퍼(스텝핑) 모터 회로

DC모터에 이어서 회로도가 복잡해 보이네요. 하지만 위 표대로만 연결 하시면 됩니다.


이번에 프로그램도 라이브러리를 사용합니다.

라이브러리를 사용해서 프로그램을 작성하면 매우 간단하게 프로그램을 만들 수 있지만

라이브러리를 사용하지 않는다면 좀 힘들 수도 있습니다.



Stepper.zip

아두이노 라이브러리 추가하기(링크)


라이브러리 파일을 다운받아서 적용해주세요.

다음으로 프로그램을 살펴보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<Stepper.h>                             //라이브러리 추가필요.
const int Resolution = 200;                      //kh42hm2-901 스텝핑 모터 >> 1스텝당 1.8도 360도면 200스탭
Stepper myStepper(Resolution,8,9,10,11);        // myStepper(Resolution,A,A`,B,B`) 스텝핑모터의 권선에 해당하는 아두이노 핀 추가
 
void setup() {
  myStepper.setSpeed(100);                      //분당 모터 회전수를 결정하는 함수
}
 
void loop() {
  int i;
  for(i=0; i<200; i++)
  {
    myStepper.step(1);                          //실제 모터를 회전시키는 함수 200스탭중 스텝을 결정하여 회전
    delay(10);
  }
  for(i=0; i<200; i++)
  {
    myStepper.step(-1);                          //반대로 회전하려면 -값을 주면 됩니다.
    delay(10);
  }
}
cs

프로그램의 전체적인 흐름은 주석을 참고해주세요.


라이브러리를 사용하니 정말 프로그램이 간결하죠?

프로그램은 짧지만 속도조절도 가능하고 방향선택도 가능합니다.


위 프로그램을 업로드한 결과를 확인하면서 이번 포스팅을 끝내겠습니다.▼

화살표 모양이 정방향과 역방향을 번갈아가며 회전하는게 보이시나요?


참고로 이번 포스팅에서 사용하는 L293D IC를 계속 사용하면 발열이 심하기때문에 

방열판을 사용하는 것을 권장합니다. TEST용도로만 쓴다면 상관없지만 지속적으로

돌려야한다면 모터와 L293D IC 모두 방열품을 장착하시기 바랍니다.


지금까지 아두이노(Arduino) 중급 모터 3편 - 스텝퍼(스텝핑) 모터에 대한 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프