Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

contador analógico

Hola:
Estoy usando una tarjeta PCI-MIO-16E-4 para detectar los pasos de un iman (frecuencia) mediante un sensor inductivo. Para ello he utilizado una adquisición de voltaje analógico de manera continua. La señal que obtengo va de 0 (no detecta el iman) a 10 voltios (detecta el paso). Para ello utilizo el programa que he adjuntado, viendo como cambia el voltaje entre un elemento y el anterior y aumentando un contador en caso de que cambie el voltaje. Mi duda es acerca de los tiempos de ejecución del bucle y de los tiempos de adquisición de los datos. No se como influye el tiempo de ejecución del bucle while en la adquisición de datos y por tanto no se si me está dando tiempo a comparar todos los elementos del array.
El programa cuenta bien, dependiendo de como se ajusten los parámetros de samples to read y frecuency asi como del tiempo de ejecución del bucle. Me gustaría poder entender bien estos parámetros para así poder ser lo más preciso posible en mi medida, por que ahora mismo los estoy ajustando un poco al azar.
 
Muchas gracias.
0 kudos
Mensaje 1 de 2
3.870 Vistas

 

Hola Torpacio, con respecto a tus dudas.

El tiempo de adquisición de tu señal va a determinar que tan rápidos son los cambios que puedes detectar en tu señal. Psi vemos con la teoría de Nyquist la velocidad de muestre tiene que ser por lo menos de 2 veces la frecuencia de la señal.  Esto te permite trabajar con lo que es la frecuencia de tu señal.  Si quieres trabajar con la forma de onda necesitas muestrear mucho mas rápido.

Ahora en tu caso supongamos que tu sistema da una vuelta por segundo tendríamos una senoidal de 1 hz. Si tu muestreas tu señal a menos de un hertz no vas a poder medir bien el periodo. Ahora como en tu caso tu estas tomando calculas que hay un cambio cuando la diferencia entre una muestra y otra es mayor a a 4, si tu muestreas muy rápido el problema es que todas las muestras van a quedar muy cercanas entre si, por lo que nunca va a haber diferencia y no va a contar nada. Aquí lo mejor sería cambiar un poco la forma de contarlo. Una opción es trabajar con derivadas, o simplemente podrías hace un poco de juego banderas (boléanos en shift registers). Necesitarías un booleano que diga por ejemplo que estaba en el negativo. Si pasa a positivo, se suma pero el booleano se cambia de valor. y hasta que no vuelva a negativo no se va a restear la bandera.

Ahora con respecto a la temporización. En ciclos donde tengas tareas temporizadas de DAQ como en este caso no es necesario agregarle waits a tu ciclo. Por ejemplo si yo configuro mi tarea a tomar 5 muestras a un hertz ese vi se va a tardar 5 segundos en  ejecutarse por lo que el tiempo de mi ciclo seria de ciclo segundos.  Si le agrego un wait a lo mejor de 2 segundos, mi sistema adquiriría las 5 muestras luego esperaría 2 segundos y después seguiría adquiriendo muestras.

Espero que esta información te pueda ser de utilidad.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 2 de 2
3.613 Vistas