Semáforo usando un pin de microcontrolador

Estoy tratando de hacer un semáforo usando LED verdes y rojos, controlado por un pin de arduino. La idea es cuando el pin está bajo, el LED rojo está encendido y el LED verde está apagado, cuando el pin está arriba, el LED verde está encendido y el LED rojo está apagado.

Así que hice el circuito usando dos transistores y en el software de simulación todo parece estar bien, pero en la práctica, el LED rojo (el de la derecha en la imagen) sigue brillando tenuemente cuando el verde (el de la izquierda) está encendido.

En los diagramas, puede ver que todavía hay una pequeña corriente a través del LED rojo, cuando el pin está en estado activo.

¿Hay alguna idea de cómo lidiar con esta corriente?

ingrese la descripción de la imagen aquí

Mmm. ¿Es 33 uA demasiado alto para llamar al LED "apagado"?
Sí, circuito real, el LED sigue brillando, pero tenuemente

Respuestas (4)

Dos palabras: fuente, sumidero.

El pin de salida de un arduino es capaz de generar (suministrar una corriente de salida) y hundirse (tomar una corriente en la salida y bajar a tierra). Consulte http://arduino.cc/en/Tutorial/DigitalPins

No necesita ningún transistor para cambiar los LED.

ingrese la descripción de la imagen aquí

En este circuito cuando la salida es BAJA (cerca de 0V) el LED verde estará ENCENDIDO, el rojo está APAGADO. Cuando la salida es ALTA (cerca de 5V) el LED rojo está ENCENDIDO, el verde está APAGADO.

Las resistencias limitan la corriente de sumidero/fuente a un valor seguro.

Igual que @MichaelKaras: ambos LED estarán parcialmente encendidos si el pin de la unidad es hi-z.
@Dzarda Para citar la referencia dada en la respuesta sobre la configuración del pin como SALIDA "Se dice que los pines configurados como SALIDA con pinMode() están en un estado de baja impedancia . Esto significa que pueden proporcionar una cantidad sustancial de corriente a otros circuitos Los pines Atmega pueden generar (proporcionar corriente positiva) o hundirse (proporcionar corriente negativa) hasta 40 mA (miliamperios) de corriente a otros dispositivos/circuitos. - ¡No exactamente Alto z!

En aras de la integridad: si desea proporcionar más corriente de la que puede entregar su MCU, aún puede usar dos transistores, pero esta vez uno NPN y otro PNP. NPN en este caso funciona como un interruptor no inversor, PNP está invirtiendo.

Nota: Esto solo funciona si el voltaje de su unidad (pin MCU) va de 0 a 5 V. No es un problema con el ATMega.

esquemático

simular este circuito : esquema creado con CircuitLab

Parece que tiene una fuga de voltaje desde los 5V a través de la segunda base del transistor hasta el emisor, lo que le da un brillo tenue (similar al problema que enfrenté en esta publicación ) . Como la corriente del Arduino es suficiente para alimentar 1 LED a la vez (con una resistencia de ~ 300-470 ohmios), puede usar el circuito de mi publicación para que todo funcione. Te ahorra un transistor :)

EDITAR: El circuito completo que debe implementar (su pin Arduino va donde está IN1, y debe reemplazar la fuente de 9V con su fuente de 5V o con otro pin del arduino) es este (de esta publicación ) :

esquemático

simular este circuito : esquema creado con CircuitLab

TENGA EN CUENTA que esto supone que el LED1 es rojo y el LED2 es verde, por lo que tendría que invertir su lógica de pines en el Arduino.

LED2 siempre estará encendido en este circuito (asumiendo el mismo voltaje directo)
Gracias, me olvidé de la diferencia de voltaje de los LED. ¡Este circuito funciona bien, pero otro con fuente / sumidero funciona correctamente sin transistores!
@geometrikal Es por eso que mi NOTA dice "LED1 es rojo y LED2 es verde"; según la publicación vinculada, el escenario inverso mantiene LED2 siempre encendido
@PhilB. El color del LED no corresponde necesariamente al voltaje directo.

Una buena manera de lidiar con esto es dejar de colocar los LED en la parte del circuito del emisor. En su lugar, coloque los LED en la parte del colector del circuito en serie con las resistencias de límite de corriente.

Otra cosa a considerar es que si el pin MCU tiene una capacidad de accionamiento adecuada y una oscilación de voltaje de 5 V, puede considerar simplemente conectar los LED de la siguiente manera:

ingrese la descripción de la imagen aquí

Tenga en cuenta que si el PIN de MCU tiene tres estados, ambos LED brillarán con una intensidad más baja.
No debería ser un problema para el OP, ya que dijeron que el pin MCU sería alto o bajo. El pin MCU en el modo INPUT daría como resultado la condición que especifique y existiría desde el encendido de MCU y hasta que el software establezca el pin de salida. El indicador de ambos encendidos puede significar que el software no se está ejecutando correctamente.