Autor Tema: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)  (Leído 39952 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #15 en: 11 de Mayo de 2012, 11:11:33 »
Estoy atascado :( y no se como continuar.

Necesito contar pulsos de dos fuentes de alta frecuencia y capturar los conteos de ambas a la vez y no sé qué micro utilizar o si añadir componentes externos.

No sé cómo contar dos señales de alta frecuencia y no se cómo sincronizar la captura de los dos contadores a la vez.
El esquema es el siguiente:

http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=38262.0;attach=18545;image


Un entrada es de frecuencia fija de 10Mhz y 0.1ppm
Otra entrada es de la frecuencia a medir (0 a 50Mhz)

* Las dos entradas tienen más frecuencia que el reloj interno, por lo que se deben contar en modo asíncrono.
* El contador debe trabajar sin preescaler para no perder resolución (como mínimo deben contar 10Mpulsos/segundo para conseguir 0.1ppm en un segundo)
* La captura debe estar sincronizada con un flanco de la señal de frecuencia más baja, para no perder resolución.
* Los dos contadores se deben capturar a la vez
* El tiempo entre capturas debe ser alto. Lo suficiente como para que de tiempo a leer la información antes de que otra captura borre los datos (10us como mínimo).
También se podría resolver parando las dos capturas a la vez (que no pare primero una y después la otra)


No encuentro ningún PIC donde meter el esquema. Todos tienen inconvenientes. Estoy pensando colocar un circuito externo, pero no quiero que sea muy complicado.

¿Alguna idea?

Saludos.



« Última modificación: 11 de Mayo de 2012, 11:19:01 por Picuino »

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1255
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #16 en: 11 de Mayo de 2012, 11:28:56 »
Hola picuino el dspic30f4013 tiene timers que se pueden configurar a 32 bits con entrada externa, podras contar los 10M de pulsos, el micro tiene TMR2y3  y TMR4y5 ambos con entrada externa y puede ir hasta 30 MIPS, o sino cualkier pic24HJ esos corren a 40Mips.

checalos.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #17 en: 11 de Mayo de 2012, 11:56:45 »
Hola KALLITOS, gracias por responder.

Tengo un dsPIC30F4012.
El problema con ese micro es que la captura de datos sólo se realiza con el timer2/3 que es síncrono. Imagino que si pongo el oscilador a 48Mhz a lo mejor alcanza a contar 10Mhz de entrada en modo síncrono (no lo sé).

Otro problema es que el módulo de captura no toma datos del timer1 (el que utilizaría para contar hasta 50Mhz)

Saludos.


Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #18 en: 11 de Mayo de 2012, 18:33:39 »
Estoy estudiando el PIC18F25K80.

Tiene dos timers asíncronos (Timer1 y Timer3) con entradas por pines independientes.
El módulo de captura puede capturar tanto el Timer1 como el Timer3. (A la vez si conecto la entrada CCP3 y CCP4 entre sí)

Puede trabajar con una señal externa de reloj de 10MHz y el PLL la multiplica hasta 40Mhz sin problema (el pic18f2550 no puede trabajar con 10Mhz y el PLL a la vez)


Parece un PIC18 "avanzado" y está muy bien de precio.

Saludos.

Edito: Tiene un módulo CTMU con el que medir con precisión el ciclo de trabajo de la señal de entrada. (con ADC de 12 bits)

Edito: Tiene un sensor interno de temperatura asociado al CTMU y es muy fácil medir temperatura externa, con lo que puedo diseñar una compensación de frecuencia con la temperatura ambiente. Así cuando no tenga disponible la señal externa de reloj de alta precisión (10Mhz 0.1ppm) puedo seguir midiendo con el oscilador de cristal normal compensado en temperatura (1ppm).

Saludos.
« Última modificación: 11 de Mayo de 2012, 18:48:04 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #19 en: 13 de Mayo de 2012, 17:34:43 »
Unos documentos interesantes:


Frequency Accuracy & Stability Dependencies of Crystal Oscillators:
http://kunz-pc.sce.carleton.ca/thesis/CrystalOscillators.pdf


The Accuracy and Stability of Quartz Watches:
http://tf.nist.gov/general/pdf/2276.pdf


Understanding Frequency Accuracy in Crystal Controlled Instruments:
http://www.tessco.com/yts/industry/products/itm/spectrum_analyzers/pdf/UnderstandingFrequencyAccuracyinCrystalControlledInstruments.pdf


Wikipedia: Crystal oscillator
http://en.wikipedia.org/wiki/Crystal_oscillatorç


RS Online: Cristales (con datasheets)
http://es.rs-online.com/web/c/semiconductores/control-de-frecuencia/cristales/


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #20 en: 13 de Mayo de 2012, 17:58:28 »
Algunas definiciones interesantes:

PRECISIÓN (precision): capacidad de un instrumento de dar el mismo resultado en mediciones diferentes realizadas en las mismas condiciones. Esta cualidad debe evaluarse a corto plazo.
Se puede interpretar como la desviación estandar de las medidas tomadas.

EXACTITUD (accuracy): capacidad de un instrumento de acercarse al valor de la magnitud real. Se evalúa a partir de la media de varias mediciones.
Se puede interpretar como la diferencia entre la media de las mediciones y el valor real.




RESOLUCION (resolution): El menor cambio de una magnitud que es capaz de medir un instrumento.

ESTABILIDAD (stability): Es la capacidad de un instrumento de mantener la misma exactitud a lo largo de un intervalo de tiempo largo. También puede considerarse estable un instrumento que tiene una variación constante de su medida a lo largo del tiempo (por ejemplo gana 1ppm cada año de forma constante), de forma que pueda compensarse.
La estabilidad en los osciladores de cuarzo depende del tiempo (envejecimiento o aging) y tambíen de las variaciones de temperatura. A los osciladores con temperatura controlada OCXO les afecta las fases de encendido/apagado del instrumento.
La desviación Allan (Allan deviation or ADEV) es una forma de medir la estabilidad.



INCERTIDUMBRE (uncertainty): rango dentro del cual debe estar el valor real de una medida. Es una acotación del error de medida.
Una medida de 10Mhz con una incertidumbre de +-10Hz tendrá un valor real entre 10000010Hz y 9999990Hz

ERROR: diferencia entre el valor de una medida y el valor real. Se aplica a una sóla medida. El error medio de varias medidas se mide con la exactitud.


Saludos.


« Última modificación: 13 de Mayo de 2012, 19:16:44 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #21 en: 14 de Mayo de 2012, 09:40:48 »
Estoy estudiando el micro que debería utilizar para este proyecto y cada vez estoy más encantado con el PIC18F25K80.

Algunas características sobresalientes (que mejoran al conocido PIC18F2550):

PIC18F25K80
   Velocidad hasta 64Mhz (16M instrucciones por segundo)
   Consumo muy bajo (8mA a 64Mhz)
   PLL con frecuencias de entrada desde 4Mhz hasta 16Mhz (acepta reloj externo de 10Mhz para el PLL)
   Soporte de comunicaciones CAN Bus
   Charge Time Measure Unit  (CTMU) que permite medir tiempos con una resolución de 1ns
   Conversor ADC de 12 bit.
   5 Timers (2x8bit, 3x16bit)
   Entradas separadas para los dos timer asíncronos de 16 bit T1 y T3 que se utilizan en la captura de datos (módulo CCP)
   Memoria Flash de 32Kbytes, RAM de 3648 bytes, EEprom 1024 bytes. (igual que el 18F2550)
   Precio reducido.



USB
Otro tema que estoy considerando es la forma de implementar USB en la placa. Si utilizo un microcontrolador con USB para todo, eso complica enórmemente la programación.
Revisando precios de microcontroladores me he dado cuenta de que el conocido PIC18F2550 es casi tan caro como dos procesadores, uno con USB y otro más avanzado.

Precio de varios microcontroladores en RS-Online (formato SOIC):

PIC18F14K50    2,16 Euros     (con USB)
PIC18F25K80    2.38 Euros     (sin USB)
Total                 4.54 Euros

PIC18F2550      4.42 Euros     (con USB)

He decidido por lo tanto hacer la placa con dos microcontroladores (como la placa Arduino UNO).


Saludos.

« Última modificación: 14 de Mayo de 2012, 09:43:04 por Picuino »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17740
    • MicroPIC
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #22 en: 14 de Mayo de 2012, 13:02:53 »
Quizás deberías considerar el 24FJ64GB002

Tiene USB, es más potente, y más barato que la suma de ambos.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #23 en: 14 de Mayo de 2012, 20:26:38 »
Es un micro muy interesante. El problema es quizás mío. Me cuesta meter en un mismo micro el manejo del USB y otra aplicación.

Si quieres hacer una sencilla prueba de parpadeo de un led y utilizas un bucle de retardo... adios el USB.
Hay que trabajar obligatoriamente de forma cooperativa con el stack USB, pero no es tampoco un RTOS ....

Por ahora prefiero separar la gestión del USB a otro micro.


Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #24 en: 14 de Mayo de 2012, 22:26:35 »
Y porque no usar un timer en vez de un bucle?  :D

Puedes poner el USB por interrupciones asi aunque te quedes en un bucle las interrupciones se iran ejecutando, eso si, perderas ciclos de reloj en el bucle. Pero vamos, yo tengo una enorme aplicacion donde interactua el USB, lecturas de SPI, calculos grandes tipo float, y de 64bits y el usb funciona perfectamente, todo sin rtos, a mi el rtos no me gusta, pero tambien es cierto que no uso NINGUNA funcion bloqueante.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6759
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #25 en: 14 de Mayo de 2012, 23:43:57 »
Es una buena practica realizar librerías y códigos sin funciones bloqueantes, sin llegar a utilizar un scheduler puedes trabajar con varios periféricos/dispositivos a la vez  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #26 en: 15 de Mayo de 2012, 06:15:52 »
Es verdad que las funciones bloqueantes no son muy deseables, era sólo un ejemplo.

¿Cómo podría utilizar el PIC18F2550 para medir frecuencias mientras maneja el USB?

El micro no tiene entradas independientes para los dos contadores (TMR1, TMR3) que podrían capturar las dos señales externas.
No puedo meterle los 10Mhz de referencia en el reloj porque no es compatible con el USB.

Tengo que sincronizar la captura de pulsos de entrada (a frecuencia variable) con un reloj de referencia de 10Mhz con un error de respuesta máximo de 100ns.

El pooling está descartado por que interfiere con el USB.

Podría meter 10Mhz por el Timer0, la señal de entrada por Timer1 y sincronizar la captura de datos por interrupciones, pero tengo que asegurarme de que el tiempo de respuesta a la interrupción sea siempre el mismo a pesar del USB.


No tengo claro cómo hacerlo, por eso quería separar el manejo del USB a otro micro y utilizar el 18F25K80 para medir frecuencias porque tiene entradas separadas para Timer1 y Timer3

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #27 en: 15 de Mayo de 2012, 15:10:49 »
Estoy intentando manejar el frecuencímetro con interrupciones y me he encontrado con un problema de esos que desesperan.

El programa espera a que se active CCP1IF (que avisa de dato capturado) y luego lee el dato de CCPR1L (registro de captura).

El resultado siempre es el mismo CCPR1L = 1

No me lo explico. El CCP2 va perfectamente y captura datos del TIMER3 sin problemas.
Cuando configuro CCP1 para que capture datos del Timer3, funciona todo correcto.

No sé qué está ocurriendo.


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #28 en: 15 de Mayo de 2012, 15:15:38 »
Solucionado:

El módulo de captura sólo captura datos del Timer si está funcionando en modo síncrono.

A veces viene bien leer el manual  :?


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5415
Re: Frecuencímetro 0-50Mhz autorrango y 0.1ppm (YAF)
« Respuesta #29 en: 17 de Mayo de 2012, 08:35:17 »
Ya tengo algún avance.
Consigo medir bien las bajas frecuencias en el rango de 1 a 1Mhz.
El rango que más me está costando es el de 1Mhz a 10Mhz

Ahora tengo una consulta sobre la que me gustaría recibir opiniones de todo tipo.

¿Que lectura es preferible tener en un frecuencímetro? 7 dígitos correctos u 8 dígitos con error:

A) 7 dígitos. Error +-0.1 Hz
   123 456.7 Hz
   123 456.8 Hz
   123 456.7 Hz
   123 456.7 Hz
   123 456.8 Hz
   123 456.7 Hz

B) 8 dígitos. Error +-0.1 Hz
   123 456.75 Hz
   123 456.82 Hz
   123 456.75 Hz
   123 456.75 Hz
   123 456.82 Hz
   123 456.75 Hz


Las lecturas aparecen cada segundo. En ambos casos la frecuencia exacta es 123 456.77 Hz con error de 0.01Hz (la media de todas las lecturas durante 10 segundos)

Saludos.
« Última modificación: 17 de Mayo de 2012, 08:38:15 por Picuino »


 

anything