Ausencia de ruido, problema con el ADC del PIC16F876A

Tema en 'R/C ELECTRÓNICA' iniciado por mhacker, 10 Feb 2010.

  1. mhacker Nuevo Miembro

    mhacker
    Registrado:
    19 Dic 2007
    Mensajes:
    52
    Me Gusta recibidos:
    0
    Hola,

    Como algunos foristas ya sabrán, mi hobby primario es la coheteria amateur experimental (seguida ahora muuuy de cerca del FPV! :biggrin2:).

    Acá en Argentina tenemos un grupo de trabajo llamado: DMTC3 Team dentro del marco de nuestra asociación madre ACEMA ( www.acema.com.ar ) con el cuál hemos efectuado diversos desarrollos de índole experimental, como por ejemplo:

    http://www.youtube.com/watch?v=UrF8iemVnow

    http://www.youtube.com/watch?v=ia4exjNMmDo

    http://www.youtube.com/watch?v=TiAIO5oCbZ4

    He aquí los computadores de vuelo (FC) diseñados por nosotros para el uso en la coheteria de alta potencia:

    Familia de FC Alfa, Mini-Alfa y Beta:
    [​IMG][​IMG][​IMG]


    Bien, hecha la presentación... vamos al meollo de la cuestión:

    Mi amigo César, quién es el programador y experto en electronica de nuestro team (especialmente con los PIC's) se encuentra actualmente con un problema relacionado con el procesamiento de los datos de los sensores por medio del filtro Kalman, al gestionarlo con el ADC del pic.

    Transcribo a continuación un posteo efectuado por él en el foro de TodoPic (sin respuesta a la fecha), a fin de ver si alguien de acá puede tirar alguna mano o idea al respecto:

    Reitero desde ya el agradecimiento por anticipado de mi parte,

    Saludos,
     
  2. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    Es raro.

    ¿Siempre da la misma lectura?

    Es probable que no esté configurado el registro TRIS como entrada para el pin del sensor de presión y está dando una lectura interna del microcontrolador.
    Otra cosa que se me ocurre es que el pin en cuestión no este configurado como entrada analogica. Que compruebe el registro ADCON1 en los bits PCFG3 a PCFG0. Tal vez el sensor esté conectado a un pin configurado como digital.
    La configuración de los puertos analógicos en este chip no es muy flexible.

    Si eso está bien tendrás que darme mas pistas.
     
  3. mhacker Nuevo Miembro

    mhacker
    Registrado:
    19 Dic 2007
    Mensajes:
    52
    Me Gusta recibidos:
    0
    Gracias SILFONONE!

    Le pasé a César el link de este hilo, así se registra él y te pasa más información al respecto. Tenemos más ensayos hechos sobre este tema en cuestión. Voy a pedirle a él que suba los mismos acá, así tienen más elementos para analizar.

    Un abrazo,

    Marcelo
     
  4. cesar_d Nuevo Miembro

    cesar_d
    Registrado:
    10 Feb 2010
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Silfonone
    El TRIS y el ADCON0/1 están bien configurados, en realidad el ADC convierte el valor del sensor pero sin ruido "blanco"
    Adjunto un archivo donde se ve la adquisición secuencial de 2 variables, la presión y la aceleración, si te fijas la presión permaneció más de 2000 muestras sin variar!, cuando eso lo traslado a un vuelo (te adjunto uno) el resultado es que la presión se muestra muy escalonada y yo necesito algo de ruido para incrementar la resolución del ADC

    La verdad estoy desconcertado, veo en la red que otras computadoras de vuelo (la imagen es de una RDAS) usan el mismo sensor y micros similares y tiene buen ruido mientras yo solo obtengo una hermosa "escalera" de peldaños bien rectos

    Decime que más más necesitas para hacer la autopsia del caso y lo subo

    Saludos y desde ya gracias, Cesar

    PD: Soy muy nuevo y no pude cargar archivos zip o xls así que este es el enlace
    http://www.megaupload.com/?d=AHUGCWGB
     

    Adjuntos:

    • RDAS.png
      RDAS.png
      Tamaño de archivo:
      13,7 KB
      Visitas:
      104
  5. picblanc Miembro

    picblanc
    Registrado:
    13 Ago 2009
    Mensajes:
    301
    Me Gusta recibidos:
    0
    Hola cesar

    para subir archivos, has de cambiar la extensión del fichero por una de las que permita el gestor de archivos del foro, por ejemplo *.dwg, luego no olvides de comentar que extensión tien el fichero para que podamos cambiarla de nuevo y abrir el fichero en nuestros PS's.

    Sobre tu caso, tu problema muy bien podría venir del hardware, sube el esque que le demos un vistazo.

    Normalmente los fabricantes de accelerómetros recomiendan encarecidamente usar filtros pasa bajos con redes RC en las salidas de señal del sensor, somo tienes este tema?? tiene aspecto de que se está filtrando la señal de salida con componentes pasivos.

    Salidudos....Vic
     
  6. mhacker Nuevo Miembro

    mhacker
    Registrado:
    19 Dic 2007
    Mensajes:
    52
    Me Gusta recibidos:
    0
    Entiendo que sin ver el circuito, es muy difícil de interpretar la cuestión, así que aquí les subo el circuito, su versión virtualizada y la real:

    Circuito:
    [​IMG]

    Virtualización:
    [​IMG][​IMG][​IMG]

    FC Real:
    [​IMG][​IMG][​IMG]
    [​IMG][​IMG][​IMG]


    Espero que esto ayude a clarificar!

    Sds.,
     
  7. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
  8. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    No consigo ver el esquematico que has puesto pero creo que se cual es el problema.

    ADC de 10bits... esa bonita escalera.... los puñeteros sensores de presion... tu lo que tienes es un problema de resolución del ADC.

    Yo para calcular altitud uso conversores de 12bits como poco. Ademas amplifico la señal de forma analógica x2 o x4 para ganar resolución y luego le aplico un filtro software.

    En tu caso el ruido está por debajo del error de conversión del ADC de 10bits y por eso no lo ves.

    Me juego un dedo a que van por ahí los tiros.
     
  9. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    Oye, por cierto.

    ¿He leido mal o has dicho Kalman en un PIC18F876?. Siempre me he dejado acojonar por el tema del Kalman y lo he esquivado hasta hoy pero no deben ser tan complejos los cálculos para que ese pic del jurásico (perdón si le tienes cariño:biggrin2:) pueda con ello.

    Que te parece una ayudita recíproca.
     
  10. cesar_d Nuevo Miembro

    cesar_d
    Registrado:
    10 Feb 2010
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Silfonone, pudiste ver el esquemático?

    Si no fuera por 2 altímetros que conozco y usan 10bits pensaría igual que vos, que con 10 bits no puede lograrse buena resolución. Pero tanto el RDAS como el FC877 (este último usa el Pic16F877, el más viejo sin la A y a 4MHz!) usan 10 bits y en ambos obtiene buen ruido algo que a mi me falta :-(

    Tema Kalman, mirate http://home.earthlink.net/~david.schultz/rnd/2004/index.html que fue de donde la inspiración para mi altímetro (el usa Kalman en un PIC16F628 a 4MHz!), tiene una muy buena explicación del filtro Kalman aplicado a vuelos parabólicos y el código en ASM completito además de un log del desarrollo de su altímetro (lamentablemente para mi, el si usa 12bits)

    Ahora voy a probar si el problema lo tengo en el filtro RC entre Sensor y PIC, ni bien tenga algún resultado les comento

    Saludos, Cesar
     

    Adjuntos:

  11. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    He repasado mis notas y tus datos detalladamente y me ha salido la misma conclusión.

    Según los datos de vuelo que posteastes, el vuelo se produjo entre 0 y 140m. Por los datos que arroja tu sensor de presión debes vivir a nivel del mar mas o menos.

    Ahora lo vamos a calcular teóricamente.
    La presión que ha registraría un sensor en esa envolvente de vuelo sería de 1013HPa (a 0m) a 995HPa (a 150m) según las tablas. Da una diferencia de 18HPa.
    Tu sensor de presión tiene una sensibilidad de 45.9mV/KPa, o sea 4.59mV/HPa.
    18Hpa x 4.59mV/HPa = 82.62mV. Esa es la diferencia de tensión que te va a dar el sensor en todo el vuelo.
    Si un ADC a 10bits en el rango de 0 a 5V tienen una resolución de 4,88mV la máxima diferencia de lectura que obtendrías es de 17.
    En tus tablas veo que has tenido una diferencia de 16!!!!

    !!!Encaja perfectamente!!!, no hay error de lectura, ni de software ni de ningún tipo. Se trata de un error de concepto. NECESITAS MAS RESOLUCIÓN DE ADC.

    Dices que has visto otros casos que lo hace con 10bits. Pues debe ser que han puesto un amplificador de ventana para que todo el rango de lectura del ADC se aplique a la ventana de 3.5 a 5v por ejemplo. O aplicar 3,5v a Vref- o vete a saber que. Pero en tu caso funciona así.

    En mi UAV tengo un conversor de 12bits y una amplicación de x2. Consigo una resolución de 0,40mV y en el caso de tu vuelo habría tenido una diferencia de lectura de 205 en lugar de tus 16.
    En otra placa que hice usaba un conversor ADC externo de 14bits y con ese se llegaba también a un buen resultado.

    Lo siento pero no hay mas cera que la que arde. :wink2:
     
  12. jalves Miembro

    jalves
    Registrado:
    30 Dic 2007
    Mensajes:
    895
    Me Gusta recibidos:
    0
  13. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    Si señor!!!!!

    Buena aportación de Jalves.
    Este método me parece muy bueno y muy sencillo de aplicar. En el pdf he descubierto que lo que yo estaba utilizando para sacarle 14bits a mi conversor de 13 se llama "Averaging" y "oversampling".

    Lo mas interesante del documento es que en los casos en los que el ruido está por debajo del ruido del conversor, tipicamente 0,5LSB se puede añadir ruido "falso" para subirlo a 1LSB y que ya sea medible.
    Que te parece Cesar_d?. Eso es justamente lo que te pasa a ti.

    Parece que si hay mas cera que la que arde. :biggrin2:
     
  14. cesar_d Nuevo Miembro

    cesar_d
    Registrado:
    10 Feb 2010
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Gracias Jalves, buen aporte

    Silfone, si no logro hacer aparecer el ruido propio del sensor la única que me queda es generarlo

    Hasta ahora todas las alternativas incluyen alguna modificación en el hardware así que veré como sigo investigando por esa línea

    Saludos, Cesar
     
  15. picblanc Miembro

    picblanc
    Registrado:
    13 Ago 2009
    Mensajes:
    301
    Me Gusta recibidos:
    0
    Cesard,

    De modo muy breve para no alargarme, como tienes la placa delante, te invito a hacer una prueba muy rápida y luego me cuentas el resultado ok?

    Solo tienes que puentear la resistencia de 1k que tienes en la línea de salida del sensor y el condensador lo quitas, deja la salida directa al micro.

    Ya me dirás que tal.

    Saludos...Vic
     
  16. Silfonone Miembro Activo

    Silfonone
    Registrado:
    2 Ago 2007
    Mensajes:
    1.233
    Me Gusta recibidos:
    0
    Que paradojico que para tener mas precisión estemos quitando filtros. Como se está volviendo esto de raro. :rolleyes2:
     
  17. cesar_d Nuevo Miembro

    cesar_d
    Registrado:
    10 Feb 2010
    Mensajes:
    4
    Me Gusta recibidos:
    0
    picblanc, estas mirando el acelerómetro y el problema lo tengo en el sensor de presión :)

    Raro es poco :locos:

    Saludos, Cesar
     
  18. picblanc Miembro

    picblanc
    Registrado:
    13 Ago 2009
    Mensajes:
    301
    Me Gusta recibidos:
    0
    Ooooopps!!!

    Ya me perdonareis, pero he mezclado una consulta de otro foro con tu problema, por eso miré en el accelerómetro en lugar del sensor de presión.

    Bueno solo quiero que pruebes los resultados quitando el condensador de 47pF que tienes en la salida del sensor en paralelo con esa resistencia de polarización tan grande (raro no?) normalmente yo uso filtros pasa bajos (RC) con frecuencias de corte inferiores a 1Khz,osea yo en tu caso pondría una resitencia en serie justo a la salida de unos 800R y a continuación un condensador de 0.33uF, bueno si puedes prueba y miras como es la captura de señal.

    No es que se tengan que eliminar los filtros, es que quiero ver la forma de de la señal, porque el filtro usado en el esquema a mi no me gusta.

    Saludos....Vic
     
  19. grobot Nuevo Miembro

    grobot
    Registrado:
    6 Mar 2010
    Mensajes:
    1
    Me Gusta recibidos:
    0
    Sample and hold

    Tengo elmismo problema de lectura se gun lo ue leo utilizas 8ms para leer un dato lo siguiente talvez lo probaste existe un tiempo de carga del condensador sample and hold una vesz que se carga se produce la lectura y lo tienes en los dos registros del adc, como me sucedio a mi para que pudiera leer los valores reales de cada canal tengo que es perar 500ms pentre lecturas de canal para que se descargue el condensador sample hand hold, tal vez puedas buscar halgo sobre eso, por que yo tambien busco la solucion, y me parece que es eso por que tu grafica es muy perfercta lo cual quiere decir que estas leedno el mismo dato varias veces. tambien segun la especificacion del fabricante hay que colocar un resistencia de 10k a la entrada del adc los que no se si es a masa o vdd
    Espero que te sirva


     

Compartir esta página