Sistema de apagado por software.

Hola a todos. Llevo unos días pensando en un modo de apagar el arduino (todo el sistema, en realidad) pero queria que se pudiera hacer desde el software. El motivo de hacerlo así es darle la oportunidad al arduino de guardar ciertos datos de configuración antes de apagarse. Entiendo que el modo más facil de hacerlo es programar una opción en el menú para almacenar dichos datos, pero el mundo de prisas en el que vivimos, y la curiosidad de ver si soy capaz de hacerlo así, me llevó a buscar una alternativa. Por esto, quería haceros la consulta a los gurús de la electrónica para ver qué os parece esta solución y si le veis pegas.

Según el esquema que podéis ver en la imagen adjunta, al actuar sobre el pulsador se activa la bobina del relé (Lo he representado así para indicar el uso de un relé biestable). Esto hace que la tensión llegue a arduino, iniciando el sistema. Para finalizar, arduino pone a nivel alto una salida que activa de nuevo el relé, conmutando la alimentación de arduino a tierra y provocando su desconexión. Por supuesto, es un esquema muy simple y he obviado sistemas de seguridad o drivers a la hora de actuar el relé, es sólo para que veáis el funcionamiento básico.

¿Qué me decís? ¿Es una tontería lo que estoy diciendo? Quería vuestra opinión antes de gastar tiempo y dinero desarrollando esto. Muchas gracias por adelantado. Un saludo.

No es mala idea; presionas el botón y eso energizará el Arduino; él cual en el setup pondrá en estado alto un pin que mantendrá conductivo un transistor (este conduce así que ya puedes soltar el botón). Cuando lo quieras apagar, solo cambia el estado de ese pin y listo (si el botón por alguna razón quedara pulsado, nunca llegaría a apagarse).

En tu esquema, paralelo al pulsador debe un transistor que será gobernado por el Arduino. No sé si me he explicado la idea.

Y que cambia con usar SLEEP para que arduino se duerma o despierte y un simple pulsador sin el biestable?

Lucario448:
No es mala idea; presionas el botón y eso energizará el Arduino; él cual en el setup pondrá en estado alto un pin que mantendrá conductivo un transistor (este conduce así que ya puedes soltar el botón). Cuando lo quieras apagar, solo cambia el estado de ese pin y listo (si el botón por alguna razón quedara pulsado, nunca llegaría a apagarse).

En tu esquema, paralelo al pulsador debe un transistor que será gobernado por el Arduino. No sé si me he explicado la idea.

Bueno, la idea es similar, ya que tal como tu lo explicas, arduino debe mantener corriente en el transistor, y este en el relé, con el consiguiente consumo de corriente. La idea de usar un relé biestable es que, con un pequeño y momentaneo aporte de energía, se conecta la alimentación de arduino.

El transistor gobernado por arduino junto al pulsador no lo pillo. El pulsador es para iniciar, para apagar arduino actúa sobre la segunda bobina del relé, ahora sí a través de un transistor, desconectando la alimentación de arduino.

surbyte:
Y que cambia con usar SLEEP para que arduino se duerma o despierte y un simple pulsador sin el biestable?

Lo pensé por un momento, pero luego, sin saber tampoco el consumo que tiene Arduino en modo Sleep, lo descarté. Ahora que lo has comentado tú, he buscado que en el modo de menor consumo son sólo 0.36mA, prácticamente nada incluso si usamos pilas o baterías para nuestro proyecto, pero además, una vez en modo Sleep, podemos desconectar Arduino.

Mi objetivo no es que arduino se apage por una orden del software, no hay inconveniente en apretar un botón o un interruptor, lo que yo quería era poder guardar esos datos de configuración antes de apagar.

Está claro que la versatilidad de Arduino siempre nos proporciona varias soluciones para un mismo problema. Gracias por la alternativa.

Newton666:
he buscado que en el modo de menor consumo son sólo 0.36mA, prácticamente nada

Es que para maximizar el ahorro habría que prescindir de todo regulador y eliminar los LEDs.

Newton666:
lo que yo quería era poder guardar esos datos de configuración antes de apagar.

Por "apagado" tu decides si se trata de ponerlo a dormir, o cortar del todo la fuente.

Newton666:
La idea de usar un relé biestable es que, con un pequeño y momentaneo aporte de energía, se conecta la alimentación de arduino.

¿Eso existe? Que yo sepa, para mantener el relé en un estado, se debe ya sea mantener energizada o no la bobina.

Newton666:
El transistor gobernado por arduino junto al pulsador no lo pillo.

No, te lo pondré más sencillo: olvida el relé y utiliza el pulsador en paralelo con el transistor (preferiblemente MOSFET) como interruptores de la alimentación del Arduino.

Newton666:
La idea de usar un relé biestable es que, con un pequeño y momentaneo aporte de energía, se conecta la alimentación de arduino.

Lucario448:
¿Eso existe? Que yo sepa, para mantener el relé en un estado, se debe ya sea mantener energizada o no la bobina.

Sí existe. "Relé de enclavamiento" o "latching relay" para los angloparlantes.

Se mantiene "mecánicamente" en una u otra posición indistintamente. Y los hay con una o dos bobinas. Los de una bobina se ha de cambiar la polaridad de la bobina en uno u otro sentido para que se posicione en uno u otro estado. Con los de dos bobinas basta con alimentar una u otra bobina, sin cambiar la polaridad, para que posicione en el estado deseado (estos són más prácticos). Una vez ha cambiado de estado se puede dejar de alimentar la bobina y el relé permanece en ese estado. Basta, normalmente, con alimentarla unos cientos milisegundos para conseguir el cambio.

0.36mA aun puede mejorarse.