TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: mariacontenis en 20 de Noviembre de 2019, 20:12:56

Título: Filtro Promedio Movil del ADC
Publicado por: mariacontenis en 20 de Noviembre de 2019, 20:12:56
 Tengo un tema para el cual me esta dando vueltas la cabeza y no se como continuar. Estoy leyendo 5 entradas análogicas para lo cual requiero estabilizar las lecturas.

E visto la implementación de un filtro aquí en el foro para mi ADC (llamado promedio móvil), el cual estoy implementando, es el siguiente:


[

Código: C++
  1. void filtro_promediado()                                                   // Rutina que toma 15 muestras de cada entrada analoga
  2.          {
  3.          for(int x=0; x < sizeof ADC_Channels; x++)
  4.          {
  5.          ADC_Read[x]=0;
  6.          set_adc_channel(ADC_Channels[x]); delay_ms(20);
  7.          for(int z=0; z<MUESTRAS;z++)
  8.          {
  9.          ADC_Read[x] += read_adc(); delay_ms(20);
  10.          }  
  11.          }
  12.          }

Bien, pues veo PIC pierde tiempo por que esta ocupado haciendo del ADC la conversion - delay_ms - conversion - delay_ms -  ...........  . . .

Me gustaría saber si se puede aplicar alguna interrupcion (Quizas timer0 o timer1 ..) para que mientras este realizando la conversión, el PIC no este perdiendose de las demas tareas, es decir que se pueda aplicar algunas de las siguientes cosas:

 1).- Que pierda el tiempo mínimo posible.
 2).- Que se realice alguna interrupción para que el pic no este perdido de lo demás mientras realiza la lecturas entre muestras del ADC.

Alguna orientación o consejo?.
Título: Re:Filtro Promedio Movil del ADC
Publicado por: Robert76 en 20 de Noviembre de 2019, 21:29:18
Hola, porqué utilizas delays de 20ms.
Si a un ADC le lleva aprox 40us en entregar una conversión, dependiendo de varios factores.
Para obtener un promedio entre muestras, puedes hacer lo sig:

Valnuevo= (Valviejo+ Valactual)/2;


Título: Re:Filtro Promedio Movil del ADC
Publicado por: mariacontenis en 20 de Noviembre de 2019, 21:35:59
Robert76  en realidad ese valor de