03-20-2013 08:46 PM
Buenas noches estimados,
Tengo una tarjeta PCI 6251 y deseo realizar una aplicacion en la que pueda sincronizar una señal senoidal analogica con una salida digital, de tal manera que al detectar un cruce por cero de la señal de entrada analogica pueda activar una salida digital en ese instante, esto de tal manera que yo pueda decidir activar o desactivar la señal digital de salida cada vez que yo lo desee.
No se como hacer esto con las herramientas de "DAQmx" ya que los datos que recibo dentro del ciclo while donde se esta haciendo el procesamiento son datos devueltos por el buffer de la tarjeta y no se como hacerlo en tiempo real.
Agradezco sus comentarios.
04-03-2013 09:26 AM
Hola Edwin,
Para poder utilizar el cruce por cero de tu señal sinusoidal para activar la señal digital, quizá el modo de adquisición que estás utilizando no sea el más adecuado (los modos que utilizan el buffer son los de “N Samples” o “Continuous Samples” en la configuración de Acquisition Mode). Para esta aplicación, lo más conveniente sería utilizar un Acquisition Mode “1 Sample On Demand”, en la cual sólo tomaremos una sola muestra, y la tasa de muestreo está especificada por la temporización que le des a tu ciclo while.
Ahora para poder hacer la detección del cruce por cero, sólo debes comparar esta muestra individual con una constante cero y según el valor booleano de salida encender o mantener apagada la señal digital. Para agregarle la funcionalidad de que tú puedas apagar o encender la señal digital en el momento deseado, lo que se puede hacer es manejar dos ciclos: uno que esté haciendo la adquisición y detección del cruce por cero, y el otro ciclo que maneje una estructura de eventos para detectar cuando tú quieras cambiar el estado de la señal (todo esto utilizando variables locales para compartir la información). A continuación te agrego una imagen del bosquejo de cómo podría funcionar la aplicación.
Habría que terminar de darle funcionalidad.
Espero que esto te sea útil,
Saludos y buen día