NI Home > Community > NI Discussion Forums

Instrument Control (GPIB, Serial, VISA, IVI)

Reply
Member
perluigui
Posts: 3
0 Kudos
Accepted Solution

Control de Posicion de motor DC con encoder mediante Arduino

Estoy tratando de realizar un control de posicion con un motor DC con encoder, ya prove la lecctura del encoder mediante la utilsacion de los comandos LIFA de Labview y la tarjeta Arduino, pero al graficarlos, este se salta muchos pulsos del encoder, como que no le da tiempo leer todas las transiciones entre las ranuras del encoder al estar girando el motor, por los que busco leer las transiciones directamente en la tarjeta con los pines de interrupcion que detectan cualquier cambio de estado (0-1, 1-0) y realizan una interrupcion. lo que no se es como lograr que el codigo escrito directamente en la tarjeta (modificando el archivo LIFA_Base) pueda mandar el conteo de los pulsos  a labView para ser procesados.

 

Gracias 

Active Participant
Alhern
Posts: 285
0 Kudos

Re: Control de Posicion de motor DC con encoder mediante Arduino

Hola perluigui.

 

Como mencionas, necesitas modificar el archivo fuente (.pde) que le programas al Arduino. Te recomendaría mejor que crearas un programa de Arduino diferente que lea los valores del encoder y mande el valor de la posición a LabVIEW, y que realice el control directamente en el Arduino. Podrías encontrar mejor soporte de como lograr este programa en la página de Arduino, pero por el momento te puedo compartir algunas ligas con información básica sobre interrupciones en el Arduino:

 

http://arduino.cc/en/Reference/Interrupts

 

Si tienes alguna duda la podemos revisar.

 

Saludos.

 


 

Aldo H
Ingenieria de Aplicaciones
Member
perluigui
Posts: 3
0 Kudos

Re: Control de Posición de motor DC con encoder mediante Arduino

Gracias por responder Alhern

 

Como tu dices, con las interrupciones y el programa en la tarjeta arduino, logre que no se salte ningún código del encoder, ahora estoy trabajando en el control PID digital también dentro de la tarjeta, y ya que lo haya hecho, enviare los datos a Labview únicamente como interfaz para obtener las posiciones deseadas y que muestre las gráficas de posición del motor.

 

Solo tengo una duda.. Al intentar comunicar la tarjeta con labview debo hacerlo como si fuera un puerto usb normarl? Me refiero a que NO utilize las funciones de labview de la librería LIA (LabView Interface Arduino, que facilita la comunicación con las tarjetas arduino) si no que hacerlo con los bloques de serial port? O tendrás algún ejemplo de como escribir a labview desde el arduino!

 

Espero me de a entender....

 

Gracias por atender mi pregunta Alhern, Saludos!.

Active Participant
Alhern
Posts: 285
0 Kudos

Re: Control de Posición de motor DC con encoder mediante Arduino

Puedes utilizar las funciones de LIFA, solo asegurate que la comunicación la hagas con las mismas opciones que el archivo de Arduino que viene con el toolkit. Encontré esta liga donde discuten como modificar la parte de la comunicación serial para empaquetar varios datos distintos:

http://arduino.cc/forum/index.php?topic=95045.0

 

Saludos.

Aldo H
Ingenieria de Aplicaciones
Member
perluigui
Posts: 3
0 Kudos

Re: Control de Posición de motor DC con encoder mediante Arduino

Gracias Alhern!

 

De esa manera será mucho más sencilla la comunicación!  Voy a checar la liga y a ponerlo en practica, te agradesco tu respuesta!