Autor Tema: Mayor Presicion en ADC  (Leído 1301 veces)

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

Desconectado gio

  • PIC10
  • *
  • Mensajes: 27
Mayor Presicion en ADC
« en: 21 de Diciembre de 2007, 16:24:15 »
Estoy trabajando con adc, midiendo la reicistencia de un potenciometro, pero con 8 bits ay un error de mas menos 2 con 10 bits ay un error de mas menos 10, esto para manejar el posicionamiento de un motor, les dejo el codigo por si les interesa.

Código: [Seleccionar]
#include\r <16f876a.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)


char Keypress =0x00;
int valor=0x00;
long int valor2=0x00;
float valor3=0x00;

void toma_adc(void){
 set_adc_channel(0);
 valor=read_adc();
 valor2=read_adc();
 valor3=read_adc();
}

void ajusta_servo(void){
  switch(Keypress){
     case '1': toma_adc();printf("Valor = %u\r\n",valor);
              break;
     case '2': toma_adc();printf("Valor = %lu\r\n",valor2);
              break;
     case '3': toma_adc();printf("Valor = %f\r\n",valor3);
              break;



  }

}


#int_rda
void rda_isr() {
  Keypress=0x00;
  if(kbhit()){
    Keypress=getc();
  }
}



void main() {

  setup_adc(ADC_CLOCK_INTERNAL); //configura el converso
  setup_adc_ports(RA0_analog); //entrada 0 como analogica
  enable_interrupts(int_rda);
  enable_interrupts(global);

  printf("\r\n\Nasin Potenciometro.\r\n\r\n" );
  printf("\r\n\Estable...\r\n\r\n" );
  do {
      if(Keypress!=0x00){
      ajusta_servo();
      Keypress=0x00;
    }
  } while (TRUE);
}


el progrma es con la interfas serial, par saber el valor de potenciometro, si alguien me puede ayudar, bueno de antemano gracias....

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Mayor Presicion en ADC
« Respuesta #1 en: 21 de Diciembre de 2007, 17:34:53 »
Buenas gio,

Te comento mi experiencia un poco con el AD del pic. Yo tengo un 'CACHARRO' que utizo para controlar el vacío de un tubo de alto voltaje(75kV - 15A). Este ''CACHARRO'  me da por un conector una medida de tensión de 0 a 10 V que corresponden a 0 - 1 mA respectivamente, el caso es que me propuse con un pic a ir pillando muestras como un cencerro e ir enviándolas al PC (cuando lo deje sentenciado lo publicaré en el foro). El programa es muy parecido a este pero adaptado a mis necesidades. Te recomiendo que le eches un ojo y mires como declar las variables. Yo en mi programa lo que hice fue hacer el factor de conversión y multiplicarlo por 1000 y así no perdía precisión. Ahora mismo no lo tengo delante ya que he empezado las VACAS pero en Enero te posteo como lo he realizado.

Saludos
Aplicaciones Electrónicas
http://www.neoingenia.com/