Arduino/Atmega328: compruebe si el PIN está en cortocircuito a GND

En un proyecto con un Atmega328 funcionando a 8 MHz y alimentado con 3,3 V, necesito verificar si un puente de 2 pines está insertado de forma permanente.

foto de ejemplo de puente de 2 pines

Entonces, el esquema es:

diagrama esquemático

y el tablero es:

diseño de placa de circuito impreso

no puedo entenderlo...

¿Es realmente tan simple como:

1) ¿Configurar el PIN como INPUT_PULLUP?

2) Verifique si el PIN es ALTO, luego está conectado y ¿hace cosas?

3) ¿Necesito una resistencia externa (y de qué valor) o es suficiente la INTERNAL_PULLUP?

4) ¿Puedo dejar el PIN cortocircuitado a GND durante una gran cantidad de tiempo, digamos durante 1 año? Este ATmega estará encendido "para siempre"

pseudocódigo, para entender:

void setup() {

  pinMode(PIN_CHECK , INPUT_PULLUP);

}

void loop() {

   // at first post, I did put this HIGH, but I was wrong.
   // the check need to be for LOW, when connected
   if ( PIN_CHECK == LOW ) {

     Serial.println("The user has placed the jumper, the pin is shorted to GND!");

   }


}

Gracias a todos

No busqué la MCU específica. Pero si admite una resistencia pull-up interna, y si activa ese modo correctamente, entonces sí, puede aplicar el pull-up y configurar el pin para la entrada y detectar el puente.
Si el puente está instalado, el pin será BAJO, no ALTO.
@PeterBennett ok, gracias por la corrección. Pero, para mi 4 pregunta? ¿La respuesta es "SÍ" a las 4 preguntas? Gracias
1) sí 2) bajo 3) pull-up interno suficiente para entornos no muy ruidosos 4) para siempre. Pero coloque capacitores de desacoplamiento de 100 nF entre AVCC/VCC y gnd.
También se preguntó en: forum.arduino.cc/index.php?topic=504506 Si va a hacer eso, tenga la consideración de agregar enlaces a los otros lugares que haya publicado. Esto nos permitirá evitar perder tiempo debido a la duplicación de esfuerzos y también ayudará a otros que tienen las mismas preguntas y encontrarán su publicación para descubrir toda la información relevante.

Respuestas (1)

¿Es realmente tan simple como

Casi:

  • necesita un cambio de código (como se mencionó amablemente en los comentarios de Peter Bennett y el siguiente truco mientras escribía esto)

  • Atmel recomienda (consulte el enlace a continuación) que agregue al menos un capacitor de desacoplamiento entre Vcc y Gnd, y una combinación RC en el pin de reinicio, para ayudar a evitar reinicios falsos cuando se confía solo en el pull-up interno en entornos eléctricamente ruidosos (un clásico el disparador está cerca de los relés en funcionamiento). Si decidió cambiar el diseño para que el pin de reinicio sea impulsado por algo externo, también se recomienda un diodo del pin de reinicio a Vcc.

1) ¿Configurar el PIN como INPUT_PULLUP?

Sí, puede hacer esto ya sea que agregue o no una resistencia pull-up externa.

2) Verifique si el PIN es ALTO, luego está conectado y ¿hace cosas?

Casi. El estado del pin para verificar es que el pin esté BAJO con el puente instalado, por lo que su código debe cambiarse para eso.

3) ¿Necesito una resistencia externa (y de qué valor) o es suficiente la INTERNAL_PULLUP?

Por experiencia, consideraría agregar una resistencia pull-up externa para la entrada del pin de puente (por ejemplo, 10k), especialmente si algo que causa un campo eléctrico (por ejemplo, dedos, relés cercanos, etc.) podría acercarse a él, ya que el pull-up interno. Las resistencias ascendentes son relativamente débiles. Otras personas con experiencia diferente pueden no estar de acuerdo con que esto sea necesario.

Si elige no agregar una resistencia pull-up externa en ese pin de entrada, entonces debe habilitar su resistencia pull-up interna.

4) ¿Puedo dejar el PIN cortocircuitado a GND durante una gran cantidad de tiempo, digamos durante 1 año? Este atmega estará encendido "para siempre"

Sí, eso está bien. Se consumirá algo de energía a través de la resistencia pull-up (ya sea interna o externa) y ese puente.

Hay otras técnicas que podría usar para reducir el consumo de energía, por ejemplo, dormir, luego despertarse cada 100 ms, verificar el estado del pin y luego volver a dormir, si el consumo de energía es una preocupación.

Ver:

para obtener más información sobre los circuitos ATmega "mínimos".

Gracias por su respuesta. Sé la necesidad de condensadores, por cierto. Mi esquema era simple para representar el foco principal. Gracias.