마이크로 프로세서 실험 V

-  Stepping Motor와 Photo Interrupter의 구동 -

1. 실험 목적

대부분의 사무 자동화, 공장 자동화 기기에는 모터가 사용되고 있다. 일반적으로 사용되는 모터에는 DC 모터와 스테핑 모터가 있는데 스테핑 모터는 위치 결정 용으로 쉽게 사용할 수 있는 장점이 있어 우리 실험에서도 간단한 스텝핑 모터 구동 회로와 그를 제어하는 소프트웨어를 공부하고자 한다.  또 Photo Interrupter의 동작과 사용 방법도 배운다.

2. 배경 이론

(1) 스테핑 모터의 개요

각종 모터 중에서 스테핑 모터는 펄스에 의해 디지탈적으로 제어하는 것이 가능하다는 점에서 마이크로 컴퓨터와 연결하여 사용하기에 적합한 모터이다. 스테핑 모터가 일반 모터와 다른 점은 모터가 얼마나 회전했는지를 검출하기 위한 FeedBack 회로없이 정해진 각도로 회전하고 상당히 높은 정확도로 정지할 수 있다는 점이다. 또한 스테핑 모터는 내구성이 좋으며 보수가 용이하여 신뢰성이 높은 시스템을 구성할 수 있다. 우리 주변에 스테핑 모터가 사용되는 예로는 플로피, 하드 디스크의 헤드 이동 장치, 프린터의 프린트 헤드 이송 장치, 플로터의 펜 이동 등 매우 다양하다.

위 그림은 모터를 제어하는 방법을 보이고 있는데 왼쪽은 일반적인 DC 모터를 쓰는 방법이다. DC 모터은 제어회로에서 전압이나 폭이 다른 펄스 폭 (PWM)을 모터에 제공함으로써 속도를 조절할 수 있고 실제로 얼마나 회전했는지는 외부의 Encoder(Photo Senser를 이용한 회전 감지 장치 - 마우스, 트랙볼에서 사용되는 것과 유사한 장치)를 통해서 알아낸다. 이 과정은 DC 모터의 특성상 관성에 의해 실제로 전압을 인가한 시간보다 더 모터가 회전하기 때문에 외부의 회로에서 실제로 회전한 양을 측정해야 하기 때문이다. 이러한 방법을 FeedBack 제어 또는  Closed Loop 제어라고 한다. DC 모터는 급작스런 정지가 거의 불가능하기 때문에 순간 정지가 필요한 경우 전자 브레이커등 별도의 정지 장치를 사용하기도 한다.

그림의 오른쪽은 스테핑 모터를 사용한 경우이다. 스테핑 모터는 제어회로에서 보내는 펄스 수만큼 정확하게 회전한다. 따라서 시간당 펄스 수를 조절함으로써 속도를 제어할 수 있으며 모터가 만들어질 떄 결정된 펄스당 회전 각에 따라 실제의 회전량이 결정되고 DC 모터에 비하여 정지 (펄스가 더 이상 없는 경우)되는 경우 매우 큰 유도 토크(정지 토크)가 있기 때문에 급작스런 정지가 가능하다. (물론 모터 자체가 정지하는 것이며 모터에 매달린 부하가 크면 그 관성에 따라 더 회전하기도 한다. - 반면에 DC 모터는 부하가 없어도 더 회전한다.)

스테핑 모터의 특징은 다음과 같다.

1. 모터의 총 회전각은 입력 펄스의 총 수에 비례한다.

2. 모터의 속도는 단위 시간당 펄스 수에 비례한다.

3. 회전각 오차는 누적되지 않는다.  펄스에 따라 지정된 만큼 회전하거나 회전을 못하거나(탈조

현상) 둘 중의 하나이며 지정된 각도이외의 디른 단위로는 회전하지 않는다.)

4. 위 1번 특성에 의하여 회전각 검출을 위한 Feedback이 필요없으므로 제어계가 간단하다.

5. DC 모터와 같은 브러쉬가 없기 때문에 보수가 필요없고 신뢰성이 높다.

6. 특정 펄스 주파수에서 진동 공진하는 현상이 있다. (모터가 흔들리는 현상)

7. 관성이 있는 부하에 약하다.

8. 고속 운전 시에 탈조하기가 쉽다. (모터 내부의 권선-코일-에 충분한 전류가 흐르지 않기

때문에)

다음 그림은 스테핑 모터 제어 회로 이다. (점선 안쪽이 스테핑 모터)

스테핑 모터 제어는 그림의 S1, S2, S3, S4 스위치를 이용하여 S1,S2,S3,S4 순서로 돌아가면 켜면 정회전, S4,S3,S2,S1 순서로 돌아가며 켜면 역회전을 하게된다.

실제의 스테핑 모터 회로에서는 정회전, 역회전을 시키는 문제보다는 스테핑 모터가 돌 때 토크를 얻기 위하여 여러 가지 제어 방법을 사용하고 있으며 스테핑 모터 전용 콘트롤러 IC를 사용하는 것이 보통이다.

(2) Photo Interrupter

Photo Interrupter는 기본적으로 스위치로서 이름이 의미하는 것 처럼 빛을 이용하여 어떤 일이 벌어졌는지를 검사하기 위한 장치이다. 빛을 이용하는 이유는 빛이 전기, 자기적인 잡음에 강하며, 스위치와 같이 접점을 이용하는 구조가 아니기 때문에 내구성이 좋고, 장치가 기계적으로 매우 간단하기 때문이다. 우리 주변에 Photo Interrupter를 쓰는 장치로는 플로피 디스크 드라이버의 쓰기 방지 탭, 프린터에서 헤드 귀환 확인 등 매우 다양하다.

다음 그림은 포토 인터럽터의 구조이다.

					차단 장치
	송신 --->			빛		---> 수신

발광(송신)부에서는 나가는 빛은 수광(수신)부에서 감지되고 있으며 차단 장치가 빛을 막으면 수신 측에서 빛이 없어졌음을 알게 된다. 따라서 프로그램에서는 수신 측의 신호를 폴링으로 확인하거나 빛이 없어지는 순간에 CPU에 인터럽트를 걸어줌으로써 차단 장치가 포토 인터럽트의 빛을 막았다는 것을 알 수 있다. 실제의 포토 인터럽터는 전등이나 기타 가시 광선에 의해 간섭을 받지 않도록 적외선을 보통 사용하게 된다.

실제 Photo Interrupter의 회로는 다음과 같다.

즉 발광부의 LED가 켜지고 중간에 빛을 가로 막는 것이 없다면 그 빛이 수광부의 트랜지스터를 ON 상태로 만들고 중간에 빛이 막히면 수광부 트랜지스터는 OFF 상태가 된다. 따라서 이 트랜지스터의 상태를 Digital 값을 읽으면 빛의 차단 상태를 알아낼 수 있다.

(3) 하드웨어 구성

우리 실험에 사용되는 스테핑 모터는 펄스 하나당 7.5 degree 씩 회전하는  소형 모터이다. 모터의 회전 축(검은 기어)은 다시 감속기어(하얀 기어)로 연결되어 있다.

회로적으로 우리 실험 장치와 스테핑 모터와의 연결은 다음과 같다. 우리 회로에서는 소형 모터를 사용하기 때문에 많은 전류나 높은 전압이 필요 없기때문에 간단한 드라이버 회로에 의해 스테핑 모터가 구동된다.

Output PORT 0x7900
Bit 3	Bit 2	Bit 1	Bit 0
S4	S3	S2	S1

따라서 0x7900 번지에 00000001, 00000010, 00000100, 00001000, ... 순서로 출력하면 모터가 정방향으로 회전하고 00001000, 00000100, 00000010, 00000001, ... 순서로 출력하면  모터가 역방향으로 회전한다.

Photo Interrupter 발광부의 LED는 언제나 켜져 있는 상태이고 수광부 트랜지스터의 ON/OFF 상태는 V25 Port1의 Bit 5 (P1.5)를 읽음으로써 확인할 수 있다.

Photo Interrupter	실험 장치
발광부 LED	언제나 ON
수광부 Transistor	V25 Port 1 - Bit 5 (P1.5) (TR=ON 일 때 1)

따라서 빛이 차단되면 V25 P1.5가 0이 된다.

(3) 샘플 프로그램

샘플 프로그램에서는 스테핑 모터와 Photo Interrupter를 사용하기 위한 Define문과 모터의 정, 역회전 및 속도 조절 프로그램 Photo Interrupter 동작 확인 프로그램이 들어있다.

STEP.C	Y:\TOOLS\EXP\EXP5\STEP.C

STEP.EXE : 속도는 1 - 9까지, 정회전 역회전은 SPACE BAR로 제어할 수 있으며 모터가 회전하는 방향을 LED에 표시하고 있다. Photo Interrupter의 빛을 차단했는지 여부는 LED의 Bit 6를 확인함으로써 알 수 있다.

3. 실험 방법

(1) 타이머 인터럽트 서비스 루틴에서 스테핑 모터의 펄스를 공급하도록 프로그램을 작성한다.

(2) 타이머 인터럽트의 주기를 조절함으로써 스테핑 모터의 속도를 제어한다.

(3) Photo Interrupter의 상태를 확인하여 한 번 빛이 막힐 때마다 모터의 회전 방향을 반대로

하도록 프로그램한다.

(4) 모터의 속도는 키패드 1과 2를 매번 누를 때마다 빠르게 또는 느리게 조절되도록 한다.

1을 누르면 점점 빠르게 2를 누르면 점점 느리게

(5) 실험 4의 Text LCD 루틴을 이용하여 현재의 회전 방향, 속도, rpm을 표시한다.

rpm을 표시할 때는 소수점 2줄째 자리까지 표시하되 정수 연산만을 하도록 한다.

즉 정수 연산 만을 이용하여 소수점 아래 두자리를 계산하고 LCD에 Tprintf() 함수를

이용하여 표시를 할 때도 %f 대신 %d format만을 이용하여라.

4. 실험 결과

LCD에 다음과 같이 현재 속도와 방향을 표시한다

DIRECTION : CW

SPEED     : 20 pps / 1.54 rpm

Direction은 CW(Clock Wise), CCW(Counter Clock Wise)

SPEED는 pulse per second와 그로 부터 계산된 rpm (revolution per minute)

(주의 !    위의 20pps / 1.54rpm은 실험 후 계산된 값이 아니고 단지 예를 보이기 위한 값임)