Arduino + ULN2803A + 4 Chip Leds

vor 26 weeks 6 days von Brainbug

Hallo Ihr,

ich habe vor über das Arduino 6 4-Chip-Leds anzusteuern. 2x rote, 2x blaue und 2x grüne. Ich habe mir dazu die folgende Schaltung überlegt:

Den ULN2803 nehme ich, da die digitalen Ausgänge des Arduinos nicht mehr als 20 mA konstant hergeben. Ich will das Arduino (inkl. Ethernet Shield) mit einem 7,5 Volt Netzteil betreiben. Ich bin nun davon ausgegangen, dass dementsprechend dann 7,5 V am Vin anliegen die ich für meine LEDs abzwacken kann(?). Es handelt sich dabei um folgende LEDs: (Beispiel blau) http://www.phidgets.com/products.php?category=26&product_id=3607_0

Nun habe ich aber einige Fragen bezüglich der Schaltung und vlt könnt ihr mir ja dabei auf die Sprünge helfen:
1. Mit welcher Spannung kann ich rechnen? Ich habe mal gelesen, dass durch die eingebauten Widerstände (?) im ULN2803A nicht wirklich 7,5 V anliegen sondern etwas weniger. Wie kann ich das genau berechnen oder soll ich das bei der Berechnung der Vorwiderstände vernachlässigen da es nur geringen Einfluss auf die Helligkeit hat? Man kann es sicher aus der Schaltung im Datenblatt ablesen aber ich bin disbezüglich nur Laie: Datenblatt vom ULN http://www.ti.com/lit/ds/symlink/uln2803a.pdf

2. Eine LED hat 4 Füße (im Schaltbild als normale Led dargestellt), davon zwei Anoden und zwei Kathoden. Diese Bauform ist für mich neu. Wie dimensioniere ich da den Vorwiderstand? Für jedes Anoden-Kathodenpaar ein Vorwiderstand oder reicht ein Widerstand? Auf der Seite steht VF - Forward Voltage 3.0-3.4V,IF - Forward Current Each Chip: 20mA, LED: 80mA.

3. Funktioniert das soweit mit dem in der Reihe schalten? Ich hätte jetzt für blau folgendes gerechnet (wenn ich die etwas geringere Spannung vernachlässige): (7,5V - 2*3,0V)/0,08A = 1,5V/0,08A = 18,75 Ohm -> 20 Ohm als Vorwiderstand.

4. Ich will maximale Lichtausbeute. Im Datenblatt stehen immer Angaben wie 3,0 - 3,4 V und für gewöhnlich nehme ich dann den kleineren Wert. Ist das so eine Angabe wo man selbst entscheiden kann nach dem Motto "mehr Licht, dafür kürzere Lebenszeit der LED" und umgekehrt oder kann man ohne bedenken den hinteren Werte nehmen?

5. Wenn die Schaltung soweit tutti ist hätten wir dann 3 * 80 mA = 240 mA. Der ULN2803A kann bis zu 500 mA durchgängig geben. Das Arduino, da über Netzteil mit Spannung versorgt und Schaltung über Vin angeschlossen, könnte sogar noch mehr. Soweit ich weiß muss man bei diesem Aufbau auf eine Schutzdiode (?) auf dem Arduino acht geben, die nur bis zu einer bestimmten Wärme oder Stromstärke ausgelegt ist. Meint ihr ich bekomme Probleme wenn ich die Anzahl der LEDs verdopple? Also an die verbleibenden Plätze am ULN noch weitere LEDs im selben Verfahren anschließe? Dann wären wir bei 6*80 mA = 480 mA. Hinzu kommt noch das Ethernet Shield das ja auch ein wenig verbraucht.

Viele Fragen - ich hoffe ihr könnte mir einige davon beantworten ;)

Vielen Dank schonmal im Voraus
Gruß
Brainbug

Ähnliche Posts

8 Antworten auf “Arduino + ULN2803A + 4 Chip Leds”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. chrimbo sagt:

    1. Kannste vernachlässigen.
    2. ein Vorwiderstand reicht.
    3. Jop da komm ich auch drauf.
    4. Wenn ich mit 3.4 rechne, komm ich auf einen Widerstand von 8,75Ohm. Nehmen wir an die Led hat doch nur 3V dann haben wir einen Strom von 171mA. Das würde deine LEDs wohl grillen.
    Für Optimale Lichtausbeute müsstest du eine 80mA Konstantstromquelle nehmen.
    5. Nö, nix wegen Schutzdiode, die kommt nur zum Einsatz, wenn der Arduino-Pin mehr als 5V sieht und das tut er nicht. Kommt das Ethernet Shield an den ULN? Nein, und wenn du sagst, dass dein Netzteil genug Saft gibt, dann ist doch in Ordnung.

    lg
    Christopher und Marco

    Login or register to post comments

  1. Brainbug sagt:

    Hi,

    supi. Dann ist ja alles klar ;) Nach zweimaligem Lesen ist mir auch bei Antwort 4 klar geworden, worauf du/ihr hinaus willst/wolltet - und es ergibt sinn.

    "Kommt das Ethernet Shield an den ULN"
    Nein das tut es nicht. Ich war mir nur nicht bewusst, woher das Shield seinen Strom bezieht.

    Danke Euch.

    Gruß
    Brainbug

    Login or register to post comments

  1. Brainbug sagt:

    Hi,

    ich bins nochmal ;) Ich habe leider ein kleines Problem. Ich habe im Prinzip alles so gemacht wie beschrieben jedoch mit folgenden Änderungen:
    1. Ich habe am ULN die Pins 1 bis 6 belegt mit jeweils zwei LEDs am Ausgang. Dabei habe ich jeden zweiten Eingang parallel geschalten. Das heißt ich steuere mit einem PWM Ausgang des Arduinos, 3 Ausgänge am ULN. Da 6 Pins steuere ich also den ULN über 2 PWM Ausgänge. (rote und blaue LEDs)
    2. Ich benötigte noch mehr LEDs. Deshalb habe ich 3 ULN parallel geschalten (siehe neue Schaltung - abgebildet sind nur zwei ULNs).

    Soweit funktioniert das alles auch. Die ULNs werden nur unwesentlich warm. Ich habe es auch nicht anders erwartet durch die Berechnungen.
    Wenn ich nun über das Arduino sowohl Rot als auch Blau auf volle Helligkeit (255) setze, ist alles tutti. Mache ich eine Farbe aus und dimme die andere von 0 auf 255 ist auch alles prima.
    Was nun ein Problem macht ist, wenn ich Rot auf bspw. die Hälfte der Helligkeit reduziere. Dann fangen nämlich alle blauen LEDs an zu flimmern (außer sie sind aus). Nicht flimmern im Sinne von AN-AUS sondern sie werden kurz schwächer und dann wieder stärker - und das in einer bestimmten Frequenz (~4 mal pro Sekunde). Sobald ich die blauen wieder auf volle Helligkeit setze ist dies nicht zu verzeichnen oder zu erkennen.
    Weiß einer woran das liegt?

    Danke schonmal.

    Gruß
    Brainbug

    Login or register to post comments

  1. uwe sagt:

    nochmal Antworten:
    1) bei 7,5V Versorgungsspannung kannst Du das nicht vernachlässigen. 0,7V an Diode zwischen Versorgungsbuchse und Vin und VCE(sat)des ULN2803 wird etwas weniger als 0,9V sein (das Datenblatt gibt nur den Wert bei 100mA an und nicht bei 80mA.) Also hast Du bei 7,5V Versogungsspannung nur mehr 6V. Das ist zuwenig für die blaue LED um den vollen Strom zu haben. Die LED leuchtet zwar, aber es werden nicht 80mA fließen.

    4) durch Produktionstolleranzen liegt UF zwischen 3,0 und 3,4V Du kannst nicht sagen welche UF Dein LED hat, außer Du mißt es nach.

    @chrimbo
    Die Schutzdiode ist eingebaut damit eine falsch gepolte Versorgungspannung an der Netzteilbuchse nichts kaputtmachet. Es gibt keinen Überspannungschutz an den Arduinopins.

    5) Die Diode ist für 1A. Ich würde die ULN Direkt vom Netzteil versorgen und ein 9V Netzteil suchen.

    Flimmern: Bitte am Schaltplan einzeichnen welche Farbe mit welchem Pin angesteuert wird.
    Bitte um Sketch. Wieviel Strom gibt das Netzteil?

    Grüße Uwe

    Login or register to post comments

  1. chrimbo sagt:

    Ach er meint die Diode. Ok an die hab ich nicht gedacht, ich arbeite schon lange nichtmehr viel mit dem Arduino Board... Aber, doch es gibt einen Überspannungsschutz an den Arduino Pins... Siehe AN128. Man muss nur den Strom begrenzen.

    Das Problem sollte aber nicht daran liegen, dass UF zu gering ist. Wir brauchen Schaltplan und Code...

    lg
    Christopher

    Login or register to post comments

  1. Brainbug sagt:

    Hi,

    erstmal danke für Eure Bemühungen und ausführlichen Kommentare.
    Eigentlich hat sich die Sache erledigt. Das mit dem VceSat des ULN ist natürlich weniger schön aber ich bin soweit zufrieden mit dem Endergebnis und ich verbuche das als "Lessons learned" ;)
    Kurze Frage noch diesbezüglich: Im Datenblatt sind nur Werte bis 350 mA angegeben. Schätzt man jetzt grob den Wert für VceSat bei 500 mA einfach ab?
    Wegen dem Filmmern: Nachdem ich auf die SoftPWM Library umgestiegen bin habe ich diesen Blink-Effekt nicht mehr. Das spricht eigentlich dafür, dass etwas am Code falsch war - aber dem ist meiner Meinung nach nicht so. Hier die wichtigsten Passagen:
    const int RED = 0;
    const int BLUE = 2;
    int colorPins [3] = {3,4,5};


    void setup() {
    Ethernet.begin(localMac,localIp);
    if (colorPins[RED] != -1) pinMode(colorPins[RED], OUTPUT);
    if (colorPins[BLUE] != -1) pinMode(colorPins[BLUE], OUTPUT);
    Udp.begin(localPort);
    }


    void loop() {
    if(new UDP message)
    updateColor(x,y)
    else
    do nothing
    }


    void updateColor(int colorId, int newValue) {
    if (newValue > 255) newValue = 255;
    else if (newValue < 0) newValue = 0;
    if (colorPins[colorId] != -1) analogWrite(colorPins[colorId], newValue);
    }

    Das heißt letztendlich wird der Wert für den Ausgang nur dann gesetzt, wenn eine Nachricht eintrifft. Sonst passiert nichts.

    Hier der abgespeckte Schaltplan (nur zwei von 3 ULNs abgebildet):

    Was komisch war als ich noch nicht die SoftPWM Library verwendet hatte:
    Blau flimmerte bspw. wenn rot auf 125 und blau auf 125 gesetzt wurde (Pin 3 = 125, Pin 5 = 125). Habe ich nun statt zwei PWM Ausgängen nur einen genutzt (dh. rot und blau wurden gleichzeitig über einen Ausgang angesteuert, z.b Pin 3) und 125 eingestellt, so hat nichts geflimmert.

    Gruß
    Brainbug

    Login or register to post comments

  1. uwe sagt:

    "Kurze Frage noch diesbezüglich: Im Datenblatt sind nur Werte bis 350 mA angegeben. Schätzt man jetzt grob den Wert für VceSat bei 500 mA einfach ab?"

    In diesem Datenblatt eines anderen Herstellers ist auf Seite 7 oben rechts ein Diagramm von dem man den Wert bei 500mA ablesen kann:
    http://www.datasheetcatalog.org/datasheet/allegromicrosystems/2801.pdf

    Sei dir auch bewußt daß nicht alle Ausgänge gleichzeitig 500mA verkraften.
    ALLOWABLE COLLECTOR CURRENT AS A FUNCTION OF DUTY CYCLE aud Seite 6 oben.
    Grüße Uwe

    Login or register to post comments

  1. Brainbug sagt:

    Hi,

    "In diesem Datenblatt eines anderen Herstellers ist auf Seite 7 oben rechts ein Diagramm"
    Super, danke!

    "Sei dir auch bewußt daß nicht alle Ausgänge gleichzeitig 500mA verkraften."
    Dem bin ich mir bewusst - trotzdem danke.

    Gruß
    Brainbug

    Login or register to post comments