Arduino / Atmega328: verifique si el PIN está en corto a GND

1

En un proyecto con un Atmega328 que funciona a 8 MHz y funciona con 3.3 V, necesito verificar si un puente de 2 clavijas está insertado permanentemente.

Entonces,elesquemaes:

yeltableroes:

Nopuedoentenderlo...

¿Esrealmentesimplecomo:

1)¿ConfigurarelPINcomoINPUT_PULLUP?

2)CompruebasielPINesALTOyluegoestáconectadoyhazlascosas?

3)¿Necesitounaresistenciaexterna(yquévalor)oessuficienteelINTERNAL_PULLUP?

4)¿PuedodejarelPINencortoaGNDporuntiempomasivo,digamospor1año?EsteATmegaestaráen"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

    
pregunta sineverba

1 respuesta

1
  

¿Es realmente tan simple como

Casi:

  • necesita un cambio de código (como se menciona amablemente en los comentarios de Peter Bennett y next-hack mientras escribía esto)

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

  

1) ¿Configurar el PIN como INPUT_PULLUP?

Sí, puedes hacer esto si agregas o no una resistencia de recuperación externa.

  

2) Comprueba si el PIN es ALTO y luego está conectado y haz las cosas?

Casi. El estado del pin que se debe verificar es que el pin está LOW con el puente instalado, por lo que es necesario cambiar el código para eso.

  

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

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

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

  

4) ¿Puedo dejar el PIN en corto a GND por un tiempo masivo, digamos por 1 año? Esta atmega estará en "para siempre"

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

Hay otras técnicas que podrías usar para reducir el consumo de energía, por ejemplo. dormir, luego despertar cada 100 ms, comprobar el estado del pasador 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".

    
respondido por el SamGibson

Lea otras preguntas en las etiquetas