Desde Argentina, me ha llegado una solicitud de ayuda para calcular la frecuencia de una señal digital.
El correo, dice así:
Estimado Iñigo Déjame contarte que soy un admirador de tu trabajo, por el enfoque y la practicidad que le das a tus cursos. Te quería consultar unas cosa, para ver si me podes echar una mano. Tengo que contar las revoluciones de un eje a través de un pulso en una entrada digital. Estoy trabajando con una CPU siemens 315 Como máximo serian una 50 Hz unos 40 Hz aprox Como podría medir el tiempo entre los flancos ? Agradecería mucho tu ayuda Muchas Gracias Saludos !!
Planteamiento del cálculo de la frecuencia de una señal digital
Entiendo que la entrada que cuenta los pulsos, está conectada a una tarjeta digital normal y no podemos utilizar interrupción de hardware.
Tenemos que pensar, por tanto, que la precisión no vas a ser super alta.
Aunque tampoco parece que sea necesario.
Realmente, lo que queremos obtener es la frecuencia del motor, y para ello, no necesitamos saber el tiempo entre flancos, sino tener la frecuencia en hercios.
Como no tengo más información, he tomado estos parámetros para realizar el cálculo de la frecuencia de una señal digital:
- Con tener una precisión de hercio, será suficiente.
- La obtención de la frecuencia de la señal digital, será cada segundo (en principio).
Sabemos, que la frecuencia va a estar entre los 40 y 50Hz.
Por tanto, como muy rápido, tendremos un ciclo completo de la señal que cuenta los pulsos, cada 20ms.
El OB35
Vamos a usar un bloque cíclico para realizar los cálculos.
Cómo no, será una vez más, a través del OB35
Lo vamos a configurar a 5ms. De esa forma, estamos seguros de que capturaremos todos los pulsos sin perder ninguno.
La frecuencia de la señal digital.
Así pues, lo que vamos a hacer es contar el numero de contactos en 1 segundo, de tal forma que tendremos la velocidad en hercios.
Cada segundo, obtendremos la frecuencia, la guardaremos, y comenzaremos a calcular el nuevo valor de la frecuencia.
Chupao, ¿a que sí?
Para ello, vamos a crear un FB, donde le vamos a pasar los siguientes parámetros:
- Señal actualizada que nos dará los pulsos.
- Frecuencia de escaneo
- El periodo de muestreo
Y nos devolverá la frecuencia en hercios.
La razón de dar la frecuencia y el periodo es para saber cada cuánto vamos a tomar una muestra del estado de la señal y cuánto tiempo.
En principio, si la frecuencia de la señal es alta, con un segundo será suficiente.
Pero si tenemos señales por debajo del hercio, tendremos que hacer muestreos más largos para poder definir esta frecuencia de la señal.
Con este bloque de función, además, podremos realizar más cálculos similares haciendo más instancias de él.
El vídeo de cómo calcular la frecuencia de una señal digital
Te dejo con el vídeo explicativo de lo que he realizado para que calcule los hercios
Espero tus comentarios.
Este tipo de problemas se presentan con bastante frecuencia, y las soluciones suelen ser siempre parecidas.
Está claro que se puede realizar esto mismo de muchas formas. Esta es solamente una, y con las premisas de la aplicación en cuestión.
En otro caso, con otras velocidades, seguramente habría que tomar una solución diferente.
Este ejemplo, para los flamantes poseedores de Cómo programar Step 7 y no morir en el intento, lo dejo en el anexo del curso que he creado dentro de la plataforma.
Ahí, tienes a tu disposición el proyecto para su descarga y el enlace al vídeo para que en un futuro puedas consultarlo y esté todo ordenadito y en su sitio.
Si no has entrado nunca siendo estudiante de este curso, lo tienes disponible en Aula Virtual -> Curso de Step 7 5.x
Además, he añadido una serie de entradas con sus proyectos para que los puedas descargar.
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.

Comentarios (19)