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 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 travez de el adc, pero sucede algo muy raro, en igual de que mi pila me valla dando valores mas pequenos en cuanto se valla descargando sucede lo contrario me empieza dar valores mas altos, lo cual es una tonteria.
me puse 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
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
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 subir en igual y por logica me empieze mostrar valores mas cercanos cero medidda que se valla descargando la pila
estoy investigando si el convertidor analogico de arduino varia respect 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 travez de el adc, pero sucede algo muy raro, en igual de que mi pila me valla dando valores mas pequenos en cuanto se valla descargando sucede lo contrario me empieza dar valores mas altos, lo cual es una tonteria.
me puse 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
code: [select]
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
code: [select]
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 subir en igual y por logica me empieze mostrar valores mas cercanos cero 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
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
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 tu ecuación debes hacerles ajustes

o sea que vin = vout * ((r1+r2)/r2)
tu leerás en el ad
si dices alimentar con algo de 3.7v por el pin de 5v mira esto
code: [select]
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: default analog reference of 5 volts (on 5v arduino boards) or 3.3 volts (on 3.3v arduino boards)
- internal: built-in reference, equal 1.1 volts on atmega168 or atmega328 , 2.56 volts on atmega8 (not available on arduino mega)
- internal1v1: built-in 1.1v reference (arduino mega only)
- internal2v56: built-in 2.56v reference (arduino mega only)
- external: voltage applied aref pin (0 5v only) used 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 tu ecuación debes hacerles ajustes

o sea que vin = vout * ((r1+r2)/r2)
tu leerás en el ad
code: [select]
float batt;
batt= (float) ((analogread(a0)*1.1)/1023.0)* (16.7/4k7);
batt = (float) (0,00382 * analogread(a0)); // usa solo esto.
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Convertidor ADC
arduino
Comments
Post a Comment