mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Baustein für Multi LED's ?


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,..

stellt euch vor, man möchte am AVR ( Atmega128L ) mehrere LED's
betreiben die unterschiedlich vor sich her blinken und möchte aber
NICHT vor jede LED einen Vorwiderstand schalten. Gibt es einen
einzelnen Baustein ( mit z.B. 8 Pin's ) der sozusagen an den IO's des
Mikrocontrollers sitzt und selbst nur 1 Verbindung zur Masse hat und der
Strom einstellbar ist, der dann für alle(!) IO's und damit für die
LED's gilt ? und somit keine Helligkeitsschwankungen auftreten, wenn
ein paar LED's ausgehen und andere weiterhin leuchten...
Der Baustein müsste sozusagen den Gesamtstrom immer in kleine
"Portionen" (z.B. à 10mA) für jede LED teilen und erkennen wann
LED's abgeschaltet oder hinzu geschaltet werden.

Gibt's sowas ? irgendwo ?
... also anstatt :

AVR Pin 1----(LED)---[Widerst.]-------VCC/GND

... auch nicht :

AVR Pin 2----(LED)---[Transistor]-----VCC/GND
                          |
                          |
                          o

... eher so :


AVR Pin 1---(LED)---o-----[ Baustein ]------VCC/GND
AVR Pin 2---(LED)---|     [    X     ]
AVR Pin 3---(LED)---|     [          ]---(Offset/Potti 6mA)---GND/VCC

  ( 6 mA für jede LED )

Jemand sowas schon mal gesehen ?

Wäre Dankbar für einen Hinweis ;)


  Gruß,
        Dirk

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun stell dir mal vor :) sowas gibt es und stell dir vor für 8 oder 16
oder 24 LED's benötigst du nur 2 Pins an deinem AVR.
Schau mal hier http://www.st.com/stonline/books/ascii/docs/10147.htm

Gruß Hagen

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso und den hier nicht vergessen
http://www.st.com/stonline/books/ascii/docs/10154.htm

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das standart widerstandnetzwerk und die leds per pwm ansteuern reicht
nicht aus?

                               o--GND
AVR Pin 1---(LED)---[Widerstand]
AVR Pin 2---(LED)---[Widerstand]
AVR Pin 3---(LED)---[Widerstand]

WErner

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hagen:

Danke ;) war schon mal ein guter Link ! Aber was Du nicht wissen
konntest ist : Der Bereich sollte nicht bei 15mA sondern irgendwo
zwischen 5-15mA liegen und nicht erst bei 15 mA anfangen,.. :(
Ein weiteres Problem ist der Platz,... wenn ich noch weitere SMD
Bauteile auf die Platine quetsche wird's echt langsam ziemlich eng,..
und da beim 128L eh die ganzen Beinchen bereits "dran" sind
(Bauform),.. spare ich durch das zusätzliche SiPo nicht wirklich Platz
sondern muss nen weiteren Chip unterbringen. Aber prinzipiell wärs das
fast gewesen ,..

Aber vielleicht wird's hier deutlicher  :

AVR Pin 1---(LED)---o----------[ Baustein X ]------VCC/GND
AVR Pin 2---(LED)---|              |
AVR Pin 3---(LED)---|              |--------z.B.5mA/Schritt

... mit sowas könnte ich massig Platz sparen, wenn der Baustein einfach
"stabilisierte Sprünge" im Gesamtstrom je nach "Belastung" machen
würde :
z.B. :
 5mA - 1 LED
10mA - 2 LED's
15mA - 3 LED's
20mA - 4 LED's
... wenn man das auch noch über einen Offset einstellen könnte, wär ich
richtig glücklich ;)))

@Werner:
Da hab' ich das gleiche Problem,... leider,.. denn ich brauch' nen
Haufen Widerstände   :(


   Fällt euch beiden vielleicht hierzu noch etwas ein ?

  Gruß,
       Dirk

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok ich hatte/habe ein ähnliches Problem.

"betreiben die unterschiedlich vor sich her blinken und möchte aber
NICHT vor jede LED einen Vorwiderstand schalten"

Ich will zb 16 RGB LEDs die eine gemeinsamme Anode haben ansteuern.
Dazu wird eine Matrix von 16 Zeile und 3 Spalten gebaut. Die Zeilen
werden durch PNP an Vcc über einen Vorwiderstand bestrieben und die
Spalten per MOSFETs geschaltet. Jede Spalte steuert immer nur 1 Farbe
der RGB LEDs an. D.h. ich habe so ein RGB Farbspalte und kann diese nun
durch weitere Spalten erweitern.  Wichtig ist nur das immer nur eine
Farbspalte zu einem Zeitpunkt aktiv sein kann, sprich nur ein MOSFET
schaltet durch. Der PNP kann nun den Strom immer so einregeln das er
den Anforderungen der unterchiedlich farbigen LEDs gerecht wird.

Ich möchte damit sagen das du eventuell mal deine Spalten/Zeile-Logik
vertauschen solltes. Am AVR sitzen die PNP die die gemeinsammen Anoden
der LEDs ansteuern. Diese werden in Spalten an GND durch MOSFETs
gesteuert. Für jede LED-Zeile hast du also nur eine
Konstantstromquelle. Mehr kann ich dir auch nicht helfen.

Aber wenn es um Platz geht dann frage ich mich wieviele 0603 SMD
Widerstände zb. auf den Platz eines kleineren Chips passen würden.

Gruß Hagen

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, bei deiner Idee vergisst du eines:
Du möchtest das sich die fließenden Ströme auf alle LEDs gleichmäßig
verteilen und den verfügbaren Strom auf Grund der Anzahl der aktivem
LEDs einregulieren. Hast du auch schon mal daran gedacht das sich der
so verfügbare Gesamtstrom eben NICHT gleichmäßig auf die LEDs verteilen
kann wenn sie nicht exakt aufeinander abgestimmt wurden ?
Du musst schon vor jeder LED eine eigene Konstantstromquelle setzen,
eben so wie in meinem vorherigen Vorschlag. Ich reduziere dabei den
Bauteilaufwand bei zb. 64 solcher RGB LEDs von 64*3 Vorwiderständen auf
max. 16*2 Widerstände.

Gruß Hagen

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schonmal die BCN16-Widerstände (Reichelt) in Betracht gezogen?

...

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hagen:

Danke für das Brainstroming ! Aber das löst meine "Platz-Probleme"
noch nicht ... Denn ich möchte ja ( wenn irgend möglich ) auf die
einzelnen Ansteuerbausteine oder Vorwiderstände verzichten und das
alles auf einen einzelnen Baustein (!) pro parallel geschalteter LED's
 vereinfachen.

Da fällt mir was ein:
Wie wäre es wenn man einen Pin ( Steuerleitung ) dess AVR's für diesen
Zweck zum ansteuern eines Transistors(?) nehmen würde der den
Gesamtstrom in der Reihe steuert ? Schließlich "weiß" der MC ja
wieviele LED's an sind und müsste demnach lediglich "irgendwie"
(PWM? oder Analog mit vorher definierten Schritten ) einem Baustein X
"beibringen" : "Hey - da müssten gerade 5 LED's leuchten,... Geh
mal auf 5x5mA für den Gesamtstrom in "Deiner" Reihe..." Dann könnte
man auf weitere Transistoren oder Widerstände verzichten.

>Du möchtest das sich die fließenden Ströme auf alle LEDs gleichmäßig
>verteilen und den verfügbaren Strom auf Grund der Anzahl der aktivem
>LEDs einregulieren.

GENAU ! Schön wärs,.. wenn's so einen (intelligenten) Baustein gäbe
,...

>Hast du auch schon mal daran gedacht das sich der
>so verfügbare Gesamtstrom eben NICHT gleichmäßig auf die LEDs
>verteilen kann, wenn sie nicht exakt aufeinander abgestimmt wurden ?

Ich hatte vor überall die gleichen ( Low Current ) LED's
anzuschließen, daher hätte ich dieses Problem, glaub' ich, nicht. Die
LED's sind alle Baugleich ( "Kennlinien-gleich" ).

@HanneS:
.. zumindest wärs eine Platz sparendere Version,.. als einzelne
SMD-R's zu nehmen...

Gruß,
     Dirk

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab immer nocn nicht verstanden, wieso ein SIL9 Widerstandsnetzwerk
mehr Platz verbrauchen soll, als ein separater Baustein. Und die
Helligkeit jeder LED läßt sich doch prima über PWM regeln.
Alles andere braucht deutlich mehr Platz und das Regeln ist
komplizierter...

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt auf die Menge der LEDs an. Bei 1000 LEDs verbrauchen die
Vorwiderstände sicher weit mehr Platz als ein Chip der eine
programmierbare Konstantstromquelle darstellt. Es ist auch richtig das
der AVR digital berechen kann wieviel Strom erforderlich wäre. Denoch
meine ich das das so nicht sauber funktionieren kann. Denn es kann
keine absolut identischen LEDs geben und man muß sie in irgendweiner
Weise immer parallel ansteuern. Die Ströme würden sich ausgehende von
der Konstantstromquelle eben nicht gleichmäßig auf alle LEDs verteilen.
Um so mehr LEDs an dieser Quelle sitzen um so größer werden die
Differenzen. Befindet sich nur eine LED darunter die durch verchleiß
mehr Strom zieht als die anderen dann wird diese mit der Zeit immer
mehr überlastet. Ergo: es entstehen trotzt Konstantstromquelle immer
Helligkeitsunterschiede.

Wie gesagt, ich hatte auch schon darüber nachgedacht und es eben
verworfen. Teile die LEDs in eine Matrix auf, deren Anzahl an Spalten
und Zeilen am geringsten ist. Dann treibe jede Zeile mit einer eigenen
Konstantstromquelle (simpler PNP mit Widerständen reicht aus) und die
Spalten der Matrix werden über MOSFETs nach GND terminiert. So hast du
wenigesten nur (LED Gesamtanzahl / Spalten) mal mit Widerständen + PNP
zu tuen.

Die Spalten kannste auch mit ULN's treiben, statt MOSFETs.

Also ich weis ja nicht wie klein deine Schaltung werden soll, aber
alleine die LEDs zu "verdrahten" benötigt seinen Platz. Es gibt
heutzutage so kleine LEDs das deren Bedrahtung wesentlich mehr Platz
wegnimmt. Es müsste also immer noch genügend Platz vorhanden sein um
die Spalten/Zeilentreiber zu integrieren.

Ansonsten hätte ich noch einen Tipp für dich:
Schau dir doch mal den MAX6952 und MAX6954 an. Auch ich hatte mit
diesen Teilen experimentiert und mir Samples schicken lassen.
Allerdings waren sie für meine Verhältnisse dann doch zu langsam in der
Ansteuerung. Für eine normale LED Matrix sind sie aber absolut
ausreichend und enthalten ebenfalls pro LED Zeile eine
Konstantstromquelle. Sie werden in SSOP36 gebaut, also klein genug. Sie
treiben 140 respektive 128 LEDs.

http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3379
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3410

Gruß Hagen

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hagen

Ok,.. Danke ! Ich schau mir die Bausteine mal an.

Gruß,
     Dirk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.