TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jezus en 05 de Septiembre de 2009, 17:40:41

Título: Entrada analogia CAD.
Publicado por: jezus en 05 de Septiembre de 2009, 17:40:41
Hola, estoy intentando diseñar n termometro, para ello uso:
-LM35
-Entrada analogica PIC18F442 RA0

Y el código es el siguiente:

//Programa principal
void main(){
   int16 value=0;
   setup_adc_ports(RA0_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);

   while(1){
      delay_ms(1000);
      set_adc_channel(0);
      value=2*read_adc();
   }  
}

value es la variable donde almaceno el valor de temperatura...el caso es que el resultado que da en la mitad del que es (por eso lo multiplico por 2) y el problema es que para numeros impares no me da el valor correcto (por eso de mutiplicarlo por 2). He intentado declarar value como float, pero teno el mismo problema..alguien sabe por qué ocurre esto?supongo que esta relacionad con la resolucion del ADC, pero no se como configurarlo...
Gracias de antemano!
Título: Re: Entrada analogia CAD.
Publicado por: jezus en 05 de Septiembre de 2009, 18:05:23
creo que he subsanado el problema.
He puesto la entrada de referenca a 2.55V por lo que asi a 100 grados el valor de la variable es 100 y a 0 grados es 0. para ello he añadido la linea:
    setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
La pregunta ahora es si RA1 se convierte en otra entrada analogica o no tiene por qué?
Título: Re: Entrada analogia CAD.
Publicado por: c4_esp_VR en 06 de Septiembre de 2009, 06:14:53
Hola jezus:

Estas pasando en la función setup_adc_ports que RA0 y RA1 se configuren como entradas analógicas y RA3 como referencias del CAD.

Pero por lo que veo en el dataheet del micro es imposible hacer que RA0 sea analógico, RA1 y RA2 sea digital y RA3 sea la referencia, fíjate en el datasheet en el punto 17, en el registro ADCON1 que es el que configura el puerto ADC en los bits del 0 al 3.

Un saludete y espero que te sirva  :)
Título: Re: Entrada analogia CAD.
Publicado por: KALLITOS en 06 de Septiembre de 2009, 20:06:22
Te pongo un codigo que en este momento estoy haciendo para el mismo sensor pero con el 16f876
Código: C
  1. int16 lectura;                                     ///RECOJE EL VALOR LEDIO DEL ADC
  2.    float cifra;
  3.   ///CODIGO PARA LEER LM35 USANDO VOLTAJE DE REFERENCIA DE 2.5 VOLT
  4.    set_adc_channel(0);
  5.    delay_us(10);
  6.    lectura = read_adc();
  7.    delay_us(10);
  8.    cifra = (float)lectura;      
  9.    cifra *= 0.244;        ////por que Vref / 1024 = 0.00244 luego x 100
  10.    printf(lcd_putc,"LM35 = %3.1f%cC  ",cifra,223);///223 = signo de grados

Saludos
Título: Re: Entrada analogia CAD.
Publicado por: jezus en 07 de Septiembre de 2009, 11:09:28
Hola jezus:

Estas pasando en la función setup_adc_ports que RA0 y RA1 se configuren como entradas analógicas y RA3 como referencias del CAD.

Pero por lo que veo en el dataheet del micro es imposible hacer que RA0 sea analógico, RA1 y RA2 sea digital y RA3 sea la referencia, fíjate en el datasheet en el punto 17, en el registro ADCON1 que es el que configura el puerto ADC en los bits del 0 al 3.

Un saludete y espero que te sirva  :)

Muchas gracias!!ya me ha quedado mucho mas claro y tengo casi acabado el proyecto...
Un saludo!
Título: Re: Entrada analogia CAD.
Publicado por: josegranada en 01 de Octubre de 2009, 15:55:44
me gustaria saber si el codigo que vos tiene es para un lm35 y una lcd,
necesito hacer un termometro con un lm35 y ke los datos los muestre por una lcd.

me podria pasar el codigo del programa que ha exo usted.


muchas gracias

saludos