GPS-DO 의 제작 및 테스트(2)

이전 게시물에서 충분히 설명했으므로 바로 본론으로 들어간다.

미리 앞서서 밝히자면 나의 Lars GPS-DO 는 이미 완성되어 가동 중이며 다양한 실험 및 측정이 진행되었다.

(현재도 진행 중이다.) 

 

아래는 Lars GPS-DO의 회로도이다. 

 

원문이 게시된 곳은 eevblog이며 아래에 있다.

https://www.eevblog.com/forum/projects/lars-diy-gpsdo-with-arduino-and-1ns-resolution-tic/

빌드에 대한 자세한 설명은 ZL1 BPU 오엠이 잘 설명해 두었으므로 그 자료를 참고한다. 

https://www.qsl.net/zl1bpu/PROJ/NGPSDO/New%20GPSDO.htm 

 

 

New GPSDO

Just what is a GPSDO? It's a GPS Disciplined Oscillator. I guess that doesn't tell you very much! Essentially it is a reference oscillator you can use in your shack to know exactly where 10.000,000 MHz is. Because the reference is locked to GPS, it is inhe

www.qsl.net

소스는 아두이노 C로 구현되었으며 Mega328P 용이다.

따라서 아두이노 미니 또는 나노에서 큰 수정 없이 작동한다. 내 경우 아두이노는 Pro-mini 를 사용했다. 

 

※ 이 회로에 특별히 구하기 어려운 부품은 없으며 몇 가지 참고할 사항만 있다.

 

1. 첫 번째 문제는 OCXO의 선정인데 신품은 비교적 고가이므로 거의 대부분의 오엠들이 Ebay 또는 Aliexpress 등에서 중고를 구입하여 사용하고 있는 듯하다.  앞서 설명한 대로 상태 불명의 OCXO들이 많으므로 이 경우 성능은 순전히 운에 따른다.  중고 OCXO를 사용하는 키트도 같은 문제가 있으리라는 것은 쉽게 추정 가능하다.

 

OCXO 자체는 기계적으로 매우 민감할 뿐만 아니라 같은 OCXO 라도 각각 다른 Aging(경년변화) 특성이 있다.

또한 장시간 작동 없이 보관될 경우 그 특성이 변하고 다시 원래대로의 안정성으로 돌아오려면(이 과정을 Retrace라고 한다.) 경우에 따라 꽤 긴 적응 시간(Aging) 이 필요하다. (짧으면 몇 시간에서 몇 주 이상,  운이 없으면 그 이상 계속해서 주파수가 드리프트 한다.  즉  수명이 다 된 경우... 또는 고장.)

   

GPS-DO 가 못해도 최소 1E-10(0.1ppb) 이상의 분해능과 안정성을 제공할 것이므로 대부분의 OCXO 가 제공하는 안정성보다 요구사항이 더 높다.  따라서 실제 작동시켜보면 아무리 좋은 OCXO 라도 주파수 드리프트를 관찰 할 수 있다.   

이 정도의 안정성 평가는 일반적인 계측기로 측정하는 것 자체가 불가능하고 장시간 추적 관찰해야만 알 수 있으며, 문제가 있어 보이더라도(예컨대 급작스런 주파수의 도약) 대부분 OCXO의 스펙 내에 있으므로 이의를 제기하기도 어렵다.  따라서.. 다시 한번 얘기 하지만 순전히 운에 따른다.  최소한 구매할 OCXO 의 데이터 시트를 꼼꼼히 살펴보도록 한다. 

 

아래는 중고로 판매되는 ISOTEMP 131 시리즈 OCXO 사진.

 

 

 

2. 74HC4046 (PLL)의 경우에는 현재는 잘 쓰이지 않으므로 아마도 해외 재고를 구입해야 하는 "상대적 고가" 의 부품에 해당할 것이다. 전체 제공 기능 중에 3번째 RS FF 위상 비교기 부분만 사용하므로 입수가 쉬운 플립플롭으로 대체 구현 가능하다.  https://github.com/erikkaashoek/Arduino_SI5351_GPSDO  의 하단 부분 참고

회로상에 2.5MHz 부분은 Lars 버전에서 1MHz 가 공급되는 핀이며 출력(VCO) 필터는 당연히 Lars 회로를 따라야 한다.

 

아래 스파이스에서 직접 수행한 시뮬레이션 결과를 보인다. 

1번핀(붉은색)이 'H' 레벨이 되면(즉 1PPS 의 상승에지)  출력 9번 핀(연두색)이 'H' 레벨 상태를 유지하다가

2번핀(파란색)에 상승에지가 발생하면   9 번 핀의 출력이 'L' 레벨로 바뀌며 이 상태는 1번 핀이 다시 상승 에지가 될 때까지 유지된다.  따라서 두 신호에 위상차가 있으면 그 차이만큼의 길이를 가진 펄스가 발생한다.

따라서 74HC74,  74AC74 가 작동 가능하며,  개인적으로 74ABT74 및 74F74(고속 TTL) 로 테스트 해본 바 문제 없이 잘 작동한다. 다만 TTL 의 경우 싱크(Low 레벨)는 20mA 에 가깝지만 소스(High 레벨) 전류가 1mA 이하일 것이므로(오픈컬렉터 출력에 가까우므로)  VCO 출력이 제원과 다를 수 있다.(Lars 회로에서는 출력에 3.9K 가 배치되어 있으므로 CMOS 에서도 최고전류는 1mA 부근으로 제한된다. 이것이 TTL 에서도 작동이 원할한 이유일 수 있다)  가능한 원문대로 4046 을 사용하고 플립플롭으로 대체할 경우에는 CMOS(HC, AC 등) 타입을 사용한다.  

나의 경우는 74HC4046 으로 만들고  74F74 를 거쳐 74ABT74 를  테스트 삼아 사용하고 있다.  74ABT74 의 작동속도가 74HC4046 보다 최소 10 배 이상 빠르기 때문에 순전히 "기분" 에 의한 것이다.(또한 온도 등의 영향에 대한 몇 가지 테스트)   이 회로의 경우에는 신호 자체가 충분히 느린 데다가  전파 지연의 한계가 두 위상에 동시에 작용하기 때문에 속도가 별 문제가 되지 않는다.  원저자인 Lars는  GPS-DO 시뮬레이션에서 상에서 볼 때 1ns 면 충분하다고 밝히고 있다.(측정 한계가 더 높아진다고 해도-예컨대 0.1ns- 별 도움이 안 된다는 의미)

 

 

3. GPS 수신기 

 

Lars 의 설계에서는 PPS 신호만 사용하므로 PPS 신호가 나오는 거의 모든 GPS 수신기를 이용 가능하다.

주로 저렴한 ublox NEO 6, 7, 8 시리즈 등을 사용한다.(내 경우 미국 위성만 수신하는 오래된 NEO 6 모델이지만 굳이 이 구형을 쓸 필요 없음)  타이밍 전용 수신기로 모델 끝에 'T' 가 붙은 것은 일반 수신기가 지원하지 않는 타이밍 수신 관련 옵션을 제공한다.  타이밍 수신기의 경우 위치 정보가 필요한 것이 아니므로 다수의 위성이 필요한 게 아니며 신호가 좋은 위성이 한 개만이라도 작동한다.  이것을 오해하면 수신율이 안 좋아도 되는 거 아닌가 싶겠지만, 어디까지나 모든 위성 신호를 수신할 수 있는 양호한 상태에서 타이밍 측정에 유리한 위성을 골라서 수신하는 기능을 추가적으로 제공한다. 또한 타이밍 수신기는 위성 신호 타이밍의 안정적인 수신을 보장하지만 GPS-DO 자체의 정확도에는 큰 관련이 없는 것으로 테스트 결과가 나와 있다. (안정성은 향상됨) 

만약 PPS 신호를 내는 "작동 가능한 GPS 수신기" 가 있으면 그것을 먼저 사용해본다. (라벨만 신형 모델인 가짜 ublox 수신기를 구매하는 경우가 있으므로 주의) , 확인해본 적은 없지만 저렴한 차량 블랙박스용 GPS 수신기도 내부에  PPS 신호를 내는 수신기 모듈을 탑재하고 있을 것으로 생각한다.  

 

GPS 수신기 내부에도 타이밍 유지를 위한 클록이 내장(저가형은 일반 XO, 타이밍 수신기는 TCXO) 되어 있고 이것 역시 온도 변화를 받으므로 가능하다면 케이스에 넣고 수신 안테나만 밖으로 빼는 것이 정석이다. 

내 경우는 GPS 수신기 전체를 밖으로 빼내고(수신기 자체는 단열 처리)  4 가닥의 전선으로 +, GND, PPS 신호만 받아 오도록 했다.  이 과정에서 전화선이 20미터 이상 필요했으므로 5V 공급 전압이 강하되어 GPS 수신기 측에서 전압이 부족한 현상이 발생하였고 따라서 6V 를 공급하고 있다.  6V 를 공급하면 공급라인에서 대략 1V 전압강하가 발생하고 최종적으로 5V 가 공급된다. 수신기 자체는 별도로 장착된 레귤레이터를 통해 3V 로 작동하므로 5V 를 상회한 전압이 공급되더라도 큰 문제는 발생하지 않는다.  또한 앞서 말했다시피 수신기가 3V 에서 작동하므로 시리얼 포트를 이용하여 수신기 상태를 보고자 한다면 레벨 시프트 회로를 사용하는 것이 좋다. PPS 신호 역시 마찬가지인데 내 경우 3V PPS 신호는 2N7000 을 통해 버퍼링 되고 5V 풀업 저항을 통해 GPS-DO 본체와 연결되고 있다. 즉, 이미 반전된 신호이므로 74HC04(내 경우 74HC14 사용) 를 한 번만 통과하여 74HC4046 에 공급된다. (이렇게 하지 않는 경우 버퍼링을 위해 반전 게이트를 두번 통과해야 한다)

 

아래 사진은 ublox LEA M8T 타이밍 수신기의 사진이다.  

 

 

 

 

4. USB 연결 

 

작동상태를 모니터링하는 시리얼 출력 기능이 있으므로 USB를 연결하여 로그를 수집,  작동 안정성을 평가하는 ADEV 등을 Timelab을 통해 "간접적"으로 측정할 수 있다. 

다만 USB 연결 시 아두이노의 주전원 5V와  PC의 5V 전원이 연결되고 아두이노(ADC)에 노이즈가 유입되어 정밀도를 하락시키므로 어떤 식으로든 절연할 필요가 있다.  펌웨어를 변경할 계획이 없는 경우 일반적으로 사용되는 저렴한 PC817로 간단하게 9.6K 시리얼 신호를 절연 가능하다. (Pro-mini 와 CH340E 로 테스트됨)  펌웨어를 업그레이드하려면 보드 버전에 따라 115K 또는 57.6K 속도가 필요하므로 PC817 로는 사양 초과이다(기본 회로로 제대로 작동하지 않음). 이 경우 더 빠른 옵토 커플러가 필요하다.  4N35 H11L1 6N137 등. (나는 이 커플러들을 시험하지 않았으며 펌업이 필요하면 직접 연결한다.)  또한 DTR 신호가 연결되면 USB 가 연결될 때마다 부트로더로 진입하며 리셋되므로 DTR 에 10uF 를 GND 로 배치하여 리셋을 방지하거나 DTR 라인을 분리해야 한다.(펌업 등 필요시만 연결)

 

 

5. 전원부(레귤레이션) 

 

앞서 말한 대로 USB 연결 만으로도 측정치가 흔들릴 정도의 영향을 받으므로 전원 전압의 변동 또한 영향을 미친다. 가능한 좋은 전원장치를 사용하고 저렴한 SMPS (예컨대 220V - 12V) 의 경우 220V 측의 전압이 변동하면 출력 측의 전압도 변동하는 경향이 있으므로 2중 레귤레이션도 고려한다.  또한 일부 중국산 선형 레귤레이터(7805 시리즈, AMS1117 등의 클론)는 스펙에 훨씬 못 미치는 레귤레이션 성능을 내므로 주의한다.

 

내 경우..

12V 배터리 또는 12.8V (12.2V 에서 승압 개조된 SMPS) -> LDO(11.8V, 자체 설계) -> 7805 로  아두이노에 공급.

12V 배터리 또는 12.8V (12.2V 에서 승압 개조된 SMPS) -> LDO(11.8V, 자체 설계) -> 7806 으로  GPS 공급. 

12V 배터리 또는 12.8V (12.2V 에서 승압 개조된 SMPS) -> 21V(부스트 컨버터 모듈) -> REG(18V, 자체 설계) -> OCXO (정격 전압 18V) 로 공급한다.

 

LDO 의 설계가 11.8V 로 된 것이 이상해 보일 수도 있는데,  내 GPS-DO 의 경우 평상시에는 솔라셀로 충전되고 있는 12V 배터리에 의해  24 시간 구동된다.  따라서 납산 배터리의 전압인 12.5V 전후 (대낮 충전 중에는 13.5V 이상 상승) 부근에서 작동해야 하므로 해당 전압으로 결정되었다.

 

 

6. 엔클로저(케이스)

 

앞서 말한 대로 GPS-DO 가 못해도 최소 1E-10(0.1ppb) 이상의 분해능을 제공하고 이것은 일반적인 OCXO 의 안정성보다 더 높은 수준의 안정성 이므로 OCXO 주변 온도가 0.1도만 변해도 주파수(엄밀히 말해서 위상)가 변하는 것을 관찰할 수 있다.  작동 환경의 급격한 온도 변화는 OCXO 자체뿐만 아니라 측정 회로에도 영향을 주므로 관리될 필요가 있다.

 

흔히 "보온" 이 필요할 것으로 생각하는데 여기서 필요한 것은 온도가 변하지 않는 항온(열평형) 조건이다. 

단열재 등으로 보온만 할 경우 외기 온도에 영향은 덜 받겠지만 열평형(항온)에 도달할 때까지 시간이 오래 걸리게 되어 온도 변화가 없을 때까지 계속해서 주파수가 드리프트 한다.   반대로 보온을 하지 않을 경우 열평형에는 빨리 도달하겠지만 외기에 그대로 노출되어 주변 온도가 변하는 것이 그대로 주파수 드리프트에 반영된다.

따라서 항상 켜 두고 운용할 경우(안정성을 생각한다면 이것이 최선의 방법) 보온에 신경 쓰는 것이 유리할 것이고 간헐적 사용을 하는 경우는 보온이 그다지 큰 도움이 된다고 보긴 어렵다. 

개인적으로는 어떤 경우라도 2중 케이스 (본체 + 대형 외부 케이스) 구조가 합리적이라고 생각되므로 안정성을 요구하는 경우에는 제작 초기부터 이 구조를 고려하는 게 좋을 것이다.(작동 관련 LED 등의 외부 인출 등)

 

 

7. 온도센서(NTC 및 LM35) 

 

내 경우는 오븐용으로 LM35 그리고 작동 온도 모니터용으로 100k NTC 를 사용한다. 

Lars GPS-DO 에서는 온도 측정 및 온도 보상 기능을 제공한다. 그러나 원저자가 밝힌 바와 같이 OCXO 에서는 별 효과가 없는 듯하다.  하지만  급격한 드리프트 원인 등을 분석할 때 가장 중요한 정보를 제공하는 것이 온도 이므로 보상에 쓸모없다고 하더라도 온도 센서는 기본적으로 배치하는 것을 권한다.

 

회로상 NTC 는 10k 타입을 이용하는데 시중에서는 3D 프린터 등에 쓰는 100k NTC 가 더 구하기 쉬울 것이다.  가끔 100k NTC 를 병렬저항 등으로 10k 로 억지로 조정하는 해외 오엠들도 있는데, 단순히 전압 분압 저항을 10 배로 키우면 100k NTC 도 어느 정도의 오차를 감안하여 사용 가능하다.  소스상에 보면 온도 범위에 따라 39k 47k 68k 세 종류를 지정하는데 100k NTC 면 분압 저항은 대략 390k, 470k, 680k 가 된다.   보통 서미스터 자체 저항 값은 상온 25도에서 지정된다. 따라서 100k NTC 를 사용하고 상온 25도를 벗어나는 경우 멀리 이동할수록 오차가 증가하겠지만 절대 온도보다는 변화 추이를 보는 것이 목적이므로  이런 류의 응용에서는 큰 문제가 되지 않는다.  온도 보상을 위해 온도 변화에 대한 드리프트율 계산 등을 원할 경우에는 가장 정밀한 LM35 를 사용하는 것이 제일 좋을 것이다.  또한 해외 오엠들의 조언에 따라 LM35 운용 시 노이즈에 의한 오작동을 줄이기 위해 LM35 전원 측에 바이패스 캐패시터를 추가하는 것이 좋다.

 

 

8. 측정 및 운용

 

주변에서 쉽게 구할 수 있는 측정기(일반 주파수 카운터 등)의 측정 정밀도 가지고는 이 장치의 정밀도를 측정할 수가 없다.  이론상 일반 카운터에서 1000 초 이상의 게이트 타임,  또는 PS(피코세컨드) 수준의 분해능을 가진 Time Interval Counter.  또는 루비듐 수준 이상의 주파수 안정성을 가진 오실레이터가 있으면 가능하다. 

해외 오엠들도 특수한 장비가 없는 경우 스펙트럼 스코프를 이용한 하모닉 측정(예컨대 1GHz) 또는 개조된 SDR 을 통한 표준 신호와의 드리프트율 비교  등에 의존하고 있는 실정이다. 

 

따라서 일반적으로 사용되는 방법은 간접 측정 방법이다.(Lars 의 문서를 참고한다)  

PPS 타이밍을 오실레이터가 추종하고 있고 오실레이터의 주파수를 조정하는 EFC(electronic frequency control) 는 DAC(Digital to Analog Converter) 을 통해 조정되므로 DAC 값(시리얼로 출력됨)으로 주파수 변화량을 역산할 수 있다. 

이 값을 프로그램(TimeLab)을 통해 장시간 측정하고 그래프를 그리면 안정도 수준과 변화율을 추적할 수 있다.

 

여기서 중요한 것은 DAC 이 1 만큼 변화할 때 실제 주파수가 얼마나 이동하는지 정확한 값을 알아야 한다는 것이다.

예컨대 내 오실레이터의 경우,  EFC 가 0~5V 로 변화할 때 약 40Hz 변화폭을 가진다.(외부 카운터를 통해 측정) 

40Hz / 65536(16bit) = 6.1 E-04 이고  이 변화율은 10MHz (1E7) 에서의 변화율 이므로 최종적으로 DAC 의 주파수 스텝은 6.1E-11 이 된다.  따라서 DAC 이 +1 이 되면  10MHz 에서 증가 방향으로 0.00061Hz 만큼 이동한 것이다. 

즉 10,000,000.00061Hz 가 된 것이다.  달리 말해 100GHz(1E11) 에서 +6.1Hz 오차.

 

물론 EFC 값은 아날로그 전압이므로 범위를 줄여서 DAC 해상도를 늘릴 수 있다. (Lars 문서 참고) 

즉 4~5V 범위만 필요하면, DAC 의 전체 범위 0~5V 를 1V 로 줄이고 해상도를 5배로 늘릴 수 있다.

 

아래 시리얼 포트를 통해 출력되는 정보를 보인다.

1번 열은 전원 투입으로부터 경과시간(초) 

2번 열은 PPS 신호와의 편차(ns) 

3번 열은 오실레이터 전압(16bit DAC 값)

그 이후로는 온도(센서를 장착해야만 보인다)와 기타 운용에 관련에 정보들이다. 

수집된 로그를 분석하는 Timelab 화면(앨런 편차)

 

결국 정밀도가 제일 궁금할 수 있는데..

 

특별한 이벤트(GPS 신호의 손실, 급격한 온도 변화, 급격한 전원 전압 변화 등)가 없으면 DAC 값이 고정되어 100 초 이상 유지되고 있고 PPS 신호의 오차가 +-10ns 안쪽으로 불규칙하게 반복되고 있는 것을 볼 수 있다. 

즉, GPS-DO 가 안정된 상태..  

DAC 은 근처 스텝에 걸쳐 있을 것이므로 편차를 감안하여 내 GPS-DO 의 오차는 양호한 상태에서 +- 6.1E-11 이라고 짐작할 수 있다. (그러나 실제로는 오실레이터 자체의 위상 노이즈가 발생하고 GPS 신호 자체도 변동하므로 이것은 어디까지나 이론적인 한계 값이다.)   대부분의 개인 장비가 이 수준의 정밀도를 제공하는 것이 없고, 이 수준을 요구하는 것도 없으므로.... 측정할 수 없는 수준의 오차이다. (이건 좀.. 이거 뭐 필요 없는 거 아닌가?....)

 

24시간 모니터링하다 보면  GPS 신호 이상 또는 온도의 급격한 변화, 전원 이상, 또는 전술한 원인의 복합적 현상 등의 경우로 극심하게 드리프트 하는 경우가 드물게 발생하기도 하는데 이 때는 꽤 큰 오차를 발생시킨다.

최악의 경우  1E-10 에서 10E-10(=1E-9)  부근까지 오른다.

이런 특성은 일부 응용에는 맞지 않을 수도 있다,  예컨대 GPS-DO 를 기준 발진기로 이용하여 다른 장비를 24시간 구동시키는 경우에는 이런 드리프트가 발생하면 위험할 수 있다. 

 

그러나 일반적으로 다른 장비의 교정을 실시할 때와 같이 시간을 지정한 간헐적인 사용이라면  피할 수 있는 오류에 해당한다.  따라서 몇 가지 개선할 수 있는 사항이 있고 실제로 여러 사람에 의해 다양한 시도가 되고 있다. 

 

대표적인 경우로서 동일한 PPS 신호를 사용하는 두 개(또는 세 개 그 이상)의 GPS-DO,  또는 2개의 오실레이터를 사용하는 GPS-DO 가 있을 수 있다.

 

이렇게 운용하면  PPS 타이밍의 오류가 문제인지,  GPS-DO 의 LO(오실레이터)에 문제가 생겼는지 바로 확인 가능해지므로 미리 경고(알림) 할 수 있으며 또한 GPS-DO 간의 오실레이터를 상호 성능 평가할 수 있다. 

역으로 오실레이터의 문제가 아님을 자체적으로 알 수 있으므로 해당 PPS 신호(또는 신호열)를 타이밍 오류로 간주하고 타이밍 계산에서 제거할 수도 있다.

 

현재도 여러 곳에서 진행되고 있는 상당히 흥미진진한 프로젝트이고.. 

높은 수준의 정밀도를 다룰 수 있게 해주는 만큼  해외 오엠들이 "중독성 있는 프로젝트" 임을 강조한 바. 

제작에 앞서 다시 한번 생각해 볼 필요가 있다.  

 

개인적 견해로는 이 프로젝트가 과학 및 전자회로를 아울러 섭렵할 수 있는 좋은 계기이고 비교적 저렴하게 시작할 수 있으므로 권하는 바이다.

 

다음 글로 이어진다.