Frage:
How do I hook up an LED across the tx pin on my Atmega328?
ZackB
2014-08-09 19:13:00 UTC
view on stackexchange narkive permalink

Ich habe ein eigenständiges Arduino erstellt und über diese Methode Skizzen hochgeladen Von Arduino zu einem Mikrocontroller auf einem Breadboard. Ich möchte eine LED über TX wie auf der Arduino-Platine anschließen, also habe ich sie einfach mit einem Widerstand gegen Masse an den TX-Pin angeschlossen. Und es funktioniert auf einer Skizze, bei der ich einfach serielle Daten mit einer Baudrate von 9200 sende. Sowohl die Arduino TX- als auch meine ATmega TX-LEDs blinken korrekt.

Meine Bewerbung hat jedoch eine Baudrate von 19200. Wenn ich diese Skizze hochlade, bleibt der TX-Pin meines ATmega konstant eingeschaltet, auch wenn keine seriellen Daten gesendet werden. Noch interessanter ist, dass die Arduino TX-LED für dieselbe Skizze korrekt blinkt. Kann jemand helfen?

Können Sie uns zeigen, wie Sie Ihre LED verdrahtet haben?Oder sagen Sie uns zumindest, an welchem Pin es genau verdrahtet ist?Technisch gesehen sind die von Ihnen verwendeten Pins nicht die von der seriellen Schnittstelle (Pins 2 und 3), daher verwenden Sie höchstwahrscheinlich einen anderen Pin, der während der ISP-Programmierung verwendet wird (MISO, MOSI usw.).
Wenn Sie den seriellen TX-Pin verwenden, müssen Sie die LED mit Vcc (mit dem Serienstrombegrenzungswiderstand) und nicht mit Masse verbinden, da UART (serielle Schnittstelle) im Leerlauf auf HIGH steht (dh sie bleiben auf Vcc-Pegel, wenn nichts vorhanden istübertragen).Es ist also hilfreich zu wissen, mit welchem Pin Sie Ihre LED verdrahtet haben.
@ZackB - Wenn Sie sich ein Arduino genau ansehen, werden Sie feststellen, dass die TX- und Rx-LEDs * nicht * mit den Tx- und Rx-Pins des ATmega verbunden sind.Auf einem Arduino werden sie über Pins auf dem USB-Seriell-Schnittstellen-Chip angesteuert.Ich habe mir die technischen Daten nicht angesehen, aber bei hohen Baudraten oder langen Kabeln (oder anderen Dingen mit reduzierten Antriebssignalen) kann es vorkommen, dass die Kommunikation unzuverlässig wird, da die LEDs die Verbindung zusätzlich belasten.Möglicherweise möchten Sie die LEDs indirekt mit einem MOSFET- oder Darlington-Transistor ansteuern.
@Ricardo Ich habe die LED an vcc angeschlossen und bekomme überhaupt keine Aktivität.Ich bin mir nicht sicher, wie ich ein Bild davon veröffentlichen soll, wie die LED verdrahtet ist, aber sie ist an einem Ende mit dem TX-Pin und am anderen Ende mit einem Widerstand gegen Masse verbunden.
@gbulmer Wenn das, was Sie sagen, wahr ist, werde ich mich nicht darum kümmern, die serielle Übertragung einzurichten und zu führen, da dies für mein Projekt wirklich nicht wesentlich ist.
@Ricard Im Widerspruch zu meinem vorherigen Kommentar - Nach korrekter Verkabelung mit Vcc funktioniert die LED!Vielen Dank.(Ich habe vergessen, dass LEDs wirklich nur Dioden sind)
@ZackB - bitte lassen Sie sich nicht von mir abschrecken;Ich habe nicht versucht, dich zu verfolgen, es nicht zu tun.Ich denke, die blinkenden LEDs sind eine nützliche, einfache Benutzeroberfläche.Ich möchte Sie nur warnen, dass die Möglichkeit besteht, dass etwas schief geht, wenn vorgewarnt vorgewarnt ist.Wenn die Kommunikation etwas schuppig wird, nehmen Sie die LEDs ab und prüfen Sie, ob sie das Problem behebt.Welche Widerstandsgröße verwenden Sie?
@gbulmer Ich bin mir eigentlich nicht sicher, welcher Widerstand, denn laut der Produktseite [led] (https://www.sparkfun.com/products/11372) scheint es, dass es keinen großen Widerstand benötigt, aber es ist sogar extrem hellwenn mit einem 10k Widerstand verdrahtet.Ist das normal?
@ZackB - Nur um zu bestätigen, dass Sie diese LED von * 5V * mit einem seriellen Strombegrenzungswiderstand von * 10k * betreiben?Das wäre (5V-3,4V) / 10k = 0,16mA, ja?Blaue LEDs sind sehr auffällig, aber das ist sehr beeindruckend.Ich wollte gerade vorschlagen, dass Sie wahrscheinlich die Probleme vermeiden würden, über die ich mir Sorgen machte, wenn Sie Ihre Tx & Rx-LEDs mit 4k-ischen Widerständen (deutlich unter 1 mA Strom) betreiben könnten.Z.B.Einige alte RS232-zu-Seriell-Wandler sind stromsparend (IIRC unter 4 mA), sodass etwa 4 mA für eine LED möglicherweise zu viel sind.Der Effekt kann darin bestehen, einige Bitmuster zu verzerren, da es schwierig war, das Signal schnell genug nach unten zu ziehen
@gbulmer Ja, die LED erzeugt auch bei einem niedrigen Strom eine angemessene Leistung.Ich habe stattdessen einen 220-Ohm-Widerstand eingesetzt, und es war fast zu hell, um es anzusehen.Ich habe es gerade bei 2,2k, was gut aussieht, wenn man bedenkt, dass es nur für den Bruchteil einer Sekunde blinkt.
@ZackB - Vielen Dank für das Feedback. Haben Sie die LED mit 4,4k ausprobiert, d. H. Zwei dieser 2,2k in Reihe?Das Fahren mit 2.2k sollte die Probleme, über die ich mir Sorgen machte, erheblich reduzieren.
Fünf antworten:
Chetan Bhargava
2015-06-17 10:19:15 UTC
view on stackexchange narkive permalink

Im Allgemeinen ist es keine gute Idee, viel Strom aus Ihren Rx- und Tx-Leitungen zu ziehen, um LEDs anzusteuern. Durch die zusätzliche Stromaufnahme können Sie Ihr Fan-out auf Ihr Ziel reduzieren.

Um eine zusätzliche Stromaufnahme aus Ihren Linien zu vermeiden, können Sie einen doppelten OpAmp verwenden wie LM358D, um diese LEDs anzusteuern.

enter image description here

LM358 TI

Das Hoch Die Impedanz der OpAmp-Eingänge zieht nicht viel Strom aus Ihren Tx- und Rx-Leitungen und bewahrt den Fan-Out auf den Leitungen.

Ich habe diesen Schaltplan in LTSPICE und physikalisch simuliert verifiziert mit LM324 (TI) auf einem Steckbrett. Leider hatte ich keinen LM358D zur Hand, aber sie funktionieren ähnlich.

Bearbeiten: Dank der Hinweise von arudino.tyro. Ich konnte den neuen Schaltplan mit LM358D ausprobieren. Der alte Schaltplan ist hier: http://i.stack.imgur.com/GHauy.png

Wenn ich mich nicht irre, wird dieser Operationsverstärker als Puffer verwendet?Heißt es so?
Was ist ein typischer Wert für R1 und R2?Was ist der typische Ausgangsstrom bei 1 & 7 unter der Annahme von 5 V Vcc und 5 V TTL?Ich denke, die maximale Nennstromstärke von 1 und 7 beträgt 40mA.Aber was ist der typische Wert mit den angegebenen Werten?Vielen Dank
@arudino.tyro Die Werte von R1 und R2 hängen von der Nennstromstärke der LED, der Strommenge ab, die Sie durch die LED leiten möchten, und (oder) davon, wie hell die LED eingeschaltet sein soll.Sie können für LED-Stromrechner googeln.
@ChetanBhargava, Ich habe Ihre Schaltung benutzt und sie bleibt die ganze Zeit eingeschaltet.Ich glaube, ich habe das Problem gefunden: TTL-Pegel sind wirklich niedrig, wenn die Spannung 0,7 V oder weniger beträgt, und sie sind hoch, wenn sie 2 V oder höher sind.Mit Ihrer Schaltung "vergleichen" Sie also zwei Spannungen.Einer ist der TTL-Pegel bei IN- und der andere ist bei IN +.Wenn der Komparatorausgang nur der (invertierte) Zustand der Signalleitungen sein soll, sollten Sie diese mit einer festen Spannung zwischen 0,7 V und 2,0 V vergleichen.Hier ist das Problem: Sie vergleichen es mit der Ausgabe.(OUT ist mit IN + verbunden)
@ChetanBhargava, Wenn der Ausgang hoch ist (5 V), sollte der IN-Eingang höher als 5 V sein, damit der Ausgang umgeschaltet wird. Wenn der Ausgang niedrig ist, benötigen Sie eine Eingangsspannung von weniger als 0 V, damit der Ausgang schaltet.Problem gelöst durch 1. Trennen von OUT von IN +, 2. Versorgen von 1,5 V von 5 V über einen Spannungsteiler (oder wahrscheinlich eine Zenerdiode).Ich wäre Ihnen dankbar, wenn Sie Ihre Schaltpläne korrigieren könnten.Vielen Dank
Sehr geehrte @ChetanBhargava, Ja, ich habe es auf einem Steckbrett getestet und es blieb die ganze Zeit eingeschaltet.Ich habe im Internet gesucht und bin auf edaboard auf ein Forenthema gestoßen: "http://www.edaboard.com/thread346127.html" Das OP hat genau Ihre Schaltpläne mit Ihrem Namen verwendet!Sie müssen Mitglied sein, um die Schaltpläne sehen zu können.Er berichtete dasselbe.Ich habe den dort vorgeschlagenen Trick gemacht und er hat deine Schaltung repariert.Anstelle der Rückkopplungsleitung muss bei v + (nicht invertierend ...) eine Spannung zwischen 0,7 V und 2,0 V bereitgestellt werden.Ich habe 1,5 V von der 5 V-Leitung über einen Spannungsteiler bereitgestellt.Ich habe es auch in LTspice simuliert.
@arudino.tyro Vielen Dank für die Hinweise, ich habe meine Antwort verbessert.Ich würde mich freuen, wenn Sie den neuen Schaltplan ausprobieren können.Mein alter Schaltplan war nur ein Puffer (kein invertierender Puffer).Ich habe vergessen, dass UART-Signale invertiert sind.
@ChetanBhargava, Ok ... Ich werde es so schnell wie möglich tun. Welches Programm verwenden Sie zum Zeichnen von Schaltplänen?
Ricardo
2014-08-09 19:57:15 UTC
view on stackexchange narkive permalink

Vorsichtsmaßnahme: Obwohl das OP meine Antwort als die beste akzeptierte, wurde danach eine weitere, bessere Antwort veröffentlicht, die Sie vielleicht lesen möchten, bevor Sie meine lesen. Wie von Chetan Bhargava festgestellt, zieht meine Lösung möglicherweise zu viel Strom, um die LEDs von den seriellen Leitungen anzusteuern.


Nachfolgend finden Sie einen Teil des Schaltplans eines RS232-UART-Wandlers das habe ich gemacht. Darin habe ich LEDs (und ihre jeweiligen Serienbegrenzungswiderstände) von den RX- und TX-Leitungen an die Vcc-Leitung angeschlossen, genau so, wie Sie Ihre anschließen könnten. Verdrahten Sie die Anoden mit Vcc und die Kathoden mit den TX / RX-Leitungen, wobei der Strombegrenzungswiderstand in Reihe geschaltet ist (entweder vor oder nach der LED).

RX and TX LED connections

Die LEDs muss an Vcc und nicht an Masse angeschlossen werden, da UART-Leitungen (dh die serielle ATmega-Schnittstelle) inaktiv sind. HIGH, dh sie bleiben auf Vcc-Pegel, wenn nichts übertragen wird.

Beachten Sie, was gbulmer in seinen Kommentaren gesagt hat Allerdings:

... kann es bei hohen Baudraten oder langen Kabeln (oder anderen Dingen mit reduzierten Antriebssignalen) vorkommen, dass die Kommunikation unzuverlässig wird, weil die LEDs eine zusätzliche Belastung darstellen die Verbindung. Möglicherweise möchten Sie die LEDs indirekt mit einem MOSFET- oder Darlington-Transistor ansteuern.

Ich hatte keine Probleme mit diesen LEDs, die an die seriellen Leitungen mit bis zu 78600 Baud angeschlossen sind, aber Sie könnten es, wenn Sie Gehen Sie schneller.


Wenn Sie daran interessiert sind, Anzeige-LEDs als Feedback in Ihrem ISP-Programmierer anzuschließen, können Sie Folgendes tun. Die ArduinoISP-Skizze (Firmware) steuert bereits drei Anzeige-LEDs an:

  1. Heartbeat auf D9: Sie blinkt (Fadding), um anzuzeigen, dass die Skizze ordnungsgemäß funktioniert.
  2. Programmierung auf D7 : ist eingeschaltet, wenn die eigentliche Programmierung stattfindet;
  3. Fehler auf D8: eingeschaltet, wenn etwas schief geht.
  4. ol>

    Diese Indikatoren funktionieren perfekt mit der ArduinoISP-Skizze.

    Verwenden Sie zum Verdrahten dieser LEDs das folgende Schema:

    ArduinoISP shield

    Der Schaltplan bezieht sich auf ein Arduino Shield, das ich zum Programmieren von ATmegas und ATtinies zur Verwendung mit der ArduinoISP-Skizze erstellt habe. Ich hoffe, dies hilft.

    Wenn Sie wirklich LEDs an die Übertragung anschließen möchten Bitte beantworten Sie die Fragen, die ich als Kommentare gepostet habe. Dann aktualisiere ich meine Antwort.

Ich habe die ISP-Skizze verwendet, um die Atmosphäre zu booten, aber danach verwende ich nur noch tx, rx und setze die Zeilen zwischen den beiden zurück, um Skizzen hochzuladen.
Dort!Ich habe meine Antwort aktualisiert, um Ihre Klarstellungen zu berücksichtigen und um als zukünftige Referenz zu dienen.
Bitte zögern Sie nicht, die Antwort, die für Sie am hilfreichsten war, zu bewerten und zu akzeptieren.Klicken Sie dazu auf den Pfeil nach oben und das Häkchen oben in der Antwort auf der linken Seite.
@Ricardo - ist das erste Diagramm * wirklich * Teil des Schaltplans, oder haben Sie gerade etwas skizziert, um diese Frage zu beantworten?Ich denke, es ist kaputt und kann nicht wie gezeigt funktionieren.Das Schema zeigt Rx, das direkt an + 5V angeschlossen ist, daher ist es sehr unwahrscheinlich, dass dies funktioniert.Würden Sie auch den Wert von R1 und R2 anzeigen?Außerdem ist dies ein R@232 für UART, und in der Frage wird RS232 nicht erwähnt.
@gbulmer Sehr gut entdeckt !!Das Bild stammt von einem tatsächlichen Arbeitsbrett, das ich habe, aber mit Photoshop versehen, damit es besser aussieht, falls Olin es sieht.Es wurde jetzt behoben.
@gbulmer Die Widerstände sind beide 1K.Das Bild stammt von dem Teil meines Konverters, der mit den ATmega UART TX- und RX-Pins verbunden ist.Ich habe es als bestes Beispiel verwendet, um zu veranschaulichen, wie die LEDs verdrahtet werden.
@Ricardo - okay, das ist besser.Ich habe jetzt jedoch gelesen, dass die Schaltung eine in der Nähe befindliche Elektronik aufweist, die die Umwandlung des RS232-Signalpegels in einen 5-V-UART-Signalpegel durchgeführt hat.Genau davor warne ich ZackB.Ein lokales Stück Elektronik, das als Puffer fungiert und somit die Elektronik * antreibt *, ist das, was ich vorgeschlagen habe.Ich bin entspannt darüber, wie das Problem angegangen wird.Ich denke jedoch, dass Ihre Schaltung kein Beweis dafür ist, dass die Schaltung von ZackB robust und zuverlässig ist.Ich versuche nur klar zu sein, um Verwirrung zu minimieren.
@gbulmer Können Sie genauer erklären, was Sie meinen?Warum genau ist dieses Setup beispielsweise nicht zuverlässig?Weil es eine Chance gibt, dass Daten verloren gehen?Warum dann?
@gbulmer Vielen Dank für die Klarstellung.Wenn Sie jedoch der Meinung sind, dass mein Verweis auf Ihren Kommentar unklar und falsch ist, können Sie ihn jederzeit bearbeiten.Oder wenn Sie möchten, kann ich es vollständig entfernen.Oder Sie können eine Antwort geben, die dies verdeutlicht.Ich bin mit jeder Option, die Sie wählen, einverstanden.
@ZackB eigentlich habe ich die LEDs von der Frage entfernt, die ich verlinkt habe, weil ich wusste, dass sie falsch verdrahtet waren ...
@Ricardo - Es macht mir überhaupt nichts aus, wenn Sie einen realen Fall identifizieren, in dem alles gut funktioniert hat! -) Mein Punkt ist der obere Schaltplan * könnte * die Linie zwischen dem RS232-zu-Seriell-Wandler und dem UART darstellen, ich kann nichtsicher sein.Wenn es sich jedoch zwischen diesen beiden Endpunkten befindet und sich alle auf Ihrer lokalen Karte befinden, können sie keinen "langen Kabeln (oder anderen Dingen mit reduzierten Antriebssignalen)" ausgesetzt werden.Wenn dies jedoch nicht der Fall ist und diese Signale diesen Gefahren ausgesetzt sind, ist dies ein Beweis dafür, dass es funktioniert, und definiert Bedingungen, unter denen ZackB in Ordnung sein sollte.
@Ricardo in Abbildung "RX- und TX-LED-Verbindungen" (Abbildung 1), würde nicht viel Strom aus den RX- und TX-Leitungen entnommen, um die LEDs anzusteuern?
@Chetan Es kommt wirklich auf R1 und R2 an.Mit 1K-Widerständen bekomme ich normalerweise 5mA Ströme.Ist das vielIch kann es nicht sagen.Es funktioniert nur bei mir.Reicht das aus, um die seriellen Leitungen zu stören?
@Ricardo alles hängt von der Menge des gezogenen Stroms und dem TTL-Ausgangstreiber auf den TX- und RX-Leitungen ab.Ein Blick auf einige FTDI-Kabel-Datenblätter zeigt, dass sie 6-8 mA versenken können.Ich bin mir nicht sicher, ob es eine gute Idee ist, 5 mA aus den Stiften zu ziehen.
@Chetan - Wäre es in Ordnung, die LEDs mit BJTs als Schalter anzusteuern und ihre Basen mit geeigneten Serienbegrenzungswiderständen mit den seriellen Leitungen zu verbinden?
@Ricardo ja, es wäre mit BJT mit hohem hFE und auch mit MOSFETs möglich.
m3x1m0m
2017-06-26 14:30:23 UTC
view on stackexchange narkive permalink

Ich kann mir nicht vorstellen, dass die von Chetan Bhargava gepostete Schaltung korrekt funktioniert, da die LED, wenn ich sie simuliere, wie von arudino.tyro in einem Kommentar ständig hervorgehoben wird. Darüber hinaus unterscheidet sich das Verhalten im Vergleich zu der von Ricardo vorgeschlagenen einfachen Widerstands- und LED-Schaltung.

UART ist im Leerlauf HIGH, daher müssen Sie die LED einschalten, wenn der Bus LOW ist. Sie können erwarten, dass bei laufender Übertragung ein Blinken mit dem "falschen Stromkreis" auftritt, da die LED immer noch umgeschaltet ist, oder? Ich denke jedoch, dass dies zu schnell ist, als dass Sie es mit Ihren Augen sehen könnten (z. B. 9600 kHz).

Mein Vorschlag zur Lösung dieses Problems ist die folgende Schaltung. Es handelt sich im Grunde genommen um einen Spannungsfolger (nicht invertierender Verstärker mit einer Verstärkung von 1), aber der Ausgang ist mit der LED-Schaltung verbunden, die bis zu 5 V angeschlossen ist. Dies führt dazu, dass Strom durch die Lampe fließt, sobald der Eingang negativ ist .

UART LED schematics.

Laut LTSpice fließt Strom nur dann durch die LED, wenn eine Übertragung läuft (Sie sehen dies als "längeren EIN-Zustand", wenn die Übertragung läuft). Wenn zwischen einigen Übertragungen eine kleine Pause liegt, blinkt etwas (LED erlischt).

UART LED simulation.

Ich baue meine Schaltung auf einer Platine für I2C und UART auf.I2C, das ich auch simuliert habe, sieht man nur längere Übertragungen oder wenn der Bus beschädigt ist (was auch schön ist).Sie können es gerne überprüfen: https://github.com/m3x1m0m/UppSense2017/blob/master/pcbs/backplane/output/electrical_spec_interface.pdf Bei Ihrer Schaltung kann die LED ebenfalls blinken, sie leuchtet jedoch ständig, wenn neinDie Übertragung läuft, da UART im Leerlaufmodus HIGH ist.
theMastermind
2020-08-07 01:36:57 UTC
view on stackexchange narkive permalink

@Chetan Bhargava Ihre Schaltung wird immer eingeschaltet sein.Weil UART im Leerlaufmodus HIGH ist.Um dieses Problem zu vermeiden, ändern Sie bitte die Richtung der LEDs.Wie in der Abbildung unten gezeigt

enter image description here

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

Ich denke, das wird funktionieren.

schematic

simuliert diese Schaltung - Schema erstellt mit CircuitLab sup>



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...