Steuerung der Motordrehzahl über L293D mit TLC5940NT

Ich versuche, einen Gleichstrommotor über einen L293D zu steuern. Letztendlich steuere ich es mit einem Arduino, aber ich versuche, einen TLC5940NT-Chip als Vermittler zu verwenden, um die Anzahl der Ausgänge zu erhöhen, die ich habe.

Ich habe drei der Pins des TLC5940 mit den Pins Input 1, Input 2 und Enable des L293D verbunden, wobei ich 2,2-kOhm-Pullup-Widerstände an den beiden Eingangspins verwendet habe (ich habe versucht, es unten darzustellen - Entschuldigung, wenn es ist nicht klar. Version in voller Größe ):

Diagramm des an L293D angeschlossenen TLC5940NT:Diagramm des an L293D angeschlossenen TLC5940NT

Wenn ich den Enable-Pin auf +5 V stecke, funktioniert der Motor und ich kann die Richtung mit In 1 und In 2 steuern. Ich möchte jedoch die Geschwindigkeit per PWM steuern. Wenn ich den Enable-Pin an den TLC5940 anschließe (wie im Diagramm), kann ich den Motor überhaupt nicht zum Drehen bringen. Ich habe versucht, auch einen Pull-up-Widerstand am Aktivierungsstift zu verwenden, aber er drehte sich immer noch nicht - und wenn ich ihn mit nur einem 2,2-kOhm- oder 560-Ohm-Widerstand an +5 V DC anschließe, passiert nichts. Das einzige, was es bisher zum Drehen gebracht hat, sind konstante 5 V DC ohne Widerstand.

Kann mir jemand erklären, was falsch ist und wie ich es zum Laufen bekomme?

Bearbeiten: Ich habe versucht, einen vollständigeren Schaltplan hinzuzufügen

Um die offensichtlichen Fragen zu stellen: Als Sie den Pull-up von der Aktivierungsleitung des L293D auf Vcc hatten, hatten Sie auch in1 und in2 richtig konfiguriert? Und haben Sie ein DMM genommen und den Ausgang getestet, um sicherzustellen, dass er die Aktivierungsleitung ansteuert?
sherrelbc: in1 und 2 wurden bei der Verwendung des Pull-Ups richtig konfiguriert - wenn ich den Pull-Up durch ein Kabel zu VCC ersetze, funktioniert es, aber mit dem Pull-Up passiert nichts. Das Testen des Ausgangs zeigt, dass er bei -5 V liegt, weshalb ich dachte, ich könnte ihn mit einem Pull-up-Widerstand verwenden, damit der Aktivierungsstift angesteuert wird, wenn der TLC5940 den Ausgang nicht ansteuert, genauso wie in1 und in2 .
-5V Ausgang vom TLC5940? Wie hoch ist die Versorgungsspannung bei Vcc des TLC5940?
Sie erhalten nützlichere Antworten, wenn Ihr Schaltplan lesbarer und genauer ist. Es gibt derzeit einige offensichtliche Fehler und Auslassungen, z. B. womit wird der L293D angetrieben? Wo ist der (-) Pol der Batterie angeschlossen? Sind wirklich nur 3 Pins des TLC5940 verbunden?
Zuofu: Danke für deinen Kommentar. Ich habe versucht, den Schaltplan vollständiger zu machen - hoffentlich ist es klar. Ich habe nicht viel Erfahrung mit dem Zeichnen von Schaltplänen.

Antworten (2)

Das Kernproblem hier ist, dass Sie missverstanden haben, wie die TLC5940NT-Ausgänge tatsächlich funktionieren. Sie funktionieren nicht auf die gleiche Weise wie die Push-Pull-Ausgangstreiber des Arduino, der TLC5940NT verwendet Stromsenken (sogenannte Open-Drain-Ausgänge, die sich eher wie Eingänge verhalten! Verrückt, oder? Ich erkläre am Ende mehr), um diesen Pin "LOW" zu ziehen ". Aus diesem Grund schließen Sie LEDs an sie an, manchmal mit einem Strombegrenzungswiderstand (je nachdem, ob es sich tatsächlich um stromgesteuerte Senken handelt oder nicht) von VCC durch die LED und dann in den Pin des TLC5940NT und ähnlicher Geräte (ich habe den TLC59116F verwendet vorher, was ähnlich ist).

Ich habe damals tatsächlich den gleichen Fehler gemacht wie Sie, da ich nicht wusste, was ein Open Drain/Sink-Eingang ist, und genau wie Sie davon ausgegangen bin, dass er ähnlich funktionieren würde wie mein Arduino. Was Sie tun müssen, damit dies funktioniert, ist die Logik mit externen Komponenten und einigen Pull-up-Widerständen umzukehren. Wenn die "Ausgänge" des TLC5940NT "aus" sind, wird der Wert am Pin hochgezogen. Dieses "hohe" Signal kann einfach mit zwei Methoden invertiert werden - einer NPN-Transistor-Logik-Inverterschaltung oder einem invertierenden Puffer- / Leitungstreiber-Logik-IC oder sogar Operationsverstärkern, wenn Sie müssen. Nachfolgend finden Sie eine kurze Skizze jeder dieser Methoden.

Abbildung 1: Transistor-Logikinverter mit einem billigen NPN-BJT.Transistor-Logik-Inverter

Abbildung 2: Verwendung eines invertierenden Puffer-ICs, z. B. eines 7404 Hex (bedeutet 8 Ein-/Ausgänge) Invertierender Puffer.Hex invertierender Puffer

Vielleicht möchten Sie einen oder zwei Pulldown-Widerstände am Pufferausgang, um schwebende Pins zu vermeiden, aber ich denke, es wird ohne sie in Ordnung sein. Befolgen Sie immer die Anweisungen im Datenblatt des Herstellers.

Beachten Sie, wie ich in beiden Bildern die "Ausgangs" -Pins des TLC5940 als eigentlich die Oberseite eines N-Kanal-MOSFET zeige? Dieser Pin geht zum "Drain" des FET, der im ausgeschalteten Zustand im Grunde ein offener Stromkreis ist, daher nennen sie ihn einen "Open Drain" -Ausgang. Obwohl es als Low-Side-Stromsenkenschalter fungiert. Schrecklich verwirrend, und ich verstehe, warum Sie diesen Fehler gemacht haben. Es ist wichtig, dass Sie dies jetzt so früh wie möglich lernen und in Zukunft immer daran denken, diese Datenblätter zu überprüfen und die Logik durchzugehen, um sicherzustellen, dass dies nicht noch einmal passiert.

Als nächstes müssen Sie die Ausgänge dieser invertierenden Stufen mit den Eingängen Ihres Motortreibers verbinden, als wären sie Ausgangssignale im Arduino-Stil.

Ihr System sollte jetzt wie vorgesehen funktionieren! Die externen Komponenten sind aufgrund der Funktionsweise der Ausgänge des TLC5940NT ein notwendiges Übel. Ich stimme jedoch zu (und warum ich den TLC59116F verwendet habe), dass sie fantastische Funktionen haben und ihre Fähigkeit, jeden Kanal per PWM zu nutzen und Ihren Mikrocontroller andere Dinge tun zu lassen, die Mühe wert ist.

Ist V-Motor zum L293D +5V? Woher kommen diese +5V - der Arduino? Sie sollten (und können es oft nicht) eine signifikante Last wie einen Motor huckepack auf den Regler des Arduino legen, er ist nur für <400 mA ausgelegt, wenn Sie einen USB-Anschluss verwenden. Siehe Wie viel Strom kann ich aus den Pins des Arduino ziehen? für eine gute Erklärung. Außerdem ist der L293 aufgrund des hohen internen Spannungsabfalls eine schlechte Komponentenwahl für die Niederspannungs-Motorsteuerung, siehe:

L293D Überhitzung

Und

Welche H-Brückentreiber werden für Anwendungen bevorzugt, die einen Niederspannungsmotor steuern?

für Alternativen.

Zuofu: Ich habe aus genau diesem Grund tatsächlich H-Brücken mit niedrigerem Spannungsabfall bestellt (und werde die Motoren von einer separaten Versorgung antreiben). Ich glaube aber nicht, dass das hier das Problem ist. Wenn EN1 direkt an +5 V oder an einen PWM-Pin am Arduino selbst angeschlossen ist, kann es den Motor antreiben. Ich kann sogar die Geschwindigkeit mit PWM direkt vom Arduino aus steuern. Nur wenn ich versuche, es per PWM über den TLC5940 zu steuern, kann ich es nicht zum Laufen bringen. Irgendwelche Ideen?
Ach, der TLC5940 ist dafür nicht das ideale Teil. Wenn Sie sich das Datenblatt ansehen, werden Sie feststellen, dass es sich um eine Konstantstromsenke handelt, die keinen „hohen“ Logikpegel ansteuern kann. Es kann nur Strom aufnehmen oder hochohmig werden, was für LEDs in Ordnung ist, aber nicht so gut für Logik. Sie können versuchen, den Ausgang des TLC5940 mit einem 1K- oder größeren Widerstand auf +5 V hochzuziehen.
Zuofu: Das habe ich versucht, aber nichts passiert. Selbst wenn ich den TLC5940 überhaupt nicht verwende und nur einen Widerstand anschließe (ich habe verschiedene Werte von 560 Ohm bis 2,2 kOhm ausprobiert), bekomme ich keine Reaktion vom Motor. Irgendeine Ahnung, was los ist? Wenn nicht, gibt es einen Chip, den Sie empfehlen würden, um den TLC5940 zu ersetzen?
Wie überprüfen Sie, ob Sie tatsächlich mit dem TLC5940 sprechen? Haben Sie ein Oszilloskop, um den Eingang zum L293 zu prüfen?
Ich habe kein Oszilloskop. Ich kann jedoch LEDs an die Pins anschließen und die Helligkeit variieren, indem ich mit dem TLC5940 spreche, und ich kann den Motor ein- und ausschalten, indem ich den Ausgang auf In1 und In2 ändere, also denke ich, dass ich den TLC5940 richtig steuere - es ist nur die Steuerung En1, die ich nicht erarbeiten kann.
Hmm, es ist schwierig, das genaue Problem zu diagnostizieren, wenn Sie keinen Zugang zu einem Oszilloskop haben. Beachten Sie, dass der L293D ein BJT-basiertes Gerät ist. Obwohl diese Eingänge als Logikeingänge gezogen werden, ziehen sie wirklich einen erheblichen Strom. In Ihrem Fall versucht dieser Pullup-Widerstand, diesen Pin hoch zu treiben, aber da er nur ein Widerstand ist, kann tatsächlich nicht viel Strom in diesen Eingang fließen. Anstatt Testgeräte auszuleihen, empfehle ich, eine H-Brücke mit FET-basierten Eingängen auszuprobieren, von denen einige in diesem letzten Link angegeben sind.