From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

Comunicar Arduino DUE con Labview 2012

Hola de nuevo!

Entonces, lo que me sugieres sría una cosa así?  (foto del final del mensaje).

Aun no puedo probar el funcionamiento ya que hasta el lunes no podré ir al laboratorio.

Por otro lado, me surgen dudas a la hora de hacer el programa para Arduino.

¿Cuál es la entrada que debo leer en Arduino?

Había pensado algo así:

 

int i=0;

void setup(){
//Leer pin 3 (PWM3)
pinMode(3, INPUT);
pinMode(DAC0,OUTPUT);
}

void loop(){

i=digitalRead(3);
//Escribir en pin DAC1
analogWrite(DAC0, i);

}

 

El problema es que no se cual es el pin que hay que leer, ahora que tenemos el puerto serie.

 

Muchas gracias

 

0 kudos
Mensaje 11 de 35
3.362 Vistas

He modificado el código del arduino DUE para la conexión por puerto serie:

 

float salida=0;

void setup(){
Serial.begin(9600);

}

void loop(){
if(Serial.available()){
salida=Serial.read();
//Escribir en pin DAC1
analogWrite(DAC0, salida);

}
}

0 kudos
Mensaje 12 de 35
3.354 Vistas

Hola,

 

       Si eso que tienes lleva la idea de lo que te dije, sin embargo cuando usaste el U8 debio salir un cable azul, asi que supongo que ese cable marrón no es un solo datos sino varios, te recomiendo que coloques un indicador luego de que multiplicas por 51 y verifiques que tienes alli, deberia ser un solo numero no un arreglo.

 

       Existen varias formas de generar la señal, si no encuentras como sacar los valores de uno en uno, pon la imagen de como lo generas para ver que estas haciendo.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 13 de 35
3.349 Vistas

Hola!

 

Gracias por contestar. La señal la genero por medio del vi "Basic Function Generator.vi"

Una duda que tengo, es en cual de los 4 puertos Rx - Tx tengo que colocar la sonda del osciloscopio para ver la señal generada (RX, RX1, RX2 o RX3)

 

Muchas gracias.

Te adjunto una imagen

0 kudos
Mensaje 14 de 35
3.347 Vistas

Hola,

 

         La punta de prueba del osciloscopio la tienes que colocar a la salida del DAC del Arduino, que por tu codigo parece ser DAC0.

 

         El problema lo tienes que con ese generar de funciones sacas todos los puntos de la señal a la vez, y a ti te interesa es ir obteniendo el valor en ese instante de tiempo.

 

         Te adjunto la parte de generar los valores, unelo con lo del Arduino y cuentame como te funciona.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 15 de 35
3.339 Vistas

Hola! Muchas gracias Parece que la parte de Labview que me comentaste ya la tengo.

Ahora el problema lo tengo con el Arduino.

No veo nada en el DAC0, por lo que ya dudo que el prgrama de Arduino sea correcto.

 

Si podrías revisarlo y decirme donde he fallado

 

Muchas gracias

 

Te adjunto dos fotos para que veas que el código Labview ya esta tal y como me pediste

Descargar todos
0 kudos
Mensaje 16 de 35
3.333 Vistas

Hola,

 

   Aqui reescribi un poco tu codigo de Arduino, pruebalo a ver si asi funciona.

 

void setup()
{
   Serial.begin(9600);
   analogWriteResolution(8);
   pinMode(DAC0,OUTPUT);
}

void loop()
{
   if(Serial.available())
   {
      byte salida=Serial.read();
      analogWrite(DAC0, salida);
   }
}

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 17 de 35
3.324 Vistas

Hola! Gracias por la ayuda.

 

Con el código que me has proporcionado ya consigo ver cosas en el DAC0.

Voy a seguir probando cosas y con lo que sea te comento. Muchas gracias por todo!

0 kudos
Mensaje 18 de 35
3.312 Vistas

Hola de nuevo!

Lo primero agradecerte la ayuda ya que ahora por fin puedo trabajar con la señal. Pero me surge otro problema. Te cuento.

Para frecuencias bajas (aproximadamente hasta 300Hz), la señal generada la veo perfecta en un osciloscopio. Sin embargo, a frecuencias mayores, la señal se ve pero no se corresponde con la frecuencia.

Cuando me acerco a una "frecuencia límite", los puntos que salen del DAC del Arduino DUE se superponen, por lo que supongo que mi problema pueda ser debido a que introduzco los datos muy rápidamente (cuando la frecuencia es elevada) y el Arduino no es capaz de leerlos e interpretarlos a tanta velocidad.

¿Qué me recomiendas? Lo primero que hice fue aumentar la tasa de lectura (Serial.read(9600)) pero la señal se desconfigura completamente. 

Muchas gracias!

0 kudos
Mensaje 19 de 35
3.300 Vistas

Hola, 

 

Al menos tienes dos limitaciones en la frecuencia maxíma de  generación de onda: velocidad del puerto serie y frecuencia del DAC arduino due.

 

En cuanto a la segunda limitación mira el ejemplo del siguiente link: http://arduino.cc/en/Tutorial/DueSimpleWaveformGenerator.

 

En cuanto a la primera limitación pues, una cosa muy simple y tonta, configura la velocidad del puerto serie en los dos lados igual(labview y arduino). A mi me paso que al comunicarme la velocidad de emisión no era la misma recepción. Yo me he comunicado a 115,2kbps con arduino mega sin problemas. A 9600bps, se tarda en mandar un byte del orden de 1ms (1000Hz).

 

Otra cosa que puedes es medir los tiempos de lectura del puerto serie y escritura en el DAC con ello tendrás otra idea de la frecuencia maxima de escritura en el DAC. Mides el tiempo en leer del puerto serie y escribir en el dac.

 

Saludos 

 

Emilio.

0 kudos
Mensaje 20 de 35
3.291 Vistas