PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LED mit PWM



Naturp
08.08.2010, 20:24
Hallo

Zurzeit bauen wir an "meinem" Zimmer! Mein Ziel: Komplette LED beleuchtung die etwas hergibt!

Für die Haut (Arbeitsbeleuchtung) nehme ich in Serie geschaltete SuperFlux LEDs die an 24V angehängt werden und über einen mit 5V geschalteten Transistor angesteuert werden!

Um so richtig mit den LEDs spass zu haben, habe ich noch die Farben Rot, Blau,Gelb und Grün , die ich in ihrer helligkeit verstellen will!

Frage: Wenn ich das mit einem Potentiometer mache, habe ich ja immer so einen blöden sprunghaften anstieg der Helligkeit! Wenn ich die LEDs nun mit einem PWM Signal-das über einen (schnellen) Transistor- schaltet eine bessere sache?

Und daraus die nächste Frage:
Das PWM signal kommt von einer "Zentralen" Steuerung die dann die jeweiligen Transistoren in den einzelnen Lampenschirmen schaltet!
Wie viel Kabel darf zwischen MC und Transistor sein???

Mfg
HD

Kampi
08.08.2010, 20:47
Die sanfte Dimmung mit PWM kannst du z.B. mit einem sehr feinen Poti mit kleinem Widerstand machen. Bei kleinem Widerstand ist die widerstandsänderung kleiner als z.B. bei einem 10k Poti. Nachteil ist du hast mehr Verlustleistung.

hardware.bas
08.08.2010, 21:03
Sehr feinfühlig gehts in der Tat nur mit PWM ausreichend hoher Frequenz. Auch ist kein Abgleich, bezugnehmend auf die Leistungsdaten der LEDs im Verhältnis eventueller Potis notwendig, sowie die Linearität ist unübertroffen möglich. Wichtig ist, das reine Rechteckflanken von MP zu den Treibertransistoren gelangen, um Verlustleistungen zu vermeiden. Bei Verwendung von z.B. 1kHz PWM-Frequenz dürfte die Länge des Kabels zwischen MP und Transistor sicherlich unkritisch sein (mehrere Dutzend m bestimmt) VG Micha

Christoph2
08.08.2010, 21:10
Hi,

schau dir mal diesen Treiber an:
http://at.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0416913

Dieser Treiber erzeugt dir einen konstanten Stromfluss durch die LEDs, egal wie viele du in Serie anschließt. Wie viel Strom duchfließen soll, kannst du mit einem Poti oder mit PWM einstellen (es geht auch beides gleichzeitig, dann ist der mit dem Poti eingestellte Wert der obere Grenzwert, und per PWM kannst du zwischen 0 und dem Grenzwert verstellen).

Da die Helligkeit der Leds linear mit dem Stromfluss zusammenhängt, hast du eine perfekte Dimmung.

Die Variante mit dem Vorwiderstand hingegen viele Nachteile, z.B.
- Das Poti muss einiges aushalten, und wird dadurch groß und teuer
- Die Energie die am Poti abfällt wird verschwendet und zerstört den guten Wirkungsgrad der Leds
- Durch die Erwärmung der Leds und des Potis verändern sich die Widerstände der Bauelemente, es fließt ein größerer Strom, der die Leds eventuell zerstört.
- ...

Wenn du den RCD-24 verwendest reicht ein kleines Poti, du hast kaum Verlustleistung (der RCD-24 hat 96% Wirkungsgrad), und der Strom bleibt immer konstant, egal wie warm die Leds sind.

Von den Treibern gibt es recht viele unterschiedliche, das unterscheidende Merkmal ist der maximale Strom der eingestellt werden kann. Der kleinste schafft nur max. 300mA, der größte schafft 1,2A.

lg Christoph


PS: Ich will nicht Werbung für den RCD-24 machen, aber ich habe gerade ein ähnliches Projekt laufen (indirekte Raumbeleuchtung mit einer 10W LED) und bin auf den Treiber gestoßen und war total begeistert davon. Hab schon einen bestellt ;-)

Naturp
08.08.2010, 21:50
Innert 30 min soo viele AW!! Toll =D>

@Kampi: Ich habe bereits mal eine Lampe mit 10k Potti gebaut (ist auch im Einsatz) nur finde ich diesen -wenn auch kleinen Sprung- störend

@hardeware.bas: Gut! Dann kann ich ja schon mal beruigt meine ersten AVRs bestellen \:D/

@Christoph2: Danke für die genauen Ausführungen, der Baustein ist echt interessant! Alle Daten passen für mich..nur 13,03 Euro.....

Geplant sind insgesamt 6 oder mehr Lampen(Mit je 74 LEDs)! Nun baue ich erstmal eine und teste sie!

@alle Herzlichen Dank O:)

hardware.bas
09.08.2010, 16:03
Ja, mit AVRs, genau. Wenn man pro Lampengruppe einen AtINY nimmt,
und diesen gleich dort mit einbaut könnte man sogar ein noch unkritischeres
Steuersignal anwenden. VG Micha

Naturp
09.08.2010, 18:14
Ja (auch) genau! Dann habe ich aber Komunikationsprobleme!

Ich will die Helligkeit von jeder Farbe einzel steuern! Das ergibt leider 8 Taster pro Lampe:( Aber was solls?!?

Dann kommen nochmal weitere 8 Taster, wenn man einen von denen Drückt, werden alle Lampen auf den gleichen wert gestellt, und können dann über diese 8 Taster alle miteinander eingestellt werden! Wenn man dann wieder ein Taster bei der Lampe selber drückt, wird die Lampe wieder für sich aleine gesteuert!

Das will ich erreichen, indem ich einen MASTER für alles und für jede Lampe einen SLAVE habe. Wird am MASTER ein Taster gedrückt, wird der entsprechend neue Wert an alle SLAVES weitergegeben!

Da viel der Entscheid auf I2C da ich diesen Bus mal gerne ausprobieren möchte;)

Wenn mein Stroh im Kopf nicht falsch liegt mag der aber nur etwas zwischen 2 u 3M oder??

Oder könnte ich das auch mit RS232 machen?? Es geht ja um nichts weiteres als eine einfache Zahl übertragen, die entweder ROT,BLAU,GELB oder GRÜN steuert!

Als Slave nehme ich übrigens
ATTINY 2313-20PU

Der MASTER weiss ich noch nicht!

Mfg
HD

P.s
Wenn überlegungsfehler drin ist, bitte melden!

Besserwessi
09.08.2010, 18:34
I2C ist für Kurze Entfernungen und in eher ungestörter Umgebung.

Man könnt die Verbindungen per RS232 aufbauen, besser wäre aber RS485 oder ähnliches - softwareseitig und für den µC ist das gleich (beides die UART), nur andere Pegel.

Gegenüber I2C braicht man da auch eine Leitung weniger, aber es ist halt kein BUS. Das Wäre hier aber nicht so schlimm, weil man ja nur relativ wenig Daten vom Master zu den Slaves schicken will. Da kann man ein eigenes Protokoll entwerfen, und die daten an alle Slaves parallel senden und die Slaves suchen sich den richtigen Teil raus.


Bei den PWM Signalen und der Ansteuerung hat man 2 Möglichkeiten:
1) mit einem Widerstand in Reihe: Einfach, etwa linear in der Leistung, rel. niedrige PWM Frequenz (100 Hz - 1 kHz) möglich und gut.

2) mit Spule und Diode: wenig Verlustleistung, hohe PWM Frequenz nötig, Fehler im PWM Signal (zu lange an) kann die Dioden zerstören, schnelle PWM Frequenz (ab etwa 20 kHz) nötig.

Naturp
09.08.2010, 18:56
Variante 1 versteh ich...so wars geplant!

Variante 2 "Fehler im PWM Signal (zu lange an) kann die Dioden zerstören"
dann kann ich ja nie die ganze Periode high haben und damit die volle heligkeit?! Oder wie geht das?

Jakob L.
09.08.2010, 20:50
Variante 1 versteh ich...so wars geplant!

Variante 2 "Fehler im PWM Signal (zu lange an) kann die Dioden zerstören"
dann kann ich ja nie die ganze Periode high haben und damit die volle heligkeit?! Oder wie geht das?

Das Problem ist, dass die Spule in der Schaltung den Vorwiderstand ersetzt. Während der AN-Zeit wird die überschüssige Energie ( die sonst im Vorwiderstand verheizt würde ) in der Spule gespeichert. Währen der AUS-Zeit wird diese gespeicherte Energie über die Diode an die LED abgegeben.

Bei zu langer Einschaltdauer kann die Spule die Energie nicht mehr speichern und wirkt nur noch als (kleiner) Widerstand. Dadurch fliesst ein zu hoher Strom durch die LED, was diese zerstören kann.

Aus diesem Grund muss das PWM-Verhältnis auf einen bestimmten Wert begrenzt werden, so dass der Strom durch die LED im sicheren Bereich bleibt.

Naturp
09.08.2010, 21:23
Gut ..dann baue ich mal eine Einzelbe Lampe, mit integriertem AVR und Komunikation über RS232! Ich bleibe bei PWM mit Vorwiederstand, 24V als Spieisung und Transistor zum schalten!

Wenn das System nicht funzt probiere ich mit I2C...

Das Problem ist nur, dass dann die einzel einstellbaren Schalter direkt am Lampenschirm sein müssen, oder ALLE DATEN (6 Schirme * 4 Farben = 24) gesendet werden müssen!

Wie währe dieses Protokol (Fals ALLE DATEN versendet werden)
1 Byte = Start
2 Byte = Lampenschirm NR und Farbe
3 Byte = Neuer Wert

Danke für alle Tipps und schönen Abend/gut Nacht
Gruss
HD

Besserwessi
09.08.2010, 21:56
Wenn alle daten gesendet werden sollte, könnte man z.B. folgende Datenpakete nehmen:
1) Signal für Paketanfang, z.B. 2-3 mal 0 , oder ein anderer Wert, der sonst nicht vorkommt. Gut geeigent wäre auch Werte wie $55 oder $AA, weil man damit auch gut Autobaudfunktionen realisieren kann.

2) Nummer der Lampe für die die Daten sind

3) Werte für Helligkeit der einzelnen LEDs, z.B. 4 mal 1-2 Bytes

4) ggf. 1 byte für Sonderfunktionen

5) ggf. Prüfsumme

Das klingt nach viel, ist aber recht schnell gesendet. Bei 9600 Baud braucht es nur etwas über 1 ms pro Byte oder vielleicht 15 ms je Datenpaket.

Naturp
09.08.2010, 22:54
66 Pakete/s währen das! Ich glaube, das reicht sehr wohl;)

Ich danke und mache das mal so...

Freue mich schon, wenn dann mein erstes AVR Projekt geht! Weg von C-Controll!!!!!!!!!!!!!

Gruss
HD

P.s
Das einzige was bei C-Controll besser ist, ist dass das Prog. Kabel nur 20 Sfr Kostet!

hardware.bas
11.08.2010, 11:33
Find ich eine gute Entscheidung, Atmel und LED bzw. LED-Gruppe gemeinsam zu integrieren. Die Kommunikation kann problemlos busmässig erfolgen, dabei ist z.B. das i2c-Prinzip gar nicht so schlecht. bei Übertragungsproblemen entwickelt man einfach sein eigenes Protokoll, z,B. auf der Basis weniger Dutzend Hertz Taktfrequenz. VG Micha

wawa
14.08.2010, 13:35
hallo NATURP
zu der LED Steuerung
1.) bau dir eine saubere Stromquelle fuer JEDE Farbe eine
2.) haeng sie an den positiven Pol von mehr als 24V
3.) schalte alle LEDs der selben Farbe hintereinander, so viel wie n mal Flussspannung minus Spannung die an der Stromquelle abfaellt
4.) NPN gegen Masse, zum Einschalten UND PWM des Stranges
Du hast dann kein Helligkeitsproblem bei Spannungsspitzen, kannst alle unterschiedlich dimmen, etc

gruss wawa