TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: hernanutn en 01 de Noviembre de 2014, 16:44:47

Título: funcion matematica integrar en pic
Publicado por: hernanutn en 01 de Noviembre de 2014, 16:44:47
hola, mi consulta como debo realizar el codigo c para integrar valores sensados.. desde ya gracias
Título: Re: funcion matematica integrar en pic
Publicado por: KILLERJC en 01 de Noviembre de 2014, 17:21:06
Basandome en lo que es "el area debajo de la curva" y pensando como uno llega a la integral, y ademas como es discreto y no tenes otro valor entre muestras. Lo unico que se me ocurre es por aproximaciones rectangulares. Asi como cuando te explican integrales por primera vez.

Sabiendo el intervalo de tiempo y el valor de la función ( lo que te da el ADC ), vas sumando cada una de las areas. Mientras mas pequeño sea el intervalo de tiempo mas próximo va ser el valor a la integral continua.

Podes tomar como si el valor del ADC fuera el comienzo de la grafica, tal cual como dice en Sumas superiores
O Tambien lo podes pensar de la otra forma y llegar a como en el grafico muestra Sumas inferiores.
Tanto como en una como en otra te sobra o te falta

(http://static.flickr.com/25/64165272_ae16a6b8e7.jpg?v=0)

Creo que lo mas correcto es:
Hacer una suma de los 2 ultimos valores que entran al ADC, lo dividis por 2 ( rotas 1 sola posicion ), asi te queda una aproximacion trapezoidal. Al menos es lo mas aproximado que pienso, y como dije antes, mientras mas corto el tiempo entre muestras mejor

{ [f(Xn) + f(Xn-1)] / 2 } * deltaX

Para que lo entiendas te dejo un video ( OJO que en el caso del video es una funcion continua y el 3er caso que muestra no puede realizarse en estos casos, por razones obvias )

Título: Re: funcion matematica integrar en pic
Publicado por: hernanutn en 01 de Noviembre de 2014, 17:51:08
gracias
Título: Re: funcion matematica integrar en pic
Publicado por: xxopiumxx en 04 de Noviembre de 2014, 13:29:42
yo lo he hecho en CCS como describe KILLERJC, a fin de sacar valor eficaz de una señal en tiempo real y funciona muy bien.
si conseguis un tiempo de muestreo multiplo de potencia de dos podes dividir por shifting y sale volando
Título: Re: funcion matematica integrar en pic
Publicado por: DominusDRR en 07 de Noviembre de 2014, 18:20:05
float integral(float a, float b, float (*f) (float))
{
   float sum = 0.0;
   float x;
   int n;
   //Evaluar la integral {a,b} en f(x)
   for(n = 0; n <= 100; n++)
   {
      x = ((n / 100.0) * (b-a)) + a;
      sum += (f(x)*(b-a)) / 101.0;
   }
   return sum;
}

//Adapatado del ejemplo en http://en.wikipedia.org/wiki/Function_pointer