Autor Tema: ¿Qué función genera este resultado?  (Leído 5970 veces)

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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
¿Qué función genera este resultado?
« en: 28 de Diciembre de 2007, 17:11:26 »
Estoy montando la fuente de Valdorre y una vez conseguida la regulación y la estabilidad de la tensión de salida, quería hacer que la medición mostrada en el display fuera la más exacta posible.
Para ello he tomado 100 muestras con el ADC a distintos niveles de tensión, y he anotado la lectura de la tensión con el polímetro y todo lo he graficado en Excel.
Según eso, la respuesta del ADC a las tensiones generadas por la fuente tiene esta curiosa forma:


¿Cómo puedo calcular la función que debería utilizar para calcular la tensión dada una lectura del ADC?, supongo que con MATLAB o algo parecido se podrá hacer, pero no tengo ni idea de eso y me gustaría complicarme mucho la vida. ¿Algún consejo?

P.D. adjunto el Excel por si algún alma caritativa quiere hacer el cálculo

Gracias

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: ¿Qué función genera este resultado?
« Respuesta #1 en: 28 de Diciembre de 2007, 18:09:46 »
Manolo generalmente para aproximar este tipo de respuestas(tan planas), supongo que has realizado la medición varias veces y es aproximadamente igual siempre, se suelen usar interpoladores lineales, es decir, partir la señal en varios pedazos y aproximar cada uno de esos pedazos a una 'linea recta'. Así a ojo, tu salida podrías dividirla en tres tramos:

32<t<=182
182<t<=262
262<t<=1022

y calculas la ecuación de la recta para cada uno de ellos... (si te lías dímelo!)

Este es el interpolador más sencillo, que para tu caso, como no hay demasiada variación creo que será el que mejor resultado te va a dar y además no va a tener demasiada carga 'computacional'.


saludillos!!

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: ¿Qué función genera este resultado?
« Respuesta #2 en: 28 de Diciembre de 2007, 19:13:45 »
Cordial saludo compañeros.

Totalmente de acuerdo con JM1, si quieres una respuesta correcta te tocará usar métodos numéricos o métodos estadísticos...,

Ahora bien, presiento que la respuesta que has obtenido puede ser la respuesta de tu conversor, es decir, depende del conversor que estás usando, no sé si será el ADC de un pic, si es así es muy probable que su comportamiento cercano a cero no sea muy bueno, en ese caso usaría un conversor externo. Es muy, pero muy probable que la respuesta que obtengas se vea mejorada si cambias de conversor, pues hay parámetros como el jitter y el INL (Error de no linealidad integral, que es la desviación del código generado de la línea recta ideal del conversor) que generan el tipo de respuesta que estás obteniendo, otra estrategia sería montar un offset como referencia de cero voltios a tu ADC para mejorar la respuesta a baja escala, ya que es curioso que el comportamiento sea lineal después y antes de 5, como si hubiera un error en la ganancia de la conversión justo en ese punto..... sería de analizar.

Si no es el conversor puedes usar el método de aproximación por mínimos cuadrados (el que se usaba en los laboratorios de física), aproximas los datos y sacas la ecuación de tu recta "ideal" con la cual convertiras tu datos. Espero  te sirva.

Saludos.
Andros!

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: ¿Qué función genera este resultado?
« Respuesta #3 en: 28 de Diciembre de 2007, 20:04:57 »
La propia hoja de cálculo Excel te permite obtener la "recta de regresión", que para tu caso es:

y=0,0235x-0,6795

La gráfica es:

« Última modificación: 28 de Diciembre de 2007, 20:53:48 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: ¿Qué función genera este resultado?
« Respuesta #4 en: 29 de Diciembre de 2007, 03:54:50 »
Pues estuve jugando con Excel y encontré que calcula la línea de tendencia con polinomios de grado 6, que se ajusta bastante a la curva original, aunque os podéis imaginar que la fórmula resultante es una barbaridad.
Me gusta la opción planteada por Jaime, ya que se podría simplificar fácilmente en tres rectas.
Hago unas pruebas y os cuento. Gracias por la ayuda.

Andros, a mí también me sorprendió que el cambio estuviera en torno a los 5V, y es probable que tenga algo que ver que la tensión de alimentación del PIC (Vdd=5V) no sea la misma que la del resto del circuito (Vcc<=25V), lo que provocoará algún efecto pernicioso en las cercanías de los 5V.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: ¿Qué función genera este resultado?
« Respuesta #5 en: 29 de Diciembre de 2007, 04:26:05 »
Parece que la cosa sale bastante bien; en la gráfica siguiente he representado en color rojo la curva original y en azul la resultante de calcular una aproximación con el método de la división en tres rectas.


He calculado el % de error en cada punto y como se puede observar sólo en dos casos supera el 2% por lo que creo que me quedaré con este método. Al fin y al cabo no supone más que una multiplicación y una suma en cada punto.

Así ha quedado la función:
Código: C++
  1. float extrapola (int16 Valor) {
  2.    if (Valor<177)
  3.       return((float)Valor*0.0236+0.0318);
  4.    else if (Valor<297)
  5.       return((float)Valor*0.0107+2.3096);
  6.    else
  7.       return((float)Valor*0.0253-2.0676);
  8. }

Gracias por vuestra ayuda

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: ¿Qué función genera este resultado?
« Respuesta #6 en: 29 de Diciembre de 2007, 07:00:20 »
Me alegro que te haya dado tan buenos resultados, de nada aquí estamos para servir!!

Saludos! :)

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: ¿Qué función genera este resultado?
« Respuesta #7 en: 30 de Diciembre de 2007, 18:28:27 »
Te felicito por los resultados, una solución sencilla y adecuada para la aplicación....., como debe ser!......, aunque no deja de asaltarme la curiosidad de la variación entorno a los 5V.... 8)

Saludos!
Andros!

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: ¿Qué función genera este resultado?
« Respuesta #8 en: 03 de Enero de 2008, 15:40:56 »
Resulta interesanto lo de linealizar la respuesta, pero me imagino cada pic tendra la sulla propia, aun siendo del mismo modelo.

1 saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: ¿Qué función genera este resultado?
« Respuesta #9 en: 05 de Julio de 2008, 16:41:38 »
Buenas, retomo este tema para consultar a Nocturno si despues de linealizar la respuesta del ADC del pic se obtiene una buena precision, osea, que si la lectura de voltaje en el display LCD de la fuente y la lectura con un polimetro en la salida de la fuente son muy similares.

Yo sin linealizar, obtengo un error maximo de +/-200mV.

Por otro lado preguntar si cada pic tendrá su linealización particular (creo que si), o si la de Nocturno serviria para todos los pic de ese modelo.

Un saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: ¿Qué función genera este resultado?
« Respuesta #10 en: 05 de Julio de 2008, 17:22:39 »
Aún no he terminado con la fuente. Ya te aviso

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: ¿Qué función genera este resultado?
« Respuesta #11 en: 06 de Julio de 2008, 03:29:06 »
Hola Nocturno, debería salirte una línea recta ya que <0-1023> es proporcional a <0-5v> que está en escala con <0-25v> por ejm a traves de un divisor resistivo. Me parece que hay mucho error debe salirte una linea bastante recta.

saludos.
control de movimiento

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: ¿Qué función genera este resultado?
« Respuesta #12 en: 06 de Julio de 2008, 03:45:54 »
Sí, Renatox, tenía errores en la fuente que provocaban ese desajuste. Ahora va bastante más lineal, pero aún no la he terminado.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: ¿Qué función genera este resultado?
« Respuesta #13 en: 28 de Octubre de 2008, 19:43:55 »
Buenas.

Nocturno, como hiciste la grafica, midiendo la salida de la fuente con un polimetro y visualizando en un display el valor del adc?

Despues de saber eso tendré que jugar un poco con el excel, pues nunca represente una grafica con el.

un saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: ¿Qué función genera este resultado?
« Respuesta #14 en: 28 de Octubre de 2008, 19:53:48 »
Efectivamente, así fue.