Medición de frecuencia con STM32

0

Esta pregunta es principalmente una consulta para un consejo.

Estoy intentando implementar un medidor de frecuencia en STM32F4. Hasta este punto, tengo un convertidor ADC en funcionamiento con DMA y un temporizador que comprueba el valor del voltaje actual y atrapa un cruce por cero (con margen) y cuenta el contador.

Ahora, ¿cuál es la mejor manera de determinar la frecuencia real? En el sentido de: ¿debo confiar en la velocidad de clk del temporizador o debo usar RTC?

¿O hay una mejor manera de determinar la frecuencia?

    
pregunta Arturs Vancans

2 respuestas

2

Yo usaría un circuito detector de cruce por cero (google - toneladas de ellos, muy fácil) y luego (dependiendo de la frecuencia que esté tratando de medir) use un temporizador / contador de captura de entrada para automatizar el conteo, simplemente leyendo & reiniciando el conteo a intervalos de medición dados (carga de CPU mucho menor), o use los pulsos de entrada para controlar un contador rápido (para contar una frecuencia BAJA) y calcular la inversa (para frecuencias bajas es más fácil medir el tiempo tomado por pulso en lugar de pulsos acumulados por periodo de tiempo).

O debería dejar a tu CPU con muy poco trabajo duro por hacer.

    
respondido por el John U
1

Para medir una frecuencia, normalmente utilizas una frecuencia mucho más alta o más baja y muy conocida.

Si desea medir una frecuencia (mucho) más baja que su oscilador del sistema, podría hacer lo siguiente: Ejecute una interrupción en un borde ascendente o descendente de su señal y úselo para iniciar el contador. En la siguiente interrupción lees el valor del temporizador.

Al revés: En cada flanco ascendente de su señal (ahora mucho más rápida) incremente su contador. Después de algún tiempo (~ 100 - > ~ 10000 ciclos de señal) un temporizador lee y reinicia el contador.

    
respondido por el Botnic

Lea otras preguntas en las etiquetas