ich bin im Bereich der Elektronik absoluter Einsteiger, möchte mich aber nach den kleinen Erfolgen mit dem Arduino-Starterset frohen Mutes an erste eigene Projekte wagen...
Unter anderem möchte ich eine größere Anzahl „Standard“-LEDs (>120 Stück, je ca. 20mA, der genaue Typ ist noch nicht bekannt) unabhängig voneinander ansteuern können. Hierfür plane ich, weil die Teile schon vorhanden sind, entweder Schieberegister (74HC595) oder Multiplexer (CD74HC4051 bzw. 4067) zu verwenden.
Nach meinem Verständnis, steuert der Multiplexer (Diesen konnte ich bislang leider noch nicht praktisch erproben) ja immer nur EINEN „Kanal“ auf einmal an (Strom also nur 20mA, aber je nach Anzahl der insgesamt am Arduino angeschlossenen Komponenten trotzdem problematisch).
Das Schieberegister steuert aber ggf. ALLE (in dem Fall 8) „Kanäle“ auf einmal an (Strom also 160mA und damit, soweit mir ersichtlich, außerhalb der Spezifikation des Schieberegisters und spätestens bei der Verwendung mehrerer Schieberegister außerhalb der Spezifikation des Arduino).
Ohne „Treiber“ scheint mir das Ganze also generell nicht zu bewerkstelligen.
Fragen:
In den Übungen zu meinem Starterset werden mit dem Schieberegister bis zu 8 Standard-LEDs angesteuert, ohne das es zu einer (für mich erkennbaren) Überlastung kommt.
Habe ich hier einen Denkfehler?
Das Ganze ist im Gesamtumfang der geplanten Anwendung eher Nebensache, heißt es müssen noch eine Vielzahl anderer Aufgaben erledigt werden (Eingaben verarbeiten (Schalter, Poti) Sensordaten auswerten, LC-Display ansteuern, Motoren / Servos ansteuern, …).
Gibt es einen Richtwert, in welchem Umfang man zusätzlich multiplexen kann, ohne ein Flackern wahrnehmen zu können oder ist das in dieser Größenordnung generell unproblematisch?
Leider bin ich auf Grund der Vielzahl möglicher Bauteile trotz intensiver Suche unschlüssig, welche Treiber hier in Frage kommen (m. E. wäre im konkreten Fall z. B. ULN2803 gut geeignet). Um mit möglichst wenigen unterschiedlichen Komponenten auch für evtl. zukünftige Anwendungen gerüstet zu sein wäre die Anschlußmöglichkeit einer externen Spannungsquelle zwingend und die Fähigkeit zur PWM wünschenswert und es fließen ggf. auch höhere Ströme als bei ein paar LEDs (auf jeden Fall jedoch <500mA).
Gibt es hier eine gute Übersicht um mir die Auswahl zu erleichtern, generelle Empfehlung oder meist verwendete „Standard“bauteile)?
Ich bitte um Entschuldigung, sollte die Fragestellung etwas unbeholfen sein und bedanke mich schon im voraus für hilfreiche Antworten und Tipps!
Hallo,
wenn Du einmal die Datenblätter Deiner Treiber-IC`s zu Rate gezogen hättest,
dann wüßtes Du, das diese u.a. eine "eigene" SpannungsVersorgung benötigen.
Bei geschickter Verdrahtung mit dem Arduino kann es zu keiner Überlastung des
Selben kommen. Der Arduino liefert ja nur die logischen Pegel.
Als Alternative könntest Du Dir mal den TLC5940 anschauen. Der kann 16 LED`s
unabhängig voneinander schalten/dimmen. Eine Lib dafür gibt es auch.
Gruß und Spaß
Andreas
SkobyMobil:
Hallo,
wenn Du einmal die Datenblätter Deiner Treiber-IC`s zu Rate gezogen hättest,
dann wüßtes Du, das diese u.a. eine "eigene" SpannungsVersorgung benötigen.
Bei geschickter Verdrahtung mit dem Arduino kann es zu keiner Überlastung des
Selben kommen. Der Arduino liefert ja nur die logischen Pegel.
Als Alternative könntest Du Dir mal den TLC5940 anschauen. Der kann 16 LED`s
unabhängig voneinander schalten/dimmen. Eine Lib dafür gibt es auch.
Gruß und Spaß
Andreas
Der Denkfehler mit der "eigenen" Spannungsversorgung ging mir im Nachgang auch auf.
Im Beispiel sind jedoch (entsprechend der Anleitung) noch keine "Treiber" verwendet worden, sondern nur der 74HC595, dort steht bei "Continuous current through VCC or GND max. +/-70mA" wo 8 LEDs ja erheblich darüber liegen, ich messe nochmal alles durch, vllt. wird es mir dann klarer.
Den TLC5940 werde ich mir mal mit anschauen, der wäre gewiss eine Alternative. Ebenso die LEDs mit integriertem Controller, glaube jedoch, dass Diese für die Anwendung eher weniger geeignet sind.
Statt der 74HC595 kannst Du ja auch TPIC6B595 verwenden; Die haben open Drain Ausgänge für 150mA Dauerbelastung. Ähnliche Modelle sind TPIC6595, TPIC6A595; TPIC6C595 die sich nur im Ausgangstransistor und daraus risultierend im max Strom unterscheiden.
Altenativ kannst Du einem 74HC595 einen ULN2803 nachschalten.
Beim TLC5940 muß jeder PWM.Zyklus vom Arduino gestartet werden. Das hat den Vorteil daß man eine LED-Matrix multiplexen kann, aber falls das nicht notwendig ist eine unnötig komplizierte Ansteuerung braucht. Alternative ist der TLC5947 der 16 Ausgänge hat und die PWM eigenständig abläuft. Leider gibt es den nur in SMD.
Auch ich finde LED mit integriertem Kontroller einfacher als andere Ansteuerungen. Mit der richtigen Bibliothek ist das kinderleicht und der Schaltungsaufwand ist bedeutend geringer, da nur Versorgungsspannung und 1 bis 2 Datenleitungen von LED zu LED geführt werden müssen. Alle LEd werden in Reihe geschaltet.
Hallo,
versuche einmal Dich rational von dem 74HC595 zu verabschieden. Das ist ein
Das ist ein IC der Dir mit wenigen SteuerLeitungen ein vielfaches dessen, als
logische Pegel zur Verfügung stellen kann. In der Summe 64 Zustände.
Und Deine "Continuous current through VCC or GND max. +/-70mA" sind überhaupt
kein Problem. Wenn Du LowCurrent-LED verwendest, dann kommst Du bei weiten nicht
an diese 70mA ran.
Der 74HC595 stellt u.a. ein Schieberegister zur Verfügung, das ist KEIN-
LED-Treiber.
Den CD74HC4051 könnte man zum ansteuern von LED`s vergewaltigen, solange man
sich auf "ein/aus" beschränkt. Auch bei mehreren Kanälen zur gleichen Zeit.
Nur weil es für diese Bausteine Arduino-LED Schaltungen gibt, heißt das noch
lange nicht, das es der richtige Weg ist. Beim elektronischen Aufbau ist das
schon eine FehlerTrächtige Angelegenheit- von der Programmierung ganz zu
schweigen.
Als Anfänger würde ich mir das aber schwer überlegen.
Den TLC5940 hatten wir ja schon. Du könntest auch noch den MAX7219/7221
nehmen. Die schaffen 64 LED`s. Alle von mir genannten sind LED-Treiber, bei
denen sich der elektronische und software-seitige Aufwand in Grenzen hält.
Ziehe Dir doch einmal die Datenblätter der für Dich in Frage kommenden IC`s.
Dann zeichne Dir mal den Schaltplan (oder Verdrahtungsplan) auf.
Und schaue einmal nach, ob sich 15 Stück auch kaskadieren lassen.
Das hört sich immer so schön an, "Standard"-LEDs >120 Stück"…
Da steckt aber eine Menge hinter, DAS- ist NICHT zu unterschätzen.
Wenn Du es einfach und sicher möchtest, dann nehme Uwe seinen Vorschlag an.
Solltest Du RGB-LED verwenden wollen, dann bestelle nur wenige und schau ob
Du mit dem "Licht" zufrieden bist. Fast alle 0815-RGB-LED`s liefern MatschePampe
als sichtbares Lich ab.
Gruß und Spaß
Andreas
ich muß mich da hotsystems anschließen. es ist hier viel zu oft der fall, daß probleme genauestens beschrieben werden, dabei wäre es viel einfacher, wenn wir wissen würden, was eigentrlich erreicht werden soll.
zum 74HC595: nein, Du hast keinen denkfehler, eigentlich wird der bei dieser schaltung überlastet, aber gerade dieser IC scheint solche reserven zu haben, daß bei bestimmt zehntausenfachem aufbau nie was warm geworden ist. für 120 LEDs würde ich ihn allerdings nicht verwenden, das signal wird zwischen den ICs ja nicht verstärkt, da ist irgendwann ende der fahnenstange.
wenn Du PWM willst, empfehle ich Dir den PCA9685.
da kannst Du bis 16 x 62 ausgänge aufbauen. außerdem ist es keine 8bit-, sondern 16bit-PWM, das gibt besonders im unteren bereich viel schönere übergänge. angesprochen wird er über I2C, die leitungen sollten also nicht zu lang sein oder das signal muß verstärkt werden. eine bibliothek gibt es auf der seite oben. er hat übrigens schon vorwiderstände für die LEDs drauf. kaufen würde ich dann allerdings da:
Eisebaer:
für 120 LEDs würde ich ihn allerdings nicht verwenden, das signal wird zwischen den ICs ja nicht verstärkt, da ist irgendwann ende der fahnenstange.
Was meinst Du denn damit? Der Datenausgang ist natürlich gepuffert, und die Eingänge für Clock und Load sind so hochohmig, da kann der Arduino Dutzende von treiben. Für 120 Led's braucht man 15 Schieberegister, die kann man locker hintereinanderschalten.
Ob das - aus anderen Gründen - sinnvoll ist, ist allerdings eine andere Frage, und PWM geht mit denen auch nicht wirklich. Die Ausgänge sollte man eigentlich auch nicht mit mehr als 6mA belasten. Was - wie schon erwähnt - bei entsprechenden Led's aber durchaus ausreichen kann. Wobei der bei mehr nicht gleich kaputt geht, aber man sollte ein IC nicht standardmäßig bei seinen Grenzwerten betreiben.
MicroBahner:
Was meinst Du denn damit? Der Datenausgang ist natürlich gepuffert, und die Eingänge für Clock und Load sind so hochohmig, da kann der Arduino Dutzende von treiben. Für 120 Led's braucht man 15 Schieberegister, die kann man locker hintereinanderschalten.
Bist Du dir da so sicher daß ein Arduino Ausgang 15 CMOS Eingänge treiben kann? CMOS-Eingänge brauchen statisch gesehen keinen Strom aber dynamisch um den Zustand zu ändern sehr wohl (Gatekapazität laden).
Da kann man sich aber mit nicht negierenden Treibern behelfen.
ich muß mich da hotsystems anschließen. es ist hier viel zu oft der fall, daß probleme genauestens beschrieben werden, dabei wäre es viel einfacher, wenn wir wissen würden, was eigentrlich erreicht werden soll.
zum 74HC595: nein, Du hast keinen denkfehler, eigentlich wird der bei dieser schaltung überlastet, aber gerade dieser IC scheint solche reserven zu haben, daß bei bestimmt zehntausenfachem aufbau nie was warm geworden ist. für 120 LEDs würde ich ihn allerdings nicht verwenden, das signal wird zwischen den ICs ja nicht verstärkt, da ist irgendwann ende der fahnenstange.
da kannst Du bis 16 x 62 ausgänge aufbauen. außerdem ist es keine 8bit-, sondern 16bit-PWM, das gibt besonders im unteren bereich viel schönere übergänge. angesprochen wird er über I2C, die leitungen sollten also nicht zu lang sein oder das signal muß verstärkt werden. eine bibliothek gibt es auf der seite oben. er hat übrigens schon vorwiderstände für die LEDs drauf. kaufen würde ich dann allerdings da:
uwefed:
Bist Du dir da so sicher daß ein Arduino Ausgang 15 CMOS Eingänge treiben kann? CMOS-Eingänge brauchen statisch gesehen keinen Strom aber dynamisch um den Zustand zu ändern sehr wohl (Gatekapazität laden).
Das ist dann aber nur eine Frage der maximal erreichbaren Taktfrequenz.
Die Kapazität der CMOS-Eingänge beträgt max. 10pF (typ. 3pF). Das sind bei 15 Bausteinen <150pF, was für den Arduino-Ausgang kein prinzipielles Problem darstellt - sonst könnte er auch keine längere I2C-Leitung treiben.
Hallo,
"…dabei wäre es viel einfacher, wenn wir wissen würden, was eigentrlich erreicht werden soll."
Einer der Punkte ist doch vom TO festgelegt:
"Unter anderem möchte ich eine größere Anzahl „Standard"-LEDs (>120 Stück, je ca. 20mA, der genaue Typ ist noch nicht bekannt) unabhängig voneinander ansteuern können."
Es geht um nichts anderes- LED`s ansteuern.
Mit den oben genannten Bausteinen ist das problemlos möglich.
120 LED`s unabhänging mit Charlieplexing zu steuern, ist ziemlich sportlich.
"Gibt es einen Richtwert, in welchem Umfang man zusätzlich multiplexen kann, ohne ein Flackern wahrnehmen zu können oder ist das in dieser Größenordnung generell unproblematisch?"
Hier wäre es einmal gut zu wissen, was denn der TO unter "multiplexen"
versteht.
Gruß und Spaß
Andreas
wenn ich einmal einen allgemeinen Tipp zu LEDs geben darf. Vergesst normale LEDs und auch die low current LEDs. Nehmt lieber super helle und betreibt die mit wenig Strom. Damit meine ich locker unter 1mA. Wenn man zum Bsp. 300mcd Typen nimmt, dann kann man die mit 0,5mA betreiben und sie leuchten ausreichend hell wie normale LEDs. Ich habe das mit verschienden Farben der 3mm Serie Water Clear von Liteon getestet. LTL1CHKxKNN Reihe
Du wiedersprichst Dich.
Der PCA9685 ist ein 16 Kanal 12 Bit PWM Treiber mit I2C-Interface
kein widerspruch, sondern ein kurzer denkfehler. wenn man immer wieder 16 schreibt, bleibt der tipfinger dann einfach dabei.
klar, 12bit, aber der effekt ist der gleiche. die übergänge sind halt schöner, gleichmäßiger.
und eins ist auch klar: wenn man einfach nur 120 leds irgendwie dimmen will, ist mit dem PCA mit kanonen auf spatzen geschossen, der kann das schon zu gut. aber bei dem preis, der ersparten arbeit für verkabelung und den schon vorhandenen vorwiderständen denk ich da nimmer nach.
Vielen Dank für die zahlreichen Antworten, ich werde das Ganze am Wochenende mal in Ruhe sichten und evtl. mit den vorhandenen Teilen mal einen Probeaufbau versuchen.
Zum Anwendungszweck: Das Ganze soll (unter anderem) der Signalsteuerung einer Modellbahn dienen, also technisch eigentlich nicht allzu komplex. Das heißt für die ganz konkrete Anwendung erscheint mir die "statische" Ansteuerung mittels Schieberegister deutlich zweckmäßiger als multiplexen, es wird auch keine PWM benötigt (wäre nur schön für evtl. spätere Anwendungen, damit ich nicht zig verschiedene Bauteile rumfliegen habe).
Die Anzahl von 120 insgesamt ist erstmal nur grob überschlagen, da der Endzustand der Anlage noch nicht feststeht. Von der Gesamtzahl der LEDs werden dann immer ca. 2/3 permanent leuchten. Die einzigen LEDs (welche ich bislang finden konnte), welche mir von der Bauform (mit Kuppel, kleiner 3mm) her geeignet scheinen haben alle eine Stromaufnahme von ca. 20mA, fürs Stellpult habe ich noch eine größere Kiste "normaler" 3mm LED zu Hause (soweit ich mich entsinne auch keine LowCurrent).
Hallo,
Deine "20mA" beziehen sich bei LED´s auf die Stromaufnahme der Selben. Eben
bei diesen "20mA" haben sie ihre vorgegebene Leuchtstärke erreicht.
Du kannst eine "20mA" LED ohne Probleme auch mit "15mA" oder weniger betreiben.
Eine Abnahme der Leuchtstärke wird kaum zu bemerken sein.
Rechne Dir einmal den Vorwiderstand für "20mA" und für "15mA" aus. Dann kannst
Du beide im Betrieb mal vergleichen.
"also technisch eigentlich nicht allzu komplex"
Ha, ha!
Dann mal viel Spaß mit Deinen Schieberegistern. Alles Gute für Dein Projekt.
Gruß und Spaß
Andreas