el 09-13-2010 10:07 AM
Buenas tardes,
Estoy usando la targeta de adquisición USB-6008 y la licencia BASE de labview y necesito medir el duty cicle y la frecuencia (para luego convertila en ciclos/minuto) de una señal analogica cuadrada comprendida entre 0 y 12 V.
Como se puede ver en el ejemplo en principio no hauy problema para adquirir la señal analogica en la entrada. ¿es la opción más correcta?
Se que la trajeta no permite la obtención de la medida de freq y DC directamente, así que he pensado en generar un trigger para poder determinar cuando la señal supera un nivel y contar el tiempo en que la señal esta en "alto" Vin=12V y cuanto tiempo la señal esta en "bajo" Vin=0V, y creo que también lo he logrado aunque no muy bien la verdad. Para luego solo hacer la suma y ambtener el T, de allí la frec. y de allí los ciclos minuto. También teniendo estos datos puedo calcular el DC como alto/bajo*100.
Como se puede ver en el ejemplo que he subido tengo un valor de tiempo pero no es muy útil ya que no son lo mS que espera encontrar, alguien me puede ayudar para ver como calcular el tiempo en que esta en "alto" la señal y en "bajo" en mS y como poner estos valor a cero después de obtener un resultados?
Muchas gracias
el 09-15-2010 12:56 AM
De principio creo que te vendria mejor utilizar para el duty algun acondicionador que te pase la onda cuadrada a voltaje promedio, el cual te daria un voltaje entre 0-12v como un porcentaje del duty. Claro que no podrias saber exactamente cuando el duty cambia.
Con la frecuencia podrias utilizar otro acondicionador para pasar los pulsos de 12v a pulsos de 5v y colocarlo en la entrada de contador de pulsos.
Con la frecuencia obtienes el periodo y con el porcentaje del duty en alto, calculas el tiempo en alto.
09-15-2010 02:34 AM - editado 09-15-2010 02:44 AM
Hola, no pude abrir tu vi ya que tengo una versión anterior del LV. Sin embargo creo que alguna consideración general puede serte de ayuda.
Si no me equivoco, esta pregunta está relacionada con esta otra discusión.
Antes que todo te comento que una señal de 12 voltios es excesiva para la 6008, por lo que deberás poner, si ya no lo tienes, una red de resistencias para disminuir la tensión por medir.
A seguir, para medir frecuencia y duty cycle lo más simple que se me ocurre es medir la señal análoga como creo que estás haciendo ahora y trabajar sobre el arreglo de mediciones:
La diferencia entre los indices p3 y p1 dividida por la velocidad de medición (samples per second) te da el período de la señal, mientras que (p2 - p1) / (p3 - p1) te da directamente el duty.
Esto es muy conceptual pero debería funcionar sin demasiados problemas. Igualmente hay algunos vi que hacen parte del procedimiento, pero no sé si están en la versión base, así que he indicado las ideas básicas.
Si la señal tiene mucho ruido puedes necesitar alguna forma de filtraje para no tener problemas en detectar los puntos p1, p2 y p3.
el 09-15-2010 05:27 AM
Hola mahu,
gracias por tu respuesta, hace mucho que no uso LV así que estoy muy pezx, que acondicionadores deberia usar? Para poder resolver el problema como comentas?
Muchas gracias
el 09-15-2010 08:48 AM
Hola Roberto,
Comentarte que si que la señal esta comprendida entre 0 y 12 V pero se adapta a 0 y 10 V para poder trabajar con la targeta de adquisición.
Entiendo lo que me comentas pero no se como empezar y necesito saber si voy bien encaminado o voy mal.
No se como hacer lo que me comentas, si me pudieras poner un ejemplo para medir el T y el DC te estaria muy agradecido.
Muchas gracias
09-15-2010 05:24 PM - editado 09-15-2010 05:31 PM
Bueno, aquì tienes un ejemplo de como se podrìa hacer: he tenido que desarrollar el vi con instrumentos muy bàsicos ya que la ayuda indica que muchos del los vi que se podrìan utilizar no estan incluidos en la versiòn base del labVIEW. El vi lee el arreglo de mediciones y la velocidad de muestero y calcula frecuencia y duty cycle de la senal.
Es posible que haya maneras de hacer todo esto màs simple, pero ya que tengo una versiòn completa del LV no estoy cierto de lo que puede u no puede hacerse.
Como veràs, este método introduce un error al calular la frecuencia, ya que mucho depende de la velocidad de mediciòn con relaciòn a la frequencia a medir: el error es màs grande con frecuencias muy grandes u con velocidad de mediciòn baja. Ya que la 6008 solamente tiene una velocidad de mediciòn de 10.000 muestras por segundo, el error serà sensible con frequencias por arriba de los 250 Hz (con una segnal simulada siempre mides 250 Hz con frecuencias entre 250 y 256 Hz)
el 09-16-2010 11:03 AM
Hola Roberto,
Muchas gracias por el ejemplo. Entiendo que trabajas con la pareja de datos [V, t], pero no acabo de entender el funcionamiento y no seria capaz de solventar un posible problema en el codigo.
Te comento lo que he hecho yo hasta la fecha.
La freq. de entrada de la senyal es muy pequeña alrededor de 1.2 Hz hasta 2 Hz. Mi idea desde el principio es abrir un canal del DAQ, capturar la señal y analizarla.
Para analizarla tengo un trigger númerico con valor 2 por ejemplo, si la señal de la entrada es mayor a 2, entiendo que estoy en el estado "alto" y quiero poner en marcha un contador de tiempo mientras la senyal sea TRUE.
Si la señal es menor a 2 entiendo que estoy en bajo y quiero reproducir lo anterior con otro timer.
Así pues la freq=timer "alto"+ timer "bajo" y el DC= (timer "alto"/(timer "alto"+ timer "bajo"))*100.
Creo que he conseguido algo parecido pero ahora se me presentan dos problemas:
Primero. La idea es tener un contador en marcha mientras el trigger de TRUE, problema no puedo pilotar la condición del TRUE desde fuera del while.
Segundo.No se como hacer que se pare después de contar un ciclo.
Adjunto el ejemplo que he hehco en versio lW v8.0 y LW V8.5
el 09-19-2010 04:42 PM
Hola, he estado revisando tu vi pero no he entendido exactamente lo que quieres hacer. Lo he modifcado integrando lo que hice en el ejemplo anterior y poniendo algun comentario que espero clarifique la situaciòn.