Actualmente estoy buscando algunos consejos sobre cómo hacer que mi circuito tenga el menor consumo de energía posible.
Necesito usar tres interruptores DIP para configurar la dirección de mi placa ATmega328P en una red personalizada LoRa .
He visto que una de las soluciones más utilizadas es conectar las resistencias pull-up externas a V CC , como se informa a continuación:
... pero este enfoque es extremadamente ineficiente para mis propósitos (mi hardware, durante el sueño profundo, necesita alcanzar 1-5 µA de consumo de corriente).
Entonces, mi intención es quitar las resistencias pull-up externas y usar las resistencias pull-up internas de la entrada digital del ATmega328P.
Este enfoque me permitirá habilitar las resistencias pull-up internas solo cuando necesite leer el estado de los interruptores (durante el arranque por un tiempo muy limitado).
Entonces, teóricamente, esto será muy eficiente y de baja potencia.
Este será el esquema resultante (tomado de aquí ):
Esta es mi idea para resolver este problema. De todos modos, aún no he probado. Me encantaría que alguien compartiera sus pensamientos al respecto.
No recomiendo apagar el pull-up. Esto tiene dos problemas:
Si puede prescindir de un pin más, conecte los comunes del interruptor a ese pin en lugar de GND, y baje ese común solo cuando lea los interruptores. Luego, durante el tiempo de no lectura, los pines siempre están atados por el pull-up (interruptor abierto) o al común elevado (interruptor cerrado), pero no tienen ningún sorteo en espera. Como esto:
simular este circuito : esquema creado con CircuitLab
Incluso entonces, el pull-up interno (30K o más) es un poco débil, especialmente si se va a implementar en un entorno hostil. Agregar algo de capacitancia al pin (30 pF más o menos) evitará el ruido del pin y mejorará su inmunidad. También puede cambiar los pines al modo de salida durante el tiempo de no lectura para obtener la mejor inmunidad al ruido posible.
Pero, ¿por qué los interruptores DIP? Tal vez eliminarlos por completo y almacenar este estado en EEPROM junto con la información de configuración de su otro dispositivo.
Pero... ¿por qué molestarse incluso con eso? Aproveche el hecho de que es un dispositivo conectado de forma inalámbrica con una identificación única. Idea: use el identificador único del dispositivo LoRa (DevEUI) y asigne su posición física en el nivel de la aplicación a medida que lo instala. Si los nodos están muy espaciados, use una coordenada de geolocalización; si son parte de un conjunto compacto, use alguna ubicación de rejilla en la planta o en el equipo.
Más sobre el direccionamiento de LoRa aquí: https://www.thethingsnetwork.org/docs/lorawan/addressing/
Por último, un pequeño consejo no solicitado. Como experto en hardware, es fácil caer en la solución directa y aparentemente obvia, como sucede a menudo con los interruptores DIP, los puentes y similares. Lo animo a pensar fuera de la caja de hardware y buscar una solución de software en su lugar. La industria de las PC luchó durante años con puentes y conmutadores hasta que finalmente alguien dijo 'basta' y aparecieron Plug'n'Play y sus descendientes (PCMCIA, Cardbus y PCIe CIS).
tl; dr: Los saltadores son malvados. Evítalos si puedes.
Esto funcionará. Los pull-ups internos en los pines de entrada son para usar así. Elija pines de E/S que se puedan configurar como entrada y salida, y cuando no esté leyendo los interruptores (el 99 % del tiempo), puede configurar ese pin para que sea una salida y bajarlo para eliminar la corriente a través de la tensión interna. UPS.
Si observa la hoja de datos , sección 35.6, puede ver que la corriente pull-up no será insignificante, para su caso de uso: 75uA a 2.7V y 140uA a 5V, si las entradas están conectadas a tierra. Los pull-ups internos están especificados para ser de 20 a 50kOhms (30.2).
No se especifica una impedancia de entrada, pero se cita que la "resistencia de entrada analógica" es 100MO y la corriente de fuga GPIO 1uA. Por lo tanto, es seguro usar un pull-up externo de un valor realmente alto (1MO). Yo no iría por encima de esto ya que el ruido puede captarse fácilmente, especialmente con cables largos y/o una radio cerca.
Para abreviar una larga historia: para una máxima simplicidad, habilitaría pull-ups internos solo mientras leo los datos. Para una mejor confiabilidad, usaría resistencias pull-up externas de 200k-1M.
Use las resistencias Pull Up para el micro VCC o use las resistencias pull up del puerto. El otro lado de los interruptores se conecta a un pin de puerto. Cambie el puerto a nivel bajo cuando desee leer y luego vuelva a configurarlo a nivel alto. Si tiene un pin de puerto que está impulsando un indicador, podría usarse para el control del interruptor, pero deberá tener un poco de precaución. Si el indicador se ilumina al bajar el pin del puerto, lo tiene hecho; de lo contrario, debe invertir las polaridades. Durante el funcionamiento normal, a los interruptores no les importará lo que esté haciendo el puerto y durante la configuración, el ciclo será lo suficientemente rápido como para que el indicador parpadee muy rápido.
vir
bimpelrekkie
aplicación virtual
bimpelrekkie
bimpelrekkie
Sólo yo
jsotola