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.

dissabte, 21 de gener del 2012

Nou projecte: GPSDO

En aquest post us descriuré els avanços d'un nou projecte electrònic que tinc en ment: un rellotge de gran precisió control·lat per GPS, que intentaré construir des de zero basant-me en implementacions simil·lars vistes a la xarxa.

Els rellotges mecànics, com hem vist en altres entrades, utilitzen elements com molles i volants d'inèrcia per tal de mantenir una oscil·lació estable, que convenientment tractada gràcies als nombrosos engranatges és transformada en l'hora mostrada al dial. Les desviacions dels millors rellotges mecànics estan al voltant d'un segon diari, és a dir, aproximadament 10 parts per milió. No obstant això, les oscil·lacions varien fortament amb la temperatura i amb les condicions exteriors (posició del rellotge, temps des de l'última revisió...).

Els rellotges de quars estàndar utilitzen cristalls d'aquest material tallats amb gran precisió, que ressonen típicament a 32.768 vegades per segon, oferint una referència estable i menys dependent de les condicions exteriors, però que varia lleugerament per efecte de la temperatura.
Les desviacions diàries d'un rellotge de quars sense sistemes de compensació de la temperatura ronden el mig segon diari, és a dir, unes cinc parts per milió, mentre que els millors rellotges de gamma alta termocompensats poden assolir desviacions de 10 segons a l'any, és a dir, 0,3 parts per milió.

Més precisos són els rellotges atòmics a bord dels satèl·lits GPS. Aquests sistemes, basats en la ressonància dels àtoms de rubidi o de cesi, poden assolir precisions de l'ordre de 5 parts per cent bilions (5·10^-14), i el més important, són capaços de transmetre la informació del temps a qualsevol receptor de GPS del món, gratuïtament. L'hora dels satèl·lits GPS és corregida constantment per tal d'adaptar-la a l'hora atòmica internacional, limitant la diferència d'aquestos dos valors a uns pocs nanosegons.

Buscant un poc per Internet vaig trobar diversos receptors que podrien adaptar-se al projecte, i un d'ells és un mòdul GPS de la casa Motorola, concretament un Oncore UT+, el qual està especialment adaptat a l'extracció del senyal de temps que acompanya a les transmissions GPS, donant una sortida d'un impuls per segon a l'inici de cada segon sobre una de les pates del connector. El mòdul rebut és el següent:


Aquest mòdul requerix d'una antena adaptada a la recepció GPS, d'una alimentació a 5V en corrent continua, i d'un adaptador de nivells per a poder comunicar-se amb l'ordinador a través del port sèrie. L'antena la vaig poder trobar a Internet, mentre que l'alimentació i les comunicacions del mòdul es faran gràcies a una targeta auxiliar que hauré de desenvolupar i fabricar. Cal dir que aquest instrument és capaç de rebre tant la posició com l'hora dels satèl·lits, i de transferir la informació amb una gran precisió al senyal de sortida. L'incertesa del mòdul és d'uns 150 ns en mode de recepció complet, valor que disminueix a 50 ns si només capta l'hora, és a dir, una precisió de 0,15 a 0,05 parts per milió.

Tota la configuració inicial del mòdul GPS es farà amb l'ordinador, preparant aquest per a que la seua sortida de pulsos cada segon estiga òptimament aliniada amb el temps atòmic, considerant els efectes del retard ocasionat pels cables i pel propi mòdul. Per a arribar a aquest punt hauré de determinar la meua posició amb molta exactitud fent una sèrie de mesures amb aquest durant un temps suficientment llarg per tal d'extraure una mitjana i poder després posar el sistema en mode de recepció d'hora únicament.

En aquest punt tenim un sistema capaç de rebre l'hora i de crear un senyal en forma de puls cada segon amb una gran precisió. No obstant això cal tenir en compte que el senyal GPS varia al llarg del dia per les condicions atmosfèriques i per la posició relativa dels satèl·lits respecte al receptor, fet que provoca que l'imatge de l'hora rebuda no tinga la mateixa precisió que l'hora atòmica realment tramesa.

El meu objectiu és atenuar aquestes variacions per tal d'augmentar la precisió tant com siga possible. Intentaré per tant utilitzar un oscil·lador més estable que el senyal rebut pel mòdul GPS a curt termini, per exemple un oscil·lador de quars control·lat per temperatura (Oven Controlled X (crystal) Oscillator), de freqüència ajustable per tensió. Aquest tipus d'implementació em permetrà tenir bona estabilitat a curt, i una excel·lent precisió a llarg termini.

Recapitulant, compararé la sortida d'un oscil·lador de quars control·lat per temperatura amb una mitjana del senyal rebut pel mòdul GPS, ajustant i regulant l'oscil·lador per tal de limitar la diferència de temps entre ells. Aquesta efecte suavitzador de la mitjana em permetrà avançar fins les precisions de l'ordre de 10^-9 a 10^-11, i en condicions especials fins al 10^-12. Per a tenir una referència cal dir que un oscil·lador capaç de mantindre la freqüència amb una precisió de 10^-9 varia 0,03 segons a l'any.

Tot el treball d'ajust el farà un microcontrolador que gestionarà els diferents senyals i generarà les correccions pertinents per optimitzar el funcionament del sistema, adaptant-lo a les condicions externes. Aquest microcontrolador serà un PIC, previsiblement de la família 18F o dsPIC, muntat sobre una targeta que caldrà desenvolupar, a més del codi.

Com heu pogut veure, el projecte és llarg i complex, per això l'he dividit en tasques:

1- Desenvolupar la targeta auxiliar de comunicacions per al mòdul
2- Fabricar la targeta principal de control amb el microcontrolador
3- Escriure el codi del regulador
4- Comparar la precisió del sistema amb un estàndar apropiat (rellotge de Rubidi o Cesi)
5- Portar a terme correccions per tal de millorar la precisió fins al límit esperat (10^-12)

Us mantindré informats de tots els avanços d'aquest projecte, i us anime a escriure els vostres comentaris!