GPSDO – GPS ile Disipline Edilmiş Osilatör
Uzun zamandır nasıl yaparım diye düşünüyordum. Şahin Küliğ’in (TB2CCS) bu konudaki çalışmasını takip etmiştim, böylece ihtiyacım olan en temel bilgileri öğrenmiştim. Öyle ya, bir radyo amatörü olarak, sadece yapmak değil nasıl işlediğini de anlamak önemliydi.
Ancak ben sadece bir sinyal kaynağı istiyordum, bunu bir LCD’de gösterme veya kolayca ayarlama gibi gereksinimlerim yoktu. Frekansı hep aynı kullanacağım neredeyse, değiştirmem gerekirse yeniden programlamayı tercih edecektim. Yeterki çok basit ve ucuz olsun. Referans kaynağımın frekansını ne kadar zamanda bir değiştirmem gerekebilir ki, gerekiyorsa farklı frekans grupları için birkaç tane yapmak bile çözüm olabilir :)
Nedir bu “GPS ile Disipline Edilmiş Osilatör” ve ne işimize yarayacak ?
Osilatörler he yerde kullandığımız ve özellikle haberleşmenin bel kemiği olan sinyallerin temel üretim kaynağıdır. Her osilatör (kristal osilatörler de dahil olmak üzere) çevre koşullarından (sıcaklık, nem, vb.) az da olsa etkilenir. Bu etkilenme bazı durumlarda çok önemli değildir, bazı durumlarda ise hayati önem taşır. Mesela FM haberleşen iki istasyondan birinin frekansının diğerinden birkaçyüz Hertz (Hz) farklı olması çok büyük problem yaratmazken, SSB haberleşmesinde ya da mors (CW) haberleşmesinde bu durum hissedilir olmaya başlar. Hele hele sayısal haberleşme modlarına geçince (FT8, JT65, vb) bu durum iyice kritik bir hal almaya başlar.
Sadece radyo amatörlüğü haberleşmesinde değil, cep telefonu, WiFi ve benzeri haberleşmelerde de frekans kararlılığı önemlidir. Hele hele çok yüksek frekanslarda çalışıyorsanız (10GHz, 24GHz, 47GHz) konu iyice karmaşıklaşır çünkü genelde bu frekansların direk üretilmesi yerine daha düşük frekans üretilerek çarpıcılarla bu frekansın katlanması şeklinde elde edilirler… Mesela 10GHz’lik bir sinyal 100MHz’lik bir sinyali 100 ile çarparak elde ediliyor olabilir. Bu durumun avantajları gibi (kolay yapılabilmesi, maliyeti düşük olması, vb.) dezavantajları da vardır, mesela 100MHz de 10Hz frekans kayıklığı 100 ile çarpılınca 10KHz gibi oldukça önemli bir kaymaya sebep oluyor.
Başka nerde kullanırız; mesela labraturvarımızdaki osilaskop, sinyal üreteci ve spektrumumuzla ortak yapacağımız ölçümlerde bu cihazlar arasındaki referans frekans farklılıkları bizim başımızı ağrıtabilir ve ortak bir kararlı osilatör burada imdadımıza yetişebilir.
Temel Teorisi nedir ?
Frekans ürettiğimiz kaynak bir LC tank devresi olabilir, ya da daha kararlı bir kristal devresi olabilir, ya da bir PLL (Phase Locked Loop) olabilir. Kararlı şekilde frekans üretebilen bir PLL devresinde dahi devrenin kararlılığı referans olarak kullanılan osilatörün kararlılığına çokça bağlıdır.
Bazı Sinyal Üretim Kaynakları
Bir frekans üretecini çok kararlı yapmak için çok kararlı bir referans kaynağımıza ihtiyaç vardır. Bu kaynaklar şunlar olabilir;
Sıcaklığı olabildiğince sabit tutulmuş bir Kristal
Ribidyum gibi çok sabit salınım kaynakları
Kısa Dalgada yayın yapan atomik saat sinyali
GPS Sinyalleri
Atomik saat
Bunlardan erişimi en kolay ve boyut olarak en küçük olabilecek kararlı bir referans kaynağı için ben artık çok çok ucuza satın alınabilen bir GPS alıcısı kullanmayı tercih ettim. Sistem bu GPS alıcısı üzerinde saniyede bir kararlı bir şekilde yanıp sönen LED’i kullanark yapılıyor, neredeyse GPS’in diğer özelliklerinin hiçbirini kullanmıyoruz.
Adım adım yazacak olursak sistem şöyle çalışıyor;
GPS alıcınız yeterli sayıda uydu görmeye başladığı zaman (FIX aldığında) üzerindeki bir LED saniyede bir yanıp sönmeye başlıyor (bazı GPS alıcıları 8MHz ya da ayarlanabilir bir frekansta sinyal üretme özelliğine de sahip ama hem en ucuz GPS’i kullanmak hem de her GPS’i kullanabilmek amacıyla LED’in yanıp sönmesini referans olarak kullanacağız bu çalışmada). Bu yanıp sönme oldukça kararlıdır ve LED imiz bize 1 saniye süreyi çok kararlı bir şekilde söylemektedir
Deverede kullandığımız Si5351 aslında 3 kanallı (3 ayrı frekans üretebilen) bir osilatör devresidir. Referans olarak üzerindeki bir kristali kullanmaktadır. Haliyle ürettiğimiz frekansın kararlılığı bu kristalin kararlılığı ile orantılıdır. Merak etmeyin bu kristalin frekansını değiştirecek bir modifikasyon yapmaya gerek yok çünkü Si5351 içerisinde bu referans sapmasını düzeltecek komutlar (register) mevcut, yani işimizi yazılımla halledeceğiz.
Si5351’imizin 1. Kanalında 2.5MHz bir sinyal ürettiğimizi ve bunun da devre üzerindeki referans kristalin kararlığı seviyesinde olduğunu düşünelim. 2.5MHz i tercih ediyoruz çünkü 16MHz hızında çalışan bir Arduino Nano (ATMEGA328p) bu hızdaki bir sinyali counter girişinde sayabilir. Frekans yüksek olursa bunu işlemcimiz ile saymakta zorlanabiliriz, ekstra bölme işlemleri yapmamız gerekebilir, oysa amacımız yapıyı olabildiğince basit ve az sayıda bileşende tutmak.
İşlemcimizin bir bacağına GPS’in LED’inin ucunu bağlayalım, bu bize her saniyede 1 kez sinyal verecektir. Böylece gerçekten 1 saniye geçtiğinden emin olacağız. Diyeceksiniz ki Arduino’da da kristal var hatta gerçek zaman sayıcısı (RTC) da var, neden GPS’deki 1 saniyelik sinyale ihtiyacımız var ? Çünkü bu dahili zamanlar hep kristallere bağlı, mesela Arduino’nun saati 16MHz bir kristale bağlı, RTC’nin kararlılığı da 32KHz’lik bir kristale bağlı. Zaten kurtulmaya çalıştığımız da bu sıcaklıktan çokça etkilenen kristallerin kararsızlığı (kararlılıktan çevre etkileri ile uzaklaşmaları durumu) değil mi?
Her saniyeyi biliyoruz, o zaman bir diğer işlemci bacağına bağlanmış olan 2.5MHz’i sayabiliriz. Yani her saniye geçtiğinde 2.5MHz girişinde 2.500.000 (iki buçuk milyon) sinyal saymalıyım. Eğer az sayarsam 1 saniyede osilatörün ürettiği frekans az demektir, o zaman işlemcimiz si5351 devresine frekansı birazcık arttırmasını isteyecektir (bir takım hesaplamalarla tam olarak ne kadar arttıracağını söyleyecektir ya da hata düzeltme registerine yazılacak değeri söyleyecek). Eğer frekans yüksek ise de azaltmasını. Çünkü süphe duyabileceğimiz üreteç bizim si5351 osilatörümüz, GPS uydularından aldığımız 1 saniye değil. GPS uydularındaki saatler yerdeki atomik saatlerinden beslendiği için oldukça kararlıdırlar.
İşimizi biraz daha sağlama almak için ise her saniyede 2.500.000 ölçmek yerine bu işi 40 saniye boyunca yapsak yani 40 x 2.500.000 = 100.000.000 (yüz milyon)’a kadar sayarak frekans ölçme hassasiyetimizi çok çok artırabiliriz. Buradaki 40 keyfe keder seçilmiş bir değerdir. Aceleniz yoksa ve işlemcinizin sayıcılarında tutabileceğiniz büyüklükte bir rakam ise (örnek 32 bit için 4 milyar civarında, ya da saklama metodunda küçük iyileştirmelerle daha fazlası) daha da hassas bir eşitleme yapabilirsiniz.
Aslında 2.5MHz de ne kadar kayma olduğunu sürekli ölçebilecek ve dengeye getirebilecek bir döngü kurmuş olduk. Si5351 üzerinde 2 tane daha osilatörümüz var ve bunlar da aynı kristali referans olarak kullanıyorlar. O zaman burdan üreteceğimiz frekanslar da aynı düzeltmeye maruz kaldıklarında onlar da çok kararlı bir çıkış vereceklerdir. Böylece bir tanesi 2.5MHz olmak üzere toplamda 3 ayrı frekansa ayarlayabileceğimiz frekans referans kaynaklarımızı üretmiş olduk.
Aslında devrenin tüm çalışma mekanizması bu kadar. Devremizin bu işi yapan ana kısmı aşağıda görülmektedir;
GPSDO (GPS Disciplined Oscillator) Ana Bileşenleri ve İşleyiş
İşlemci tarafında 2.5MHz i birbir saymak aslında çok kolay değil ama küçük bir trik yapıyoruz, burada ona da değinmiş olayım; işlemcinin hiçbir kesmesi (TIFR) bu hızda çalışmaz ancak 2.5MHz sinyali bir TIMER karşılaştırma bacağımıza (T0) girer ve kaynak olarak bu bacağı gösterirsek ve 16 bitlik bir sayıcı ile her 65535 sinyalde taşma alırsak (yani 2.500.000 / 65535 = yaklaşık 38) saniyede 38 adet kesmeyi çok kolay yakalayabiliriz, üstelik sayamadığımız kısımda sayıcıda kalacak olan 0 ile 65535 arasında artık bir sayı olacaktır (TCNT).
Bu çalışmada 2015 yılında QEX dergisinde yayınlanmış olan “G. Marcus W3PM,”An Arduino Controlled GPS Corrected VFO,” QEX, July/August 2015, pp. 3-7” yazıısndan çokça faydalandım.
İşlemci İçerisindeki Sayıcı Yapısı
Peki ama “Ne Kadar Kararlı?”
Devrenin ne kadar kararlı olduğunu ölçmek için aşağıda anlatacağım gibi bir deney düzeneği hazırladım ve ürettiğim 10MHz’lik sinyali atomik saatten gelen kısa dalga yayını ile kıyasladım ve sonucun oldukça tatmin edici olduğunu gördüm. Gerçi elimdeki profesyonel frekans ölçüm cihazlarında gördüğüm kararlılık beni oldukça tatmin etmişti ama ATOMİK saatle karşılaştırma daha da bir havalı geliyordu kulağa.
Ölçüm Sonucu
Atomik Saat Kıyaslaması
Ürettiğim sinyali 10 MHz’in çok çok az üzerine ayarladım ki (Hz seviyesinde) kısa dalga yayınındaki 10MHz ile üst üste çakışmayalım, sonra da radyo alıcımı tam 10 MHz’e (LSB Lower Side Band 9.997 Khz) ayarladım. Bu durumda radyodan hem kendi ürettiğim sabit 10MHz i hem de kısa dalga yayınından gelen ATOMİK saatin 10MHz’deki tik tik lerini duyuyordum, aralarında biraz fark oluşturmuştum bilerek, üst üste binmesinler diye, ama bu fark hem bildiğim kadar bir farktı hem de bu sayede radyo alıcısında hem kendi sinyalimi hem de atomik saatin sinyalini aynı anda duyabiliyordum (atomik saatin frekansını deneyime destek olmak için değiştirmelerini istemeyecektim ya….. kendi frekansımı değiştirmek daha kolay oldu, hihi).
Radyo alıcısının ses çıkışını bir bilgisayarın mikrofon girişine bağladım ve SpecVue yazılımı ile detaylı bir DSP ile ekranda hem spektrum hem de waterfall olarak iki sinyali yan yana gözlemeye başladım. Diyeceksiniz ki “Haydaaaaaaaaaa, bir de radyo alıcısı, bilgisayar ev ses kartı girdi işin içine, onlardaki kristallerin kayması bu ölçümü etkilemeyecek mi?”. Haklısınız, ama bu kayma hem benim ürettiğim sinyali aynı miktarda kayık duyacak hem de atomik saati, yani benim sinyalim atomik saat ile birebir paralel hareket ediyor ise benimle atomik saatin frekansı aynı demektir, ki bu deneyde de böyle olduğunu çok rahat gözlemleyebildim. Bu deneyi 48 saat sürdürerek üretilen sinyalin atomik saat ile birebir paralel olduğunu kaydettim.
Benim için devrenin buraya kadar olan kısmı fazlası ile yeterli oldu, ve istasyonumdaki cihazlara 25/27MHz referansımı, labratuvarımdki cihazlara da 10MHz referansı böylece kararlı bir şekilde üretebilmiş oldum. Şanslıyım ki Finlandiya’da evler ahşap, GPS sinyalini evin içerisinde de alabiliyorum, böylece anteni uzatma ya da GPS’i dışarı koyma gibi bir ihtiyacım olmadan tüm sistemi küçücük bir kutuya yerleştirebildim.
Malzemeler ve Kutulama
Bundan sonrasında bu devreye neler eklenebilir;
Si5351’in osilatörü fırınlanabilir ya da daha kararlı bir kristal kullanılarak JITTER’lar azaltılabilir
Birden fazla si5351 devresi ile çok daha fazla frekans aynı anda üretilebilir
Osilatörlerin çıkışı güçlendirilerek daha uzağa taşınabilir
Osilatörlerin çıkışları çıklanarak pek çok cihaza aynı anda uygulanabilir
Sadece referans frekansı üretmek değil,
1 PPS sinyali de dağıtılabilir
İşlemci olarak WiFi ya da ethernet desteği olan bir platform kullanılıp NTP protokolü ile network üzerinden zaman dağıtımı yapılabilir
STANAG 4246, STANAG 4372 ve STANAG 4430’a uygun dalga sekilleri üretilerek bu sinyaller ile HaveQuickII ve benzeri frekans atlamalı sistemlere kararlı zaman bilgisi ve 1PPs sağlanabilir
Dokümanın PDF Hali : https://github.com/barisdinc/SimpleButUsefulGPSDO/raw/master/GPSDO.pdf
Github Proje Sayfası : https://github.com/barisdinc/SimpleButUsefulGPSDO
Kicad Şeması : https://github.com/barisdinc/SimpleButUsefulGPSDO/tree/master/Hardware/GPSDOBarış DİNÇ
TA7W / OH2UDS