Detección de cruce por cero de la señal de ~ 400 kHz con MCU

0

Quiero medir la frecuencia de una señal usando los pines de entrada digital del NUCLEO-F767ZI. La señal es sinusoidal con una amplitud de 5 V y una frecuencia que va desde 100 kHz hasta alrededor de 400 kHz.

1.) Primero pensé en simplemente alimentar la señal analógica pura al pin de entrada que es tolerable a 5 V. Pensé en usar un diodo en serie para protegerme contra el semiciclo negativo y usar la resistencia interna desplegable de la MCU. Entonces podría generar una interrupción siempre que la señal sinusoidal sea lo suficientemente alta como para que el GPIO la reconozca como lógica ALTA.

simular este circuito : esquema creado usando CircuitLab

2.) Después de un poco de investigación sobre StackExchange, también encontré configuraciones usando optoaisladores: Detectando el cruce por cero de Red (Seno y onda cuadrada) La ventaja es que generaría un borde ascendente agudo fácilmente reconocible para el pin de entrada digital, en lugar de la pendiente de pendiente limitada de una onda sinusoidal.

3.) Como la señal no tiene un voltaje peligrosamente alto, también podría omitir el aislamiento y usar un simple BJT o MOSFET. Esto también produciría un borde ascendente afilado.

simular este circuito

¿Cuál de las opciones anteriores recomendaría? Y sobre todo: espero que las capacidades parásitas de los dispositivos semiconductores no tengan ningún efecto por debajo de los 500 kHz, ¿verdad? ¿O tienes un enfoque diferente y mejor?

Saludos y gracias de antemano!

    
pregunta Geralt

4 respuestas

1

Si está tratando con una señal analógica e intentando convertirla en una onda cuadrada adecuada para la medición de frecuencia, debe considerar los efectos del ruido e implementar alguna forma de histéresis para que en el punto de umbral (donde el circuito se arbitra entre 0 y 1) no hay oscilación de la salida digital.

Laimagendearribatomadade aquí y sugiere el uso de un disparador Schmitt como el de abajo (he usado este circuito varias veces): -

Funcionaapartirdesuministrosde3voltiososuministrosde5voltios.ElcapacitordeentradadelíneaesparaeliminarcualquiercomponentedeCCdelaentrada.ElcondensadorenlaentradainversorafiltralaseñaldemodoqueloqueapareceenesaentradaesVcc/2.Laimagenvienedeaquí Encendiendo la salida de un opamp en una onda cuadrada .

    
respondido por el Andy aka
1

Podría usar un comparador (o cualquier opamp básicamente).
Ya que todo lo que necesita hacer es limitar la frecuencia y convertir la onda arbitraria en una onda cuadrada para el pin de entrada de captura del temporizador disparado por schmitt.

El enfoque más básico sería este comparador absoluto basado en una referencia fija, sin histéresis.

simular este circuito : esquema creado usando CircuitLab

Incluso podría usar un comparador analógico en el chip, si puede conectar el evento de captura de entrada a la señal del comparador internamente.

Habrá advertencias con este enfoque, pero no proporcionó muchos detalles sobre la fuente de la señal y sus niveles (modo común).

    
respondido por el Jeroen3
0

Puedes probar el detector de cruce por cero.

simular este circuito : esquema creado usando CircuitLab

Durante la mayor parte del tiempo (semiciclo positivo) Vin > > 0.7 V, por lo tanto, el Q1 está saturado y la salida es baja (GPIO). Cuando la señal de entrada "aproximándose" a cero, el Q1 se apaga y la tensión de salida se pone "alta". Y se mantiene alta hasta que las señales de entrada se encienden Q2 y Q3 (semiciclo negativo). Y esto sucederá alrededor de -0.6V voltios. Entonces, para la parte restante de un semiciclo negativo, la salida es baja (Q2 y Q3 Encendido).

Pero para ser honesto, nunca lo intento con una frecuencia tan "alta".

    
respondido por el G36
-1

Una solución muy simple y de bajo costo (< $ 1) que también tiene el beneficio del aislamiento eléctrico es usar un opulizador de CA como el TLP184SE que se muestra a continuación. Estos tipos de acopladores tienen una "relación de transferencia de corriente" que especifica la cantidad de corriente de LED de entrada que se convierte en corriente de transistor de salida . Simplemente use la resistencia de tamaño correcto para configurar la corriente del LED y obtendrá una salida rectificada de onda completa en el otro lado. No es necesaria una fuente de alimentación adicional. Usted decide la tensión de salida por la tensión de subida utilizada en la resistencia de salida.

ElacoplamientodeLEDtambiénproporcionaalguna"edificación" de la señal porque no conducen hasta aproximadamente 1.2V, por lo que hay una salida cero cuando la entrada está entre -1.2V y + 1.2V. Por supuesto, tendrá que dividir la frecuencia que midió entre 2 porque ahora está contando las dos mitades del pulso.

También debe consultar el Libro de cocina de temporizador de propósito general de STM , que muestra cómo usar la lógica del contador / contador interno para procesar Señales externas sin recursos de CPU.

    
respondido por el crj11

Lea otras preguntas en las etiquetas