Ich habe ein eigenständiges Arduino gebaut und Skizzen über diese Methode von Arduino auf einen Mikrocontroller auf einem Steckbrett hochgeladen . Ich möchte eine LED über TX wie auf der Arduino-Platine anschließen, also habe ich sie einfach mit dem TX-Pin verdrahtet, wobei ein Widerstand gegen Masse geht. Und es funktioniert auf einer Skizze, wo ich einfach serielle Daten mit einer Baudrate von 9200 sende. Sowohl die Arduino TX- als auch die ATmega TX-LEDs blinken korrekt.
Meine Anwendung beinhaltet jedoch eine Baudrate von 19200, aber wenn ich diese Skizze hochlade, bleibt der TX-Pin auf meinem ATmega ständig 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?
Vorbehalt: Obwohl das OP meine Antwort als die beste akzeptiert hat, wurde danach eine weitere, bessere Antwort gepostet, die Sie vielleicht lesen möchten, bevor Sie meine lesen. Wie von Chetan Bhargava angemerkt, kann meine Lösung zu viel Strom ziehen, um die LEDs von den seriellen Leitungen anzusteuern.
Unten ist ein Teil des Schemas eines RS232-zu-UART-Konverters, den ich gemacht habe. 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).
Die LEDs müssen mit Vcc und nicht mit Masse verbunden werden, da UART-Leitungen (dh die serielle ATmega-Schnittstelle) im Leerlauf HIGH sind, dh sie bleiben auf Vcc-Pegeln, wenn nichts übertragen wird.
Beachten Sie jedoch, was gbulmer in seinen Kommentaren sagte:
... bei hohen Baudraten oder langen Kabeln (oder anderen Dingen mit reduzierten Ansteuersignalen) kann es vorkommen, dass die Kommunikation unzuverlässig wird, da die LEDs die Verbindung zusätzlich belasten. Vielleicht 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 bis zu 78600 Baud angeschlossen sind, aber Sie könnten es tun, wenn Sie schneller fahren.
Wenn Sie daran interessiert sind, Anzeige-LEDs als Feedback in Ihrem ISP-Programmierer anzuschließen, können Sie Folgendes tun. Der ArduinoISP-Sketch (Firmware) steuert bereits drei Anzeige-LEDs an:
Diese Indikatoren funktionieren perfekt mit der ArduinoISP-Skizze.
Um diese LEDs zu verdrahten, verwenden Sie das folgende Schema:
Der Schaltplan ist für ein Arduino Shield, das ich zum Programmieren von ATmegas und ATtinies gemacht habe, zur Verwendung mit der ArduinoISP-Skizze. Ich hoffe das hilft.
Wenn Sie wirklich LEDs an die Übertragungsleitungen anschließen möchten, beantworten Sie bitte die Fragen, die ich als Kommentare gepostet habe, dann werde ich meine Antwort aktualisieren.
Im Allgemeinen ist es keine gute Idee, viel Strom aus Ihren Rx- und Tx-Leitungen zu ziehen, um LEDs anzusteuern. Die zusätzliche Stromaufnahme kann Ihr Fan-out auf Ihr Ziel reduzieren.
Um eine zusätzliche Stromaufnahme aus Ihren Leitungen zu vermeiden, können Sie einen dualen Operationsverstärker wie den LM358D verwenden , um diese LEDs anzusteuern .
Die hohe Impedanz der OpAmp-Eingänge zieht nicht viel Strom aus Ihren Tx- und Rx-Leitungen und bewahrt das Fan-Out auf den Leitungen.
Ich habe diesen Schaltplan in LTSPICE simuliert und mit LM324 (TI) auf einem Steckbrett physisch verifiziert . Leider hatte ich keinen LM358D zur Hand, aber sie funktionieren ähnlich.
Bearbeiten: Dank Hinweisen von arudino.tyro. Ich konnte den neuen Schaltplan mit LM358D ausprobieren. Der alte Schaltplan ist hier: http://i.stack.imgur.com/GHauy.png
Ich kann mir nicht vorstellen, dass die von Chetan Bhargava gepostete Schaltung korrekt funktioniert, da die LED, wie von arudino.tyro in einem Kommentar angegeben, ständig an ist, wenn ich sie simuliere. Außerdem ist das Verhalten im Vergleich zu der von Ricardo vorgeschlagenen einfachen Widerstands-plus-LED-Schaltung anders .
UART ist HIGH, wenn IDLE, also müssen Sie die LED einschalten, wenn der Bus LOW ist. Sie könnten erwarten, dass etwas mit dem "falschen Schaltkreis" blinkt, wenn eine Übertragung läuft, weil die LED immer noch umgeschaltet ist, richtig? Allerdings finde ich das zu schnell, als dass man es mit bloßem Auge sehen könnte (zB 9600 kHz).
Mein Vorschlag zur Lösung dieses Problems ist die folgende Schaltung. Es ist im Grunde ein Spannungsfolger (nicht invertierender Verstärker mit einer Verstärkung von 1), aber der Ausgang ist mit der LED-Schaltung verbunden, die an 5 V angeschlossen ist. Dies führt dazu, dass Strom durch die Lampe fließt, sobald der Eingang negativ ist .
Laut LTSpice fließt Strom nur durch die LED, wenn eine Übertragung läuft (Sie sehen dies als "längeren EIN-Zustand", wenn Übertragungen andauern). Wenn es eine kleine Pause zwischen ein paar Übertragungen gibt, sehen Sie etwas blinken (LED erlischt).
Ich denke, das wird funktionieren
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Ricardo
Ricardo
gbulmer
ZackB
ZackB
ZackB
gbulmer
ZackB
gbulmer
ZackB
gbulmer