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.


dijous, 26 de gener del 2012

GPSDO(III) : Comunicacions PIC-GPS

Continuant amb el projecte, el següent pas era comunicar el mòdul GPS amb un microcontrol·lador per a poder utilitzar el sistema de forma autònoma, és a dir, sense connexió a un ordinador.

Per a aquesta tasca he escollit un PIC 18F2550, que disposa d'un mòdul dedicat a les transmissions per port sèrie, protocol que utilitza el mòdul Motorola, a més de molts altres perifèrics que poden ser útils de cara a la continuació del projecte. En l'implementació que us mostre, el microcontrol·lador treballa a una freqüència de 8 MHz, i la font del senyal de rellotge és un oscil·lador intern que incorpora aquest model.

En un principi he cablejat aquest PIC en paral·lel sobre el conversor MAX232, de forma que es puga extraure el senyal abans de la conversió TTL-RS232, permetent l'operació tant en mode autònom com en mode connectat. Després he desenvolupat un fragment de codi en C per tal de provar la correcta operació de les comunicacions entre el PIC i el GPS, i connectant el muntatge a l'ordinador he aconseguit transmetre dades en els dos sentits amb unes condicions de comunicació semblants a les del mòdul GPS, és a dir, a 9600 bauds, 8 bits de dades, 1 bit de parada i sense control de paritat.

Desxifrant aquesta darrera frase: les dades passen d'un dispositiu a un altre a un ritme de 9600 bits cada segon, agrupats en blocs de 8 bits (1 byte per transmissió), i seguits d'un bit que indica el fi de la transmissió:


Pel que fa al mòdul GPS, amb la configuració actual envia pel port de comunicacions diversos missatges, dels quals el més interessant és el que comença amb @@Ea. Aquest missatge aglutina tota l'informació bàsica, és a dir, el temps i la posició, a més de detalls sobre la qualitat del senyal rebut o un codi de protecció contra errors. A continuació mostre una trama capturada en format binari de Motorola:

@@Ea011A07DC122402000AC44E0894E390FFFE2745000029BF0000000000120769002A0005041A082DA20E00000008000000050826A2200000001C0828A2020000200F0831A220


Aquesta trama indica que a la seua recepció són les 18:36:02,000705614 hores del dia 26 de gener del 2012, i que la antena de l'aparell es troba a aprox. 39º 59' N i aprox. 0º 2' W. A més, indica que el receptor s'està movent a una velocitat de 0,18 m/s, amb una direcció 187,9º i que la dilució de precisió és de 4,2 metres. Aquest darrer paràmetre és una mesura indirecta de la qualitat del senyal rebut. Cal aclarir que l'hora rebuda està referenciada al Temps Universal Coordinat (UTC).

La tasca del PIC és decodificar aquestes trames i realitzar càlculs per prendre decisions sobre la magnitud i la direcció de l'ajust sobre la freqüència de l'oscil·lador principal (el OCXO), de forma que es mantinga regulada a exactament 10 MHz gràcies a aquesta sincronització. Com vaig comentar en posts anteriors, la diferència de temps entre dos senyals successius no és d'exactament 1 segon, fet que obliga a promediar per obtenir una bona estabilitat a curt termini.

Entorn de programació i correcció d'errors MPLAB
En l'anterior captura de pantalla es veu el programa utilitzat en el microcontrol·lador per capturar les trames del GPS i el resultat d'una captura vist com a caracters hexadecimals (columna Watch). El programa s'ha transferit al PIC utilitzant un programador PICkit2. En aquesta ocasió he pogut rebre amb èxit una transmissió de posició i temps com la mostrada més amunt. Faltaran per implementar funcions per a configurar el mòdul sense connectar-lo a l'ordinador, i altres per permetre mostrar l'informació relevant a un display LCD.

Per experiència prèvia sé que aquesta tasca requerirà un segon microcontrol·lador, ja que la transferència de dades al display LCD és molt lenta, i ocupa el processador amb rutines de retard (bucles on no s'executen instruccions útils). Intentaré per tant transmetre les dades entre els dos microcontrol·ladors per un bus de comunicacions tipus I2C, lliurant el principal dels retards innecessaris i guanyant d'esta manera capacitat de càlcul, necessària per a la fase de sincronització dels oscil·ladors.

Pròxim pas: escriure un algoritme per treure la mitjana i poder ajustar la freqüència de l'oscil·lador principal.

dimecres, 25 de gener del 2012

GPSDO (II) : Primeres connexions al PC

Ahir per la nit vaig aconseguir connectar per primera vegada el mòdul GPS a l'ordinador, i vaig transferir una configuració aproximada per a poder treballar. El muntatge és el que es mostra en la fotografia següent:
El que es veu a l'esquerra és el mòdul Oncore UT+, dalt a l'esquerra es pot veure el connector BNC que fa arribar el senyal des de l'antena del teulat fins el mòdul, i a la dreta teniu la placa de proves on he improvisat un conversor TTL a port sèrie de l'ordinador on tinc instal·lat els programes WinOncore12 i el TAC32, que em permeten analitzar les dades rebudes. A més la placa disposa d'un LED que s'il·lumina una vegada per segon de manera sincronitzada amb els rellotges atòmics que rep.
TAC32

WinOncore12
L'objectiu ara és determinar la posició GPS amb la major resolució possible per a poder configurar-lo en mode de recepció d'hora únicament i guanyar precisió en la sortida de pulsos del mòdul. Us aniré informant...

[ACTUALITZACIÓ 25/1 20:30] : Ja tinc una posició correcta, i aquesta part del sistema està completament operativa.

Pròxim pas: connectar el mòdul GPS a un microcontrol·lador per a poder llegir les dades que s'extrauen sense utilitzar l'ordinador, desenvolupant el maquinari i el codi necessari, i investigant el protocol de comunicació propietari de Motorola.

dimarts, 24 de gener del 2012

GPSDO (I) : Comencem...

Avui he rebut uns quants components per al projecte GPSDO, i he començat la presa de mesures de posició amb l'antena que us vaig mostrar i una PDA, que s'encarrega d'enregistrar en una targeta SD totes les dades que ixen del mòdul GPS d'aquesta per a poder analitzar-les després a l'ordinador.

Aquest procés de determinació de la posició pot durar dies, ja que depén de la posició relativa dels satèl·lits i de les condicions atmosfèriques. A més una major quantitat de dades ajudarà a fixar una posició més acurada, ja que la mitjana de les observacions a llarg termini és més precisa que una determinació puntual. No obstant això, em fixaré un límit d'uns 30 cm en la desviació típica, és a dir, la meua posició final serà la marcada per la mitjana (calculada segons l'ajust per mínims quadrats) amb un marge d'error de +-1 m.

A hores d'ara porte 1800 mesures, i les desviacions són de 0,165 m en latitud i de 0,665 m en longitud, us aniré informant de l'evolució del procés!

[ ACTUALITZACIÓ 24/1 14:31] : A les 14.30 porte 8500 mesures, la desviació de latitud no ha variat i la de longitud ha augmentat lleugerament fins als 0,833 metres. Pel que fa a la mitjana de posició, el resultat és estable des de les 300 mesures aproximadament.

[ ACTUALITZACIÓ 24/1 17:30] : He deixat de mesurar la posició quan ja havia recopilat més de 18000 mostres, la desviació en latitud final és de 0,117 metres i en longitud de 0,660 metres.

A continuació us mostre el diagrama del pas dels satèl·lits, la línia blava representa la posició a menor elevació des d'on es pot captar un bon senyal GPS. S'aprecia una zona d'uns 60º d'amplitud on la sensibilitat és menor, i cal que els satèl·lits passen amb una major elevació per tal de captar un bon senyal, però en general l'antena té una vista del cel prou clara. Aquesta zona de mala recepció correspon amb el sector on el teulat obstrueix la vista directa del cel, i m'obligarà a fixar l'antena sobre un suport elevat per evitar aquest efecte. Les línies verdes representen la trajectòria dels satèl·lits representada cada cert temps:


Dispose per tant d'un valor de posició molt precís, que tindré l'ocasió de verificar quan pose en funcionament el mòdul GPS Motorola Oncore UT+. El pròxim pas serà la connexió i configuració d'aquest mòdul, i l'extracció de dades cap a l'ordinador.

[ACTUALITZACIÓ 24/1 21:42] : He arribat a connectar el mòdul GPS a l'ordinador amb un muntatge provisional sobre una protoboard, i he pogut rebre les primeres dades amb el nou sistema. La posició medida amb el nou sistema difereix lleugerament de la calculada anteriorment, i hauré de repetir el cicle de mesures.