Tabla de contenido:
Video: GPSDO YT, Oscilador disciplinado 10Mhz Frecuencia de referencia. Bajo costo. Preciso .: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
*******************************************************************************
PARAR PARAR PARAR PARAR PARAR PARAR PARAR PARAR PARAR PARAR PARAR
Este es un proyecto obsoleto.
En su lugar, consulte mi nueva versión de pantalla lcd 2x16 disponible aquí:
www.instructables.com/id/GPSDO-YT-10-Mhz-L…
Dejé la versión anterior aquí para documentación.
*******************************************************************************
Hola tios, ¿Qué es un GPSDO? GPSDO significa: oscilador disciplinado GPS. GPS para sistema de posicionamiento global. Todos los satélites GPS están equipados con reloj atómico sincronizado. El módulo GPS recibe estas señales de varios satélites. Y por triangulación, conoce su ubicación. Pero aquí lo que nos interesa es el pulso por segundo que se encuentra en el módulo. Con este pulso preciso (del reloj atómico), podemos hacer un oscilador muy, muy preciso. Para qué ? Como referencia, para la calibración del contador de frecuencia o simplemente por diversión tener uno en su laboratorio.
Son muchos esquemáticos en Internet. He probado algunos. Algunos son buenos, uno con un pequeño 2313 era 5 hercios demasiado lento. Pero el mío es el más simple, útil y conveniente. Y te estoy dando el código.hex. No son VCO ni divisores. El circuito con VCO lo está haciendo bien. Pero debe tener una señal de pulso de 10 kHz o más continuamente. Si la antena se debilita demasiado, falta pulso o no tiene pulso, el oscilador (ocxo) está funcionando solo y el VFC (control de frecuencia de voltaje) ya no es preciso. La retroalimentación del VCO necesita una frecuencia de referencia para mantenerse. Si no es así, varía de 1 a 2 Hertz. Además, el módulo GPS más económico no funciona en esta configuración. Debemos tener al menos 10 kHz para hacer un VCO. Probé con 1000 hercios. La brecha era demasiado grande y la frecuencia variaba. Entonces, con un ublox neo-6m no puede hacer un gran vco gpsdo porque la frecuencia de salida máxima es 1000Hz. Debes comprar un neo-7m o superior.
Así es como funciona mi GPSDO YT. El controlador encontró el buen ajuste para cualquier OCXO con vfc 0 a 5v. Si perdemos la señal de GP, la frecuencia no se mueve en absoluto. Cuando reaparece la señal, el controlador toma su último valor bueno conocido y continúa como antes. En el alcance, con un oscilador de referencia. No podemos decir cuándo se perdió la señal o cuándo regresó. La señal es la misma.
Después de la calibración, puede usar el gpsdo sin antena si lo desea. Unos cuantos montajes más tarde tendrás una pequeña deriva. Pero…. cuanto mas grande Es hora de una explicación.
Aquí hay algo de matemáticas … Matemáticas fáciles, síganme con esto, es fácil. Hasta ahora, el algoritmo tiene 6 fases. Cada fase toma una muestra de 1 a 1000 segundos, encuentra el buen ajuste de pwm y pasa a la mayoría de las muestras más largas para mayor precisión.
Precisión = (((Número de segundos x 10E6) + 1) / número de segundos) - 10E6
Fase 1, muestra de 1 segundo para 10, 000, 000 recuentos para una precisión de + - 1 Hz
fase 2, muestra de 10 segundos para 100, 000, 000 recuentos para una precisión de + -0,1Hz
Fase 3, muestra de 60 segundos para 600, 000, 000 recuentos para una precisión de + -0,01666 Hz
Fase 4, 200 segundos Muestra para 2, 000, 000, 000 recuentos para una precisión de + -0,005 Hz
Fase 5, muestra de 900 segundos para 9, 000, 000, 000 recuentos para una precisión de + -0,001111 Hz
Fase 6, muestra de 1000 segundos para 10 mil millones de cuentas para una precisión de + -0,001 Hz
Peor de los casos. Cuando lleguemos a la fase 6. Este número puede cambiar un poco cada 1000 segundos o no. en algún momento será 10, 000, 000, 001 o 9, 999, 999, 999 Entonces, + o - 0, 000, 000.001 variación para 1000s. Ahora debemos conocer el valor de 1 segundo.
10Mhz = 1 segundo
Por 1 segundo = 10, 000, 000, 001 conteo / 1000s = 10, 000, 000.001 Hz (peor caso por 1 segundo)
10, 000, 000.001 - 10, 000, 000 = 0.001 Hz / s más rápido o más lento
0.001Hz X 60 X 60 X24 X365 = 31536 Hz / año
Así que recuerde, 10Mhz es 1 segundo, 31536Hz X 1 / 10E6 = 0, 0031536 segundo / año
Otro método de cálculo más rápido. una falta para 10E9Mhz es 1 / 10E9 = 1E-10
1E-10 x 60x60x24x365 = 0, 0031536 segundo / año.
¿Es eso lo suficientemente exacto para ti?
sin embargo, debe tener un buen OXCO. Prefiero la salida de doble horno 12v Sinus. Más estable, silencioso y preciso. Pero tengo el mismo resultado con 5V simples. Por ejemplo, un stp 2187 tiene una estabilidad a corto tiempo (desviación allan) de 2x10-12 = 0,000, 000, 000, 002 Hz de estabilidad. Al mismo tiempo, cuando el pulso gps está disponible, Avr siempre corregirá pwm (frecuencia). La uC siempre está contando … siempre. Esto significa que en la pantalla no verá la fecha ni la hora. Cuando uC está muestreando 900, este está ocupado durante 900 segundos. Debe contar todo el reloj. El problema es que uC funciona a 10 Mhz. Cada reloj debe contarse. Se está contando a sí mismo. Si solo falta un reloj, la muestra no será buena y el ajuste de pwm no será correcto. No puedo actualizar la pantalla cada segundo.
Cuando se inicia el muestreo. Uc comienza a contar timer0. Cada 256 relojes genera una interrupción. El registro X se incrementa. cuando su registro Y completo se incrementa y X se restablece a 0 y así sucesivamente. Al final, en el último pulso de un gps, el conteo se detiene. Y ahora, y solo ahora, puedo actualizar la pantalla y hacer algunos cálculos matemáticos para el cálculo de pwm.
sabiendo eso, solo tengo 25, 6 us (256 reloj antes de la interrupción) para leer y mostrar la hora u otra. Es imposible. Se puede pulir una interrupción, no 2. Podría actualizar el tiempo después de 1000 s … pero no será práctico ver el tiempo con un intervalo de 15, 16 minutos. Tengo un reloj, un reloj, un celular para saber la hora:) Estoy haciendo una referencia de 10Mhz. No es un reloj.
Otro problema que tuve, algunas instrucciones avr tienen 2 ciclos. Incluida la instrucción rjmp. Esto significa que si el primer o el último pulso gps surgió al mismo tiempo de una instrucción de 2 ciclos, el uC perderá un reloj. Porque uC terminará la instrucción antes de comenzar la interrupción. Entonces, el contador comenzará o se detendrá un ciclo más tarde. Así que no puedo hacer un ciclo de tiempo de espera … Pero, de hecho, no tengo otra opción. ¡Necesitaba hacer un bucle en alguna parte! Entonces estoy usando la instrucción rjmp y nop (esto no hace nada). Nop es una instrucción de un ciclo. He puesto 400 instrucciones nop para un rjmp en atmega48. 2000 en la versión atmega88 y atmega328p. Por lo tanto, las posibilidades de que el primer pulso o el último pulso lleguen a la instrucción rjmp son menores. Pero sí, es posible y si esto sucede, este error se corregirá en el próximo muestreo.
La pantalla es opcional. Puede hacer circuito con uC, OCXO y filtro de paso bajo (condensador de resistencia) solamente, enciéndalo y espere. Después de 1 hora tendrás una frecuencia aceptable. Pero para llegar a la fase 6. Se necesitan un par de horas.
Pwm es de 16 bits. 65535 paso. 5v / 65535 = 76, 295 uV
La variación OCXO es de 2 Hz por 1 V. 1v / 76, 295uV = 13107 pasos para 2 hz. 2/13107 = 152.59uHz por paso de pwm
La fase 5, cambia pwm por 3, la fase 6 es 2. paso… ¿Por qué 3? porque 3 está cambiando la frecuencia en 0,000, 000, 000, 4 en una escala de 15 minutos. y 4 es mi número mágico en mi algoritmo. Por ejemplo, si está en la fase uno, la primera frecuencia encontrada es 10.000, 003Mhz. Bajo en 0, 000, 000.4 pasos.
Un paso demasiado grande puede pasar de 10.000003 a 10.000001 y después de 9, 999998Hz. Estoy perdiendo el objetivo.
Con 0, 0000004. Es más rápido que 0, 1 y estoy más seguro de no omitir un número. Etcétera. Estoy haciendo lo mismo con 10 segundos, 60 segundos y fase de 200 y 900. 1000s está en modo de ejecución y usa un paso pwm de 2
Tenga en cuenta que la fase 5 es más larga de lograr. La brecha entre 4 y 5 es mayor. Pero ayuda pasar de 5 a 6 más rápido.
Cuando la fase 6 ha contado exactamente 10 mil millones, los valores de pwm se guardan en eeprom. Ahora es el momento del modo de ejecución. Esta muestra de 1000 segundos, pero solo con pwm de 2 pasos. En el modo de funcionamiento, la frecuencia real se muestra y se actualiza en un intervalo de 1000 segundos. Si la señal se pierde en el modo de funcionamiento, pasa a modo de funcionamiento automático. No hay cambio de pwm en este modo. Cuando la señal regresa, vuelve a la fase 5 para resincronización.
Si el circuito se desconecta después de guardar la eeprom. Este comenzará en la fase 5 al encender con el valor eeprom pwm.
Para borrar el valor de eeprom, simplemente presione el botón en al inicio. Se cargará Pwm 50% y la calibración comenzará desde la fase 1.
Paso muchas horas probando cosa diferente, configuración del circuito. Hice muchas pruebas, con amplificador OP, búfer y otro chip. Y al final… el mejor resultado que obtuve no lo necesita. Solo una buena fuente de alimentación estable y algún condensador de filtrado. Así que mantengo esto simple.
Paso 1: Compre piezas
Lo primero que debe hacer es comprar las piezas. Porque a menudo el envío es muy, muy largo.
Módulo gps: estoy usando un ublox neo-6m. Compré este en eBay. Haga una búsqueda, cuesta entre 7 y 10 dólares estadounidenses.
Por defecto, este receptor tiene habilitado el 1 pulso por segundo. No necesitamos hacer nada.
Puede utilizar cualquier módulo gps con una salida de pulsos de 1 Hertz. Tú tienes uno. ¡Usa eso!
OCXO: Probé con 2 osciladores. Una salida de onda sinusoidal de 12v stp2187 de horno doble. Y un ISOTEMP 131-100 5V, salida de onda cuadrada. Ambos provienen de radioparts16 en ebay. Tuve un muy buen servicio de ellos y el precio fue más barato.
AVR: El código encaja en un pequeño atmega48. Pero sugiero comprar un atmega88 o atmega328p. Es casi el mismo precio. Compre esto en digikey o ebay. Estoy usando la versión de inmersión. Puede comprar la versión de montaje en superficie, pero preste atención, los pines no son lo mismo que el esquema.
Pantalla LCD: funcionará cualquier pantalla compatible con 4x20 HD44780. Adivina dónde compré el mío:) Sí, en eBay hace un par de años. Ahora es más caro que antes. Pero disponible por menos de 20 dólares estadounidenses.
Quizás en un futuro cercano, haga un código para una pantalla de 2x16. Esas pantallas cuestan solo 4 $. Y entre tú y yo, una pantalla de 2 líneas sería suficiente.
Debe tener un programador AVR ISP. Programar un AVR no es como un Arduino. Arduino ya ha sido programado para comunicarse en el puerto serie. Se debe programar un avr nuevo con el ISP o el programador paralelo de alto voltaje. Estamos usando isp aquí.
A 74hc04 o 74ac0, regulador de voltios 7812 y 7805, resistencias, condensador…. digikey, ebay
Paso 2: Aquí está el esquema y Gpsdo_YT_v1_0.hex
Creo que el esquema es todo lo que necesitas para realizar este proyecto. Puede usar un tablero revestido de cobre con método de grabado o simplemente un tablero perforado si lo desea.
Puede usar cualquier caja que desee, pero sugiero una caja de metal. O simplemente en una placa de pruebas para divertirse como la mía:)
Estoy esperando la extensión de la antena y el conector bnc para poner mi proyecto en una caja.
Debe elegir la broca de fusible correcta. Asegúrese de que esté seleccionado el oscilador externo. Si tiene problemas con el oscilador externo, pruebe el cristal externo. Y el reloj low.ckdiv8 no está marcado. Ver imagen. Preste atención, cuando el reloj externo se fusiona con un bit, debe proporcionar un reloj externo para programar o ejecutar el código. En otras palabras, conecte el oscilador en el pin xtal1.
Por cierto … puedes usar el mismo código para hacer un contador de frecuencia con una puerta de 1 segundo. Simplemente ingrese el reloj que se medirá en el pin xtal1 y tendrá un contador de frecuencia de + -1 Hz.
Actualizaré el proyecto tan pronto como tenga cosas nuevas.
Mientras tanto, si el proyecto te interesa, tienes suficiente material para comenzar e incluso terminarlo antes que yo.
Subí 2 videos, puedes ver la fase uno y el último.
Estoy disponible para cualquier pregunta o comentario. Gracias.
26 de febrero de 2017…. Versión 1.1 disponible.
-atmega48 ya no es compatible. Sin espacio suficiente.
-Añadido número de satélite bloqueado.
-Apoyo 2x16 lcd. Si tiene un 4x20, también funcionará. Pero la última línea 2 no mostrará nada.
Paso 3: registros en Eeprom
Aquí está el volcado de eeprom después de un par de horas de tiempo de ejecución. Explicaré cómo leer esto. Nuevamente, es fácil:)
En la dirección 00, 01 se almacena el valor pwm. Tan pronto como la fase 5 cuente 9 mil millones, el valor de pwm se actualiza cada vez que el contador alcanza exactamente 10 mil millones.
Tan pronto estamos en la fase 5. Todos los recuentos se almacenan en eeprom después del valor de pwm. Empiece en la dirección 02, después de la 03 y así sucesivamente.
Este ejemplo vino de mi ocxo de 5 voltios. Podemos leer el valor de pwm de 0x9A73 = 39539 decimal en 65536. = 60, 33% o 3.0165 Voltios.
Entonces la dirección 00:01 es 0x9A73
A continuación, puede leer 03. Para 9, 000, 000, 003 Pwm se reduce en 3 porque todavía estamos en la fase 5
00 para 10, 000, 000.000 pwm se queda sin tocar y pasamos al modo de funcionamiento (fase 6)
02 para 10, 000, 000.002 En ese caso, el valor de pwm se reduce de 2
01 para 10, 000, 000.001 el valor de pwm se reduce de 2
01 para 10, 000, 000.001 el valor de pwm se reduce de 2 nuevamente
00 por 10, 000, 000.000 pwm la estancia está sin tocar
00 por 10, 000, 000.000 pwm la estancia está sin tocar
00 por 10, 000, 000.000 pwm la estancia está sin tocar
Ahora sabe cómo leer la eeprom. Cada 1000 segundos se escribe un nuevo valor en eeprom. Cuando la eeprom está llena, se reinicia desde la dirección 2.
Valor de FF significa 9, 999, 999,999
Con este volcado puede realizar un seguimiento de la precisión, sin ninguna pantalla LCD.
Puede volcar el archivo eeprom con un programador isp.
Espero haberte dado suficiente información. Si no, avíseme. Asesoramiento, error, cualquier cosa.
Yannick
Recomendado:
Reómetro de bajo costo: 11 pasos (con imágenes)
Reómetro de bajo costo: el propósito de este instructable es crear un reómetro de bajo costo para encontrar experimentalmente la viscosidad de un fluido. Este proyecto fue creado por un equipo de estudiantes de pregrado y posgrado de la Universidad de Brown en la clase Vibración de sistemas mecánicos
Cómo construir un dispositivo de ECG de bajo costo: 26 pasos
Cómo construir un dispositivo de ECG de bajo costo: ¡Hola a todos! Mi nombre es Mariano y soy ingeniero biomédico. Pasé algunos fines de semana diseñando y realizando un prototipo de dispositivo ECG de bajo costo basado en placa Arduino conectado vía Bluetooth a un dispositivo Android (teléfono inteligente o tableta). Me gustaría
LoRa 3Km a 8Km Comunicación Inalámbrica con Dispositivo de Bajo Costo E32 (sx1278 / sx1276) para Arduino, Esp8266 o Esp32: 15 Pasos
LoRa 3Km a 8Km Comunicación Inalámbrica con Dispositivo Low Cost E32 (sx1278 / sx1276) para Arduino, Esp8266 o Esp32: creo una librería para administrar EBYTE E32 basada en la serie Semtech de dispositivo LoRa, dispositivo muy potente, simple y económico. Versión de 3Km aquí, versión de 8Km aquí Pueden trabajar en una distancia de 3000 ma 8000 m, y tienen muchas características y
Pandemi: el sistema de desinfección robótico de bajo costo: 7 pasos
Pandemi: el sistema de desinfección robótico de bajo costo: este es un robot barato y fácil de fabricar. Puede esterilizar su habitación con luz UV-C, es ligero y ágil, puede ir a cualquier terreno y puede caber en cualquier puerta. También es seguro para los humanos y completamente autónomo
Medir su frecuencia cardíaca está en la punta de su dedo: Enfoque de fotopletismografía para determinar la frecuencia cardíaca: 7 pasos
Medir su frecuencia cardíaca está en la punta de su dedo: Enfoque de fotopletismografía para determinar la frecuencia cardíaca: Un fotopletismógrafo (PPG) es una técnica óptica simple y de bajo costo que se usa a menudo para detectar cambios en el volumen de sangre en un lecho de tejido microvascular. Se utiliza principalmente de forma no invasiva para realizar mediciones en la superficie de la piel, normalmente