Autor Tema: Problema con conversor analogico digital  (Leído 2306 veces)

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

Desconectado Julian_24

  • PIC10
  • *
  • Mensajes: 11
Problema con conversor analogico digital
« en: 27 de Mayo de 2004, 18:02:00 »
Esto teniendo un problema con el siguiente programa, y es que me sale la mitad de valor que deberia, sabeis pq puede ser?


#include <16F877a.h>
#include <STDLIB.H>
#use delay(clock=4000000)
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#byte portb=6
#include <lcd.c>

void main(void)
{
float const resoluc=5.0/256.0;
int8 valor=0;
float kk=0;


set_tris_b(0x00);
set_tris_a(0xFF);
portb=0x00;

lcd_init();
lcd_gotoxy(1,1);

setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(20);

while(true)
{

valor=read_adc();
kk=valor*resoluc;
lcd_gotoxy(1, 1);
printf(lcd_putc,"fconv: %d",valor);
lcd_gotoxy(1, 2);
printf(lcd_putc,"medida: %f",kk);
delay_ms(500);
}
}

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Problema con conversor analogico digital
« Respuesta #1 en: 27 de Mayo de 2004, 22:36:00 »
Creo qu es porque te falta poner el conversor a 8 bits

prueba agregando

#device   ADC=8

en la cabecera,

saludos

Ariel
saludos
PikMan

Desconectado Julian_24

  • PIC10
  • *
  • Mensajes: 11
RE: Problema con conversor analogico digital
« Respuesta #2 en: 27 de Mayo de 2004, 23:33:00 »
Hola, estaba puesto, el problema se debia a que no ponia bien las masas, la masa q tomaba la tenson de referencia no era la misma que la de la bateriaa que alimentaba la patilla analogica

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Problema con conversor analogico digital
« Respuesta #3 en: 28 de Mayo de 2004, 00:21:00 »
Por omisión del #device ADC=8 asume conversión a 8 bits.

Desconectado rashii

  • PIC10
  • *
  • Mensajes: 39
Re: Problema con conversor analogico digital
« Respuesta #4 en: 06 de Agosto de 2007, 22:43:13 »
tengo una duda en este post, porque si pongo esta linea setup_adc_ports(RA1_ANALOG); para usar la patilla A1 como conversor en vez la A0 me da un error? me pone undefined identifier...otra duda que tengo es que es exactamente el canal? Un saludo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema con conversor analogico digital
« Respuesta #5 en: 07 de Agosto de 2007, 02:23:10 »
Estas son las opciones que proporciona CCS para configurar el puerto analógico del 16F877:
Código: C
  1. // Constants used in SETUP_ADC_PORTS() are:
  2. #define NO_ANALOGS                           7    // None
  3. #define ALL_ANALOG                           0    // A0 A1 A2 A3 A5 E0 E1 E2
  4. #define AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 1    // A0 A1 A2 A5 E0 E1 E2 VRefh=A3    
  5. #define AN0_AN1_AN2_AN3_AN4                  2    // A0 A1 A2 A3 A5          
  6. #define AN0_AN1_AN2_AN4_VSS_VREF             3    // A0 A1 A2 A5 VRefh=A3              
  7. #define AN0_AN1_AN3                          4    // A0 A1 A3
  8. #define AN0_AN1_VSS_VREF                     5    // A0 A1 VRefh=A3
  9. #define AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 0x08    // A0 A1 A5 E0 E1 E2 VRefh=A3 VRefl=A2    
  10. #define AN0_AN1_AN2_AN3_AN4_AN5           0x09    // A0 A1 A2 A3 A5 E0        
  11. #define AN0_AN1_AN2_AN4_AN5_VSS_VREF      0x0A    // A0 A1 A2 A5 E0 VRefh=A3          
  12. #define AN0_AN1_AN4_AN5_VREF_VREF         0x0B    // A0 A1 A5 E0 VRefh=A3 VRefl=A2          
  13. #define AN0_AN1_AN4_VREF_VREF             0x0C    // A0 A1 A5 VRefh=A3 VRefl=A2              
  14. #define AN0_AN1_VREF_VREF                 0x0D    // A0 A1 VRefh=A3 VRefl=A2
  15. #define AN0                               0x0E    // A0
  16. #define AN0_VREF_VREF                     0x0F    // A0 VRefh=A3 VRefl=A2
  17. #define ANALOG_RA3_REF         0x1         //!old only provided for compatibility
  18. #define A_ANALOG               0x2         //!old only provided for compatibility  
  19. #define A_ANALOG_RA3_REF       0x3         //!old only provided for compatibility  
  20. #define RA0_RA1_RA3_ANALOG     0x4         //!old only provided for compatibility
  21. #define RA0_RA1_ANALOG_RA3_REF 0x5         //!old only provided for compatibility
  22. #define ANALOG_RA3_RA2_REF              0x8   //!old only provided for compatibility
  23. #define ANALOG_NOT_RE1_RE2              0x9   //!old only provided for compatibility  
  24. #define ANALOG_NOT_RE1_RE2_REF_RA3      0xA   //!old only provided for compatibility  
  25. #define ANALOG_NOT_RE1_RE2_REF_RA3_RA2  0xB   //!old only provided for compatibility  
  26. #define A_ANALOG_RA3_RA2_REF            0xC   //!old only provided for compatibility  
  27. #define RA0_RA1_ANALOG_RA3_RA2_REF      0xD   //!old only provided for compatibility
  28. #define RA0_ANALOG                      0xE   //!old only provided for compatibility
  29. #define RA0_ANALOG_RA3_RA2_REF          0xF   //!old only provided for compatibility

Como ves, no existe la que tú quieres. Para utilizar el RA1 como analógico, siempre tienes que utilizar también algunos otros pines como analógicos. Quizás con AN0_AN1_AN3 es con quien menos pines tienes que utilizar para tal fin.

Desconectado rashii

  • PIC10
  • *
  • Mensajes: 39
Re: Problema con conversor analogico digital
« Respuesta #6 en: 07 de Agosto de 2007, 05:30:02 »
Muchas gracias he salido de mis dudas completamente..y el canal supongo que se refiere al pin a usar no? Un saludo.