Estoy trabajando en un proyecto ATMega que mantendrá el tiempo y estoy tratando de hacerlo para que tenga una opción de RTC de tiempo de software (basado en millis()), DS1307 o DS3231 (ChronoDot).
En lo más básico, lo que me gustaría hacer es tener encabezados para un ChronoDot disponibles para soldar y luego, de alguna manera, en el software, detectar si el ChronoDot está conectado y cambiar a usarlo. Por lo general, sería bastante fácil verificar que el DS1307 o el DS3231 estén presentes, ya que usan el mismo registro I2C, pero después de esa verificación inicial, se desvían un poco el uno del otro y el último tiene más funciones. Así que todavía quiero determinar cuál está conectado. En general, planeo tener un lugar directamente a bordo para soldar en el DS1307 como la opción predeterminada y el soporte de DS3231 sería con un ChronoDot completo solo a través de encabezados duales de 4 pines. El ChronoDot esencialmente encajaría en el lugar donde normalmente iría el DS1307 (no estaría poblado en este caso). La razón principal por la que me centro específicamente en el ChronoDot es que es Es popular, fácil de adquirir y no requiere soldadura SMD para el usuario final (esto si es para un kit). Entonces, esto es lo que estoy pensando...
Tanto el DS1307 como el DS3231 tienen una línea Vbat en el chip, pero en realidad no se necesita para nada. Sin embargo, el ChronoDot tiene un pin VBat real en la placa de conexión. Tal vez podría conectar solo Vbat desde el encabezado ChronoDot y no el DS1307 y conectarlo a un pin de entrada digital en mi ATMega. Pero tenga ese pin de entrada conectado a tierra por una resistencia (no estoy seguro de qué valor ... ¿tal vez 4.7k?). Si mi teoría de EE es correcta, entonces puedo leer ese pin y si obtengo un nivel bajo, no hay cronopunto, pero si obtengo un nivel alto, sí lo hay.
Algo como esto:
simular este circuito : esquema creado con CircuitLab
Mi pregunta principal aquí es si hacer esto terminará agotando la batería de respaldo en el RTC. Normalmente, no se extraería corriente de la batería de respaldo mientras se suministra alimentación principal de 5 V, pero ¿conectar esto a una entrada digital haría que extraiga energía de la batería todo el tiempo? O, ¿hay algún modo en el que deba colocar el pin después de leerlo para "desconectarlo", por así decirlo? Sé que podría cambiarlo a salida, pero creo que si está configurado como salida y bajo, básicamente estaría conectando a tierra la batería.
De todos modos, mis cursos de EE fueron hace mucho tiempo. Cualquier ayuda sobre la teoría aquí sería apreciada.
Sin duda, agotará la batería a través de la resistencia. La cantidad de corriente que consumirá se regirá por la ley de Ohm: I = V / R. Digamos que el voltaje de su batería es de 3V (es decir, el cronodot habitual Vbat). Con una resistencia de 4,7 kOhm, consumirá 3/4700 = 638 microamperios de forma continua. Si lo convierte en una resistencia de 1 MOhm, en su lugar dibujará 3/1000000 = 3 microamperios. Y si lo convierte en una resistencia de 10 MOhm, en su lugar dibujará 3 / 1e7 = 300 nanoamperios.
Cuanto mayor sea el valor de la resistencia que elija, menos corriente consumirá continuamente, pero su pin digital tardará más en hacer la transición (piense en la constante de tiempo R*C gobernada por la resistencia y la capacitancia de los pines y las pistas). Mientras espere lo suficiente (o vuelva a consultar periódicamente) después del inicio, debería estar bien con una resistencia de 10 MOhm. En teoría, también podría captar más ruido con un valor mayor (ya que comienza a parecerse cada vez más a un circuito abierto), pero creo que estará bien. Incluso podría considerar subir a 100 MOhm.
Un CR1632 típico tiene 130 miliamperios-hora (mAh) de energía almacenada, y tal vez el 80 % de eso es vida útil, así que llamemos 100 mAh para facilitar el cálculo. Una estimación aproximada de la duración de la batería es el consumo de miliamperios-hora / miliamperios.
Estos son números de límite superior que asumen que el resto de su sistema no consume energía. Representan la vida útil de su sistema cuando está apagado y la batería simplemente se agota a través de la resistencia. También hay muchos efectos de segundo orden que no se tienen en cuenta (caída de voltaje, fugas químicas internas de la batería, etc.). Es poco probable que la resistencia sea su mayor problema dependiendo de la vida útil que espera lograr.
El DS3231 tiene una temperatura interna que puede leer. Puede emitir un comando sobre I2C para leer la temperatura, si obtiene una respuesta, tiene el DS3231, si no, tiene el DS1307.
Prácticamente cualquiera de estos esquemas de medición que involucran resistencias, si se dejan conectados permanentemente, provocarán un consumo de corriente inaceptable y una reducción de la vida útil de la pequeña batería de litio que alimenta estos dispositivos.
Entonces, la solución es hacer que el circuito de medición consuma corriente solo durante breves intervalos poco frecuentes, cuando en realidad está tomando una medición.
Para una prueba digital, esto podría ser tan fácil como usar un menú desplegable interno configurable por software y solo configurarlo como un menú desplegable durante un breve período de tiempo alrededor de la prueba. Sin embargo, deberá analizar las posibles complicaciones de tener voltaje en el pin cuando la MCU que realiza la medición no está encendida/en modo de suspensión.
Una medición analógica sería más complicada, pero se podrían aplicar ideas similares. Por ejemplo, podría conectar la resistencia inferior de un divisor de voltaje (alta impedancia en relación con las E/S) a un pin de salida y solo reducirlo durante un tiempo alrededor de la medición. O incluso podría construir un circuito RC con un pequeño capacitor de baja fuga y un solo pin de E/S que podría controlar bajo como salida, luego configurarlo como una entrada analógica y medir el voltaje después de un período de tiempo. Si el voltaje de umbral digital del dispositivo es constante (¡cuidado con la temperatura!), incluso puede realizar una medición analógica con una entrada digital de esta manera, midiendo el tiempo que tarda el capacitor en cargarse hasta el voltaje de umbral.
adam haile
vicatcu
ShimoFuri
vicatcu