Puerto Alimentación

La cuestión no es medir el voltaje de una pila conectada a un pin determinado, eso lo tengo claro. Lógicamente no se trata de hacer un divisor de tensión para modificar el voltaje de entrada, si Arduino se está alimentando con una pila de 9 voltios ode 12 v, hay que dejarla tal cual, ahora bien partiendo de esa alimentación obtener la información (en pantalla o mediante puerto serie al ordenador, eso tambien está claro) Como decía en el primer mensaje, se trata de mostrar la información del voltaje que está recibiendo la placa Arduino, de tal forma (ya estudiaré la siguiente cuestión mas tarde) que cuando ese voltaje baje yo pueda conocerlo y prevenir que la placa arduino se quede sin alimentación. Con vuestras respuestas, que agradezco, lo que me planteo es si ¿se puede hacer esto?

P.D. El ejemplo mas claro que se me ocurre es el siguiente: al igual que en la pantalla de nuestros móviles nos aparece una serie de barritas indicándonos la carga de batería que nos queda ¿se puede hacer algo similar en Arduino?

La cuestión no es medir el voltaje de una pila conectada a un pin determinado, eso lo tengo claro.
Lógicamente no se trata de hacer un divisor de tensión para modificar el voltaje de entrada, si Arduino se está alimentando con una pila de 9 voltios ode 12 v, hay que dejarla tal cual, ahora bien partiendo de esa alimentación obtener la información (en pantalla o mediante puerto serie al ordenador, eso tambien está claro)
Como decía en el primer mensaje, se trata de mostrar la información del voltaje que está recibiendo la placa Arduino, de tal forma (ya estudiaré la siguiente cuestión mas tarde) que cuando ese voltaje baje yo pueda conocerlo y prevenir que la placa arduino se quede sin alimentación.
Con vuestras respuestas, que agradezco, lo que me planteo es si ¿se puede hacer esto?

P.D. El ejemplo mas claro que se me ocurre es el siguiente: al igual que en la pantalla de nuestros móviles nos aparece una serie de barritas indicándonos la carga de batería que nos queda ¿se puede hacer algo similar en Arduino?

Entiendo que la pregunta es como conseguir conectar la tensión externa de alimentación de la placa Arduino a una entrada analógica ¿no?

Si es así puedes hacer uso de un pin que tienes en la placa que se llama VIN, en este pin tienes la tensión de la pila menos la caida de tensión en un diodo, esto es, que si pones un divisor de tensión con dos resistencias iguales (tal y como te comentaba en un post anterior) para medir VIN, solo tienes que multiplicar la lectura de AnalogRead() x 10/1023 y añadir 0.6V de la caida del diodo

Hola AntonioT,

Hace tiempo hice unas pruebas con una pila alcalina de 9v (PP3).

Copio lo que ya publique una vez en el foro:

En concreto he usado una Sony Stamina PLUS 6AMB-B1A (Alcalina).

El Diecimila + LCD Displaytech 162 B lleva más de 9 horas continuas de funcionamiento, y el voltaje de la pila esta a unos 7 voltios.
Ha estado funcionando adquiriendo un dato de un sensor y mostrando en pantalla el valor en mV en la primera linea y el convertido en la segunda. El refresco es aproximadamente 350 ms.
El consumo total es de 32mA.

Los resultados han sido:
Start.- 9,23 voltios
1h.- 8'41 v
2h.- 8'07 v
3h.- 7'82 v
4h.- 7'61 v
5h.- 7'46 v
6h.- 7'32 v
7h.- 7'22 v
8h.- 7'11 v
9h.- 7'03 v

No he encontrado las curvas de esta pila en concreto, pero viendo el funcionamiento, se asemeja mucho a las duracell http://docs-europe.electrocomponents.com/webdocs/01b2/0900766b801b2da8.pdf
Por si alguien quiere hacer estimaciones en su diseño.

Ahi tienes un link (http://docs-europe.electrocomponents.com/webdocs/01b2/0900766b801b2da8.pdf ) que puedes ver aproximadamente como se comporta una pila de este tipo. Como se puede ver, una vez pasados la barrera de 7V, se entra en una parte muy abrupta (segun corriente requerida). A parte, como dice complubot tienes 1 diodo + caida de tension del regulador, por lo que 7 voltios es un limite que te da cierto margen. En teoria si el regulador tiene una caida de 1 voltio, el diodo 0.6 y la salida son 5 voltios necesitas al menos 6.6 voltios.

Segun el consumo que tengas en tu montaje, puedes monitorizar y saltar la alarma de bateria baja en aquel limite que consideres suficiente para que el usuario tenga tiempo para cambiarla. Por ejemplo, si ves los datos de mi experimento, con 7.22 voltios tendria algo mas de 2 horas de margen (asumiendo funcionamiento continuo). Esta claro que no es 100% cientifico, ya que depende de muchas cosas(corriente, temperatura,ciclos,....) pero es algo...

Nunca repeti la prueba, pero te puedo decir que para la aplicacion que queria (no continua) y despues de "tunning" (cambiar delays por Power Save Mode) en el soft para bajar consumos, me da para bastante tiempo de funcionamiento en el invento que hice. Aunque la verdad que este tipo de pilas no tienen demasiada capacidad.

edit[/edit]

Saludos y espero que esto te sirva. ;)

Igor R.

Muchìsimas gracias por toda esta información, pero la ausencia de conocimientos me hace preguntar de nuevo. Según entiendo de este pin llevaría la alimentación a un pin analógico para su lectura por lo tanto el voltaje debería ser pequeño 5 V?) y aquí surge la nueva pregunta a raiz de los valores que nos ofrece Igor. Buscando información interpreto, que este pin actua como sumistrador de energía cuando la alimentación a la placa Arduino se hace por la conexión jack, pero no he localidado que voltaje es el que dá ¿este valor dependerá del voltaje de entrada y como tal podré utilizar como referencias los valores obtenidos por Igor?

VIN = V baterias - 0.6V

Por cierto, recuerda que mis valores son para una prueba a 32 mA. No es algo "universal". Puedes ver en las graficas de duracell como cambia segun la potencia suministrada.

;)

Hola, yo también estoy mirando este tema. El caso es que yo solo quiero ver la tensión de una batería (que a su vez alimenta a la placa de arduino). Voy a utilizar una entrada analógica del micro con un divisor de tensión, ya que la batería puede alcanzar hasta 8.2 V cuando está cargada al máximo. Utilizaré dos resistencias iguales para tener como mucho 4.1 v a la entrada analógica. También estoy pensando en utilizar resistencias de alto valor para que el consumo sea menor, pero tengo una duda al respecto. ¿cuál es la máxima corriente que soporta la entrada analógica? Tengo miedo de cargarme la placa puesto que no se cual es el máximo valor que admite (creo que al poner el divisor de tensión con resistencias de alto valor, la corriente circulará principalmente por la entrada analógica...corregidme si me equivoco). He mirado el datasheet del micro pero no logro localizar el dato. (la placa es una arduino nano con un atmega168)

¿cuál es la máxima corriente que soporta la entrada analógica? Tengo miedo de cargarme la placa puesto que no se cual es el máximo valor que admite (creo que al poner el divisor de tensión con resistencias de alto valor, la corriente circulará principalmente por la entrada analógica...corregidme si me equivoco). He mirado el datasheet del micro pero no logro localizar el dato. (la placa es una arduino nano con un atmega168)

La corriente que circula por la entrada analógica es despreciable y está determinada por la impedancia de entrada de la propia entrada.

Lo que si es importante es no poner la resistencia muy grande ya que según dice en la página 250 del manual de referencia del ATMEGA168: "El ADC (convertidor analógico a digital) está optimizado para señales analógicas con una impedancia de salida de aproximadamente 10k"

Tampoco puedes poner las resistencias muy pequeñas. Aunque la entrada analógica tenga un consumo despreciable el par de resistencias que pongas puede no tenerlo. Al fin y al cabo lo que tiene es: Vin ----[R1]--x--[R2] ---- gnd X es donde conectas con la entrada analógica, como estamos despreciando su consumo tienes que la rsistencia total es R1+R2, si pones las dos resitencias iguales (para que el punto central de la mitad de voltaje) tienes que la resistencia total es Rt = 2R1.

La ley de Ohm dice que V=IR. Tu Vin estará entre 9 y 7 voltios. La Intensidad se queda en I = V / Rt. Si pones unas resistencias pequeñas (pongamos de 330 Ohms) la intensidad que consumirá será I = 8 /(330+330) = 8 / 660 = 0.012 unos 12 mA. Eso es un consumo muy elevedo, quizás mayor que el del resto del circuito, en ese caso la medición afectaría mucho a la duración de la pila.

Así que tienes que poner resistencias mayores, y llegar a un equilibrio. Las resistencias mas grandes que juntas no lleguen a lo 10K Ohms (impedancia máxima de lo que conectes a una entrada analógica). Si pones las resistencias de 4k7 Ohm tendrás un cónsumo de sólo 8/(4700+4700) = 8/8400 = 0,8 mA.

Hola a todos. Pues nada, me he puesto manos a la obra y he puesto el divisor de tensión, con unas resistencias muy elevadas como comente...la lectura de la tensión de la batería la hace correctamente y tengo un consumo extra de solo 300 uA, pero por contra, tengo un lm35 (sensor de temperatura) conectado a la A0, y en el momento que pongo el divisor de tensión sensando la batería, comienzo a tener lecturas muy variables...vamos creo que es ruido...si desconecto el divisor, todo va bien... ¿Creeis que es por tener las resistencias demasiado altas (100K)? Llevo toda la tarde estrujandome la cabeza y no se como puedo hacer para tener las lecturas a la vez

No sé si será solo eso ya que no conocemos el 100% de lo que estas haciendo, pero si el fabricante te dice que ha diseñado el circuito de entrada para 10K y tu le pones 100K...

hola buenos dias con la explicacion que coloco el colega xlopez queda todo bien claro hermano nose porque tomastes valores de 100k coloca resistencias entre 4k7 y 10k y veras que todo anda bien.

Saludos y estamos leyendo tus resultados. Atten. Alexander Santana. Venezuela-Bareclona.

[u]Nota:[/u] Pronto me inicio en un proyecto de una fuente variable donde quiero mostrar en un lcd voltaje de la fuente y usare el principio del divisor de tension con la entrada AD, tambien quiero medir el consumo de la carga (ampeje) y por ultimo la temperatura de toda la fuente y con esas variables tomar un control de proteccion. luego les aviso si lo experimento con arduino. bye

Hola a todos,

lo primero es que yo creo que hay que medir la tensión en la batería (antes del regulador). Haciendo el símil con las barritas de carga del teléfono la situación de cero barritas debería de estar en la tensión de 5V más la tensión de dropout del regulador de la placa (2V creo pero se puede consultar en el datasheet). La situación de todas las barritas en función de la tensión nominal de la pila y el resto proporcionalmente. Este sistema no te da una idea de la carga de la pila (depende de la curva de descarga), pero si la información de forma aproximada, como los móviles.

Hay que hacer un divisor de tensión, con dos resistencias de 4,7K incrementas el consumo menos de 0,5mA y no influye demasiado la impedancia de la entrada analógica, la tensión nos queda dividida por dos. Eso no tiene porque provocar ruido en otra puerta analógica, pero si lo provoca lo puedes eliminar con un filtro RC o con un filtro pasabajos por SW (por ejemplo haciendo 20 lecturas del sensor de temperatura y calculando el promedio).

http://www.zigbe.net/

Hola a todos. Problema solucionado. Efectivamente, estoy leyendo directamente la tensión de la batería antes de ponerla a la placa. Lo único que quiero es controlar que está entre dos valores (8 V y 6V). Con eso es suficiente. No quiero poner barritas ni nada de eso. A lo que iba, el problema es que accedía a las lecturas de manera muy rápida (el código de acceso a las analógicas estaba uno seguido del otro) y no le daba tiempo a la lógica interna del micro a estabilizarse (una entrada leía casi 5 v y la otra como máximo 20 mV). Lo de las resistencias...no parece que importe demasiado...

Hola a todos, yo también estoy con esto de medir la batería, mi problema es similar, yo alimento el arduino con una batería de 12v y 7,5Ah (con un regulador 7805) y necesito monitorizar la tensión de batería. He hecho un divisor de tension con una resistencia de 22k y otra de 10k (para que el valor máximo sea de 16v, ya que carga con una placa solar) segun el circuito de la imagen:

¿como inserto una imagen? :(

El problema es que la medicion fluctua mucho (la tensión no) si la tension es de 12,97v, el divisor de tensión la convierte en 4,05v y el arduino lee entre 837 y 845, que si multiplico por 16 (valor de la batería si el divisor entrega 5v) entre 1023 sale que la tensión de la batería esta entre 13,00 y 13,12. Esto me parece demasiado oscilar. Y la pregunta es: ¿En que calculo me he equivocado?

Atentamente.

Juan.

P.D. si hace falta y me explicáis como pongo el circuito que he utilizado.

Hola abmicros.

Pasaba por aquí, y me he leído el hilo, pues yo también tenia dudas con este tema.

Leyendo mensajes anteriores, veo que la causa puede ser que la impedancia que presentas a la entrada analógica, es mas alta de lo que especifica el fabricante 10k como apuntan los compañeros.

Tu tienes 22k + 10k = 32k

Un saludo.
Y aprovecho para saludar a todo el foro (es mi 1er mensaje).

Buenas, he cambiado las resistencias por una de 4,7 y otra de 1,5. Según la hoja de excel que he hecho el valor máximo ahora es de 20,666666v (que es mejor). Ahora con un valor en la bateria de 12,97 (no he consumido nada) la entrada analogica me reporta un valor de entre 656 y 665, lo que pasado a valor de bateria oscila entre 13,34v y 13,16v, lo cual sigue siendo (según lo veo yo) demasiada oscilación. :(

De todo lo anterior deduzco que no es problema de impedancia, pero era una buena idea. ;).

¿Alguna otra idea?

Muchas gracias.

La resistencia de salida de dicho divisor siempre va a ser menor de 10K, ya que es 22K en paralelo con 10K, por lo que será una resistencia menor a la menor de ambas.

Cuando dices que te devuelve un valor de 656 a 665, ¿va cambiando según pasa el tiempo o lo hace aleatoriamente (sube y baja)? También ten en cuenta que si tienes algo conectado al Arduino puede modificarse el voltaje. No estaría mal que pusieras una foto del montaje, por comprobar cosas.

Un saludo

Yo de ti medía con un voltímetro cual es el voltaje que te está dando la batería, para comparar.

Y si tienes un osciloscopio mucho mejor, podrás ver si hay cambios muy rápidos.

No se como poner fotos, pero de momento el circuito que tengo es el arduino por un lado y la batería por otro. La batería solo tiene conectado el divisor de tensión (ambos tienen el negativo común), y el arduino solo tiene conectado el usb y el divisor de tensión. Los valores van oscilando, ni sube ni baja, ahora 656, ahora 660, ahora 659, ahora 665, etc. La batería ha compruebo con un polímetro y da siempre 12,97.