Autor Tema: ADC  (Leído 1679 veces)

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

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
ADC
« en: 19 de Abril de 2017, 16:08:22 »
Saludos,
Tengo un circuito alimentado por un cargador de baterías, el cual indica 4.2V cuando la batería esta 100%, y por supuesto esa es la alimentación de todo el circuito,  como mi circuito es móvil, quiero monitorea la alimentación cada cierto tiempo.

Intento usar este código

Código: C
  1. #device ADC=10
  2. setup_adc(ADC_CLOCK_INTERNAL);                              // Utilizo frecuencia interna
  3.  setup_adc_ports(sAN0, VSS_VDD);                              // Especifica que canales son configurados como analógicos

Código: C
  1. if (min==1){                                                               // Cada 1 minuto
  2.      min=0;
  3.      volt = get_read_ADC(0);
  4.      fprintf(debug,"DC: %1.3f\r\n",((volt*4.2)/1024));
  5.     }
Código: C
  1. float get_read_ADC(int channel){
  2.    float value=0;                      // Variable float que contendrá la medición del convertidor AD
  3.    int1 done = 0;                      // Contendrá 1 si el convertidor terminó de convertir
  4.    set_adc_channel (channel);          // Establecemos el canal de lectura analógica
  5.    delay_ms(1);                        // Retardo de 1ms
  6.    value=read_adc(ADC_START_AND_READ); // Hace conversión AD
  7.    done = adc_done();                  // done = 1 si el convertidor termino de convertir
  8.    while(!done)  done = adc_done();    // Mientras no acabe de convertir se seguirá ciclando
  9.    return value;                       // Regresamos la medición
  10. }

Pero no mide bien...  creo que el problema por que se calcula con 5V de referencia.... o no sé.
Tengo conectado la batería con un condesador de 100nF al AN0
« Última modificación: 19 de Abril de 2017, 16:10:28 por cvargcal »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ADC
« Respuesta #1 en: 19 de Abril de 2017, 16:10:13 »
La alimentacion del PIC es de la bateria?, podrias poner un diagrama de como se alimenta el PIC y como lo conectas al ADC

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:ADC
« Respuesta #2 en: 19 de Abril de 2017, 16:20:39 »
La alimentacion del PIC es de la bateria?, podrias poner un diagrama de como se alimenta el PIC y como lo conectas al ADC
Gracias por responder,
Coneccion es sencilla:
Puerto USB >> IC cargador>> alimenta el PIC , carga la batería, y se conecta al AN0 (directamente en paralelo con 100nF)

« Última modificación: 19 de Abril de 2017, 16:34:41 por cvargcal »

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:ADC
« Respuesta #3 en: 19 de Abril de 2017, 16:48:07 »
que micro es? Hay algunos micros que tienen el módulo LVD(Low Voltage Detect).
Así, no es necesario usar ninguna entrada del AD.
Es ideal para aplicaciones con baterías y muy fácil de usar.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:ADC
« Respuesta #4 en: 19 de Abril de 2017, 16:57:18 »
que micro es? Hay algunos micros que tienen el módulo LVD(Low Voltage Detect).
Así, no es necesario usar ninguna entrada del AD.
Es ideal para aplicaciones con baterías y muy fácil de usar.

Estoy trabajando el <18F45K22.h>, pero a la final usaré el <18LF45K22.h>
Te refieres al Fuse? no tenia ni idea de eso.... voy a probar, aunque en realidad quiero saber la lectura todo el tiempo. Gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ADC
« Respuesta #5 en: 19 de Abril de 2017, 17:02:48 »
luismh se refiere al modulo HIGH/LOW-VOLTAGE DETECT o HLVD.

Este modulo te permite sin componentes externos medir la tension de entrada y que entre a una interrupcion si es que pasa un valor en concreto.

Lo bueno es que se compara la tension VDD o una externa contra una referencia de tension. Deberias leer el datasheet.

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:ADC
« Respuesta #6 en: 19 de Abril de 2017, 17:07:04 »
Ese micro si tiene LVD!
Te recomiendo que lo uses!
No es un fuse(creo que te estás confundiendo con LVP). Es un periférico más, parecido al AD, pero ya tiene conectado internamente la alimentación y por eso no es necesario usar otra entrada AD. De esa manera, compara el nivel de batería contra una referencia programable. Cada vez que la alimentación baja de este nivel programado, se dispara una interrupción.
Lee el datasheet y entenderás como funciona! Es fácil!


 

anything