Forum: Mikrocontroller und Digitale Elektronik mehrere IR-LEDs effizient ansteuern


von Highii H. (highii)


Lesenswert?

Hallo,

Ich möchte einige IR-Reflexschranken effizient ansteuern. Eine einzelne 
Reflexschranken besteht aus einem NPN-Transistor, der über die Basis von 
einem Atmega angesteuert wird. Er wird mit 36kHz getaktet. Am Kollektor 
hängt eine IR-LED. Die Transistorschaltung ist so ausgelegt, dass durch 
die LED 100mA fließen.
Nun möchte ich weitere LEDs auf diese Weise betreiben. Wenn die alle 
gleichzeitig angesteuert werden, würden ja bei 20 LEDs bereits 2A in der 
Spitze fließen. Das ist mir aber zu viel. Weiterhin reicht mit bei den 
Reflexschranken eine weitaus geringere "Reaktionszeit" aus. Es würde mir 
also ausreichen, wenn ich die LEDs nacheinander ansteuere, sodass jede 
LED alle 100ms für wenige ms betrieben wird. Wie realisiere ich das am 
besten, wenn ich nicht jede LED einzeln über einen Atmega-Out ansteuern 
möchte?

Habt ihr da Ideen?

Danke und Gruß.

von W.A. (Gast)


Lesenswert?

Highii H. schrieb:
> Wie realisiere ich das am besten, wenn ich nicht jede LED einzeln über
> einen Atmega-Out ansteuern möchte?

z.B. mit Schieberegistern TPIC6B595 über SPI

von Highii H. (highii)


Lesenswert?

W.A. schrieb:
> z.B. mit Schieberegistern TPIC6B595 über SPI

Puh, wird das nicht schwierig? Wie würde man es machen? Innerhalb der 
36kHz alle Seriellen Daten in die Schieberegister geben und nach 36kHz 
alle Ausgänge der Schieberegister aktivieren!?

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Highii H. schrieb:
> Nun möchte ich weitere LEDs auf diese Weise betreiben. Wenn die alle
> gleichzeitig angesteuert werden, würden ja bei 20 LEDs bereits 2A in der
> Spitze fließen.
das nur, wenn die LED alle parallel betrieben werden.
Man könnte aber auch einige in Reihe schalten.
Wie viele in einer Reihe möglich sind, hängt von der Spannung ab.

Um Strom zu sparen, muß man ja die LED auch nicht im Dauerbetrieb 
ansteuern. Bei Burst oder Einzelimpulsen mit einem rel großen Duty cycle 
braucht es viel weniger Energie.
Gruß Öletronika

von Highii H. (highii)


Lesenswert?

U. M. schrieb:
> Um Strom zu sparen, muß man ja die LED auch nicht im Dauerbetrieb
> ansteuern. Bei Burst oder Einzelimpulsen mit einem rel großen Duty cycle
> braucht es viel weniger Energie.

Sie werden sowieso mit Einzelimpulsen betrieben. Das verlangt der 
IR-Empfänger. Aber wenn ich 20 LEDs gleichzeitig mit Einzelimpulsen von 
100mA betreibe, sind es trotzdem 2A.

von Sascha (Gast)


Lesenswert?

Sehe ich das richtig, dass zu jedem beliebigen Zeitpunkt nur eine LED an 
sein muss?

Dann würde ich ein Bankswitchung Schema machen.

LEDs je in 8er Blöcken parallel anordnen zusammen mit ihren 
Transistoren.

Vcc dieses Blocks ist per p-fet abschaltbar. Der hängt auch an nem µC 
Pin.

Die Basisanschlüsse der Blocks werden zusammengeführt und auf einen µC 
Port gelegt. Irgendein Port wo mindestens 7 Pins frei sind.

Jetzt schaltest du p-fet1 an, lässt die LEDs leuchten, schaltest den 
wieder aus und wiederholst das Gleiche für die beiden anderen Blocks.

Braucht man insgesamt nur 10 Pins für. Und man kann die LEDs zeitlich 
hintereinander einschalten, sodass nie mehr als 100mA fließen.

von Eberhard H. (sepic) Benutzerseite


Angehängte Dateien:

Lesenswert?

Highii H. schrieb:
> Hallo,

> Es würde mir
> also ausreichen, wenn ich die LEDs nacheinander ansteuere, sodass jede
> LED alle 100ms für wenige ms betrieben wird. Wie realisiere ich das am
> besten, wenn ich nicht jede LED einzeln über einen Atmega-Out ansteuern
> möchte?
>

Von diversen Herstellern gibt es schon seit Jahren kaskadierbare 
Mehrkanal-LED-Treiber.

Für Deine Anwendung wären unter anderem z.B. 3x TLC5916/17 geeignet, um 
bis zu 24 IR-LEDs direkt mit Konstantstrom anzusteuern, auch wahlweise 
nacheinander (wie gewünscht) statt alle gleichzeitig.

Der Maximalstrom wird für alle Kanäle eines Bausteins global mit einem 
Widerstand eingestellt. Bei den genannten Bausteinen lässt er sich dann 
auch noch global in 256 Stufen per Software reduzieren. Andere Bausteine 
erlauben auch individuelle Stromeinstellungen per Ausgang.

Je nach Ausführung sind sogar einige Überwachungsfunktionen integriert 
(Unterbrechung, Kurzschluss, Übertemperatur). Fehler werden ggf. vom 
seriellen Ausgang dieser Bausteine zum µC zurückgeführt.

Diese Methode mit seriell kaskadierten Bausteinen (Schiebetakt bei 
TLC59xx bis zu 25 MHz) erspart eine Menge I/O-Leitungen beim µC und 
durch die Konstantstromsenken auch weitere diskrete Bausteile zum 
Ansteuern der IR-LEDs.

TLC5926/27 hätten 16 statt 8 Ausgänge. Für 24 IR-LEDs könnte man statt 
3x TLC5916 also auch 1x TLC5616 + 1x TLC5926 nehmen. Drei kleinere 
Gehäuse erlauben aber möglicherweise ein besseres Platinen-Layout.

von Axel S. (a-za-z0-9)


Lesenswert?

W.A. schrieb:
> Highii H. schrieb:
>> Wie realisiere ich das am besten, wenn ich nicht jede LED einzeln über
>> einen Atmega-Out ansteuern möchte?
>
> z.B. mit Schieberegistern TPIC6B595 über SPI

Und damit es effizient wird, nimmt man Scheberegister mit OE-Pin, an den 
man den 36kHz Träger anlegt. Alternativ statt am OE-Pin den Träger am 
anderen Anschluß der LED anlegen.

Klartext: das Bitmuster für die gewünschte(n) LED in die Schieberegister 
einschieben. Den Träger für die Dauer eines Bursts einschalten. Und 
wieder von vorn.

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Highii H. schrieb:
> Sie werden sowieso mit Einzelimpulsen betrieben. Das verlangt der
> IR-Empfänger. Aber wenn ich 20 LEDs gleichzeitig mit Einzelimpulsen von
> 100mA betreibe, sind es trotzdem 2A.
ehe du dir an dieser Stelle einen großen Aufwand machst, mal ein 
Vorschlag, der in eine andere Richtung geht.
Die 2A hören sich jetzt gefährlich an, aber wenn die nur innerhalb rel. 
kurzer Impulsbelastung auftreten, dann reicht ein ausreichend großer 
Kondensator (Elko) um das abzufangen.

Ein C mit 1000uF entlädt sich um 1V wenn er eine Sekunde mit 1000uA = 
1mA entladen wird. Er entlädt sich auch um 1V wenn er 1ms mit 1A 
entladen wird.  Ein Elko mit 4700uF kann man schon über 2ms mit 2A 
entladen um einen Spannungsabfall von 1 V zu erreichen.

Bei 39kHz hkannst du also schon eine Menge Impulse mit 2A ausgeben, wenn 
du z.B. 4700uF als Puffer nutzt.
Gruß Öletronika

von Highii H. (highii)


Lesenswert?

U. M. schrieb:
> Bei 39kHz hkannst du also schon eine Menge Impulse mit 2A ausgeben, wenn
> du z.B. 4700uF als Puffer nutzt.

Das klingt sehr interessant. Darüber denke ich mal nach.

Mir ist noch was anderes eingefallen.
Einen 74HC154 kann ich über 4 Leitungen am Atmega ansteuern. Es ist ein 
4-to-16 Line Decoder/demultiplexer. An einem der 16 Ausgänge liegt ein 
Low, an den anderen 15 ein High. Ich führe das 36kHz Taktsignal mit 
jeweils einem UND verknüpft zu den Basen der Transistoren. (Ich benötige 
jeweils noch einen Inverter).
Jedenfalls kann ich dann mit den 4 Steuersignalen des 74HC154 eine von 
16 LEDs auswählen. Bei diesem kommt das 36kHz Taktsignal. Bei den 
anderen stets Null.

Was meint ihr?

von Philipp R. (njsd)


Lesenswert?

Deine Transistoren kannst du auch durch ULN2803 oder ähnlich ersetzen, 
erspart einiges an Lötarbeit.

Wenn ich es richtig sehe kannst du über E0 und E1 den Ausgang steuern, 
sprich du musst danach nur noch invertieren und dann direkt auf die 
Treiber.

Beim Pulsen E0 und E1 auf Low und dann zügig die Adressen über A0-A3 
durchschalten oder besser immer Zieladresse wählen und dann E0/E1 auf 
Low für deinen Puls (einen der beiden kannst du direkt auf Low legen).

Ich würde schauen, ob es den nicht direkt nicht invertiert gibt. 
Ansonsten einen LED Treiber benutzen der alles schon drin hat.

TLC59116 oder besser noch PCA9685, der bietet einen staggered Output.

"The PCA9685  allows  staggered LED  output  on  and  off times  to 
minimize current surges. The  on  and  off time delay is independently 
programmable  for each  of  the 16 channels. This feature  is  not 
available  in  PCA9635."

von RP6conrad (Gast)


Lesenswert?

Noch eine Ansatz ist jedenmal 3 LEDs in Serien zu schalten (wen du 5 V 
Versorgungspannung zu Verfugung hatte). Ueber eine IR-Led ist ca 1.3 V 
Spannungsabfal. Damit wird das Stromverbrauch zu ein Drittel.

von Axel S. (a-za-z0-9)


Lesenswert?

Highii H. schrieb:

> Einen 74HC154 kann ich über 4 Leitungen am Atmega ansteuern. Es ist ein
> 4-to-16 Line Decoder/demultiplexer. An einem der 16 Ausgänge liegt ein
> Low, an den anderen 15 ein High. Ich führe das 36kHz Taktsignal mit
> jeweils einem UND verknüpft zu den Basen der Transistoren. (Ich benötige
> jeweils noch einen Inverter).

Das sind die beiden Schwachstellen deines Plans. Zum einen hat der '154 
die falsche Polarität am Ausgang, um genau einen von 16 Transistoren in 
einem z.B. ULN2803 anzusteuern. Zum zweiten ist es heftig Aufwand, da 16 
NANDs hinter den Decoder zu schalten.

Viel besser ist es, einen der ENable Eingänge des Encoders 
mitzuverwenden. Und zwar indem du ihn in Ruhelage auf H hältst und 
sobald du die LED ausgewählt hast, mit einer passenden Anzahl L-Impulse 
bei 36kHz beschickst. Wenn du dann als Treiber noch pnp-Transistoren 
verwendest (gerne auch als Emitterfolger) dann geht auch der '154. Sonst 
suche halt einen Decoder mit H-aktiven Ausgängen. Oder nimm ein 
Schieberegister.

von Axel S. (a-za-z0-9)


Lesenswert?

RP6conrad schrieb:
> Noch eine Ansatz ist jedenmal 3 LEDs in Serien zu schalten (wen du 5 V
> Versorgungspannung zu Verfugung hatte). Ueber eine IR-Led ist ca 1.3 V
> Spannungsabfal. Damit wird das Stromverbrauch zu ein Drittel.

Drei sind zuviel. Bei hohem Pulsstrom (den wird der TE brauchen) sind es 
eher 1.5 bis 1.7V pro IR-LED. Am Transistor fällt auch noch Spannung ab 
(erst Recht wenn es ein integrierter Darlington ist). Und schließlich 
soll auch am Vorwiderstand noch etwas Spannung abfallen, damit man den 
Strom halbwegs kontrollieren kann.

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.