AVR - Chapter 15 황 지 연
스테핑 모터 스테핑 모터란? 스테핑 모터란 Step 에 의해 구동되는 모터이다. 4개의 모터상이 있어서 한 스텝 한 스텝 진행하면서 모터가 회전하는 것이다. 한 스텝 당 보통 1.8' 씩 회전한다. 스테핑 모터는 AC servo, DC servo 모터에 비하여 값이 싸고 정확한 각도 제어에 유리하여 우리 주위에서 쉽게 접할 수 있다. 스테핑 모터는 pulse에 의해 digital적으로 제어하는 것이 가능하므로 마이크로 컨트롤러에서 사용하기에 적합한 모터이다. 스테핑 모터는 다른 모터와 달리 모터의 위치를 검출하기 위한 feedback없이, 정해진 각도를 회전하고, 상당히 높은 정확도로 정지할 수 있다.
스테핑 모터 스테핑 모터 구동하기 DC모터는 회로는 간단하지만 제어하는 방법이 복잡하다. 반면 스테핑 모터는 구동회로는 상대적으로 복잡하지만 제어는 훨씬 쉽다. 스테핑 모터를 구동하기 위해서는 L297과 SLA7024를 같이 사용한다. L297은 스테핑 모터 구동에 필요한 상(클럭)을 만들어 주기 위한 것이고 SLA7024는 만들어진 상(클럭)의 전압과 전류를 증폭시키는 역할을 합니다
스테핑 모터 스테핑 모터의 구동부 구성 모터클럭 생성부 증폭부 Stepping motor의 여자 상(Step)을 만든다. (소프트웨어) 증폭부 모터 입력 신호를 증폭하여 Stepping motor를 구동한다.
스테핑 모터 구동방식의 종류 4상 motor 의 1상 여자 동작 텝 1 스 텝 2 스 텝 3 스 텝 4 A상 B상 /A상 /B상
스테핑 모터 스테핑 모터의 기본 구조 A B /A /B S극 전자석 N극 영구자석 모터 회전축
스테핑 모터 스테핑 모터의 기본 구조는 위 그림과 같다. 위와 같은 A, B, /A, /B의 전자석이 연속해서 배치 되어 회전자가 더 정밀하게 회전을 할 수 있다. A, B, /A, /B 4개의 전자석중 하나에 전류가 흘러 S 극 전자석으로 동작하면 모터 회전축에 연결되어 있는 N극 영구자석이 전류가 흐르는 전자석 방향으로 회전을 하게 되는데 이러한 구조를 이용하여 모터를 회전 하도록 신호를 인가한다. A, B, /A, /B 상에 차례로 전류가 흐르게 하면 다음 그림과 같이 모터축이 회전을 하게 된다.
스테핑 모터 A 상만 ON 되고 나머지는 OFF B 상만 ON 되고 나머지는 OFF 앞에서 90`만큼 시계방향으로 회전하였다.
스테핑 모터 /A 상만 ON 되고 나머지는 OFF 앞에서 90`만큼 시계방향으로 회전하였다. B /A /B A B /A /B /A 상만 ON 되고 나머지는 OFF 앞에서 90`만큼 시계방향으로 회전하였다. /B 상만 ON 되고 나머지는 OFF 앞에서 90`만큼 시계방향으로 회전하였다.
스테핑 모터 스테핑 모터 스테핑 모터 출력 메모리 번지 : 0x8009 (Write 전용) Bit[7,6,5,4] 왼쪽 스테핑 모터 (A, B, /A, /B) Bit[3,2,1,0] 오른쪽 스테핑 모터 (A, B, /A, /B) 1상 여자 방식으로 모터에 출력을 내보낼 경우 1, 2, 4, 8 을 순서대로 0x8009 번지에 쓰면 된다. 7 6 5 4 3 2 1 왼쪽 A B /A /B 오른쪽
스테핑 모터 4상 motor 의 2상 여자 동작 A상 B상 /A상 /B상 스 텝 1 2 3 4
스테핑 모터 기본적인 동작은 1상 여자 방식과 동일하다 차이점은 토크를 좋게 하기 위해 2개의 코일을 동시에 동작시킨다는 것이다. 1상 여자에 비하면 전류가 많이 흐르는 단점이 있지만 정지상의 오버슈터나 언더슈터가 작고 과도 특성이 좋아진다.
스테핑 모터 4상 motor 의 1-2 상 여자 동작 A상 B상 /A상 /B상 스 텝 1 2 3 4 5 6 7 8
스테핑 모터 1-2 상 여자는 전술한 1상 여자와 2상 여자가 교대로 반복하는 것이다. 따라서 회전자는 step 마다 45` 회전한다. 즉 step 각은 maker 가 표시하는 각도의 1/2 가 된다. 1-2상 여자는 1상 여자와 2상 여자의 특성을 같고 있으므로 step rate는 배가된다. Step 의 각도가 다른 동작법에 비에 1/2 만큼 작기 때문에 3가지 방식 중 가장 성능이 좋다. 단점은 다른 여자방식과 같은 속도를 내려면 마이크로 컨트롤러에서 클럭을 2배로 만들어야 한다는 것이다.
스테핑 모터
스테핑 모터 예제 모터 출력 메모리 번지 : 0x8009 (Write 전용) 왼쪽 A B /A /B 오른쪽
스테핑 모터 예제 스테핑 모터 출력 포트 지정 #define EX_STEPPING (*(volatile unsigned char *)0x8009) 스테핑 모터가 매핑되어 있는 0x8009 번지를 unsigned char 형 포인터의 포인터 변수로 지정한 것이다. 앞에 volatile 은 해당 메모리가 휘방성이기 때문에 해당 메모리 번지에 대하여 최적화를 하지 않도록 컴파일러에게 알리는 것이다.
스테핑 모터 예제 구동 함수 // step : 모터의 현재 출력값 // next : 모터의 다음 출력 할 값 char nextMotorCLK_1 (char step) { char next; switch(step){ case 0x01 : next = 0x02; break; case 0x02 : next = 0x04; break; case 0x04 : next = 0x08; break; case 0x08 : next = 0x01; break; default : next = 0x01; break; } return next;
스테핑 모터 예제 void main (void) { char step = 0; while(1){ step = nextMotorCLK_1 (step); // 위의 함수를 호출 EX_STEPPING = step; // PORTD 에 출력 신호가 연결 되어있다. Delay(100); }
스테핑 모터 문제 Timer를 이용하여 모터를 구동하시오. 서보 모터와 스테핑 모터를 동시에 구동하여 보시오. 스테핑 모터의 속도를 조절하여 보시오. 스위치(SW1, SW2)를 이용하여 속도 가속 및 감속을 구현하시오.