dijous, 2 d’agost del 2012

GPSDO (VIII) : Primers intents de sincronització

Després de l'època d'exàmens de juny he començat les primeres proves de sincronització entre el mòdul GPS i l'oscil·lador de rubidi.

Per tal d'arribar a aquest punt he hagut de definir funcions que em permeten comunicar-me amb l'oscil·lador de rubidi i modificar la seva freqüència d'eixida, i desenvolupar una funció de filtrat digital per eliminar el soroll del senyal procedent del mòdul GPS.

El prototip que estic analitzant mesura el temps que transcorre entre l'aparició del senyal del mòdul GPS, sincronitzat amb el segon atòmic dins d'un límit estret, i el procedent de l'oscil·lador principal, comptant cicles d'un tercer rellotge intern utilitzant un comptador integrat al microprocessador, interpreta les dades i les transmet a l'ordinador a través del port sèrie amb el protocol RS-232.

Per començar les proves vaig programar l'oscil·lador amb un "offset" arbitrari de -1000, i vaig deixar que el sistema evolucionara sense cap tipus de realimentació:



L'eix vertical representa la diferència de temps entre els senyals expressada en nanosegons (10^-9 segons), i les mesures s'efectuen cada segon, aplicant un filtrat de segon ordre amb una constant de temps de 15 minuts per tal d'eliminar el soroll a curt termini. A la gràfica s'aprecia que la diferència de temps es redueix, per tant podem deduir que un offset de -1000 fa que l'oscil·lador genere una freqüència lleugerament superior als 10 MHz.

Provem augmentant l'offset a -1500, i repetim l'experiència en bucle obert i amb les mateixes condicions:



Intencionadament he representat la gràfica a la mateixa escala que l'anterior per poder distingir millor les diferències entre experiències. En aquest cas, l'offset de -1500 implica una freqüència lleugerament menor als  10 MHz que vull obtenir. Sabent que el sistema d'ajustament de la freqüència és lineal, interpolem fins trobar un valor d'offset que ens dóne el valor de freqüència consigna, i el resultat és -1396:


Aquest darrer valor d'offset és bo a llarg termini (l'oscil·lador està perdent 3,7 picosegons per segon, una milèsima de segon cada 10 anys aproximadament), però l'objectiu últim és minimitzar les "ondulacions" de la diferència de fase i estabilitzar-la en un valor consigna, i per tal d'aconseguir-ho haurem d'implementar un sistema en bucle tancat que actualitze el valor de l'offset en continu.

La primera prova l'he portada a terme implementant un controlador tipus P, amb un guany de 1000:


El controlador tipus P facilita el control de l'error, però es pot observar que introdueix correccions molt elevades que posteriorment ha de contrarestar utilitzant una correcció més elevada i de signe contrari. És per això que hauré de programar un sistema de control més evolucionat, em decantaré per un controlador tipus PI o PID, del qual hauré de determinar els paràmetres per tal d'optimitzar la dinàmica de correcció i d'evitar les possibles sobrecorreccions.

El primer intent de controlador PI va donar els següents resultats:


Podem apreciar clarament l'acció de control, que presenta una sobreoscil·lació important, i que porta el sistema al valor consigna de 500 000 nanosegons després d'uns 10 minuts de maniobra, actualitzant el valor d'offset de l'oscil·lador principal cada 10 segons.

Si observem més detalladament el comportament en la zona estabilitzada podrem determinar la bondat del controlador:

La diferència entre els valors extrems és de l'ordre de 200 nanosegons, intentaré rebaixar aquest valor canviant els paràmetres del controlador en pròximes entrades.

divendres, 8 de juny del 2012

GPSDO (VII) : Seguim!

Després d'aquest període sense entrades a causa de la convocatòria d'exàmens de juny, reconnectem amb el projecte de l'oscil·lador disciplinat per GPS.


Recopilant, en aquest moment tinc tot el material necessari per al projecte, i he efectuat proves amb els mòduls individuals, amb un grau d'èxit moderat. És hora, per tant, d'assemblar el sistema complet i de provar les comunicacions entre mòduls i la coordinació electrònica portada a terme pel microcontrol·lador.

Al llarg d'esta setmana pròxima aniré ampliant aquesta entrada amb els resultats i avanços sobre el projecte GPSDO.

[ACTUALITZACIÓ 9/6/2012 23:10]: He portat a terme els primers intercanvis de comandos de configuració entre el microcontrol·lador i el mòdul GPS, i el posterior processat de les dades rebudes, a falta d'optimitzacions posteriors aquests components s'entenen prou correctament. Demà desenvoluparé el codi per tal de comunicar l'oscil·lador de rubidi i el microcontrol·lador, i així seré capaç de retocar la freqüència d'oscil·lació a través del seu port sèrie.

[ACTUALITZACIÓ 10/6/2012  17:37]:  Acabe d'aconseguir mesurar la diferència de temps entre el senyal de GPS i el de l'oscil·lador atòmic dividit fins a 10 kHz, enviant-la a l'ordinador a través del port sèrie:


A la columna esquerra figura l'hora de recepció del missatge GPS decodificat, i a la dreta la diferència de temps entre els senyals GPS-Rb en microsegons. El següent pas és l'anàlisi de les dades de la columna dreta per tal de determinar la variació de freqüència de l'oscil·lador principal, fent els càlculs apropiats al microcontrol·lador, on tinc implementats els algoritmes de filtrat.

[ACTUALITZACIÓ 12/6/2012  20:58]:  L'algoritme de filtrat respon a les dades en brut rebudes des del mòdul GPS i a la freqüència de l'oscil·lador principal, mesurada com el nombre de fronts ascendents en un segon d'observació (entre dos tics del GPS). A continuació podeu veure el resultat tal com es veu a la meua pantalla:

La tercera columna representa l'eixida del filtre passa-baixa amb una constant de temps d'uns 15 minuts. L'eixida esperada és la mitjana simple de les dades de la columna d'enmig, no obstant això, el filtre requerix d'un temps d'inicialització d'aproximadament una hora fins que els valors calculats corresponen a la resposta esperada, a causa de la sobreoscil·lació del filtre (IIR de segon ordre).

dissabte, 31 de març del 2012

GPSDO (VI) : Tractant senyals

En el post anterior d'aquesta sèrie comentava que l'oscil·lador de rubidi proporciona una eixida sinusoïdal a una freqüència nominal de 10 MHz, d'on deriva el primer problema: tots els circuits de tractament de senyal de què dispose només admeten ones quadrades a l'entrada, fent necessària una adaptació. Aquesta adaptació es fa amb l'ajuda d'un amplificador operacional d'alta velocitat, en aquest cas un MAX999, generosament cedit per Maxim Integrated Products, comparant el senyal de sortida de l'oscil·lador amb el seu nivell promedi, de manera que la sortida és una imatge binària de l'entrada amb una forma i una amplitud adequades per fer funcionar els circuits de divisió de freqüència posteriors:


L'ona quadrada producte de la conversió accedix a un microcontrol·lador programat per dividir la seua freqüència, proporcionant diverses eixides a freqüències potencialment útils (100,10 i 1 kHz, a més de 100, 10 i 1 Hz). El codi programat ha estat escrit en ensamblador per tal d'optimitzar la precisió del sistema, sabent que els microcontrol·ladors de tipus PIC16 són dispositius síncrons que treballen sobre les transicions del senyal d'entrada. Finalment utilitzaré l'eixida de 100 kHz com a senyal imatge de l'oscil·lador, i no pas un senyal a 625 kHz com havia anunciat en anteriors entrades.

El següent pas serà la comparació d'aquest senyal dividit amb el senyal de sortida del mòdul GPS a través dels mecanismes ja descrits, comptant el nombre de pulsos que tenen lloc dins d'un curt espai de temps entre dos transicions del senyal GPS, i aplicant els filtrats necessaris.

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.