Medir frecuencias de forma rápida y precisa

0

Necesito medir frecuencias entre 25kHz y 150kHz con una precisión mínima de 50Hz. Estoy usando una MCU 8051 (C8051F382 Silicon) con un reloj de 48MHz, y necesito que la medida se realice en 100us, por lo que no puedo usar CD4040 / prescaler para obtener muchas cuentas.
Necesito una alta precisión porque mi referencia no es estable, se desplaza durante el día.
¿Es PLL una alternativa?
Estoy usando el módulo PCA de 8051, así que puedo obtener x conteos por período, pero con 48M de reloj y 100k, mi conteo es de 480, pero para llegar al 481 o 479 se necesitan 99.8K o 100.2K, y necesito un tic cada 50Hz no cada 200Hz.
Mi objetivo será un bucle inductivo y deberá detectar una motocicleta sobre ella.
ACTUALIZACIÓN: Traté de usar la frecuencia sin CD4040, mi reloj no puede manejar todas las cosas que necesito, 150kHz es solo 6us para hacer todo lo que necesito, así que vuelvo a CD4040 usando div by4. Intenté sobreexplorar pero no me sirvió, sigue siendo bueno en las frecuencias más bajas, todavía es horrible en las frecuencias más altas. Por ahora, intentaré reducir todas mis frecuencias mientras no puedo pensar en una mejor manera de hacer esto.

    

3 respuestas

0

Técnicamente, solo necesitas 1 pulso para obtener una frecuencia. Puede aumentar la precisión promediando varios pulsos de frecuencia constante , pero si ingresa cambia todo el tiempo, entonces promediando reducirá la precisión de la medición de frecuencia instantánea.

PLL solo es bueno para frecuencias relativamente constantes también. En un sistema con entrada de cambio rápido, el PLL solo aumentará la latencia.

En resumen, debe analizar cuidadosamente sus requisitos. Si necesita una frecuencia instantánea "rápida y precisa", puede hacerlo midiendo solo un período. Si está de acuerdo con la frecuencia de promedio en algún intervalo de tiempo, la latencia deseada y la velocidad de los cambios de entrada son los factores que definen la selección del tamaño de la muestra. Muestra tantas veces como puedas en el intervalo deseado y estarás bien. Sin embargo, si la entrada cambia demasiado rápido, es posible que deba reducir el tamaño del muestreo para obtener un valor significativo.

    
respondido por el Maple
0

Resolución de 50Hz / 150kHz = 3333 ppm

Necesita al menos 3333 conteos en 100 us para una resolución de 50Hz o un PLL se convierte de 25KHz a 33.33MHz a 150MHz o una división por 1332 con una velocidad de respuesta de < 10 ms.

502MLFT. : MFG IDT IC CLK MULTIPLICADOR PLL 8-SOIC

Uno podría redondear a una solución RPM conveniente. Utilice el reloj PLL para contar en 100 us y obtener un mínimo de 25k * 1332 * 0.1ms = 3363 conteos que cumplan con sus especificaciones de resolución y tiempo de adquisición.

Plan B

  • medir el intervalo de tiempo usando el reloj de 48MHz durante 10 ciclos
  • leer el resultado,
  • invertir el resultado

  • recuento mínimo de 48M / 150k para obtener 3200 conteos durante 10 ciclos o más para una mejor resolución

Esto puede ser más simple en hardware.

    
respondido por el Tony EE rocketscientist
0

Usted dijo "Necesito medir frecuencias entre 25kHz y 150kHz", pero no dijo nada acerca de la tasa máxima de cambio de frecuencia. Suponiendo que la frecuencia cambie lentamente, podría obtener el resultado "casi" al instante.

Organice los temporizadores como contador de ejecución libre. En cada frente de entrada, el valor actual de carga de la señal del contador de funcionamiento libre en la memoria. Almacenar los últimos, digamos, 64 valores. Y en el momento en que necesita conocer la frecuencia, solo reste un valor N-ésimo anterior del contador de ejecución libre del último valor. Ese sería el número de tics del oscilador entre el último frente y el N-ésimo frente atrás en el tiempo de la frecuencia medida.

    
respondido por el Sergey Sukhotinsky

Lea otras preguntas en las etiquetas