Cableado de interruptor on-off con resistencia a SoC

Tenga en cuenta: aunque esta pregunta involucra una Raspberry Pi (en adelante, RPi ), ¡en realidad es una pregunta puramente electrónica en el fondo!


Estoy tratando de conectar mi RPi 1 Modelo A a una placa de pruebas con un único y simple interruptor de encendido y apagado . El truco aquí es que, aunque estoy usando un interruptor de encendido y apagado, realmente solo quiero que funcione como un interruptor normal (de encendido y apagado). Es decir: presiónelo una vez, el circuito se cierra y envía una señal de entrada a mi RPi. Púlselo de nuevo y se abrirá el circuito. Enjuague y repita.

Me dieron este diagrama a seguir para conectar las cosas:

ingrese la descripción de la imagen aquí

Luego, inferí mi propia versión de esto, que muestra más claramente la unión de los pines izquierdo y derecho del interruptor (dándole el comportamiento de encendido y apagado deseado), así como también cómo conectar la alimentación de 3.3V en el RPi al GPIO. pin de entrada:

ingrese la descripción de la imagen aquí

Entonces, para comenzar, si algo de lo anterior le parece incorrecto o incorrecto, ¡comience por corregirme!

Asumiendo que estoy en el buen camino, ahora estoy tratando de conectar esto en la vida real, entre mi RPi y mi protoboard. Aquí está mi mejor intento:

ingrese la descripción de la imagen aquí

No importa el LED y las resistencias en la esquina inferior derecha de la placa de prueba, son restos de otro experimento y no están conectados a nada más.

  • Así que en la parte superior izquierda tenemos la fuente de alimentación de 3,3 V del RPi conectada al riel superior de la placa a través de un puente rojo; entonces
  • Un cable de puente rojo más pequeño transmite la energía a una columna que luego se conecta a una resistencia de 10 kOhm; más sobre esto en un segundo

En el lado izquierdo de la foto de arriba tenemos el interruptor, aquí hay una mejor vista del cableado/configuración:

ingrese la descripción de la imagen aquí

  • Observe el pequeño puente naranja que conecta los pines del interruptor izquierdo y derecho; Creo que esto es lo que logra el comportamiento on-off-on-off -> on-off que estoy buscando
  • La misma columna que une los pines izquierdo y derecho (a través de un puente naranja) también está conectada a un puente rojo que también está conectado a la misma resistencia de 10 kOhm de la que hablamos arriba.
  • Finalmente, el pin central del interruptor está conectado al GNDriel a través de un puente negro

Esto nos lleva al centro del tablero de cuentas, donde cuelga esa gran resistencia de 10 kOhm:

ingrese la descripción de la imagen aquí

  • La resistencia conecta la alimentación del RPi al interruptor (ambos pines al mismo tiempo)
  • La resistencia también se conecta de nuevo al pin de entrada del GPIO a través de un cable de puente gris

Por último, mi pregunta!

Recuerda, al final del día, todo lo que quiero hacer es:

  • Convierte este interruptor de encendido y apagado en un interruptor de encendido y apagado
  • Cuando el usuario presiona el interruptor (cerrándolo), se envía una señal adecuada al pin de entrada GPIO, que luego se maneja en la capa de software.

Entonces pregunto: ¿mi circuito logrará el siguiente comportamiento? ¿Está cableado correctamente (uniones correctas de los cables, uso correcto de la resistencia, etc.)? ¿O "freirá mi pi"? Si algo es incorrecto, ¿cuál es la corrección/solución?

Actualizar

Varios usuarios me han señalado que mi cableado alrededor del interruptor es incorrecto, aquí hay un diagrama de Fritzing de lo que creo que es la solución:

ingrese la descripción de la imagen aquí

última actualización

Cableado cuando configuro la resistencia del pin interno en la capa de software y omito la resistencia de la placa de pruebas:

ingrese la descripción de la imagen aquí

Las conexiones en el medio de una placa de prueba van en la otra dirección. Hacia/desde el centro, no paralelo a los lados.
Parece que no entiendes cómo se conectan los agujeros en la placa. Por el interruptor, parece suponer que las conexiones en la parte central del tablero corren a lo largo del tablero, para llegar desde los terminales del interruptor al puente naranja, pero también desea que las conexiones en el tablero conecten el puente naranja al cable rojo. El cableado alrededor de la resistencia se ve bien. Tenga en cuenta que en algunas tablas, las tiras a lo largo de los bordes tienen un corte en el medio.
Gracias @PeterBennett e Ignacio (+1 para los dos!) - vea mi actualización que incluye el diagrama de Fritzing, ¿he corregido el cableado con el interruptor? ¿Todo lo demás se ve bien? ¡Muchas gracias de nuevo!
Parece que conectaste tierra a ambos "extremos" del circuito. Debe ser VCC para una parte y tierra para la otra.
Gracias @immibis (+1) pero estas seguro ?? Vea el pinout aquí ... el riel superior en la protoboard está conectado al pin de alimentación de 3.3V, ¿no? ¡Gracias de nuevo!
@smeeb Sí, pero no hay nada más conectado al riel superior, ambas conexiones están en el riel inferior (fuera de los 2 rieles superiores).
Gracias de nuevo @immibis (+1): además del pin de alimentación de 3,3 V, ¿qué más se necesita conectar al riel superior? Y además del pin GND, ¿qué más se necesita conectar al segundo riel desde arriba?
@smeeb Un riel debe tener el pin de alimentación de 3,3 V y un lado de la resistencia. El otro debe tener el pin GND y un lado del interruptor. ¡Consulte el diagrama de circuito que dibujó! Por cierto, no hay ninguna razón por la que necesite usar esos rieles para conectar los 3.3V a la resistencia y GND al interruptor.
La puntuación era -3 cuando hice clic en esto. Tengo curiosidad sobre el razonamiento detrás de los votos negativos, ¿alguien quiere explicarlo?
@jalalipop: Los votos negativos probablemente se deban principalmente a los diagramas de Fritzing. Por lo general, estos no muestran el esquema del circuito y se consideran aquí como diagramas de cableado infantiles o "dibujos animados". En este caso, fueron útiles ya que el circuito era trivial y era obvio que el OP no había logrado traducir su clip esquemático correcto, aunque en su mayoría al revés, en el cableado correcto. Vea mi respuesta a continuación.

Respuestas (1)

ingrese la descripción de la imagen aquí

Figura 1. Dominada incorrecta.

Su resistencia pull-up está conectada al riel equivocado. Está tirando hacia abajo. Su botón simplemente lo tira hacia abajo mejor.

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 2. (a) Lo que pretendías. (b) La forma en que lo conectó. (c) Con pull-up interno habilitado.

El enlace de cable en el extremo derecho de su resistencia está conectado a GND en lugar de V +.

Si puede programar el GPIO con pull-up interno, omita la resistencia. No es requerido. En la configuración actual, compite con el pull-up y el voltaje de entrada nunca puede superar el establecido por el divisor de potencial creado por el pull-up y el pull-down.


Aclaración extrema:

ingrese la descripción de la imagen aquí

Figura 2. El cable puente de la resistencia pull-up debe moverse para terminar en la posición 2, no en la posición 1.


De los comentarios:

Bien, inicializaré mi pin en la capa de software a través de gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_23, 'RunningLed', PinState.HIGH), lo que hará que la resistencia interna del pin GPIO #23 se "levante" (PinState.HIGH) , de modo que cuando alguien presione el interruptor (que a su vez cierra el circuito), la resistencia interna se activará, ¿sí?

Eso funcionará correctamente, pero su descripción de la acción es incorrecta.

esquemático

simular este circuito

Figura 3. Pull-up interno con interruptor pull-down externo.

  • Una vez habilitada, la resistencia pull-up estará en circuito como si estuviera conectada en su lugar. No se activa en ningún momento, pero será efectivo bajo ciertas condiciones.
  • Fig. 3a: Con SW1 abierto, el pull-up, R1, conecta el búfer interno a V+. La entrada ahora está "subida" a Vcc. Su programa lo leerá como "alto".
  • Fig. 3b: Con SW2 cerrado, el pull-up todavía está tratando de tirar, pero es superado por la resistencia mucho, mucho menor del interruptor. El voltaje de entrada caerá a 0 V. Su programa leerá la entrada como "baja".

Tenga en cuenta que anteriormente en la discusión iba a tener un menú desplegable externo y un menú desplegable interno. Esto no funcionaría ya que el voltaje (con el interruptor abierto) no sería ni completamente alto ni completamente bajo y probablemente estaría en un estado indefinido alternando entre los dos cuando lo lea su programa.

Gracias @Transistor, ¿hay alguna posibilidad de que pueda incluir un diagrama de Fritzing (o cualquier diagrama de cableado en realidad) que explique de qué está hablando? ¿Parece que mi resistencia necesita estar conectada al riel de alimentación (V +)? ¿Y luego estoy configurando el pin de entrada GPIO para que sea una resistencia pullup o pulldown? ¡Gracias de nuevo!
@smeeb Consulte los diagramas de circuito que puso en la pregunta.
@smeeb: Consulte la Figura 2, etc. Generalmente, no usamos Fritzing en este sitio, ya que solo muestran el cableado, mientras que estamos interesados ​​​​en el esquema y, por lo tanto, usamos diagramas esquemáticos.
Los diagramas fritzing de @smeeb realmente no se aceptan aquí, están mal vistos en las preguntas y solicitar que se agregue uno a una respuesta está fuera de los límites. Los ingenieros usan esquemas porque son claros, mientras que los diagramas fritzing son terriblemente confusos.
@smeeb: Ver la actualización.
Gracias @Transistor (+1) - pregunta final para cerrar esto: antes dijiste que podía omitir la resistencia si configuro la resistencia interna del pin de entrada GPIO... si entiendo las resistencias pullup/pulldown correctamente, creo que realmente quiero configure la resistencia desplegable del pin GPIO , de modo que el pin registre un voltaje de 0 de forma predeterminada, y solo registre HI/"1"/3.3V si alguien presiona el botón/interruptor.
Entonces (1) ¿Tengo razón en esa comprensión (de pullup vs pulldowns con lo que quiero)? Y (2) vea mi actualización final anterior: esa es mi comprensión del cableado si configuro la resistencia del pin interno y omito la resistencia de la placa de pruebas ... ¿puede confirmar que es correcto (o aclarar)? ¡Muchas gracias de nuevo!
¡Nooooooooo! Te has perdido todo el punto de mi respuesta. Si el interruptor tira hacia abajo, entonces la resistencia (interna o externa) debe tirar hacia arriba. Su cableado está bien pero debe programar pull-up interno.
Bien, inicializaré mi pin en la capa de software a través de gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_23, 'RunningLed', PinState.HIGH), lo que hará que la resistencia interna del pin GPIO #23 se "levante" ( PinState.HIGH), de modo que cuando alguien presione el interruptor (que a su vez cierra el circuito) la resistencia interna entrará en acción, ¿ ?
Ver la actualización.
Ahhh gracias por esa aclaración @Transistor, entonces mi comprensión de pullup vs pulldown fue al revés . Así que tendré que invertir mi lógica para que considere un estado de pin de "ALTO" como "no se ha presionado el botón" y un estado de pin de "BAJO" como "se está presionando el botón". ¡Gracias de nuevo!
¡Tu lo tienes! (Fue difícil). ¡Gracias por la generosidad!