sábado, 11 de febrero de 2012

DAQ Un canal todas las líneas


Hola a todos, en esta entrada vamos a realizar un proceso muy parecido al que os he mostrado en la anterior entrada,  la diferencia se encuentra en que, en la entrada de 1 entrada 1 línea, tan solo leíamos una línea, sin embargo en esta entrada vamos a leer el puerto entero.


Para hacer eso obviamente lo primero que tenemos que tener es algún indicador de los puertos, no?, pues para eso lo que haremos será crear un array de leds, cada uno simulando un puerto o salida digital del DAQ.






Aquí os diré la manera que tengo que de crear yo éste array, en primer lugar nos iremos a las funciones de programming, y seleccionamos “array”, dentro de esa paleta elegimos Rotate 1D array y la colocamos en el VI.





Esta función lo que hace principalmente se traduce a “rota el numero de lugares y en la dirección indicada por “n”. Una vez esté sacada daremos en la pestaña que pone “array (last n elements first) “ y ahí añadiremos un control, entonces lo que nos quedará por hacer será, desde el front panel, dar al botón derecho, irnos a replace y seleccionar un LED. 




Entonces veréis que al hacerlo se nos crea un array de 1 solo led, si nos acercamos al borde, nos deja hacer crecer ése array. Tan solo necesitamos 12, por lo que lo alargamos 11 veces para tenerlos, y listo.


Ahora que ya tenemos nuestro array, nos iremos al inicio del diagrama de bloques, que comenzará como siempre, con la creación de un canal, por lo que daremos a la función “create cannel”. Y lo diseñaremos de la siguiente manera.



Lo primero que haremos será configurarlo como entrada digital, además de decir que va a ser 1 solo canal pero todas las líneas. Por otro lado le añadiremos la ruta en la pestaña que pone “line”. 

 Y entonces meteremos esta sentencia “Dev1/port0/line0:7, Dev1/port1/line0:3”. 

Como podéis figuraros, con ella hago que tanto el puerto 0 como el 1 de mi DAQ, de las líneas 0 a 7 y 0 a 3 pasan a estar en funcionamiento.

Una vez tengamos esto le crearemos una condición de start, para que se inicie.


Y después nos ponemos a crear un while con las siguientes características.






En primer lugar meteremos la función de “read” y la configuraremos como “digital/single cannel/simple simple/ boolean 1D”.


Después le añadiremos en la salida de “data” un reverse array, para cambiar el bit más significativo a la izquierda, unimos el array de leds a la salida del reverse, añadimos un retardo de 10ms y ponemos una puerta or en la que unimos el stop y la línea de error, de tal manera que se salga cuando le demos al control de stop o cuando haya un error.


Este sería el VI completo:






Entonces una vez tengamos esto, podremos darle a run y, observar que justo al darle, todos los leds permanecen encendidos. Esto, si os recordáis es porque internamente la tecnología del daq  es TTL y por tanto, al estar el pin al aire, se interpreta como un 1 lógico.

Sin embargo, cogemos una de esas salidas, y la conectamos a masa “gnd” veremos que ésta se apaga inmediatamente. 

Esto es por justo lo contrario, al conectarse a masa, el 1 lógico pasa a ser 0.




Entonces si conectamos cualquiera de los puertos a masa, veréis que el correspondiente se apaga, por lo que os dije, al unirse a masa, pasa del 1 lógico al 0, y por tanto se queda apagado. Como os enseño en la imagen, la línea 3 del puerto 1, se apaga, porque la he conectado a masa.







Esto sería todo en esta entrada de cómo manejar más de una línea con tan solo un canal, espero que os haya gustado, en cuanto pueda os subo la descarga del VI. Un saludo!


DESCARGA








No hay comentarios:

Publicar un comentario