GPIO: ¿Por qué cablear el botón a tierra en lugar de + 3.3v?


13

En la mayoría de los ejemplos que he visto de cableado de botones a entradas GPIO, el botón está conectado de modo que cuando está cerrado, se completa un circuito entre el pin y la tierra, produciendo una entrada baja en el pin. Se utiliza una resistencia pull-up para predeterminar el valor de entrada a alto. El código en el Pi puede detectar bajo como presionar un botón.

He estado conectando los botones a + 3.3v, por lo que la señal es alta, ya que parece tener más sentido y mantiene el código más lógico, pero debe haber una razón por la cual la mayoría de las personas favorecen la conexión a tierra. ¿Cuáles son las ventajas?


Nota: Cuando digo 'resistencia pull-up' me refiero a una resistencia externa física o la resistencia pull-up interna, configurada en código.
howard10

Respuestas:


17

Una de las razones principales por las que se favorece el cableado de los botones y la lógica a GND (y luego se copia en todo Internet) se debe a la optimización de la energía.

  • Tirar de un pin BAJO con resistencia a GND cuesta 0 vatios.
  • Tirar de un pin ALTO con resistencia a + Vcc cuesta energía.

En circuitos complejos o circuitos que dependen de baterías, esta potencia es muy valiosa.

Otras razones incluyen baja generación de EMF. En dispositivos inalámbricos, la lógica de extracción alta provocará interferencias innecesarias en receptores de RF extremadamente sensibles. En dichos transceptores hay un plano GND que se utiliza para filtrar el ruido y aquí es donde se reduce toda la lógica. El procesador luego usa el plano GND para filtrar los ruidos de conmutación.


3
¿Cómo cuesta subir y bajar una resistencia con una resistencia? La corriente fluye a una entrada de impedancia muy alta en el Pi, lo que reducirá cualquier corriente a sub-microAmps, que son microvatios de potencia.
stefandz

OK, pero solo dime si estoy equivocado. tirar de un alfiler, que es el 0v = 0wattsuso, pero tirar de un alfiler >0watts, cualquier tipo, micro, milli, nano, no importa. Como se mencionó, con la energía de la batería, cada nanovatio ayuda. Pero como ya respondí aquí ... en USB no significa nada. ¿Estoy equivocado?
Piotr Kula

1
No necesariamente cierto. Las entradas digitales son de alta impedancia a tierra, es cierto. Pero no son solo resistencias. Son puertas de entrada, normalmente a FET y estas puertas no son ideales. Tienen corrientes de fuga, y estas corrientes de fuga pueden estar en cualquier dirección, hacia adentro o hacia afuera. Por lo tanto, su pulldown podría consumir un microvatio o dos, tanto como un pullup.
stefandz

Si tuviera que diseñar un dispositivo integrado que funcionara con baterías 2AA y el cliente lo exige, debe funcionar durante al menos 12 meses. Y tienes que bajar / subir un GPIO. ¿Cuál usarías para ahorrar la mayor cantidad de energía? (Estamos hablando de microgestión aquí)
Piotr Kula

44
Por lo que vale, hice algunas mediciones sobre esto, y el pulldown gana (para el consumo de energía) pero solo solo. 10k pullup a 3.3V = 9fW (sí femtowatts) - 10k pulldown a tierra = 5fW. Esto ciertamente no es ni siquiera para ahorrar un poco de territorio de batería.
stefandz

9

Existen razones históricas complejas por las cuales los ingenieros eléctricos típicamente activaban las entradas con resistencias y usaban interruptores para conectarlas a tierra.

Sin embargo, estas razones no son particularmente relevantes para el uso hobby de la Raspberry Pi. Usa lo que tenga sentido para ti.

Si está haciendo un producto comercial, o desea que su diseño sea un poco mejor, elegirá pull-ups con un interruptor de conexión a tierra por las siguientes razones prácticas:

  • Un cable de tierra largo presenta menos riesgo de radiación EMI / EMC que uno conectado a la alimentación
  • Conectar a tierra y encontrar un punto de conexión a tierra es más fácil que una línea de alimentación.
  • Si el interruptor o el cableado, generalmente ubicados a cierta distancia del circuito, se dañan y ponen en cortocircuito el cable o las partes internas del interruptor a la caja o al usuario, no se hace daño; todo está en tierra

2

Estrictamente no hay necesidad de una resistencia pull-up, el BMC GPIO tiene resistencias pull-up internas que se activan cuando se programa como entrada, aunque no hace daño.

Es una mala práctica conectar un pin GPIO directamente a 3V3 o GND. El GPIO es bidireccional, y si se programa como una entrada, esto no causaría problemas. Por otro lado, si se programa como salida, se generará una corriente excesiva.

Un buen diseño (seguro) usaría una resistencia en serie (1 kΩ) en serie con el botón para limitar la corriente. Por las razones formuladas por Adam Davis, es preferible conectar el botón a tierra y ubicar la resistencia protectora cerca del pin GPIO.


El único problema es que durante las fases de arranque 1-3, estos pines están flotando (transferencia de GPU a CPU) y luego en la Fase 4 durante el arranque del kernel de Linux, los PIN se establecen en el estado correcto. Esto puede causar serios problemas con las puertas que esperan la lógica. Por lo tanto, es aconsejable extraerlos de todos modos para que el período flotante durante el arranque no haga que sus circuitos se vuelvan mentales.
Piotr Kula

1

No creo que haya una razón para preferir uno sobre el otro en el RPi. La mayoría de las personas probablemente solo están copiando o portando circuitos que han visto en otros lugares.

Al conectar el circuito (con cables o PCB) está bien elegir el que sea más conveniente y traducirlo al significado correcto en su software.


0

En los viejos tiempos de TTL se necesitaba mucha más corriente para bajar un pin que para subirlo. Por lo tanto, una resistencia pullup podría tener una mayor resistencia (y, por lo tanto, menos desperdicio de energía) que una resistencia pulldown. No importa con los CMOS modernos, pero los viejos hábitos son difíciles.


-1

Conectar el pin a tierra con una resistencia pullup interna significa que usa menos piezas. Todo lo que necesitas es un botón; No necesita una resistencia externa para limitar la corriente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.