Forum: Mikrocontroller und Digitale Elektronik ULN2803 o.ä. mit Latch gesucht


von Kai Markus Tegtmeier (Gast)


Lesenswert?

Hallo, allerseits!

Ich habe eine Schaltung, bei der ca. 100 LEDs unabhängig voneinander
von einem AVR angesteuert werden sollen. Es könnte dabei theoretisch
auch der Fall eintreten, daß alle gleichzeitig leuchten müssen.

Hintergrund des ganzen Projektes:
Ich möchte bei mir an die Wand eine Seekarte hängen, bei
der jede Leuchttonne durch eine passende LED markiert ist.
Diese LEDs sollen aber nicht nur statisch leuchten, sondern
auch die entsprechende Leuchtfeuerkennung abgeben. Insgesamt
geht es wohl um ca. 100 LEDs. Programmiert werden soll das ganze auf
einem oder mehreren AVRs. Gedimmt werden muß nicht, lediglich
ein- und ausgeschaltet.

Ich hatte überlegt, mit LS273-Bausteinen zu arbeiten; nur leider
übersteigt der maximale Strom von 8 LEDs die Grenzwerte vom LS273.

Nun meine Frage, um den externen Bauteilaufwand möglichst gering zu
halten: gibt es ein ULN2803 oder vergleichbar, bei dem bereits eine
Latch (oder "Register")-Funktion eingebaut ist? Ich suche
quasi eine Kombination aus einem LS273 und einem ULN2803 in einem
Baustein zusammen. Oder alternativ ein dem LS273 vergleichbarer
Baustein, der 8 LEDs gleichzeitig mit je 20mA treiben kann, ohne in die
Luft zu fliegen.

Hat jemand eine Idee dazu?

Vielen Dank im Voraus!
Greetz
Kai Markus

von Kai R. (kairiek)


Lesenswert?

Hallo Kai,

wenn du Low Current LEDs verwendest, sollte ein normales Latch wie z.B.
74XX573 genügen.

Gruß

Kai

von Stefan K. (_sk_)


Lesenswert?

wie wäre es mit serieller Ansteuerung (SPI)? Dann würden die TPIC6B595
von TI passen.
Es gibt auch noch Matrix-Treiber (von Maxim z.B.), mit denen kannst Du
bis zu 64 LEDs steuern und sparst Dir sogar die Vorwiderstände. Bin
aber nicht so sicher, ob eine Matrix für Deine Anwendung praktikabel
ist ...


Gruß, Stefan

von crazy horse (Gast)


Lesenswert?

du solltest schon dimmen. Sieht nicht besonders schön aus, wenn die
Lichter schlagartig an und aus gehen.
Mit nem Tiny2313 habe ich das mal für einen gemacht, es gibt mehrere
Teilkarten. Pro Platine werden werden 24 LEDs angesteuert (Matrix 3x8),
8x sink direkt vom Tiny2313, 3xsource über pnp-Transistoren.

von Lumpi (Gast)


Lesenswert?

Nimm Low Current Leds und Schieberegister zB. HCT4094. Dieses kann
Leds direkt treiben. Vorwiderstand ca 1K.
Mit den Schieberegistern brauchst du nur 3 Leitungen. Du kannst
später auch leicht erweitern. Würde die Platinen segmentieren (zB.
jede treibt 16 - 32 Leds.
Ansonsten fällt mir noch eine Matrix ein. Zb. 16 x 7 (2 ULN , 7 Trans).
Da kannst du auch dimmen.


SG Lumpi

von Joachim B. (joachimb)


Lesenswert?

Was hälst Du vom 74HC259?
Der hat acht Ausgänge, die einzeln adressiert werden und den Zustand
behalten. Mit low current LEDs (siehe oben) und Vorwiderstand sollte
das gut funktionieren.

Gruß
Joachim

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Zunächst erst einmal vielen Dank für Eure Antworten.
Ich werde dann wohl den Vorschlag aufgreifen und die
LEDs wirklich dimmen. Wird natürlich bei ca. 100 LEDs etwas
umfangreich, das ganze...

@crazy horse:
hattest Du dann bei Deinen Teilkarten die Dimmvorgänge per Soft-PWM
implementiert?

Schaltungstechnischer Vorteil einer Matrix wäre natürlich: sobald etwas
mit Dimmvorgängen im Spiel ist, hat sich das mit einem Latch so oder so
erledigt, oder sehe ich das falsch?!? Ich werde auf jeden Fall mal den
Gedanken mit einer Matrix weiterverfolgen...

Bei Low-current-LEDs bin ich mir nicht sicher, ob die die nötige
Leuchtstärke erreichen. Und (wenn ich den Reichelt-Katalog richtig
durchgelesen habe) es dürfte nicht so einfach sein, weiße
Low-Current-LEDs 3mm zu bekommen?!?

Greetz
KMT

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Hab mich gerade bei Maxim noch mal etwas schlauer gemacht. Insbesondere
die Treiber MAX6962 und MAX6967 sehen für meine Zwecke recht
interessant aus... mit dem simplen SPI-Interface, das die bereits drin
haben, würde man sich die zeitkritische Implementation von Software-PWM
ja glatt sparen :-)

Greetz
KMT

von Dieter W. (dds5)


Lesenswert?

MAX7219 oder 7221 ist zwar recht teuer, kann aber 64 LED in einer 8x8
Matrix multiplex ansteuern. Hat auch SPI und ausserdem 16
Helligkeitsstufen. Man muss nur die Daten reinschreiben, alles andere
wickelt der Baustein selbst ab.

Dieter

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Vielen Dank für den Tipp, Werner!
Ich habe gerade mal das Datenblatt vom MAX7219 überflogen.
Der scheint zwar primär dafür gemacht zu sein, 7-Segment-Anzeigen
zu treiben, aber wenn ich das richtig verstehen, kann man jedes Segment
auch einzeln ansteuern?!?

Greetz
Kai Markus

von Klaus F. (Gast)


Lesenswert?

Hallo,
es ist schon ein Unterschied, ob man eine Multiplex-Ansteuerung der
Verbraucher (LEDs) hat oder ob die statisch leuchten (müssen).
Mit dem MAX7219 hat man ein Mux-Ansteuerung, auch wenn das vom Bauteil
selbst so gemacht wird und vom uP aus "statisch" aussieht.

Wirklich statische Ansteuerungen muß man aufwendiger "selbst" bauen,
bestehend beispielsweise aus Schieberegisterketten ( 8 x 74HC595 für 64
Ausgänge, ggf. zusätzlich ULN Treiber, oder gleich die bereits
vorgeschlagenen TPIC6B595). Hierzu braucht man vom uP nur drei
Ausgangspins, evtl. noch einen Eingang zur Selbsttest-Rücklesefunktion.

Lösungen mit (8 mal bei 64 LEDs) 74HC259 bzw. TPIC6B259 sind auch
möglich ; zusätzlich Decoder 74HC138 erforderlich; dann Ansteuerung
über "Adresse" bestehend aus 6 Bit + Datenbit + "enable" = 8 Bit
Ausgabeport (z.B.).  Verdrahtungsaufwand höher, Software-Ansteuerung
dafür äußerst simpel.
Noch mehr Aufwand macht die Lösung über LS273 bzw. HC273 , HC574 etc.

Für 100 LEDs braucht man entsprechend mehr Bauteile.
Und sowieso jede Menge Widerstände.
Das Bauteil "259" gibt's auch als "AC", also 74AC259
("MC74AC259" von www.onsemi.com , evtl. schwierig zu beschaffen.
Macht mehr Strom als das HC, preiswerter als TPIC).

Klaus

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Im Prinzip hätte ich gegen eine Multiplex-Ansteuerung nichts
einzuwenden. Der 7219 bietet aber leider nicht die Möglichkeit,
einzelne LEDs in ihrer Helligkeit zu regeln. Da scheint mir der
MAX6966/6967 eher geeignet zu sein.

@Klaus:
wenn ich dich richtig verstehe, bietet Deine Lösung aber nicht die
Möglichkeit, einzelne LEDs in ihrer Helligkeit zu regeln?!? Zumindest
dürfte eine Software-PWM über ein solches serielles Interface
softwaretechnisch nicht gerade trivial zu realisieren sein, oder
übersehe ich da was?!?

Greetz
KMT

von Klaus F. (Gast)


Lesenswert?

Ja, korrekt erkannt.
"Dimmen" geht nur, wenn man das immer fortlaufend aktualisiert, in
einemr "unsichtbaren" Rasterfrequenz ( >= 100 Hz  / komplette
Ausgabesequenz ).
Das erfordert dann geringen SW-Aufwand, jedoch auch zeitmäßige
Belastung des uP. Steuerung durch Timer-INT o.ä. vorsehen.
Müsste man mal konkret durchrechnen, wenn max. Geschwindigkeit auf SPI
bekannt ist und wieviel Dimmstufen genötigt werden etc.
Leider habe ich keine Zeit nachzuforschen, ob's nicht schon Bauteile
gibt die auch jeden Ausgang mit PWM dimmen können.
Klaus

von Horst-Otto (Gast)


Lesenswert?

Ich würde ein paar SAA1064 nehmen. Ein SAA1064 kann 32 LEDs als 2*16
Matrix ansteuern. Der LED-Strom ist in 8 Stufen bis max. 21mA pro LED
digital einstellbar. Vorwiderstände werden nicht benötigt. Durch das
1:1 Multiplexing bleiben die LEDs schön hell. Der SAA wird über I2C
angesteuert und ist viel billiger und viel besser verfügbar als die
Maxim-Teile. Man kann bis zu vier SAA1064 an einem I2C-Bus betreiben.

von Kai Markus Tegtmeier (Gast)


Lesenswert?

@Horst-Otto:
Wenn ich das Datenblatt vom SAA1064 richtig interpretiere, ist der
LED-Strom aber nur gesamt für alle Segmente gleichzeitig einstellbar,
und nicht für jedes Segment (also nicht nur jedes Digit, sondern jeder
Ausgang separat). Ich lese aus dem Datenblatt heraus, daß
der Strom der gesteuerten Stromquellen über die Control-Bits C4-6
festgelegt wird. Von diesen Control-Bits scheint es aber nur 3 zu
geben; insofern wird das vermutlich für alle LEDs gleichzeitig sein.
Das scheint aber bei vielen Bausteinen das Problem zu sein: vielfach
sind die einfach dafür ausgelegt, eine 7-Segment-Anzeige zu treiben, wo
man eine einstellbare Helligkeit maximal pro Digit benötigt, und nicht
für jede LED einzeln...

Besser geeignet wäre vermutlich ein Chip für die RGB-Ansteuerung von
Großdisplays. Da müßte ja dann auch eigentlich eine Helligkeitsregelung
pro "Pixel" machbar sein...

Greetz
KMT

von Horst-Otto (Gast)


Lesenswert?

Der MAX6966 ist zwar nett, aber wo gibts den zu kaufen? Ich denke aber,
für diesen Fall, wo nur einzelne LEDs ein- und ausgeschaltet werden,
dürfte es nicht allzu schwierig sein eine Software-PWM zu schreiben.
Oder Du verzichtest halt auf das Faden und schaltest die LEDs einfach
'hart' ein und aus.

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Hallo, Horst-Otto!

Ich nehme mal an, daß man den MAX6966 bei Maxim selbst bestellen kann,
die haben ja ein "buy online"-System.
Ich befürchte, daß ein einzelner AVR mit der Rechenarbeit für ein
Software-PWM doch überfordert sein könnte; immerhin geht es bei dieser
Seekarte um ca. 100 LEDs, die alle zu unterschiedlichen Zeiten (aber
teilweise eben auch zur gleichen Zeit) gedimmt werden müssen.
Was glaube ich am ehesten meine Zwecke trifft, ist der MAX6964 mit 17
Ausgängen, die alle voneinander unabhängig in 16 Stufen (das dürfte zum
Dimmen von LEDs reichen) gedimmt werden können.
Wo man den Chip dann herbekommt, muß man schauen; ich bin da aber ganz
guter Hoffnung...

Greetz
KMT

von Horst-Otto (Gast)


Lesenswert?

Lass dann mal hören wie die Bestellung gelaufen ist, ich denke das
dürfte hier einige interessieren.

von Baldwin (Gast)


Lesenswert?

Würde die Lösung von Lumpi wählen (2 ULN2803 und 7 Transistoren -
Matrix). Mit LC Leds und 100 Ohm Vorwiderständen leuchten sie auch
schön. Ein Mega8515 reicht leicht. Multiplexfrequenz ca 100 Hz.
Würde in der Software für jede Led einen Helligkeitswert im RAM ablegen
(ZB 10 Helligkeits - Werte).
Das Multiplexen würde ich in einem Timer-Interrupt erledigen.
In einer netten for -Schleife würde ich alle 100 Led-Helligkeitswerte
PWM-like bearbeiten/ vergleichen. Helligkeitswert erreicht - Led-Bit
freischalten. Led geht im Timerinterrupt ein/aus. Wo liegt das Problem
?
Vergesst die Spezial-ICs.

SG Baldwin

von Furzer (Gast)


Lesenswert?

So sehe ich es auch...

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Falls du immer noch Treiber mit Latch suchst sieh mal beim Hersteller
"Allegro" nach. Die haben eine grosse Auswahl an Treibern
(mit Latch und auch seriell).

Mfg HG

von Ruedi Wiesendanger (Gast)


Lesenswert?

Eine ander Variante währe:
1. Low Current LED's verwenden
2. PCF8574 verwenden.

Die PCF8574 kannst du an über I2C ansteuern. Mit Jedem
PCF8574 kannst Du 8 Leds ansteuern.

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Hallo, allerseits!

Ich habe mir jetzt erst einmal die MAX6964 und bei Texas die TLC5923
bestellt. Ich denke mal, das dürfte die einfachste Variante sein...

Greetz
KMT

von Furzer (Gast)


Lesenswert?

Nein, die teuerste, Strom - vergeudenste und unflexiebelste.

von Hagen (Gast)


Lesenswert?

@Furzer:

kannst du deine Worte mit Fakten hinterlegen ?

Gruß Hagen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.