Estoy haciendo un trabajo con un enconder incremental, para medir la velocidad de un eje.
El encoder tiene dos salidas analógicas, y una digital. La frecuencia del motor del eje al que está acoplado el encoder se cambia variando la tensión de alimentación del motor.
A) Debo realizar un programa en Labview para conocer la v. angular del motor, a partir de ese tren de pulsos de frecuencia variable proporcionado por el encóder. Para ello, será necesario determinar la frecuencia de la señal cuadrada, lo cual se ha de hacer teniendo en cuenta los siguientes aspectos:
-Cada una de las salidas proporciona 50 pulsos por cada vuelta del motor.
-Se ha de realizar la medida de la frecuencia del tren de pulsos usando una entrada analógica y también usando la entrada digital PFI0.
B) Modificar el programa para que también se detecte el sentido de giro del motor.
Adjunto una imagen, con el programa que tengo hecho para el apartado A.
La imagen enc_analog es para la medida de la velocidad a partir de una de las salidas analógicas, y creo que funciona.
Lo que no se como hacer es lo de medir la velocidad a partir de la señal digital que adquiero por la PFI0 de la tarjeta, ni tampoco el apartado B.
Para la medida de la de la velocidad angular con la señal digital, subo lo que se me ocurrió hacer: Pongo un bucle while, y hago que cada iteración dure 1ms, entonces, espero a contar 1000 pulsos, y en i tendré almacenado el número de ms que tardó en dar los 1000 pulsos, y eso lo transformo en rev/seg. Lo que ocurre es que esto me funciona bien para una sola medida, porque como el contador no se resetea, no puedo estar midiendo de modo continuado como hago en la analógica, y eso es lo que no consigo hacer. Tendría que meter eso en un nuevo bucle while de modo que no parase nunca, y que antes de dar la medida de la frec, le restase el valor anterior del contador..... pero no sé como hacerlo. Y tampoco sé como que programa debo hacer para detectar el sentido de giro del encóder.
Se me olvidó decir que estoy trabajando con labview 8.6, y con la tarjeta de adquisición de datos USB 6008 ; y las características de la entrada PFI0 son:
Counter
Number of counters................................ 1
Resolution .............................................. 32 bits
Counter measurements ........................... Edge counting (falling-edge)
Pull-up resistor ....................................... 4.7 kΩ to 5 V
Maximum input frequency..................... 5 MHz
Minimum high pulse width .................... 100 ns
Minimum low pulse width ..................... 100 ns
Input high voltage .................................. 2.0 V
Input low voltage ................................... 0.8 V
A ver si alguien puede ayudarme
Gracias .
El encoder tiene dos salidas analógicas, y una digital. La frecuencia del motor del eje al que está acoplado el encoder se cambia variando la tensión de alimentación del motor.
A) Debo realizar un programa en Labview para conocer la v. angular del motor, a partir de ese tren de pulsos de frecuencia variable proporcionado por el encóder. Para ello, será necesario determinar la frecuencia de la señal cuadrada, lo cual se ha de hacer teniendo en cuenta los siguientes aspectos:
-Cada una de las salidas proporciona 50 pulsos por cada vuelta del motor.
-Se ha de realizar la medida de la frecuencia del tren de pulsos usando una entrada analógica y también usando la entrada digital PFI0.
B) Modificar el programa para que también se detecte el sentido de giro del motor.
Adjunto una imagen, con el programa que tengo hecho para el apartado A.
La imagen enc_analog es para la medida de la velocidad a partir de una de las salidas analógicas, y creo que funciona.
Lo que no se como hacer es lo de medir la velocidad a partir de la señal digital que adquiero por la PFI0 de la tarjeta, ni tampoco el apartado B.
Para la medida de la de la velocidad angular con la señal digital, subo lo que se me ocurrió hacer: Pongo un bucle while, y hago que cada iteración dure 1ms, entonces, espero a contar 1000 pulsos, y en i tendré almacenado el número de ms que tardó en dar los 1000 pulsos, y eso lo transformo en rev/seg. Lo que ocurre es que esto me funciona bien para una sola medida, porque como el contador no se resetea, no puedo estar midiendo de modo continuado como hago en la analógica, y eso es lo que no consigo hacer. Tendría que meter eso en un nuevo bucle while de modo que no parase nunca, y que antes de dar la medida de la frec, le restase el valor anterior del contador..... pero no sé como hacerlo. Y tampoco sé como que programa debo hacer para detectar el sentido de giro del encóder.
Se me olvidó decir que estoy trabajando con labview 8.6, y con la tarjeta de adquisición de datos USB 6008 ; y las características de la entrada PFI0 son:
Counter
Number of counters................................ 1
Resolution .............................................. 32 bits
Counter measurements ........................... Edge counting (falling-edge)
Pull-up resistor ....................................... 4.7 kΩ to 5 V
Maximum input frequency..................... 5 MHz
Minimum high pulse width .................... 100 ns
Minimum low pulse width ..................... 100 ns
Input high voltage .................................. 2.0 V
Input low voltage ................................... 0.8 V
A ver si alguien puede ayudarme
Gracias .
Adjuntos
Última edición: