Convertidor ADC

Hola Buenos dias tengo una pregunta creo importarten para este tema, que no se me ha resuelto.

estoy investigando si el convertidor analogico de Arduino varia respect a la alientacion del mismo.

porque digo esto?

tengo un Sistema de Arduino el cual alimento con una lipoid 3.7V conecto el +de la pila en el 5v pin de Arduino y GND con GND,

para saber la carga de mi pila ps lee sju voltaje a travez de el ADC, pero sucede algo muy raro, en igual de que mi pila me valla dando valores mas pequenos en cuanto a se valla descargando sucede lo contrario me empieza a dar valores mas altos, lo cual es una tonteria.

me puse a estudiar los adc los divisors de voltaje

y si e logrado comprendo como se lee o como se hace una ecuacion para poder leer el voltaje de la pila

lo cual se supone que seria

Float batt=0;
batt=analogRead(A0);
batt= ((batt*5)/(1023));

pero el codigo que yo uso es con otro arreglo y supongo que es porque mi pila es una 3.7v, toma de referencia exactamento lo que sale por el pin3.3V

    value_batt=analogRead(A0);
    value_ref=analogRead(A1);
    value_ref= 3.30 / value_ref;
    value_batt=value_ref*value_batt;
    value_batt*=5.789;

el 5.789 es por el divisor de voltaje que tiene el circuito, pero la verdad y espero alguien me ayude en estas epocas para que sea mi regalo de navidad , porque el voltaje impreso tiende a subir en igual y por logica me empieze a mostrar valores mas cercanos a cero a medidda que se valla descargando la pila

Y dime... dices haber comprendido pero no ves el error en tu afirmación. Si dices alimentar con algo de 3.7V por el pin de 5V mira esto

Float batt=0;
batt=analogRead(A0);
batt= ((batt*5)/(1023));

porque pones batt*5 si no EXISTE 5V ? Tu tienes 3.7V y cayendo por lo que deberías hacer esto:

Si tienes un UNO existe una tensión de referencia interna de 1.1 que puedes elegir.

Acá esta AnalogReference Bueno esta función nos permite trabajar con otro rango dinámico para el ADC

  • DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)
  • INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328 and 2.56 volts on the ATmega8 (not available on the Arduino Mega)
  • INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)
  • INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)
  • EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

Explicado esto te doy mis opciones. Opción 1: Usas INTERNAL por lo que el UNO leerá hasta un máximo de 1.1V pero dijiste tener una bateria LIPO de 3.7V asi que tienes que armar un divisor resistivo tal que de 3.7V no superemos 1.1V Usa este calculador de divisor de tensión Yo puse 3.9V máximo 1.1 de Vout una R2 de 4k7 y salió casi 12k de R1

Entonces con esta opción tendrás lecturas correctas pero a tu ecuación debes hacerles ajustes o sea que Vin = Vout * ((R1+R2)/R2) Tu leerás en el ad

float batt;
batt=  (float) ((analogRead(A0)*1.1)/1023.0)* (16.7/4k7);
batt = (float) (0,00382 * analogRead(A0));    // usa solo esto.

hola buenas tardes, ps mira lo que pasa esque si intent usar el INTERNAL1.1 para mega, pero que es lo pasaria aqui?

tengo una shield llena de sensores los cuales trabajan bajo una libreria, entonces si yo doy una referencia de 1.1 no estaria afectando las mediciones de los otros sensores?
y para poder medirlo use un divisor de voltaje con los siguientes datos:

r1=4.7
r2=1k

4.2(1/5.7)=0.714V como valor maximo, dime hasta aqui si estoy en lo correcto.

y porfavor tambien aclarame mi siguiente pregunta sobre si al usar una referencia analoga de 1.1 estoy afectando los valores de los otros sensores.

siguiente pregunta:

float batt;
batt=  (float) ((analogRead(A0)*1.1)/1023.0)* (16.7/4k7);
batt = (float) (0,00382 * analogRead(A0));    // usa solo esto.

que es lo que quieres de use de ese codigo?
que linea?

siguiente pregunta:

 value_batt=analogRead(A0);
    value_ref=analogRead(A1);
    value_ref= 3.30 / value_ref;
    value_batt=value_ref*value_batt;
    value_batt*=5.789;

que hago mal,

amigo al respect de la alimentacion por los 5Vpin es algo que me tiene muy desconcertado, porque lo conecto a travez del VINpin y por logica no funcionara bien porque pasa por los reguladores de voltaje y de 3v y 5v y mi pila es de 3.7, pero al conectarla en el 5vpin todo funciona bien.

porfavor dame todos tus puntos de vista, incluso si me pudieras ayudar con una videollamada para platicarte muy muy a fondo mi problema, todo esto si tienes tiempo, porfavor

1era pregunta:

tengo una shield llena de sensores los cuales trabajan bajo una libreria, entonces si yo doy una referencia de 1.1 no estaria afectando las mediciones de los otros sensores?

Para empezar no puedes isar 3.7V para alimentar por pin 5V a tu arduino. O usas 5V o compras un DUE y lo alimentas debidamente. Si quieres seguir con tu idea.. sigamos.

Si claro que afecta todo. Donde tienes 5 deberá decir 1.1 porque es lo maximo que tienes cuando el adc lee 1023 cuentas.

2da

que es lo que quieres de use de ese codigo?

Lo que te puse. Ahora hablas de referencia 3.3V y no dices que Arduino estas usando pero parece ser un MEGA que tiene 3.3V disponible

3ra afirmación pregunta

al respect de la alimentacion por los 5Vpin es algo que me tiene muy desconcertado, porque lo conecto a travez del VINpin y por logica no funcionara bien porque pasa por los reguladores de voltaje y de 3v y 5v y mi pila es de 3.7, pero al conectarla en el 5vpin todo funciona bien.

Ya te respondí pero lo vuelvo a hacer. No debes alimentar con 3.7V por el pin 5V Debes usar un pack de tensión mayor a 6.5V o te compras algo que trabaje a 3.3V

ok ahorita estoy intentado hacer el codigo que me dijiste con el internal en un Arduino uno yo uso un divisor de 4.7kr1 y 1kr2 y me marca cero xD, no e podido dar con el golpe:S

Trata de explicar que placa Arduino usas, porque estoy confundido con tu explicación. Es un MEGA ORIGINAL o CLON?