Autor Tema: Medidor avanzado LCR ( se puede hacer??)  (Leído 13646 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #15 en: 14 de Junio de 2012, 16:14:41 »
500x96 = 48000 = 16 bits
16 bits + 12 bits = 28 bits.

Esto es de forma ideal, en la práctica las señales se cancelan entre sí.

Además está el problema de que de los 48 bits que calculas, 38 bits son directamente ruido que puedes eliminar.

Y también la mayoría de las sumas positivas se cancelarán con las sumas negativas.

48 bits está bien para las pruebas, pero piensa que al final con 16 bits vas a tener una resolución más que suficiente (0.0015% ó 15ppm)

Saludos.

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #16 en: 15 de Junio de 2012, 07:32:54 »
Si, el proceso es casi como dices:

Auque uso un ADC de 12 bits , el resultado lo almaceno en un "signed int", y la señal seno o coseno de referencia tambien ,por lo que al final el proceso de multiplicación del MAC es:

16 x 16 => 32 bits

si a esto le sumamos bits extras debidos al proceso acumulativo, podría llegar a usar los 48 bits....

En las pruebas que estoy haciendo con 500 muestras no paso de magnitudes que necesiten más de 36 bits , pero como ya comenté, el código que uso está preparado para 48 bits, asi que ... me sobra espacio  ;-)

Luego, como dices habrá que ver que parte es útil.

Ahora estoy probando el control y carga del DAC externo para generar la señal senoidal de referencia... mi problema va a ser que con un PIC a 40 Mhz y 96 muestras por ciclo  no podré pasar de 1000 Hz.  :(

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #17 en: 15 de Junio de 2012, 13:39:59 »
Podrías comenzar por usar 16 muestras por ciclo y generar la tensión de salida con 4 pines del microcontrolador (sólo 4 bits) y una escalera de resitencias R-2R.

A la hora de multiplicar el seno por la señal de entrada de 12 bits tendrías un resultado válido de 16 bits como máximo.

Seguro que se pueden lograr buenas precisiones.

Adjunto una simulación:
   Salida senoidal de 1khz, 16 puntos por ciclo y resolución de 4 bits
   Entrada muestreada a 16khz y 10bits con
   Ruido del 25% del valor de la señal de entrada
   Tiempo de muestreo: 0.1 segundos
   Error máximo del 1%

Simulación Lock-in

Saludos.

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #18 en: 15 de Junio de 2012, 20:22:49 »
Uhmm, parece que con pocos bits también  puede dar buenos resultados, probare con un  18F26K22 que trae un DAC integrado de 5 bits.
Gracias

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #19 en: 15 de Junio de 2012, 20:25:10 »
Un post de regalo, para pasar de categoria...   :mrgreen:

Desconectado PFER90

  • PIC10
  • *
  • Mensajes: 17
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #20 en: 16 de Junio de 2012, 01:36:16 »
Hola, Para generar la onda senoidal de referencia se podría usar un DDS, el ad9833, andan muy bien y son fáciles de configurar, se pueden conseguir frecuencias con un paso de 0.1Hz
saludos

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #21 en: 17 de Junio de 2012, 11:19:38 »
Un conversor digital-analógico muy sencillo (sólo necesita 19 resistencias smd acopladas a 6 salidas digitales del PIC):
http://www.todopic.com.ar/foros/index.php?topic=38627.msg321612#msg321612


Saludos.

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #22 en: 19 de Junio de 2012, 18:40:56 »
Hola, Para generar la onda senoidal de referencia se podría usar un DDS, el ad9833, andan muy bien y son fáciles de configurar, se pueden conseguir frecuencias con un paso de 0.1Hz
saludos

Gracias por el apunte, pero para realizar el calculo del coseno/seno que me da la parte real/imaginaria de la impedancia Z necesito los valores instantaneos (fase) de la onda senoidal que uso para excitar dicha impedancia, con una onda generada externamente con un DDS desconozco ese dato (fase en tiempo real).

Si se pudiera hacer  me vendría de maravilla porque con el DAC externo que uso, con la simulación Proteus (PIC 18F26K22 a 48Mhz escribiendo en un MPC4822 DAC 12 bits) no paso de 600Hz.

Siguiendo el consejo de Picuino,  tengo que probar con menos bits con DAC hecho a mano R-2R  ;-) o DAC interno de 5 bits...

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #23 en: 19 de Junio de 2012, 19:06:43 »
Voy a probar con este que me acabo de hacer (6bits):

https://sites.google.com/site/picuino/dac_r2r

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #24 en: 23 de Junio de 2012, 16:51:36 »
He estado probando el conversor y funciona bastante bien.

Con un PIC18F2550 he generarado una senoidal de 1000Hz de 32 puntos,
En cada ciclo (32000 por segundo) se toman datos de una entrada analógica con el conversor Analógico-Digital configurado para leer 8 bit de resolución.
Después se multiplica la señal de entrada por la señal seno y por la señal coseno y se almacena la suma total.

Todo esto en tiempo real, de forma que se puede sumar en un segundo 32000 muestras.

La precisión que se consigue es bastante buena. El error es más o menos 20ppm, es decir +-0.002%


El problema que encuentro ahora es el de interpretar los datos. Todas las señales son positivas (tienen offset) y no se cómo interpretar los datos de salida.

Por ejemplo la señal senoidal oscila entre 0 y 252, de manera que se han añadido 126 puntos para que no sea negativa.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #25 en: 23 de Junio de 2012, 16:59:32 »
Estos son los datos que obtengo al aplicar la señal senoidal a un condensador de 33nF con una resistencia en serie de 3300 ohmios (el generador DAC tiene una impedancia de 2200 ohmios):

Tensión de salida: aplicada al condensador
Tensión de entrada: tomada entre el condensador y la resistencia.
El otro pin de la resistencia está conectado a masa.

Número de muestras: 32*1024 = 32768
Promedio de la tensión de entrada: 104,70120 puntos

Suma de las tensiones de entrada = 3430921
Suma de la tensión de entrada por el seno = 660932821
Suma de la tensión de entrada por el coseno = 339144227


    [ DAC Vout ]>-------| |-----------/\/\/\-----------|Gnd
     Rout=2200         C=33nF    |    R=3300
                                 |
    [  Vin     ]<-----------------  

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #26 en: 24 de Junio de 2012, 04:05:30 »
Creo que ya lo tengo.

A las sumas totales hay que restarles el producto de las medias:


v_in = tensión de entrada
seno = valores asignados al conversor Digital-Analógico para que produzca una señal de tensión senoidal de salida
coseno = valores de la función seno desfasados 90º
muestras = número de muestras tomadas de tensión de entrada. Numero de sumatorios realizados.


Sum_vin        = Sum(v_in)
Sum_seno       = Sum(seno)
Sum_vin_seno   = Sum(v_in * seno)
Sum_vin_coseno = Sum(v_in * coseno)


X = Sum_vin_seno - Sum_vin * Sum_seno / muestras
Y = Sum_vin_coseno - Sum_vin * Sum_coseno / muestras

Angulo = atan(X/Y)


Me falta calcular el módulo.

Saludos
« Última modificación: 24 de Junio de 2012, 04:13:30 por Picuino »

Desconectado splasma2

  • PIC16
  • ***
  • Mensajes: 131
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #27 en: 25 de Junio de 2012, 04:55:37 »
Muy buen trabajo Picuino... :)

Yo ya he recibido el DAC de 12 bits, por lo que me pondré a probar la opción "pija", así podremos comparar resultados y ver si  la aproximación sencilla que estás desarrollando es suficiente para un usuario normal...

El principal problema que tengo es que no podré llegar a mas de 1 Khz con 96 puntos... pero como tu estás probando con 32 puntos @ 1KHZ, veremos si merece la pena aumentar la resolución en bits y muestras/seg.

Una pregunta , ¿ estás usando un filtro anti-image o anti-aliasing, detras del DAC para eleminar las frecuencias imagen generadas por la cuantificacion..? yo pensaba poner un simple filtro RC tras el DAC, pero eso produce desplazamiento de fase que desvirtua la señal de excitación.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #28 en: 25 de Junio de 2012, 07:26:11 »
No utilizo nada y consigo precisiones de +-20ppm (a mi por ahora me basta)
Lo estoy desarrollando con un PIC18F, pero tengo un dsPIC que probaré cuando compruebe que esto va bién.
En principio quiero experimentar para conseguir un 1% de precisión en un rango grande de RLC, con un procesador sencillo.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Medidor avanzado LCR ( se puede hacer??)
« Respuesta #29 en: 25 de Junio de 2012, 07:28:29 »
yo pensaba poner un simple filtro RC tras el DAC, pero eso produce desplazamiento de fase que desvirtua la señal de excitación.

Luego puedes restar la fase con cálculos.
Creo que la mejor opción para medir con precisión es colocar dos impedancias: una conocida y otra desconocida y luego compararlas para hallar el valor de la desconocida. Así consigues eliminar errores de offset como el desplazamiento de fase que comentas.

Saludos.


 

anything