Circuito simple de desconexión de bajo voltaje para Arduino

Prefacio:

  • Bajo la impresión de necesitar un corte de bajo voltaje, para evitar que la batería recargable 2x AA NIMH se agote también ahora y se dañe. (¿¿bien??)
  • En el despliegue, este circuito estará comúnmente expuesto a un evento de descarga completa si está permitido.

Concepto:

  1. El interruptor momentáneo S1 se mantiene presionado, activando Q1 para encender 328p
  2. Sketch comienza y Setup() llama a digitalWrite(A5, LOW)
  3. S1 ahora se puede liberar ya que Q1 se mantiene BAJO por A5
  4. La batería se agota, lo que activa la detección de caída de voltaje (BOD), se reinicia 328p y desconecta Q1

Notas:

  • R1 es una rueda de resistencia y experimenté con diferentes valores para que funcione. (como no he hecho los cálculos)
  • Tengo esto ensamblado en la placa de prueba, la radio y el módulo LCD no se muestran en la imagen
  • Con A5 desconectado, funciona bien (mientras se mantiene presionado S1), cuando está apagado, 0ma en el amperímetro.
  • Con A5 conectado, puede funcionar con un valor más alto de R1 (47k) para evitar que se inicie solo, pero cuando está apagado, el amperímetro lee alrededor de 2 ma.

Este 2ma sigue siendo suficiente para agotar la batería de manera significativa si se deja descargada durante algún tiempo. Supongo que los 2ma y la necesidad de una resistencia de 47k están relacionados con lo que aparece como una 'fuga' de A5 mientras arduino está apagado.

He podido reducir el consumo de corriente de 2ma mientras estaba apagado colocando una resistencia pullup entre A5 y +V

Tengo espacio limitado, así que necesito mantener las cosas simples.

Comentario:

  • ¿Alguna mejora/sugerencia para solucionar el problema del A5 con fugas?
  • ¿O generalmente satisface mejor mis necesidades de diseño?

Circuito:

Su pregunta es un poco confusa ya que menciona que con A5 desconectado lee 0 en su amperímetro, sin embargo, con la configuración que tiene arriba, el medidor está en serie con su ruta de suministro, por lo que, a menos que el AtMega328P consuma una corriente insignificante que no se registra con su medidor entonces algo anda mal con su estado de cuenta. Me parece que maneja la base del transistor con aproximadamente 1 mA cuando está activo, por lo que no estoy seguro de por qué el AtMega328P está apagado cuando está suministrando 2 mA a la base. Además, en lugar de conducir A5 bajo, intente poner el pin en un estado de alta impedancia.
@sherrellbc, estoy hablando de cuándo Q1 está apagado/inactivo y, por lo tanto, el 328p está apagado. Todavía hay consumo a través del amperímetro de 2ma con A5 conectado. ¿Puedes explicar "intenta poner el pin en un estado de alta impedancia"?

Respuestas (5)

Su diseño requiere que el pin A5 tenga el mismo voltaje que la batería para apagar el sistema. El problema es que cuando quita la energía del Arduino, el pin A5 ya no puede permanecer alto: hay diodos de protección internos que obligan a que su voltaje no sea superior a V + más la caída del diodo (alrededor de 0,7 V).

La solución más simple es agregar un segundo transistor (NPN) que invierte la lógica del pin A5: cuando A5 está alto, el sistema está encendido y usted conduce A5 bajo para apagarlo. Esto apaga ambos transistores y la corriente de reposo debe ser cero.

Además, debe considerar usar un MOSFET de canal P en lugar de su PNP BJT. Será más eficiente: menos caída de voltaje en el Arduino cuando está encendido y no se desperdiciará corriente a través de la terminal de la puerta.

esquemático

simular este circuito : esquema creado con CircuitLab

He usado un FET de canal N en lugar de un transistor NPN. El Arduino puede conducirlo directamente, y la única corriente "desperdiciada" son los 30 µA o más que fluyen a través de R1 cuando se enciende el sistema.

Espero más detalles y gracias por su aporte, solo para aclarar en caso de que se lo haya perdido, A5 BAJO = 328p ENCENDIDO a través de Q1 y A5 ALTO o flotante = apagado
+1 para la sugerencia de MOSFET: en mi experiencia, el diseño simple con ellos es mucho más fácil. Simplemente usar el MOSFET resolverá el problema de 2 mA que menciona en la publicación.
hay un problema con su circuito, el mosfet M2 está 'enganchado', por lo que una vez encendido por A5 alto, no se apaga a pesar de que arduino se está reiniciando, por ejemplo, se apaga, es probable que necesite una resistencia desplegable si es posible
Entendí mal tu descripción. Pensé que después de que Arduino se reinicia, conducirías activamente A5 bajo para apagar todo. Ahora entiendo que quiere decir que cuando el BOD reinicia el Arduino , quiere que todo se apague. Por supuesto, simplemente agregue un menú desplegable a la puerta de M2. Actualizaré el dibujo.
Para cubrir todas las contingencias, en caso de que el Arduino logre reiniciarse, cuando se reinicie, debe verificar el motivo del reinicio anterior; si fue BOD, debe reducir inmediatamente A5. No sé qué tan fácil es hacer esto dentro del entorno de software de Arduino; es posible que deba personalizar parte del código de la biblioteca.
Gracias, el menú desplegable funciona. Puedo el voltaje interno en un 328p, pero no es demasiado necesario. Eventualmente, se aplanará lo suficiente como para quedar atascado en BOD. Pero también solo tiene que soltar A5 momentáneamente y no puede reiniciarse sin SW1.
Encontré los siguientes mosfets de orificio pasante que también funcionan: 2N7000 y ZVP4105A

He leído varios foros sobre este tema, pero con mis componentes utilicé un enfoque diferente y creé un esquema general de Arduino que mide el voltaje de la batería y lo apaga cuando alcanza el límite de bajo voltaje.

  • A0 mide el voltaje de la batería a través del divisor de voltaje 1:1
  • D5 es alto y cuando el voltaje de la batería alcanza el límite del amante, el pin Arduino pasa a BAJO
  • El OPTOCOUPLER 4N35 se utiliza para desacoplar el pin Arduino con la batería apagada
  • El botón S1 se usa para iniciarlo
  • Usé el MOSFET de canal N 2N7000 simple ya que tengo menos de 100 mA de corriente. Si se requiere más corriente, usaría STP36NF06L o IRL2203.

arduino batería medir y proteger

ese es ciertamente un enfoque novedoso y uno que puede tener sus méritos, gracias.
¿Hay alguna manera de hacer que se apague y se encienda con el interruptor?
tal vez con otra resistencia para cambiar el divisor 1: 1 para reducir eléctricamente el voltaje para A0. por ejemplo, agregando paralelo a R2 un nuevo 10kR3 y un nuevo interruptor. Entonces, si presiona el interruptor R2 + R3 obtendrá 5k y el divisor sería 1: 2, por lo que 3.7V será 1.23 y no 1.85V en el pin arduino A0 (entonces arduino apagará el circuito).
publicación que describe el circuito: homeduino.blogspot.com
Es una buena idea. También revisaré tu publicación en el blog.

Si necesita un corte de bajo voltaje, tal vez un IC de detección de voltaje específico podría ayudar. He visto el Microchip TC54 utilizado en aplicaciones similares. Es un dispositivo bastante pequeño por lo que no ocupará mucho espacio.

Gracias por la sugerencia, y si me quedo sin opciones con las partes comunes que tengo, seguiré esto. Como tendré que pedirlos a OS (estoy en AU) y podría retrasar mi proyecto varias semanas.

Intente configurar el pin A5 en Z alto (tri-estado) cuando no lo use.

Página 77 aquí .

Sin embargo, tendrá que salir de los límites de las bibliotecas de Arduino para hacerlo, pero es muy simple y solo tiene dos líneas de código.

Miré y es un poco confuso para mí, pero ¿cómo tendría algún efecto cuando el arduino está apagado?

El problema con el primer circuito en la parte superior de la página es que el AtMega328 se alimenta a través de su pin de E/S A5. La corriente pasa desde el positivo de la batería a través de la unión base/emisor BC557 a través de R1 a A5. Desde A5 pasa internamente a través del ánodo/cátodo superior del diodo de protección superior interno hasta el destino final de VCC. Cambie BC557 a un mosfet de canal P y el problema se resuelve, porque no pasa corriente entre la fuente y la puerta como ocurre con la unión de emisor/bajo.