Puerto Alimentación

Tengo alimentada la placa Arduino 328, mediante una bateria de 9v.
La cuestión es que estoy intentando realizar un código para medir el estado de la bateria de tal forma que me indique su capacidad en cada momento.
La duda que tengo es ¿como se denomina el puerto que tengo que utilizar o que número de puerto es el que tengo que introducir en el código, para que mida el estado de la bateria que está alimentando la placa?
gracias.

Si lo que quieres es medir el voltaje es facil, primero tienes que hacerte un divisor de tensión con dos resistencias en serie (que hay que calcularlas) para que baje la tensión de 9V a 5V porque si le metes 9v al arduino te lo cargas. Luego lo conectas en una entrada analógica y mides, luego tienes que hacer los cálculos para ver a cuanto equivale en Voltios, xk cunado mides analógico te d aun numero entre 0 y 1023, que son los niveles de tension que es capas de distinguir el conversor.

Gracias, pero tal vez no haya explicado correctamente el problema.
No quiero medir el estado de una batería externa, lo que quiero saber es cuanta carga tiene la bateria que está alimentando la placa arduino.

Medir la carga de una batería no es asunto trivial y depende del tipo de batería. Si sabes (o supones) la carga inicial, puedes ir midiendo el consumo (intensidad de corriente) a intervalos regulares para saber cuanta energía has sacado en cada momento. Tambien es posible "estimar" algo con una medida muy precisa del voltage, pero depende mucho del tipo de batería y de su estado (en el caso de ser recargable).

Hola, Hermano pero no es lo mismo pues la bateria que alimenta el arduino eso es una bateria externa lo que hay es que saber que carga tiene y ponderar su descarga y asi % se dice segun el convertidor que cargha tiene y listo.

Saludos.
Atten.
Alexander Santana.
Venezuela-Barcelona.

Según he leido los comprobadores de pilas tiene un circuito con una resistencia y un galvanómetro, y consideran que la pila hay que reemplazarla cuando su voltaje disminuye a 1/3 del voltaje nominal, estaría a media carga si el voltanje es aproximadamente 2/3. En el caso de Arduino ¿se podría realizar la misma presunción utilizando como carga el consumo nominal de la placa?

Según he leido los comprobadores de pilas tiene un circuito con una resistencia y un galvanómetro, y consideran que la pila hay que reemplazarla cuando su voltaje disminuye a 1/3 del voltaje nominal, estaría a media carga si el voltanje es aproximadamente 2/3. En el caso de Arduino ¿se podría realizar la misma presunción utilizando como carga el consumo nominal de la placa?

Dependiendo de la tecnología de las pilas/acumuladores, la curva de descarga es diferente. Además, en el caso de los acumuladores, esta cambia en función del número de ciclos.

Por ejemplo, en el caso de de una batería salina, su curva de descarga es muy tendida: se descarga poco a poco. Por contra una batería alcalina es mucho menos progresiva.

Lo que si podemos saber para un determinado tipo de batería es si, por ejemplo, la tenemos que cambiar o ponerla a cargar, pero discernir si está al 50% o al 70% de carga no es sencillo, por lo menos de forma fiable.

¿Cómo medir el voltage de una batería de 9V?. A una entrada analógica no podemos aplicar más de 5V, así que tenemos que reducir el voltage a medir. Eso se hace con un simple divisor de tensión formado por dos resistencias en serie: conectado un extremo a +9V, el otro a GND y el punto medio a una entrada analógica.

Si además ponemos las dos resistencias del mismo valor (10K, por ejemplo), tendremos exactamente la mitad de la tensión de la batería a la entrada analogíca de la placa Arduino, con lo que los 9V se convierten en un máximo de 4.5V. Para conseguir la lectura real (en voltios) de la batería solo tendremos que multiplicar el valor que nos retorne la función AnalogRead() por 10/1023

Exacto mas claro no puede cantar el gallo.

Saludos y esperamos las respuyesta del colega que inicio el tema.
Atten
Alexander Santana.
Venezuela-Barcelona.

Veo que la pregunta es mas compleja de lo que inicialmente preveía y voy a intentar simplificarla.
¿De que forma se puede hacer para que Arduino muestre un mensaje o emita un solido o cualquier otra propuesta cuando utilizando una bateria alcalina de 9 voltios el voltaje que sumistra a la placa baje, digamos a 7,5 voltios?

oye como ya se te explico mediendo su voltaje para eso hay que usar el convertidos AD pero hay que tener claro que por un pin del micro su alimentacion mayor es de 5 voltios para eso el voltaje de la bateria hay que hacerle un divisor de tension para que por mas cargada que este su voltaje de salida sea 5 voltios que son los que soporta en pin AD que en ese caso seria que la bateria esta a plena carga y segun vaya bajando el voltaje en la bateria tambien va bajando en el pin AD y asi se saca la relacion de la carga de la bateria.

Saludos.
Atten.
Alexander Santana.
Venezuela-Barcelona.

La parte del circuito me ha quedado clara, la duda es como se denomina o se hace referencia a la alimentación propia de arduino.
Es decir si estoy alimentando el circuito con un voltaje x, tras las fórmulas oportunas y demás requisitos electrónicos, ¿como se podría mostrar ese valor?

si estoy alimentando el circuito con un voltaje x, tras las fórmulas oportunas y demás requisitos electrónicos, ¿como se podría mostrar ese valor?

Se pude mostrar de muchas maneras: por un display, por el terminal del IDE de Arduino...

Igual si nos cuentas exactamente lo que intentas hacer te podríamos orientar mejor.

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](Por cierto, asumo que el consumo en tu aplicacion es constante. Si no lo es, tendras que medir la corriente consumida y durante cuanto tiempo. Sabiendo la capacidad (mA/h) de la pila, pues sabes lo que te queda. Aqui tienes info de las capacidades tipicas de estas baterias Nine-volt battery - Wikipedia)[/edit]

Saludos y espero que esto te sirva. :wink:

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.

:wink:

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"