¿Cómo asegurar que un LED esté completamente apagado cuando el pin esté en LOW?

0

Tengo una situación en la que, cuando el pin asociado se establece en LOW, el LED aún se ilumina débilmente. Como esto se usa en un área oscura, es bastante notable.

Hasta ahora, he encontrado esto solo con una de mis placas Arduino, y solo cuando el color del LED en uso es rosa, en lugar de amarillo o azul, que son los únicos otros colores que he probado. El aumento de la resistencia de pin a LED a 1K ohm no resuelve el problema. Además, el uso de un LED rosado diferente no afecta el resultado.

Me doy cuenta de que establecer un pin "BAJO" no implica una corriente de cero, entonces, ¿cómo debo manejar este problema? Aunque estoy bastante familiarizado con el Arduino, mi conocimiento de la electrónica en general es bastante superficial, y solicito que cualquier respuesta tenga esto en cuenta.

    
pregunta KC Tucker

6 respuestas

2

El LED debe apagarse por completo. Debe tener un error de cableado o no lo está conduciendo correctamente en el software.

Una posibilidad es que tenga el pull-up habilitado en el procesador.

El microprocesador AVR tiene la capacidad de habilitar una resistencia de pull-up de alto valor (20k) si es necesario. Si haces esto cuando pretendes apagar el LED, brillará tenuemente.

Una forma en que esto puede suceder es establecer pin_mode () como INPUT_PULLUP. También ocurrirá si gira el pin a una entrada y escribe un 1 en el registro de salida del pin.

La forma habitual de conectar un LED a un Arduino u otro procesador es conectar un extremo del LED a + 5V con el otro extremo conectado al pin de salida a través de una resistencia en el rango de 220-1000 ohm dependiendo de el LED y el brillo requerido.

Algunas personas llaman a esta resistencia una resistencia limitadora de corriente, prefiero llamarla una resistencia definitoria actual. No está ahí para proteger el LED, es para configurar la corriente deseada.

Escribes 0 en el pin para encender el LED y un 1 para apagarlo.

    
respondido por el Kevin White
1

Respuesta simple: los LED de color rosado funcionan utilizando un fósforo para convertir la luz emitida por un LED ultravioleta en una mezcla de longitudes de onda visibles. Ese fósforo puede ser excitado por la luz ultravioleta de otras fuentes. Sospecho que esto podría ser lo que está sucediendo aquí.

    
respondido por el Hearth
0

En los viejos tiempos, cuando el microcontrolador no podía proporcionar suficiente corriente para controlar el LED o incluso el BJT y esa situación, lo que solíamos hacer era usar la topología de lógica inversa.

Por ejemplo, cuando Arduino Pin = 1 LED estará apagado y viceversa.

Conecte el Cathod del LED al Arduino Pin y el Ánodo del LED se conecta a la fuente de alimentación a través de la resistencia limitadora de corriente y pruebe la lógica 1 en arduino; debe apagar el LED. Usa la lógica 0 para encender.

    
respondido por el Sanwal Saleem
0

Esto realmente no es posible. El led tiene una resistencia, ya que el nivel de voltaje es generalmente incorrecto para un led, por lo que tiene un nivel alto y alto en cada lado del led o un bajo y bajo en ambos lados para desactivarlo. Digamos bajo, bajo uno de ellos es la conexión a tierra del sistema, la otra es una conexión a tierra dentro de la parte (más transistores y resistencias). así que técnicamente no están exactamente al mismo nivel, y nunca pueden estar cerca, pero nunca exactamente. Incluso si utilizara un relé, no sería exactamente cero, ya que existen trazas de diferentes longitudes (eléctricamente) a un punto de tierra común.

ahora, si esto está simplificado, podría revertir la polaridad si está activado high low, entonces low high debería estar definitivamente desactivado, pero estoy seguro de que alguien me corregirá con esto.

Si está viendo un resplandor, es probable que no tenga un lado alto o bajo a la derecha, por lo que tiene una situación alta, alta o baja, con el mismo potencial. Hay cierta resistencia que está creando un divisor de voltaje haciendo que su led un poco alto bajo lo suficiente como para brillar. O tal vez lo estás parpadeando y no te das cuenta ...

    
respondido por el old_timer
0

Ya que conozco bien el 8051, hablaré de ello ya que al principio me encontré con un problema similar.

Los pines del puerto (al menos los que estoy usando para la respuesta) están diseñados para permitir la entrada y salida en ciertas condiciones:

Si ese pin se establece en un código lógico alto, entonces el pin mismo se configurará en alta impedancia. Si intenta conectar el LED y la resistencia en serie desde el pin hasta el suelo, entonces obtendrá cualquier cosa, desde una luz tenue a ninguna luz. Si establece el pin en el código de lógica baja, entonces el LED no se enciende en la misma configuración.

El enfoque más sencillo sería conectar el estilo de LED invertido. En mi circuito, su LED y resistencia (LED2 y R3) en serie se conectaron entre VCC (que está regulado a 5 V) y un pin de puerto. Al hacer esto, el LED se encenderá normalmente (si el pin se establece en bajo en código) o se apagará (si el pin se establece en alto en código).

La razón por la que el enfoque más sencillo funciona es porque el micro tiene resistencias de pull-up internas. Si el pin se establece en lógica alta, entonces el LED y la resistencia se conectarán de VCC a VCC a través de la resistencia de pull-up interna del microcontrolador, lo que dará un voltaje cero al LED (lo que significa que el LED está apagado). Si el pin se establece en lógica baja, entonces el LED se encenderá porque entonces tiene un circuito de LED normal que es VCC a LED con resistencia conectada a tierra.

una respuesta a tu manera

Bueno, puede que no sea la mejor respuesta, pero como la micro puede proporcionar muy poca salida (a través de un pull-up interno) y cero, puede ejecutar la salida a través de un amplificador operacional y ajustar el potenciómetro para crear una referencia. voltaje y si el voltaje del pin del microcontrolador es mayor que el voltaje de referencia, entonces el LED se enciende. de lo contrario no lo hace. Es posible que deba jugar un poco con los valores de la resistencia para obtener el efecto deseado.

    
respondido por el user143136
0

Tal vez no haya configurado la dirección correcta del pin (lo vi antes si el pin estaba configurado como entrada y no como salida). Otra razón potencial es que fritaste el alfiler y siempre tiene cierto potencial (tengo tal atmega en mi cajón)

    
respondido por el P__J__

Lea otras preguntas en las etiquetas