¿Cómo conecto un LED a través del pin tx en mi Atmega328?

5

He construido un Arduino independiente y subí bocetos a través de este método De Arduino a un Microcontrolador en una placa de pruebas . Me gustaría conectar un LED a través de TX como en la placa Arduino, así que simplemente lo conecté al pin de TX con una resistencia que va a tierra. Y funciona en un boceto en el que simplemente estoy enviando datos en serie a una velocidad de baudios de 9200. Tanto el Arduino TX como los ATMega TX parpadean correctamente.

Sin embargo, mi aplicación involucra una tasa de baudios de 19200, pero cuando subo este boceto, el pin TX en mi ATmega permanece encendido constantemente, incluso si no se están enviando datos en serie. Lo que es aún más interesante es que el led Arduino TX parpadea correctamente para el mismo boceto. ¿Alguien puede ayudar?

    
pregunta ZackB

4 respuestas

6

Advertencia: aunque el OP aceptó mi respuesta como la mejor, otra, se publicó una mejor respuesta después de eso, es posible que desee leer antes de leer la mía. Como señaló Chetan Bhargava, es posible que mi solución consuma demasiada corriente para controlar los LED de las líneas serie.

A continuación se incluye parte del esquema de un convertidor RS232 a UART que he creado. En él, conecté los LED (y sus respectivas resistencias limitadoras de la serie) de las líneas RX y TX a la línea Vcc, de la misma forma en que podía conectar el suyo . Conecte los ánodos a Vcc y los cátodos a las líneas TX / RX, con la resistencia limitadora de corriente en serie (antes o después del LED).

LosLEDdebenestarconectadosaVccynoatierraporquelaslíneasUART(esdecir,lainterfazserialATmega)estáninactivasALTA,esdecir,permanecenennivelesdeVcccuandonosetransmitenada.

TengaencuentaloqueGbulmerdijoensuscomentarios,sinembargo:

  

...esposibleque,avelocidadesdetransmisiónaltas,ocableslargos(uotrascosasconseñalesdeunidadreducidas),lascomunicacionescomiencenaserpococonfiablesporquelosLEDponenunacargaadicionalenlaconexión.EsposiblequedeseeconsiderarconducirlosLEDindirectamenteconunMOSFETountransistordarlington.

NohetenidoproblemasconesosLEDsconectadosalaslíneasseriehasta78600baudios,peropodríahacerlosivamásrápido.

SiestabainteresadoenconectarlosindicadoresLEDcomorespuestaensuprogramadorISP,podríahacerlosiguiente.ElcroquisArduinoISP(firmware)yacontrolatresindicadoresLED:

  1. HeartbeatenD9:parpadea(sedesvanece)paramostrarqueelbocetofuncionacorrectamente;
  2. ProgramaciónenD7:estáactivadacuandosellevaacabolaprogramaciónreal;
  3. ErrorenD8:encuandoalgosalemal.

EstosindicadoresfuncionanperfectamenteconelbocetodeArduinoISP.

ParaconectarestosLED,useelsiguienteesquema:

El esquema es para un Arduino Shield que he hecho para programar ATmegas y ATtinies, para usar con el boceto ArduinoISP. Espero que esto ayude.

Si realmente desea conectar LEDs a las líneas de transmisión, responda las preguntas que publiqué como comentarios y luego actualizaré mi respuesta.

    
respondido por el Ricardo
8

En general, no es una buena idea extraer mucha corriente de sus líneas Rx y Tx para controlar los LED. El consumo de corriente adicional puede reducir su Fan-out a su objetivo.

Para evitar un consumo de corriente extra de sus líneas, puede usar una doble OpAmp como LM358D para controlar esos LED.

La alta impedancia de las entradas OpAmp no consumirá mucha corriente de sus líneas Tx y Rx y mantendrá el abanico de salidas en las líneas.

He simulado este esquema en LTSPICE y se verificó físicamente con LM324 (TI) en una placa de pruebas. Lo sentimos, no tenía un LM358D a mano, pero funcionan de manera similar.

Editar: Gracias a los punteros de arudino.tyro. Pude probar el nuevo esquema con LM358D. El esquema antiguo está aquí: enlace

    
respondido por el Chetan Bhargava
1

No puedo imaginar que el circuito publicado por Chetan Bhargava funcione correctamente, ya que cuando lo simulo, el LED es como lo señala arudino.tyro en un comentario constantemente. en. Además, el comportamiento es diferente en comparación con la resistencia simple más el circuito de LED propuesto por Ricardo .

UART está en ALTO cuando está inactivo, por lo que tiene que encender el LED cuando el bus está BAJO. Puede esperar ver un parpadeo con el "circuito incorrecto", cuando una transmisión está en curso, porque el LED aún está encendido, ¿verdad? Sin embargo, creo que esto es demasiado rápido, que puedes verlo con tus ojos (por ejemplo, 9600 kHz).

Mi propuesta para resolver este problema es el siguiente circuito. Básicamente es un seguidor de voltaje (amplificador no inversor con una ganancia de 1), pero la salida está conectada al circuito LED, que está conectado a 5 V. Esto hace que la corriente fluya a través de la lámpara una vez que la entrada es negativa. .

DeacuerdoconLTSpice,lacorrientesolofluyeatravésdelLEDcuandounatransmisiónestáencurso(veráestocomoun"estado ON más prolongado" cuando las transmisiones están en curso). Si hay una pequeña pausa entre un par de transmisiones, verá un parpadeo (el LED se apaga).

    
respondido por el m3x1m0m
-2

Creo que esto funcionará

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Dee Jay

Lea otras preguntas en las etiquetas