05-03-2014 04:22 AM - editado 05-03-2014 04:22 AM
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
el 05-05-2014 03:31 AM
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);
}
}
el 05-05-2014 12:00 PM
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,
el 05-05-2014 04:34 PM
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
el 05-06-2014 11:25 AM
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,
el 05-07-2014 03:08 AM
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
el 05-07-2014 10:38 AM
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,
05-15-2014 03:37 AM - editado 05-15-2014 03:54 AM
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!
el 05-26-2014 03:10 AM
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!
el 05-27-2014 10:21 AM
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.