9월 242015
 

팝코넷의 광학 능력자 분께서 스타 트랙커에 대한 좋은 정보를 주셨습니다.

  1. 스퍼기어의 경우 기어 하나하나의 오차에 취약.
  2. 한펄스가 최종 가이드 축에서 각으로 1~5arcsec이내로 기어비와 클럭 주파수를 맞추어야 최소 200mm급의 가이드가 가능.
  3. 지구 자전 주기는 정확하게 86164.09 초. (24시간이 아님)

이 주옥같은 정보를 받들어, 일단 위성기어 방식을 이용한 감속기어는 사용하지 않기로 했습니다.

문제는 2번과 3번인데…

1 arcsec이 뭔가하고 구글에게 물어봤더니, 1/3600°라고 합니다. 즉 1°를 3600 조각으로 나눈 것이라는… ㄷㄷㄷㄷ

그럼 모터의 한스텝이 1 arcsec 수준으로 빠지려면 간단하게, 360°* 3600 = 1,296,000 스텝으로 한바퀴를 구성해야한다는 말이 됩니다.
이전에 스테퍼모터 한바퀴당 200 스텝에, 마이크로 스텝 설정으로 1/16 으로 하고, 거기에 1:27 감속 기어박스를 가진다면 86,400 스텝밖에 안되는 상황이 됩니다. -____-;; 어찌 이런…. ㄷㄷㄷㄷㄷ

그러니까 모터 한스텝을 360도를 산정했을 때, 약 1.3 백만 스텝으로 쪼갤 수 있어야 한다는 것인데… 이리저리 계산하다보니, 1 : 30 감속비를 갖는 기어박스 두개를 중첩하는 방향으로 가야 1.44백만 스텝을 이룰 수 있어 모터 한스텝이 1 arcsec 수준이 되어야 한다는 조건을 만족하게 됩니다.

즉, 스테퍼 모터 200 Full Step * 1/8 마이크로 스텝 설정 * 1 : 30 감속 기어박스 2단 = 1,440,000 으로 360도를 분해할 수 있게 됩니다.

1 : 900 의 감속 기어비를 갖는 기어박스 제작은 둘째치고… 그럼 이정도 분해능을 구현할 때, 스테퍼 모터에 펄스를 주는 타이밍은 더 큰 문제입니다.

TimeErrorTest-0

위 도표에도 나왔지만, 더 정확하게 계산하면 59.8361736111111 밀리초 (ms) 마다 모터에 스텝을 인가하여 움직여주어야 합니다.
그런데 어떻게 저 타이밍을 맞출까요? 불가능합니다.

스타 트랙커에 사용할 스테퍼 모터의 컨트롤은 아두이노 보드로 간단하게 작성할 예정인데, 저정도 소수점까지 정확하게 맞추는 것은 당연히 불가능합니다. 예를 들어, 가장 편리하게, 매 59 ms 마다 모터를 움직이게 한다면, 매 59ms 마다 0.8361736111111 ms 만큼 오차가 발생할 것이고, 이는 시간이 지나면 점점 오차가 누적되어 별의 꼬리가 점점 길어지게 됩니다.

그렇다고, 매 60ms 마다 모터를 움직이면, 59ms 보다 좀 낫지만 역시 오차가 누적되어 시간차가 점점 늘어질 수 밖에 없습니다.

그래서, 생각해 낸 것은 일단 60ms 주기로 모터를 움직이면서 누적된 오차를 모니터 하다, 일정 수준이 넘어서면, 59ms 로 한번 살짝 땡겨줍니다. 그럼 누적 오차가 줄어듭니다. 그리고는 다시 60ms 주기로 모터를 움직여주고, 누적 오차를 모니터 하고… 이런 식입니다.

약간은 편법 같지만 사실 이게 큰 문제가 없는 이유는, 0.00025°만큼의 움직임을 1/1000 초 먼저 움직여주느냐 마느냐수준의 문제라… 취미 자작가 수준에선 충분한 수준이라고 생각했습니다. 그리고, 이 방법을 이용하면, 누적 오차는 최대 1ms 정도 수준에서 통제가 가능해진다는 것입니다.

이 방법을 바탕으로 아주 오래전에 구입해 두었던 아두이노 나노 (Arduino Nano)에 이 로직을 넣고 프로그램을 해봤습니다. 순서는…

  • 일단 매 60ms마다 모터 움직임을 위한 작업 실행.(실제 테스트 프로그램에선 모터에 스텝을 주는 것은 생략되었음.)
  • 지난 작업과 이번 작업시간의 차이를 ms 단위로 측정.
  • 발생한 오차를 누적시키며 모니터
  • 누적오차가 일정 수준을 넘어서면 주기를 59ms로 바꿈.
  • 다시 다음 주기에 60ms 로 복귀.
  • 계속 반복.

아래 스샷은 아두이노 보드에서 돌아가는 이 테스트 프로그램을 수행했을 때, 터미널을 통해 넘어오는 주기와 누적오차를 출력하는 모습입니다.

보시면, 주기가 기본 60ms로 작동하다 중간 중간 59ms로 바뀌고 그렇게 바뀌면서 누적오차가 작아지는 모습이 보입니다.

TimeErrorTest

그럼 이제 모터 통제를 위한 주기 문제는 해결이 된 것 같고… 이제 1 : 900 의 감속기어비를 갖는 기어박스를 만드는게 남았네요. ㅎㅎㅎ

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)