Autor Tema: No me coje los datos bien el A/D del 16f876  (Leído 1932 veces)

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

Desconectado El_parche

  • PIC10
  • *
  • Mensajes: 2
No me coje los datos bien el A/D del 16f876
« en: 05 de Mayo de 2004, 12:22:00 »
Hola amigos, os voy a exponer mi caso:

Tengo un sensor de ozono, que me da una tension bipolar, conectado a un ina122 (amplificador de instrumentacion) y cuya salida la injecto en el canal RA0 para convertirla a digital. hasta ahy todo bien, lo que pasa es que la conversion me la hace mal, yo adquiero cada segundo y luego lo paso al ordenador por el puerto serie, y sorpresa!!!.... me varia incluso del orden de 70 puntos osea que en mi caso unos 350mV, cuando la señal que sale por el ina122 (mirado con voltimetro) no varia. ¿Que me puede estar pasando? supongo que tendre ruido, aunque lo he mirado en la alimentacion y esta no tiene mas de 10mv de ruido, como puedo solucionarlo, pongo un filtro RC a la entrada del convertidor A/D?... Bueno a ver si me podeis ayudar.
Un Saludo.
Muchas Gracias

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #1 en: 05 de Mayo de 2004, 13:06:00 »
¿ ya compruebas ADCON0,2 que aya terminado la conversión ?

Codigo:

   bsf   ADCON0,2      ;start conversion

wait:

   btfsc   ADCON0,2
   goto   wait         ;wait conversion completed
                clrf   ADCON0         ;stop the adc



adolfoadc

  • Visitante
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #2 en: 06 de Mayo de 2004, 07:25:00 »
Tienes una tension de referencia estable, la mayor parte de los problemas que se tienen con los convertidores A/D son las referencias de tension, utiliza una buena referencia externa (chip REF02) y a lo mejor se te quitan los problemas.

Suerte!!!!!!!!!!!!!!!!!!!

Desconectado El_parche

  • PIC10
  • *
  • Mensajes: 2
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #3 en: 06 de Mayo de 2004, 10:16:00 »
Ya he conseguido hacerlo funcionar, he colocado un filtro RC(10k,1uF) y he hecho que el tiempo de conversion sea mayor (clock de 4mhz enlugar de los 20megas de antes, y poniendo ADCS1=1 y ADCS0=0), de esta manera consigo una buena lectura.

Gracias por todo.
 

Desconectado MASTER_HACKER

  • PIC10
  • *
  • Mensajes: 22
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #4 en: 24 de Febrero de 2005, 17:10:00 »
compis me podriais postear aqui algun programa que me sirva de ejemplo para la adquisicion y tratado de datos analogicos por el convertidor a/d interno del 16f876??

Os lo agradeceria.

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #5 en: 25 de Febrero de 2005, 22:24:00 »
hora a todos
esta es una rutina que uso y me de buen resultado




;***************************************************************
Adc_001      clrwdt   
      banksel ADCON0
      clrf   ADRESH
      movlw   b"10000001"
      movwf   ADCON0      ;ADC On, selecciona canal 0
      bcf       PIR1,ADIF   ;Restaura el flag del conversor
            nop
      bsf       ADCON0,GO   ;Inicia la conversión
ADC_Wait_1   btfss   PIR1,ADIF   ;Fin de conversión ??
      goto   ADC_Wait_1   ;Todavía no
      movf   ADRESH,W
      movwf   Variable_01       ;
      return
;***************************************************************

Desconectado MASTER_HACKER

  • PIC10
  • *
  • Mensajes: 22
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #6 en: 26 de Febrero de 2005, 08:02:00 »
nada maxo, creo k me toy volviendo tonto o algo asi

meto esas rutinas y me da fallos para empezar ya con Adc_001 clrwdt(previamente puesto #asm, para meter rutinas ensamblador)

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
RE: No me coje los datos bien el A/D del 16f876
« Respuesta #7 en: 27 de Febrero de 2005, 15:38:00 »
hora a todos
master_hacker si tu estas trabajando en C creo que es mejor que pongas tu pregunta en ese subforo ya que es mas facir que te ayuden.
la rutina que te puse puede que te este dando un error ya que si es en C cuando llamas a  Adc_001 el compilador cree que es una sentencia en C
y Adc_001 es como yo llamo esta rutina, puedes llamarla de cuarquier otra manera
en mi caso como yo uso  todos los ADC nombro a todas las rutinas ADC_00X
la que me indica cual es AD que estoy llamando.
y clrwdt es para limpiar el WDT para que no me resetee el PIC, cambia esa linea y nombra esa rutina con otro nombre.
puede ser que el compilador  use Adc_001 en uno de sus comandos.
eso no pasa cuando trabajas en ASM, si puedes pon tu codigo para que podamos ayudarte mejor.Flash