dimecres, 22 de febrer del 2012

GPSDO (V) : Oscil·lant...

Avui he portat a terme les primeres proves sobre l'oscil·lador de rubidi, no havia pogut avançar més perquè no disposava d'una font d'alimentació capaç d'oferir una eixida de 15 V, i he hagut de construir-ne una utilitzant peces d'antics projectes. Finalment he aconseguit subministrar les tensions requerides al mòdul de l'oscil·lador i he observat la seua resposta mesurant els senyals de sortida amb un multímetre.

Sobre el connector DB-9 la pata 3 oferix una tensió lògica depenent de l'estat de validesa dels senyals d'eixida (val +5V quan els senyals no són vàlids, i quasi 0V quan sí que ho són). L'oscil·lador comença el període d'arranc consumint una elevada corrent de la línia de 15V, aproximadament 1,5 A, i després d'un curt temps de calentament arriba a una temperatura d'operació correcta (de l'ordre de 50-60ºC). Poc després, la línia de la pata 3 canvia la seua tensió per tal d'indicar que els senyals de rellotge són bons i estables, referenciats a la ressonància dels àtoms de rubidi. A continuació us mostre el vídeo de l'oscil·lador adaptant-se a la ressonància, disculpeu per la baixa qualitat:


La primera mesura sobre el senyal de 1 puls per segon dóna una lectura correcta, així que comprove el senyal de 10 MHz, amb resultats igualment correctes. Determine aleshores, a falta de connectar-lo a l'ordinador, que aquest oscil·lador funciona correctament i és conforme a les especificacions del fabricant.

L'oscil·lador principal de rubidi haurà de variar la seua freqüència per tal de mantindre's sincronitzat amb el senyal de temps tramés pel sistema GPS a llarg termini, i aquest efecte s'aconseguix amb un bucle enganxat en fase, també conegut com PLL (Phase Locked Loop), implementat sobre el microcontrol·lador.

Fins al moment disposem d'un senyal de GPS filtrat, i per tant poc variable, que es compararà amb una versió dividida de l'oscil·lador principal, ja que l'elevada freqüència d'aquest dificulta la comparació directa. El principi és el següent: cada segon el microcontrolador compta els fronts ascendents del senyal procedent de l'oscil·lador dividit per 16 (a 625 kHz) que es produïxen dins d'una finestra d'uns 2 milisegons. Ací s'obren dues possibilitats:
  1. El compte actual és major o menor que l'anterior : L'oscil·lador principal té una freqüència superior (o inferior) a la nominal, i s'haurà d'aplicar una correcció proporcional a l'error per tal de frenar-lo (o accelerar-lo).
  2. El compte es manté aproximadament igual a l'anterior : L'oscil·lador principal està al voltant de la freqüència nominal. Les correccions a aplicar es reduïxen per tal de minimitzar l'error. La constant de temps del filtre augmenta paulatinament per incrementar la precisió reduïnt la diferència entre els senyals de GPS successius.
L'objectiu de l'algoritme de sincronització és arribar a l'estat on aquest compte es mantinga constant durant un temps prolongat, i serà tant més eficient com major siga el temps sense variacions. Cal aclarir que la tecnologia utilitzada al comptador imposa un error de +-1 cicle.

Pròxims pasos: Escriure el codi per implementar els filtres digitals (el PLL) i continuar les proves amb l'oscil·lador de rubidi amb l'objectiu d'arribar a mantindre'l connectat durant llargs períodes de temps. Per a aconseguir-ho hauré de millorar la nova font d'alimentació, o crear-ne una altra, i gestionar adequadament la temperatura dels components, ja que actualment la topologia lineal fa que es dissipe una gran quantitat d'energia en els transistors de pas, elevant la temperatura d'aquestos a més de 70ºC.

[ACTUALITZACIÓ 25/02 21:48] : Acabe d'aconseguir comunicar l'ordinador amb el mòdul d'oscil·lador de rubidi a través del port sèrie que incorpora per primera vegada. Aquesta comunicació m'ha permés obtenir el valor d'offset (diferència de freqüència respecte de la nominal (10 MHz)), que en aquesta unitat estava fixat a zero. Ajustant aquest valor d'offset es pot definir amb molta exactitud la freqüència d'eixida de l'oscil·lador per tal d'adaptar-lo al senyal GPS.

dijous, 2 de febrer del 2012

GPSDO (IV) : Filtres, bucles i oscil·lador

Continuant amb aquest projecte us he de comunicar que finalment l'oscil·lador principal no serà un cristall de quars OCXO com havia indicat en un principi sinò un oscil·lador atòmic de rubidi que he trobat a Internet.

Aquest tipus d'oscil·ladors es basen en la ressonància dels àtoms de rubidi-87 en excitar-los aplicant una freqüència adequada. Concretament la freqüència de transició entre dos nivells hiperfins d'aquests àtoms és d'aproximadament 6 834 682 610,9 Hz, i la llum emesa varia segons l'excitació, de manera que és possible extraure una referència amb moltíssima precisió gràcies a un bucle que manté la freqüència d'excitació igual a la de ressonància dels àtoms.

Externament, l'oscil·lador atòmic de rubidi té aquest aspecte (125 x 88 x 25 mm):


El connector que es mostra (DB9 mascle) permet extraure el senyal a 10 MHz, així com les comunicacions amb un processador intern per a controlar la freqüència d'eixida i l'alimentació del mòdul. Internament aquest mòdul disposa d'un forn per mantenir la temperatura constant al mecanisme de ressonància i de l'electrònica necessària per al condicionament dels senyals de rellotge. En aquest cas el mòdul s'alimenta amb +5 i +15 V en corrent continua.

L'estabilitat a curt termini d'aquest oscil·lador és de l'ordre de 10^-11, el que significa que la freqüència real mesurada entre dos segons successius pot abarcar des de 9,999 999 999 9 a 10,000 000 000 1 MHz, i la desviació diària màxima és de 20 parts per bilió (pot guanyar/perdre fins uns 2 microsegons cada dia).

La tasca d'aquest oscil·lador és mantenir la freqüència estable a curt termini, ja que l'estabilitat a llarg termini vindrà fixada per l'acció de sincronització amb els rellotges atòmics del sistema GPS, que són lleugerament més estables en utilitzar múltiples oscil·ladors de cesi i rubidi (fins a dècimes de part per bilió, 10^-13).

A hores d'ara estic desenvolupant el codi que em permetrà filtrar el senyal de 1 PPS, ja que les variacions a curt termini del sistema GPS fan que aquest senyal no tinga una freqüència exacta, sinò que patix desviacions de l'ordre de 10^-8 (és a dir, fluctua aleatòriament entre 0,999 999 99 i 1,000 000 01 Hz):

La figura anterior representa les desviacions descrites, cada punt representa la mesura del desfase entre el senyal del GPS i un oscil·lador de rubidi estable amb un període de 30 segons entre mesures, i la línia correspon a la mitjana (exponencial) d'aquestes mesures durant 15 minuts. Com major siga el temps de càlcul de la mitjana més estable serà el resultat, i segons les referències trobades a Internet aquests poden variar entre mitja hora i un dia, aproximadament, en funció de la qualitat de l'oscil·lador principal utilitzat.

Aquest mètode és vàlid només si entre correccions successives de la freqüència de l'oscil·lador principal aquesta roman estable. Vistes les característiques del filtre a utilitzar es poden descartar totes les implementacions analògiques, ja que la constant de temps necessària és massa llarga per poder arribar-hi amb els valors usuals de capacitat i resistència, el que obligarà a realitzar un filtrat en digital.

El filtrat digital té molts avantatges amb respecte a l'analògic, ja que es poden implementar filtres d'ordre molt elevat, que no serien viables amb una estructura analògica. Així mateix, es poden modificar a voluntat per adaptar-los als requeriments del projecte simplement canviant el codi i reprogramant el processador.

Començaré creant un filtre passa-baixos de segon ordre amb una constant de temps de 1800 segons. La topologia del filtre serà de Butterworth, i el comportament en freqüència serà el següent:


Com podeu veure, a baixa freqüència el filtre deixa passar el senyal sense pràcticament atenuació, mentre que a altes freqüències el senyal patix una atenuació molt gran, que s'incrementa a raó de 40dB/dècada (20 dB/dècada per cada ordre del filtre). El punt de tall a -3 dB, aquell que deixa passar el 70% del senyal, és el que correspon a la constant de temps de 1800 segons.

L'idea bàsica és fer passar el senyal del GPS a través d'aquest filtre implementat sobre el PIC, i anar augmentant la constant de temps del filtre al llarg del temps per atenuar d'una manera creixent les desviacions i així obtenir una millor precisió.

Si tot el que us he comentat funciona correctament el sistema hauria d'oscil·lar a una freqüència de 10 MHz amb una precisió d'unes 10 parts per bilió (10^-11), i en tractar-se d'un sistema en bucle tancat la fase de l'oscil·lador principal hauria d'estar en una posició constant en relació amb el senyal de GPS filtrat. A més, com el mòdul GPS permet l'ajust de la posició del senyal 1 PPS amb una resolució de nanosegons teòricament es podria sincronitzar quasi exactament la fase de l'oscil·lador principal amb la dels rellotges atòmics.

Pròxim pas: escriure el codi per implementar el filtre digital amb constant de temps variable al PIC mentre espere l'arribada de l'oscil·lador de rubidi i les rutines per tal de control·lar la sincronització entre els oscil·ladors.