• Martes 14 de Mayo de 2024, 04:22

Autor Tema:  Problema Adc 18f8722  (Leído 1326 veces)

boni

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
Problema Adc 18f8722
« en: Martes 15 de Abril de 2008, 10:26 »
0
Hola a tod@s!!!

Estoy usando el ADC de un micro pic 18F8722 y no consigo que funcione como debe.

Uso el pin A1 configurado como ADC de 10 bits. Tengo una fuente de tensión conectada a ese pin y además tiene un condensador de 10 nF tierra para evitar ruidos.

Las dudas que tengo son las siguientes:
-Si quito la fuente de tensión y dejo ese pin al aire, en ese pin mido una tensión de 4,6 voltios.
¿No deberia ser 0 voltios?

Y por otro lado, el verdadero problema es que para 0 voltios de entrada me mide 0,33 voltios el ADC y para 4,2 voltios ya me mide 5 voltios.

Os comento que el pic está alimentado a 5 voltios y el resto de las patas están al aire.

No se que puedo estar haciendo mal. Más abajo os dejo el código en C para ver si alguno me puede echar una mano:

Muchas gracias por todo!
Boni


#include <18f8722.h>
#device ADC=10;
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOIESO
#fuses NOEBTRB,NOEBTR,NOWRTD,NOWRTC,NOWRTB,NOFCMEN,NOLPT1OSC,NOMCLR
#fuses NOCPD,NOSTVREN,NODEBUG,NOLVP,NOWRT,NOCPB,NOXINST,NOWAIT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_G1, rcv=PIN_G2)

void main(void){
   float adc_f=0;
   
   setup_adc_ports(AN0_TO_AN1|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);

   delay_ms(100);

   while(1){
      set_adc_channel(1);
      delay_ms(10);
      adc_f=read_adc();
      printf("\r\nLeido : %3.2f ",adc_f*5/1023);
      delay_ms(500);
   }
}