Domanda:
Come collego un LED sul pin tx sul mio Atmega328?
ZackB
2014-08-09 19:13:00 UTC
view on stackexchange narkive permalink

Ho creato un Arduino autonomo e ho caricato schizzi tramite questo metodo Da Arduino a un microcontrollore su una breadboard. Vorrei collegare un LED su TX come sulla scheda Arduino, quindi l'ho semplicemente collegato al pin TX con un resistore che va a terra. E funziona su uno schizzo in cui sto semplicemente inviando dati seriali a 9200 baudrate. Entrambi i LED Arduino TX e il mio ATmega TX lampeggiano correttamente.

Tuttavia, la mia applicazione prevede un baudrate di 19200, ma quando carico questo schizzo, il pin TX sul mio ATmega rimane costantemente acceso, anche se non vengono inviati dati seriali. La cosa ancora più interessante è che il led di Arduino TX lampeggia correttamente per lo stesso schizzo. Qualcuno può aiutare?

Puoi mostrarci come hai cablato il tuo LED?O almeno dicci a quale pin esatto è collegato?Tecnicamente, i pin che stai utilizzando non sono quelli dell'interfaccia seriale (pin 2 e 3), quindi molto probabilmente stai utilizzando altri pin che vengono utilizzati durante la programmazione dell'ISP (MISO, MOSI ecc.).
Se stavi usando il pin seriale TX, dovresti collegare il LED a Vcc (con il resistore limitatore di corrente in serie) e non a massa, poiché l'UART (interfaccia seriale) è inattivo ALTO (cioè rimangono a livelli Vcc quando nulla ètrasmessa).Quindi, sapere con quale pin hai collegato il tuo LED sarà utile.
@ZackB: se guardi da vicino un Arduino, vedrai che i LED TX e Rx * non * sono collegati ai pin Tx e Rx di ATmega.Su un Arduino, sono guidati da pin sul chip dell'interfaccia seriale da USB.Non ho esaminato le specifiche, ma potresti trovare a baudrate elevati o cavi lunghi (o altre cose con segnali di azionamento ridotti) che le comunicazioni iniziano a diventare inaffidabili perché i LED mettono un carico extra sulla connessione.Potresti prendere in considerazione l'idea di pilotare i LED indirettamente con un MOSFET o un transistor darlington.
@Ricardo Ho collegato il led a vcc e non ottengo alcuna attività.Non sono proprio sicuro di come pubblicare un'immagine di come è cablato il led, ma è collegato al pin tx su un'estremità e una resistenza a terra dall'altra.
@gbulmer Se quello che dici è vero, non mi preoccuperò di provare a impostare e condurre per la trasmissione seriale perché non è davvero essenziale per il mio progetto.
@Ricard In contraddizione con il mio commento precedente - Dopo aver collegato correttamente a Vcc, il led funziona!Grazie.(Ho dimenticato che i LED sono davvero solo diodi)
@ZackB - per favore non lasciarti scoraggiare dal farlo;Non stavo cercando di persuaderti a non farlo.Penso che i LED lampeggianti siano un'interfaccia umana utile e semplice.Sto solo cercando di avvertirti che c'è la possibilità che qualcosa vada storto sulla base del fatto che l'avviso è salvato;se le comunicazioni diventano un po 'instabili, spegni i LED e vedi se lo risolve.Che tipo di resistenza usi?
@gbulmer In realtà non sono sicuro di quale resistore perché secondo la pagina del prodotto [led] (https://www.sparkfun.com/products/11372), sembra che non abbia bisogno di un grande resistore, ma è estremamente luminoso, anchese cablato con una resistenza da 10k.È normale?
@ZackB - Solo per confermare, stai eseguendo quel LED da * 5V * con una serie di resistore di limitazione della corrente di * 10k *?Sarebbe (5 V-3,4 V) / 10 k = 0,16 mA, sì?I LED blu attirano molto l'attenzione, ma è davvero impressionante.Stavo per suggerire che se potessi far funzionare i tuoi LED Tx e Rx con resistori 4k-ish (ben al di sotto di 1 mA di corrente), probabilmente eviterai i problemi di cui mi preoccupavo.Per esempio.alcuni vecchi convertitori da RS232 a seriale sono a bassa corrente (IIRC sotto 4mA), quindi circa 4mA per un LED potrebbero essere troppi.L'effetto potrebbe essere quello di distorcere alcuni schemi di bit mentre faticava a ridurre il segnale abbastanza velocemente
@gbulmer Sì, il led produce un output ragionevole anche a una corrente così bassa.Invece ho inserito una resistenza da 220 Ohm, ed era quasi troppo luminosa da guardare.Ho un 2.2k in questo momento, il che sembra buono considerando che lampeggia solo per una frazione di secondo.
@ZackB - Grazie per il feedback, hai provato il LED con 4.4k, i, e, due di quei 2.2k in serie?Guidato con 2.2k dovrebbe ridurre significativamente i problemi che mi preoccupavano.
Cinque risposte:
Chetan Bhargava
2015-06-17 10:19:15 UTC
view on stackexchange narkive permalink

In generale non è una buona idea assorbire molta corrente dalle linee Rx e Tx per pilotare i LED. L'assorbimento di corrente extra può ridurre il tuo Fan-out al tuo obiettivo.

Per evitare l'assorbimento di corrente extra dalle tue linee, puoi utilizzare un doppio OpAmp come LM358D per pilotare quei LED.

enter image description here

LM358 TI

L'alto l'impedenza degli ingressi OpAmp non assorbirà molta corrente dalle linee Tx e Rx e preserverà il fan-out sulle linee.

Ho simulato questo schema in LTSPICE e fisicamente verificato con LM324 (TI) su una breadboard. Spiacente, non avevo un LM358D a portata di mano ma funzionano in modo simile.

Modifica: grazie ai puntatori di arudino.tyro. Sono stato in grado di provare il nuovo schema con LM358D. Il vecchio schema è qui: http://i.stack.imgur.com/GHauy.png

Se non sbaglio, questo amplificatore operazionale viene utilizzato come buffer?È così che si chiama?
Qual è un valore tipico per R1 e R2?Qual è la corrente di uscita tipica a 1 e 7 supponendo 5 V Vcc e 5 V TTL?Penso che la corrente nominale massima di 1 e 7 sia 40 mA.Ma qual è il valore tipico con i valori dati?Grazie
@arudino.tyro i valori di R1 e R2 dipendono dalla corrente nominale del LED, dalla quantità di corrente che si desidera far passare attraverso il LED e (o) dalla luminosità che si desidera che il LED sia acceso.Puoi google per il calcolatore di corrente LED.
@ChetanBhargava, Ho usato il tuo circuito e rimane acceso tutto il tempo.Credo di aver trovato il problema: i livelli TTL sono veramente bassi se la tensione è di 0,7 V o inferiore e sono alti quando sono 2 V o superiore.Quindi con il tuo circuito "confronti" due tensioni.Uno è il livello TTL in IN- e l'altro è in IN +.Se l'uscita del comparatore deve essere solo lo stato (invertito) delle linee di segnale, è necessario confrontarle con una tensione fissa compresa tra 0,7 V e 2,0 V.Ecco il problema: lo confronti con l'output.(OUT è collegato a IN +)
@ChetanBhargava, Se l'uscita è alta (5V), l'ingresso IN dovrebbe essere maggiore di 5V per commutare l'uscita. Lo stesso è quando l'uscita è bassa, quindi è necessaria una tensione di ingresso inferiore a 0 V affinché l'uscita si attivi.Problema risolto 1. scollegando OUT da IN +, 2. fornendo 1.5v da 5v tramite un partitore di tensione (o probabilmente un diodo Zener).Ti sarei grato se potessi aggiustare i tuoi schemi.Grazie
Caro @ChetanBhargava, Sì, l'ho provato su una breadboard ed è rimasto acceso tutto il tempo.Ho cercato in Internet e mi sono imbattuto in un argomento del forum su edaboard: "http://www.edaboard.com/thread346127.html" l'OP ha usato esattamente i tuoi schemi con il tuo nome sopra!Devi essere un membro per vedere gli schemi.Ha riferito la stessa cosa.Ho fatto il trucco suggerito lì e ha risolto il tuo circuito.Invece della linea di feedback, fornire a v + (non invertente ...) fornire una tensione compresa tra 0,7 V e 2,0 V.Ho fornito 1,5 V dalla linea 5 V tramite un partitore di tensione.L'ho anche simulato in LTspice.
@arudino.tyro Grazie per i suggerimenti, ho migliorato la mia risposta.Apprezzerei se potesse provare il nuovo schema.Il mio vecchio schema era solo un buffer (non un buffer invertente).Ho dimenticato che i segnali UART sono invertiti.
@ChetanBhargava, Ok ... lo farò al più presto, quale programma stai usando per disegnare schemi?
Ricardo
2014-08-09 19:57:15 UTC
view on stackexchange narkive permalink

Avvertenza: anche se l'OP ha accettato la mia risposta come la migliore, dopo è stata pubblicata un'altra risposta migliore, che potresti voler leggere prima di leggere la mia. Come notato da Chetan Bhargava, la mia soluzione potrebbe assorbire troppa corrente per pilotare i LED dalle linee seriali.


Di seguito è parte dello schema di un convertitore RS232-UART che ho fatto. In esso, ho collegato i LED (e le rispettive resistenze di limitazione della serie) dalle linee RX e TX alla linea Vcc, proprio come potresti collegare il tuo . Collegare gli anodi a Vcc e i catodi alle linee TX / RX, con il resistore limitatore di corrente in serie (prima o dopo il LED).

RX and TX LED connections

I LED deve essere collegata a Vcc e non a massa perché le linee UART (cioè l'interfaccia seriale ATmega) sono inattive ALTE, cioè rimangono ai livelli Vcc quando non viene trasmesso nulla.

Nota cosa ha detto gbulmer nei suoi commenti , però:

... potresti trovare ad alti baudrate, o cavi lunghi (o altre cose con segnali di azionamento ridotti) che le comunicazioni iniziano a diventare inaffidabili perché i LED mettono un carico extra la connessione. Potresti prendere in considerazione l'idea di pilotare i LED indirettamente con un MOSFET o un transistor darlington.

Non ho avuto problemi con quei LED collegati alle linee seriali fino a 78600 baud, ma potresti farlo se tu andare più veloce.


Se fossi interessato a collegare i LED indicatori come feedback nel tuo programmatore ISP, potresti fare quanto segue. Lo sketch ArduinoISP (firmware) pilota già tre LED indicatori:

  1. Heartbeat su D9: lampeggia (dissolvenza) per mostrare che lo sketch funziona correttamente;
  2. Programmazione su D7 : è acceso quando è in corso la programmazione vera e propria;
  3. Errore su D8: acceso quando qualcosa va storto.

Questi indicatori funzionano perfettamente con lo sketch di ArduinoISP.

Per collegare questi LED, utilizzare lo schema seguente:

ArduinoISP shield

Lo schema è per un Arduino Shield che ho realizzato per programmare ATmegas e ATtinies, da utilizzare con lo sketch ArduinoISP. Spero che questo aiuti.

Se vuoi davvero collegare i LED alla trasmissione righe, rispondi alle domande che ho postato come commenti, quindi aggiornerò la mia risposta.

Ho usato lo schizzo dell'ISP per avviare il bootloader dell'atmega, ma dopo ho usato solo tx, rx e reimpostare le linee tra i due per caricare gli schizzi.
Là!Ho aggiornato la mia risposta per tenere conto dei tuoi chiarimenti e anche per fungere da riferimento futuro.
Per favore, sentiti libero di votare e accettare la risposta che ti è stata più utile.Fallo facendo clic sulla freccia rivolta verso l'alto e sul segno di spunta vicino alla parte superiore della risposta, sul lato sinistro.
@Ricardo - il primo diagramma è * davvero * parte dello schema, o hai appena abbozzato qualcosa per rispondere a questa domanda?Penso che sia rotto e non possa funzionare come mostrato.Lo schema mostra Rx collegato direttamente a + 5V, quindi è molto improbabile che funzioni.Inoltre, mostreresti il valore di R1 e R2.Inoltre, questo è un R@232 per UART e la domanda non menziona RS232.
@gbulmer Molto ben individuato !!L'immagine proviene da una vera tavola di lavoro che ho, ma ho fatto photoshop per renderla migliore nel caso in cui Olin la vedesse.Adesso è stato risolto.
@gbulmer I resistori sono entrambi 1K.L'immagine proviene dalla parte del mio convertitore collegata ai pin ATmega UART TX e RX.L'ho usato come il miglior esempio che avevo per illustrare come cablare i LED.
@Ricardo - ok, va meglio.Tuttavia, ora leggo il circuito come se avesse un componente elettronico vicino che ha eseguito la conversione del livello del segnale RS232 in 5V UART.Questo è esattamente * non * ciò di cui sto avvertendo ZackB.Un pezzo di elettronica locale che funga da buffer e quindi guidi l'elettronica * è * quello che ho suggerito.Sono rilassato su come il problema viene affrontato.Tuttavia, penso che il tuo circuito non sia una prova che il circuito di ZackB sia robusto e affidabile.Sto solo cercando di essere chiaro per ridurre al minimo la confusione.
@gbulmer Puoi spiegare cosa intendi in modo più dettagliato?Ad esempio, perché esattamente questa configurazione non è affidabile?Perché c'è la possibilità che i dati vadano persi?Allora perche?
@gbulmer Grazie per il chiarimento.Ma se ritieni che il mio riferimento al tuo commento non sia chiaro e non corretto, sentiti libero di modificarlo.Oppure, se vuoi, posso rimuoverlo completamente.Oppure puoi inserire una risposta per chiarirlo.Sono d'accordo con qualsiasi opzione tu scelga.
@ZackB in realtà, ho finito per rimuovere i LED da quella domanda che ho collegato, perché sapevo che erano cablati in modo sbagliato ...
@Ricardo - Non mi dispiace affatto che tu identifichi un caso reale in cui tutto ha funzionato bene! -) Il mio punto è che lo schema circuitale superiore * potrebbe * rappresentare la linea tra il convertitore RS232-seriale e l'UART, non possoessere sicuro.Tuttavia, se si trova tra questi due punti finali e sono tutti sulla scheda locale, non possono essere soggetti a "cavi lunghi (o altre cose con segnali di azionamento ridotti)".Tuttavia, se non è così, e quei segnali sono soggetti a quei pericoli, allora è una prova che funziona e definisce le condizioni in cui ZackB dovrebbe essere a posto.
@Ricardo nella figura "Collegamenti LED RX e TX" (Figura 1), non ci sarebbe molta corrente da prelevare dalle linee RX e TX per pilotare i LED?
@Chetan Dipende davvero da R1 e R2.Con le resistenze da 1K di solito ottengo correnti 5mA.È molto?Non posso dirlo.Funziona solo per me.È abbastanza per disturbare le linee seriali?
@Ricardo tutto dipende dalla quantità di corrente assorbita e dal driver di uscita TTL sulle linee TX e RX.Guardando alcune schede tecniche dei cavi FTDI, si dice che possono affondare 6-8 mA.Non sono sicuro che disegnare 5ma dai perni sia una buona idea.
@Chetan - sarebbe giusto pilotare i LED utilizzando i BJT come interruttori, collegando le loro basi alle linee seriali utilizzando resistenze limitatrici di serie adeguate?
@Ricardo sì, sarebbe possibile con BJT con hFE alto e anche possibile con MOSFET.
m3x1m0m
2017-06-26 14:30:23 UTC
view on stackexchange narkive permalink

Non riesco a immaginare, che il circuito postato da Chetan Bhargava funzioni correttamente visto che quando lo simulo il LED è come sottolineato da arudino.tyro in un commento costantemente attivo. Inoltre il comportamento è diverso rispetto al circuito semplice resistore più LED proposto da Ricardo.

UART è ALTO quando è INATTIVO, quindi devi accendere il LED quando il bus è BASSO. Potresti aspettarti di vedere alcuni lampeggi con il "circuito sbagliato", quando una trasmissione è in corso, perché il LED è ancora attivato, giusto? Tuttavia, penso che sia troppo veloce, che puoi vederlo con i tuoi occhi (ad esempio 9600 kHz).

La mia proposta per risolvere questo problema è il circuito seguente. È fondamentalmente un inseguitore di tensione (amplificatore non invertente con un guadagno di 1), ma l'uscita è collegata al circuito LED, che è collegato a 5 V. Ciò si traduce in un flusso di corrente attraverso la lampada una volta che l'ingresso è negativo .

UART LED schematics.

Secondo LTSpice la corrente scorre attraverso il LED solo quando una trasmissione è in corso (lo vedi come uno "stato ON più lungo" quando le trasmissioni sono in corso). Se c'è una piccola pausa tra un paio di trasmissioni vedrai lampeggiare (il LED si spegne).

UART LED simulation.

Costruisco il mio circuito su una scheda per I2C e UART.I2C, che ho simulato anche io, si vedono solo trasmissioni più lunghe o se il bus è danneggiato (il che è altrettanto bello).Sei il benvenuto a verificarlo: https://github.com/m3x1m0m/UppSense2017/blob/master/pcbs/backplane/output/electrical_spec_interface.pdf Con il tuo circuito anche il LED potrebbe lampeggiare, ma è costantemente acceso quando nola trasmissione è in corso, perché l'UART è ALTO in modalità inattiva.
theMastermind
2020-08-07 01:36:57 UTC
view on stackexchange narkive permalink

@Chetan Bhargava il tuo circuito sarà sempre attivo.Perché UART è ALTO in modalità inattiva.Per evitare questo problema, cambiare la direzione dei LED.Come mostrato nell'immagine sotto riportata

enter image description here

Dee Jay
2016-04-24 21:48:06 UTC
view on stackexchange narkive permalink

Penso che funzionerà

schematic

simula questo circuito - Schema creato utilizzando CircuitLab



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...