¿Cómo llevar un pin de entrada digital a un estado alto?

Esto suena realmente muy fácil, pero tengo miedo de intentarlo porque no quiero freír mi microcontrolador.

Usaré un Arduino como ejemplo, pero debería ser el mismo para todos los microcontroladores.

De todos modos, supongamos que tiene un interruptor y desea que cuando presione el interruptor lleve un pin digital a alto (1) y cuando no esté presionado, a bajo (0). ¿Esto requeriría resistencias? ¿O simplemente conectaría un cable directo de 3.3v al pin de entrada?

O para simplificar aún más lo que estoy preguntando. Si por alguna razón quisiera que un determinado pin de entrada digital estuviera siempre alto, ¿colocaría un cable de 3.3v en el pin digital? ¿O necesitarías una resistencia en algún lugar allí?

No es lo mismo para todos los microcontroladores; muchos tienen resistencias pullup o pulldown internas débiles que se pueden usar para este propósito.

Respuestas (3)

Para responder a su pregunta sobre si puede conectar la alimentación directamente al pin sin resistencia y hacer que siempre esté alta ... sí, eso funciona.

Cuando tiene su microcontrolador configurado en modo de entrada, puede tratar el pin como si hubiera una resistencia muy grande dentro. Entonces, usando la ley de ohmios, V/R=I con V=3,3 y R=muy grande, digamos que 10 megaohmios te da una corriente de 0,33 microamperios. Las entradas están diseñadas para actuar como una impedancia tan alta que tiene un efecto muy pequeño en cualquier cosa externa.

¿Qué sucede si, por alguna razón, durante la inicialización interna del microcontrolador o lo que sea, el pin se establece brevemente en modo de salida? Si da como resultado 0, esto provocaría un cortocircuito en el microcontrolador y, por lo tanto, rompería algo, ¿correcto? ¿Qué protección puedo proporcionar contra que eso suceda?
Esto puede depender del micro, pero creo que la mayoría se ingresa por defecto al inicio. Si quiere tener cuidado, simplemente agregue una resistencia entre el pin y la alimentación. Solo tiene que asegurarse de que no tenga un efecto adverso en nada a lo que esté conectado.
@Earlz: es por eso que todos los microcontroladores comienzan con sus pines de E / S configurados para ingresar al reiniciar.

El pin de un microcontrolador cuando está en modo de entrada digital suele ser de varios cientos de kiloohmios o incluso de unos pocos megaohmios. Son esencialmente entradas de alta impedancia de amplificador operacional (CMOS hoy en día).

El problema cuando un pin se establece en salida es que los controladores de salida suelen tener una resistencia bastante baja: decenas de ohmios o menos. Pueden quemarse si se cortan a VCC o GND, según el estado. Parece que está más preocupado por esta situación, con una interfaz de botón/interruptor.

La forma estándar de hacer un interruptor para una entrada digital es colocar el interruptor en el lado bajo con una resistencia de alto valor externa como esta:

esquemático

simular este circuito : esquema creado con CircuitLab

La resistencia R1 ayuda de dos maneras: si el microcontrolador de alguna manera accidentalmente convierte su pin en un modo de "salida" y se activa en BAJO, esta resistencia garantiza que no haya un cortocircuito a TIERRA a través del pin. Cuando un pin digital se activa bajo, es básicamente un corto a tierra, lo cual es muy malo para un pin que está conectado a una fuente de alta potencia/corriente.

La segunda función de R1 es cuando se presiona el botón, evita que la corriente alta fluya y destruya el interruptor.

Realmente no puede usar las resistencias pull up internas en el microcontrolador para esta configuración porque si R1 no existe, el interruptor fallará debido a la corriente de cortocircuito a través de él.

Lo único molesto de toda esta configuración es que es "activo bajo", como en el valor lógico cuando se presiona el botón es "BAJO", y cuando no se presiona el botón, se encuentra en "ALTO".

Su otra opción es que el interruptor esté en el lado alto, conectando VCC al pin digital. Luego puede usar resistencias desplegables internas (muy raras) o externas. Esto es bueno porque el interruptor no se puede conectar a tierra externamente, pero aún puede tener problemas si el pin del microcontrolador se configuró accidentalmente en salida y se configuró en BAJO (que es una conexión casi directa a tierra como mencioné anteriormente).

esquemático

simular este circuito

Para explicar el diagrama anterior, Rext es la ubicación de una resistencia externa si decide hacer esto. Esto asegura que cuando no se presiona el botón, el voltaje del nodo de entrada digital decaerá a cero a través de esta resistencia. Rint es la posible resistencia interna si su microcontrolador proporciona una; a menudo, están en el rango de 20-40k Ohms. En caso de configurar el pin en SALIDA y BAJO, el Rprot está ahí para servir como una resistencia de protección contra cortocircuitos; honestamente, todos los pines del microcontrolador de uso general deben recibir una resistencia en serie externa como esta, para hacerlos más resistentes.

Yo mismo uso el primer diagrama, con R1 entre el pin y el interruptor, a VCC. Esto cubre todas las bases y protege contra locuras. Solo acomodo que el nivel lógico sea BAJO cuando está activo en mi software.

Debe usar un menú desplegable para Vdd o un menú desplegable para GND. Si no lo hace, cuando presione su interruptor, efectivamente cortará Vdd a GND.

EDITAR: debería haber hecho un dibujo, pero en su lugar encontré un sitio con una explicación .

¿Necesitaría una resistencia pullup/down si quitara el botón de la ecuación y solo quisiera que un pin digital estuviera siempre alto?
No, puede vincular VCC con bastante seguridad a un pin si está configurado como una entrada. La mayoría de los uC tienen una alta resistencia de entrada.