공작소굴

스텝모터를 구동할 때 자주 사용되는 A4988 드라이버에 대해 알아볼까 합니다.

A4988 스텝모터 드라이버는 2A 이하의 바이폴라 스테핑 모터를 제어할 때 주로 사용되며, 특히 3D 프린터 제어에 많이 사용되고 있습니다. 작고 귀여운 모습이 좋아서 저도 많이 사용하고 있습니다. 

 

A4988 보드를 다른 보드와 연결해서 쓰기 위해 나온 브레이크 보드도 있고, 아두이노 우노나 메가를 사용하여 CNC나 3D 프린터를 제어하기 위한 쉴드도 있어 사용하기에도 편리합니다.

 

 

저도 이번에 스텝모터 작업을 하면서 A4988보드 1개를 써야했는데, 연결이 편한 브레이크 아웃 보드를 사용하여 작업했습니다.

 

보드 레이아웃

A4988의 결선입니다.

핀  내용 동작신호 연결
/ENABLE 모터 인에이블 LOW 컨트롤러
MS1, MS2, MS3 마이크로 스텝(분주비)   컨트롤러
STEP 모터 스텝 제공   컨트롤러
DIR 모터 방향    컨트롤러
VMOT / GND 모터의 전원 8~35V  모터 전원
2B, 2A, 1A, 1B 모터제어 신호   스텝 모터
VDD / GND 회로의 전원 3~5.5V 회로 전원

 

컨트롤러에서 STEP 핀으로 HIGH / LOW 신호를 반복해서 주게 되면, A4988이 1A, 1B, 2A, 2B 로 정해진 시퀀스에 맞게 모터 전원을 바꿔주게 됩니다.

 

 

주로 사용되는 스텝모터의 경우 1step에 1.8º를 회전하게 되며, 200step을 주면 200x1.8º = 360º , 한 바퀴를 회전하게 됩니다.

 

마이크로 스텝 (분주) 제어

좀 더 세밀한 각도로 제어하기를 원하는 경우나 스텝모터가 회전할 때 부드럽지 못하고 진동이나 소음이 느껴질 때는 1step의 각도를 줄여주면 됩니다. 

이 때 사용되는 제어신호가 MS1, MS2, MS3 입니다. 원하는 분주에 해당하는 값을 넣어주면 1step의 각도가 바뀌게 됩니다.

브레이크 아웃 보드에는 마이크로스텝을 선택할 수 있도록 딥스위치가 있어 편하게 구현할 수 있습니다.

 

간단한 예시

A4988을 사용하여 1바퀴씩 시계방향, 반시계방향으로 회전하는 코드를 만들어 보겠습니다.

#define pDir = 8;	// Direction 방향 제어
#define pStep = 9;	// Step 스텝 입력
#define pEnable = 10;	// Enable 모터 인에이블
#define microSteps = 1;	// 마이크로스텝 분주비 (1, 2, 4, 8, 16)

bool dir = HIGH;	// 방향값 

void setup()
{
	pinMode(pDir,OUTPUT);
	pinMode(pStep,OUTPUT);
	pinMode(pEnable, OUTPUT);

	digitalWrite(pEnable, LOW);	// 모터 가동
}

void loop()
{
	digitalWrite(pDir, dir)		// 모터 방향 설정
    
    // 한 바퀴를 회전시키기 위한 스텝수 만큼 H, L 변경
	for(int i=0; i< 200*microSteps; i++)
	{
		digitalWrite(pStep,HIGH);
		delayMicroseconds(500);
		digitalWrite(stepPin,LOW);
		delayMicroseconds(500);
	}

	dir = !dir;	// 반대 방향으로 바꾸기
}

방향(dir)값 정하고 200*microSteps 만큼의 스텝을 A4988에 보내주면 원하는 방향으로 한 바퀴 회전하게 됩니다.

 

마무리

이번 포스트에서는 스텝모터 구동에 사용되는 A4988 드라이버에 대해 알아보았습니다. 스텝모터는 작지만 힘도 좋고 정확한 위치제어가 가능하기 때문에 여러 프로젝트에서 사용되는데요, 관련 포스트를 작성해 보도록 해 보겠습니다. 

 

그럼 포스트를 마치도록 하겠습니다.

감사합니다.

 

끝.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band