천체 사진의 초보를 벗어난 아마추어 천문학자라면 누구든지 노터치 가이드 촬영에 관심이 있을 것이다. 그러나 이에 필요한 장비는 대부분 망원경을 대상으로 만들어 진 것들이 많기 때문에 단지 몇 분간의 노터치 가이드 촬영을 위해 비싼 돈을 주고 가대를 구입하는 것은 쉬운 일이 아니다. 또한 요즘은 관측시에 노트북을 이용하는 이용자들이 많으므로 만들기 쉬운 경위대식 가대를 노트북과 연결하여 컨트롤하면 쉽게 노터치 가이드용 가대를 제작할 수 있을 것이라는 결론이 나온다.
본 글은 10만원 미만의 가격으로 Serial Port를 통해 PC와 컨트롤되는 경위대식 가대를 만드는 것이 이 글의 목적이다. 본인이 직접 만들면서 써 갈 것이므로 이 글의 길이가 얼마나 될지, 연재는 언제 끝날지 알 수 없다.
준비물
Step Motor 2개
Step Motor Controller Chip 2개
PC
기타 : 만능기판, 전선, 납땜기 등
스탭모터란?
Step Motor는 1920년대 영국에서 처음 개발되었으며,
1960년대 일본에서 NC공작기계에 도입하였고,
현재 플로피 디스크나 프린터, 자동제어 공작기계 등에 광범위하게 이용되고 있습니다.
Step Motor는 입력으로 하나의 펄스가 들어갈 때 마다 한개의 step 만큼 회전하는 모터라고 생각하면 되겠습니다.
보통은 100 step이나 180 step이 한바퀴가 됩니다.
우리가 가이드 장치를 만들 때 Step Motor를 사용하는 이유는 간단합니다.
Step Motor는 입력한 펄스의 갯수만큼 회전하며, 그 위치를 유지합니다.
그러므로 저속의 모터 회전이 가능하며, 정밀한 각도 제어가 가능합니다.
아래 그림이 step motor입니다. 모터에서 6개의 선이 나와있습니다.
선은 아래에 보이는 것처럼 빨강-주황-노랑-파랑은 신호 선이고
흰색과 검은색은 ground입니다.
단자정보는 모터에 따라 다를 수 있습니다. 만일 이 설명과 다른 경우는 구매한 곳에서 문의를 바랍니다.
아래 그림은 파랑 대신에 갈색이 있지만 다를 바 없습니다.
아래 그림에서 신호선은 signal 1, 2, 3, 4에 연결되었으며, 흰색과 검은색은 전력 공급 단자에 연결되었습니다.
스탭모터 제어하기
Step motor는 구동하기 위해서는 일단 펄스가 필요합니다.
Step motor에서 펄스를 어떤 방식으로 넣어주느냐에 따라 다음과 같이 여러 구동 방식이 있습니다.
어떤 여자 방식을 선택하든 step motor에 들어갈 pulse를 만들어주는 것은 쉬운 일이 아닙니다. 예전에는 이러한 펄스를 만들어 내는 회로를 transistor만을 사용하여 직접 설계하였으나 요즘은 IC chip이 나와있어 용산이나 청계천에서 쉽게 구입하여 사용할 수 있습니다.
일반적으로 많이 사용되는 step motor 구동회로는 SLA7024칩을 이용하는 방법과 L297, L298을 복합으로 사용하는 방법이 있습니다. 이 둘의 차이가 아래에 비교되어있습니다.
SLA7024 : 부품수가 많음. 콘덴서가 많이 들어감 하지만 칩 하나로 step motor 하나를 구동.
L297, L298 복합 : 복합형이라 부가회로가 거의 없지만 가격이 비쌈. sla7024의 두배. 한 조가 stepmotor 하나를 구동
또한 두개의 차이점은 sla7024는 고속회전에 좋고 L297,L298은 저속회전에 유리하다고 합니다. 그러므로 마이크로마우스나 로봇축구에는 SLA7024가 많이 사용되는 모양입니다. 하지만 망원경의 제어에는 L297, L298을 이용한 방법이 좋겠죠?
일단 L297과 L298에 대해 알아보겠습니다.
L297의 주요 특징
1. Normal/Wave Drvier
2. Half/Full Step Modes selectable
3. 방향 선택가능
4. 프로그램가능 로드전류
5. Reset Input, Home Output
6. Enable Input
L298N의 주요 특징
1. 46V 까지 구동가능 (방열판 사용권장)
2. 4A 까지 구동가능
3. Low Saturation Voltage
4. 과열 보호 기능
5. 높은 노이즈 특성
297과 298의 각 핀에 넣어줘야 하는 신호는 다음과 같습니다.
그러므로 전체 회로는 아래와 같이 꾸미면 됩니다.
위와 같이 회로를 꾸미셨다면 아래 그림과 같은 식이 될 것 입니다.
다음과 같이 여러개의 step motor 구동 회로를 하나의 기판에 모아서 팔기도 합니다.
그럼 바로 모터를 돌리시면 됩니다.
모터를 돌리기 위해서는 위의 회로에 나와있는 단자를 잘 조정해야합니다.
단자는 CCW/CW 회전방향이므로 +,- 상관없이 연결함.
/CLOCK - 클럭이 하나 들어가면 모터가 회전함. +에서 -로 바뀌는 것이 클럭임
Half/Full - Half로 하면 위의 clock이 하나 입력될때 0.9도 회전하며 full은 1.8도회전
/Reset - Reset이면 모터가 회전되지 않으므로 회전할경우는 5v에 연결
Enable - Enable이 Gnd이면 모터가 회전되지 않음. 그러므로 5V에 연결
Vref - 5V에 연결
위와 같이 준비가 되었다면 펄스를 임의로 입력하여도
step모터가 회전될 것입니다.
5v에 clock단자를 연결하고 gnd에 다시 연결하고 5v에 연결하고 gnd에 연결하고 하게되면
임의로 펄스가 발생하므로 모터가 회전하게 됩니다.
Serial Port를 통해 통신하는 방법
다음으로 PC에서 Serial Port를 통해 하드웨어와 통신하는 방법부터 알아봅시다. 이를 통해 주기적인 간격으로 모터를 회전시키라는 명령을 보낼 것입니다.
본 프로젝트에서는 다음 라이브러리를 이용하겠습니다.
http://www.codeproject.com/system/cserialcom.asp
쉽게 시작할 때 OpenPort 함수를 호출하여 주고 ConfigurePort로 설정을 고쳐준 다음 WriteByte 함수를 이용해 값을 변경시켜주면 됩니다.
설정창
설정창에서는 수평축, 수직축을 자유롭게 움직일 수 있으며 나침반과 수평계를 이용하여 북쪽 및 수평을 맞추게 한 후 설정 완료 버튼을 누르면 되겠습니다.
또한 사용자의 위도와 경도를 정확하게 입력 받습니다. 이것은 아래의 GPS 모듈을 이용해서 구현될 수도 있습니다. 그러나 요즘은 인터넷을 통해 관측지의 정확한 위도, 경도를 알 수 있으므로 굳이 비싼 GPS 모듈을 구입할 필요는 없겠지요.
GPS 관련 자료 : http://www.codeproject.com/system/gps_support.asp