• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Anleitung LEDs mit dem Arduino über Transistoren ansteuern

yoshi

Betreiber
Mitarbeiter
Wir hatten ja das Thema, dass der Arduino mit seinen Ausgängen nur wenige LEDs direkt ansteuern kann. Hier mal mehrere Möglichkeiten viele LEDs parallel ansteuern zu können.


Der Controller des Arduinos kann nur wenige mA pro Ausgang direkt schalten. Ebenso gibt es einen gesamten Maximalstrom des jeweiligen Ausgangs-Ports. Das heißt, nicht alle Ausgänge eines Ports können gleichzeitig mit dem Maximalstrom betrieben werden, sonst wird der Maximalstrom des Ports überschritten. Die Werte können von Controller zu Controller und von Port zu Port variieren. Deshalb sind die Werte dem Datenblatt des Controllers oder den Angaben des Arduinos zu entnehmen.

Z.B. wäre eine gängige Größe 40 mA pro Ausgang und 200 mA pro Port. Bei 8 Ausgängen pro Port wären das 8 x 40 mA = 320 mA und damit mehr als der Port dauerhaft verkraften kann.


Um stromhungrigere Verbraucher ansteuern zu können bedarf es also eines Verstärkers. Elektromechnisch könnte man das über ein Relais realisieren oder elektronisch über Transistoren. Die Transistoren machen im Grunde nichts anderes als ein Relais, sie "schalten den Strom".

Einzelne Transistoren sind aber recht groß und aufwändig in eine Schaltung zu integrieren. Stattdessen kann man auf Treiber-ICs zurückgreifen, in denen sich mehrere Transitorschaltungen befinden. ICs der ULN- und UDN-Reihe sind sehr simpel aufgebaut und können wesentlich höhere Ströme dauerhaft verkraften.


Ein weiterer Vorteil liegt darin, die ICs oder Transistoren mit einer viel höheren Spannung versorgen und trotzdem mit den 5 V des Arduinos schalten zu können. In meinen Beispielschaltungen habe ich Klemmen gesetzt, an die eine beliebige Spannungsquelle angeschlossen werden kann, solange die Maximalwerte der Bauteile nicht überschritten werden.


ICs der ULN-Reihe beinhalten mehrere Transistor-Schaltungen, die in Open-Kollektor-Bauweise arbeiten. Das heißt im Klartext: Sie schalten den "Minus". Die Anode (+) der LED muss also mit einem Vorwiderstand dauerhaft mit der Versorgungsspannung (+) verbunden werden. Die Kathode (-) der LED wird mit dem Ausgang des ULN verbunden. Steuert man nun mit dem Ausgang des Arduino den Eingang des ULN mit einem High-Signal (1) an, schaltet der ULN durch und die LED leuchtet.


ICs der UDN-Reihe beinhalten mehrere Transistorschaltungen, die in Tri-State-Bauweise arbeiten, aber der elektrisch neutrale Zustand nicht angesteuert werden kann. Die Ausgänge eines Arduino arbeiten ebenfalls nach Tri-State-Bauweise. Das heißt im Klartext: Sie schalten zwischen "Plus" und "Minus" um. Das ermöglicht zwei Arten die LEDs zu betreiben.
  1. Die Anode (+) der LED wird mit einem Vorwiderstand mit dem Ausgang des UDN verbunden. Die Kathode (-) der LED wird mit dem Ground (-) verbunden. Steuert man nun mit dem Ausgang des Arduino den Eingang des UDN mit einem High-Signal (1) an, schaltet der UDN durch und die LED leuchtet.
  2. Die Anode (+) der LED wird mit einem Vorwiderstand mit der Versorgungsspannung (+) verbunden. Die Kathode (-) der LED wird mit dem Ausgang des UDN verbunden. Die LED leuchtet. Steuert man nun mit dem Ausgang des Arduino den Eingang des UDN mit einem High-Signal (1) an, schaltet der UDN durch und die LED geht aus.
Die ICs der ULN- und UDN-Reihe haben natürlich auch ihre Maximalwerte in Sachen Strom, Spannung und Leistung. Die hängen vom Typ, dem Gehäuse und zusätzlicher Kühlung ab. Sie sind deshalb dem Datenblatt zu entnehmen.


Eine weitere Möglichkeit viele LEDs parallel zu betreiben ist, wie oben schon erwähnt, einzelne Transistoren zu nutzen. Die sind recht groß und bei gleicher Anzahl an Ausgängen viel aufwändiger zu realisieren. Aber wenn man richtig viel Leistung schalten möchte, dann sind sie genau das richtige Mittel.

Es gibt diverse Arten und Typen von Transistoren, die kann ich nicht alle aufzählen und erklären. Zumal viele davon heutzutage und in dieser Anwendung keinen Sinn machen. In meiner Beispielschaltung habe ich einen N-Channel Feldeffekttransistor in Open-Source-Schaltung verwendet.

Der Transistor wird mit dem Gate an den Ausgang des Arduino angeschlossen. Der Drain des Transistors wird mit dem "Minus" verbunden. Die Anode (+) der LED wird mit einem Vorwiderstand an die Versorgungsspannung angeschlossen. Die Kathode (-) der LED wird mit dem Source des Transistors verbunden.



Statt der einen LED mit Vorwiderstand in den Schaltungen können natürlich mehrere LEDs mit Vorwiderstand betrieben werden. Dabei sind aber die Werte von Spannungen, Ströme und Leistungen der LEDs und der ICs bzw. Transistoren zu berücksichtigen.


In meinen Beispielschaltungen entspricht die Farbe des Rahmens der Farbe des Textes der beschriebenen Bauteile.

Hier ein paar Bilder dazu:

Das ist der Schaltplan.


Das ist das Platinenlayout. Im Layout und auf der Platine befinden sich die Bauteile auf der Oberseite und die Leiterbahnen auf der Unterseite. Bedrahtete Bauteile halt.


Eine 3D-Ansicht der Platine mit Bauteilen.


Die 3D-Ansicht ohne Platine, ICs/Transistor und Klemmen.


Eine 3D-Ansicht ohne Platine und Bauteile.

 
Zuletzt bearbeitet:

DFENCE

Mitglied
hm bei nem N-Fet ist noch zu bemerken das man den nicht nur als Schalter nutzen kann sondern ebenfalls als Leistungsregler z.b zum Dimmen
Das Funktioniert in dem man den Durchgang vom N-FET über die Spannung am Gate beinflussen kann.
Ähnlich wie ein Wasserhahn wobei das Gate das Ventil darstellt, je mehr Spannung auf dem Gate desto weiter geht das "Ventil" auf. Wichtig hier sind aber sehr Niederohmige FET´s die bereits bei 5V am Gate voll Aufmachen, Typischerweise machen die gängigen N-FET allerdings bei 10V erst voll auf und sind für Arduinos nicht geeignet ohne Zwischenschaltung, hier muss man höllisch aufpassen was man nimmt ansonst kann die Schaltung schnell den Hitzetod Sterben, da ist z-b wichtig nen Wiederstand in die Steuerleitung vom Gate einzubringen um das Signal genau zu Definieren bei nur 5V Steuerspannungen können Atmosphären Fluktuationen schon dafür sorgen das der N-Fet nen stück aufmacht ohne es zu bemerken und damit sich schleichend tot erwärmt. Darum geht man in der Regel auch auf 10V Steuerspannung, bei der Militärtechnik sogar 24V, das z.b die Signalspannung in jedem Bundeswehr Panzer :rolleyes: ( mehr darf ich nicht sagen ) Stichwort hier ist Pull Up und Pull Down Widerstand für Signale

Dabei gilt zu Beachten, das ein N-FET sich erwärmt wenn er als Leistungsregler und Schalter fungiert, daher auch das mit den niederohmigen FET. Man kann nicht einfach irgendwas nehmen sondern man muss fähig sein die Datenblätter zu Lesen, bei einfachen Schaltungen wie LED´s ansteuern oder Dimmen für RC Car Beleuchtung kann ich aber gerne Weiterhelfen.

Bei den Darlington Treiber sei auch noch erwähnt das man damit auch eine Komplette Brushed Reglung hin bekommt mit Rechts und Links Lauf ;-) Oder eine Schrittmotor Steuerung. Stichwort H-Brücke bzw Doppel H Brücken Treiber, denn auch das ist ein sog. Darlington Treiber wie der ULN2003A welcher der absolut gängigste und am meisten eingesetzte Darlington ist.
 

yoshi

Betreiber
Mitarbeiter
Ich habe mal kurz deinen Post gekapert und weiter nach unten kopiert. Ich habe gestern vergessen Platzhalter für weitere Posts zu hinterlassen. So kann ich zusammenhängend noch ein paar Sachen zu der Nummer schreiben.


da ist z-b wichtig nen Wiederstand in die Steuerleitung vom Gate einzubringen um das Signal genau zu Definieren bei nur 5V Steuerspannungen können Atmosphären Fluktuationen schon dafür sorgen das der N-Fet nen stück aufmacht ohne es zu bemerken und damit sich schleichend tot erwärmt.
Was bei den Tri-State-Ausgängen der Arduinos aber kein Problem ist, da die ja definiert zwischen VSS (+5 V) und GND (0 V) hin- und herschalten.

Bei den Darlington Treiber sei auch noch erwähnt das man damit auch eine Komplette Brushed Reglung hin bekommt mit Rechts und Links Lauf ;-) Oder eine Schrittmotor Steuerung. Stichwort H-Brücke bzw Doppel H Brücken Treiber, denn auch das ist ein sog. Darlington Treiber wie der ULN2003A welcher der absolut gängigste und am meisten eingesetzte Darlington ist.
Da erschließt sich mir nicht wie das gehen soll. Ich kann einen H-Brücken-Treiber auch zum Ansteuern von LEDs verwenden, aber einen ULN als H-Brücke umbauen ... Wie soll das gehen? Schließlich schaltet ein ULN intern gegen GND und ich habe keine Möglichkeit diese interne Verbindung zu ändern. Oder hast du dich da vertan?
 

DFENCE

Mitglied
So Definiert schaltet der Arduino leider garnicht, die ersten 3D Drucker Steuerungen sind unter anderem deswegen in Rauch aufgegangen, weil der N-FET zur Steuerung vom Beheizten Druckbett nicht ganz aufgemacht hat ( gut das Lag auch an den zig Fehlern in der Schaltung ) auch einer der gründe warum man auf TTL Schaltung mittlerweile setzt optimaler weiser mit nem 74H.

Bezüglich dem Darlington, ich glaub ich muss mich wirklich bisl vertan haben, du kannst auf jeden fall aber nen ULN2003A nehmen um Schrittmotoren anzusteuern
Arduino_Stepper_unipolar_driver.jpg

Einfache Grundschaltung um mit nem ULN2003A kleine Stepper Anzusteuern wie sie z.b in Disketten und CD Laufwerken zu finden sind. Den ULN2003A findest auch bei Klimaanlagen im Innenteil der dient dort zu Steuerung der vom Motor für die beweglichen Lamellen.
 

yoshi

Betreiber
Mitarbeiter
So Definiert schaltet der Arduino leider garnicht, die ersten 3D Drucker Steuerungen sind unter anderem deswegen in Rauch aufgegangen, weil der N-FET zur Steuerung vom Beheizten Druckbett nicht ganz aufgemacht hat ( gut das Lag auch an den zig Fehlern in der Schaltung ) auch einer der gründe warum man auf TTL Schaltung mittlerweile setzt optimaler weiser mit nem 74H.
Ich habe nie mit Arduinos in dem Sinne gearbeitet, sondern direkt mit den Atmel Controllern auf eigenen Platinen. Und solche Probleme habe ich nie gehabt. Die Arduinos gab es zu dem Zeitpunkt noch nicht.

Vielleicht lag das an Kontaktproblemen bei den Arduinos.

Bezüglich dem Darlington, ich glaub ich muss mich wirklich bisl vertan haben, du kannst auf jeden fall aber nen ULN2003A nehmen um Schrittmotoren anzusteuern


Einfache Grundschaltung um mit nem ULN2003A kleine Stepper Anzusteuern wie sie z.b in Disketten und CD Laufwerken zu finden sind. Den ULN2003A findest auch bei Klimaanlagen im Innenteil der dient dort zu Steuerung der vom Motor für die beweglichen Lamellen.
Lustige Idee! :thumbsup: Das dürfte aber einiges an Drehmoment kosten.

Ich arbeite immer mit bipolaren Schrittmotoren. Mit denen ist so eine Schaltung nicht möglich. Da wäre ich auf so eine Idee auch nie gekommen.
 

DFENCE

Mitglied
Meine Idee isses ja auch nicht, das ist nur Grundbestandteil eines Arduino Starter Sets :D

Das Problem sind im übrigen die Arduino Boards selbst, bei den Drucker Steuerungen wo der Atmel direkt verbaut wird hast das Problem auch nicht gehabt, bei mach meiner Experimente hab ich auch erhebliche Probleme was Störeinflüsse angeht, bei meiner ersten CNC Steuerung haben die Eingänge geflattert wie verrückt, wenn du nen Chip Diskret verbaust dann hast auch nicht jeden erdenklichen Pin als Antenne offen, was allerdings beim Arduino so ist, vor allem der Uno ist grauenhaft.
Bei meiner CNC hab ich mittlerweile nen echte Mega2560 aus Italien für 50€ hängen ich kanns jetzt nicht direkt beweisen aber mit nem China Mega hatte ich Schrittfehler die ich jetzt nicht mehr habe und ich könnte wirklich drauf wetten es lag am China Mega.
 

froetz

Mitglied
N schlechtes Teil kannst auch mal in Italien erwischen. Hatte auch schon nen defekten original Arduino Uno erhalten. Die originalen sind aber meist sind etwas sauberer verarbeitet als die ganz billigen Klone.
 
Top Bottom