Autor Tema: Retardo para cambiar de canal del ADC  (Leído 2259 veces)

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

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Retardo para cambiar de canal del ADC
« en: 26 de Mayo de 2005, 13:23:00 »
Hola

Tengo un problema y la verdad no creo que sea algo externo, pensando bien las cosas creo que mi problema es de software y que no estoy colocando ningún retardo para hacer el cambio de canal del ADC. No lo hago porque "supuse" que no era necesario ya que entre cada selección de canal realizo algunos procesos que según yo se llevan un tiempo, por ese motivo no coloqué ningún retardo.
El código es el siguiente:
Codigo:

#INT_TIMER1
void adquisicion()
   {
         if(--conteo==0)
            {
               set_adc_channel( 0 );
            adquirir();
            set_adc_channel( 3 );
            adquirir();
            conteo=periodo;
         }   
      set_timer1(65486);      
   }

donde

void adquirir()
   {
                          dato = read_adc();
      datolow=dato;
      datohigh=make8(dato,1);
      putc(datohigh);
      putc(datolow);      
                }


Mi pregunta es: ¿creen ustedes que sea necesario colocar de todos modos el retardo? El problema que tengo básicamente es que cuando no conecto nada en el canal 3, de todos modos recibo datos en mi programa de la computadora y lo chistoso es que son iguales a los que obtengo en el canal 0 que es el que utilizo. Creen ustedes que se deba al retardo o a algún problema de acoplamiento de señales? Espero me puedan echar una mano.

Gracias.

Desconectado Protheus5

  • PIC10
  • *
  • Mensajes: 37
RE: Retardo para cambiar de canal del ADC
« Respuesta #1 en: 28 de Mayo de 2005, 16:04:00 »
Pues si, mira, yo antes de probar otra cosa meteria unos retardos.

En efecto, cada vez que cambias el canal del conversor adc, debes esperar como minimo unos 13 us (segun viene en el manual), aunque no se si eso dependera del tipo de pic que estes usando.

Ese tiempo de espera es necesario, por que? Para que el condensador interno pueda cargarse debidamente y otras cosillas que no vienen a cuento, aunque si te gusta el tema analogico tienes el modelo en las hojas de caracteristicas del pic.

ademas, este tiempo puede depender de muchas otras cosas.

Yto te recomiendo que primero pruebes con un retardo de 25 us, mas que suficientes, y si todo va bien pues vale, si no funciona entonces tendras un problema de codigo.

ej:

set_adc_channel(0); //ADC canal 0
delay_us(20);       //esperamos para el Tad (minimo son 13 us)
               //asi el C interno puede cargarse bien
valor1=read_adc();  //leo

Otra cosa que se me ocurre es que no tengas bien puestos los canales, es decir, que tengas una configuracion que tu pic no lo permita.
Vete al archivo cabecera de tu pic y mira las opciones posibles, en el caso de que no estes seguro.

Un saludo


Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Retardo para cambiar de canal del ADC
« Respuesta #2 en: 30 de Mayo de 2005, 17:11:00 »
Hola Protheus5

Gracias por tu sugerencia y pues efectivamente el problema lo tenía en el Tad, ahora probé mi programa con un generador de señales y ya no tengo ese problema.  Solo falta probarlo con los sensores de presión y habrá quedado mi programita.

Gracias y saludos desde México