Autor Tema: Filtro Promedio Movil del ADC  (Leído 3051 veces)

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

Desconectado mariacontenis

  • PIC16
  • ***
  • Mensajes: 116
Filtro Promedio Movil del ADC
« 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?.
« Última modificación: 25 de Noviembre de 2019, 19:30:54 por mariacontenis »

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Filtro Promedio Movil del ADC
« Respuesta #1 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;



Desconectado mariacontenis

  • PIC16
  • ***
  • Mensajes: 116
Re:Filtro Promedio Movil del ADC
« Respuesta #2 en: 20 de Noviembre de 2019, 21:35:59 »
Robert76  en realidad ese valor de
« Última modificación: 22 de Noviembre de 2019, 18:42:36 por mariacontenis »