Forum: Mikrocontroller und Digitale Elektronik Power LED Beleuchtung fürs Zimmer


von Rafa (Gast)


Lesenswert?

Ich möchte eine Power LED Beleuchtung für mein Zimmer bauen.
Die Beleuchtung soll dimmbar sein von praktisch aus bis max. Helligkeit.
Aufgebaut wird dies aus mehreren einzelnen Leuchten (ca. 6). Auf jeder 
Platine sitzt dann ein ATtiny13, MOSFET und eine 3W Power LED (I = 
350mA)gesteuert über einen Bus (welcher weiß ich noch nicht). Gedimmt 
werden soll mit dem 8Bit Timer im PWM Modus am OC0A Pin. Zur Umsetzung 
habe ich hier noch ein paar Fragen.

Mit welcher Frequenz sollte der PWM betrieben werden sodass die LED auch 
im dunkel gedimmten Bereich nicht sichtbar blinkt?

Um einen flüssigen Helligkeitsübergang zu bekommen muss man die LED 
Logarithmisch dimmen. Wie rechne ich das dann genau aus welcher Wert ich 
ins OC0A Register einsetzten muss?#

Was für einen Bus wäre zur Kommunikation zu empfehlen?

mfg

PS: Die anderen Fragen fallen mir gerade nicht mehr ein.

von Ich wer sonst (Gast)


Lesenswert?


von Christoph S. (mixer) Benutzerseite


Lesenswert?

> Mit welcher Frequenz sollte der PWM betrieben werden sodass die LED auch
> im dunkel gedimmten Bereich nicht sichtbar blinkt?

normal sieht man ab 100 Hz nichts mehr, aber dank HW-PWM kann man auch 
ein paar Herz höher gehen!

> Um einen flüssigen Helligkeitsübergang zu bekommen muss man die LED
> Logarithmisch dimmen. Wie rechne ich das dann genau aus welcher Wert ich
> ins OC0A Register einsetzten muss?#

LED-Fading

> Was für einen Bus wäre zur Kommunikation zu empfehlen?

z.B. RS485 (geht über UART) + z.B. MAX485


> mfg


MFG Mixer

von Matthias K. (nighty2k)


Lesenswert?

Hallo,

baue mir gerade fast das gleiche nur ein bischen komplizierter :D


Mein Projekt:

USB zu DMX Sender = Bus Master

Meine Slaves sind ebenfalls Attinys2313 an deneen jeweils ein 3 Kanal
(Rot Grün Blau) Schalttreiber sitzt Bis zu 1A pro Kanal.
Auf dem Tinny läuft jeweils DMX Client Software mit einem eigenen Kanal
-> getrennt Steuerbar.

Da mein PC nicht immer läuft bin ich gerade dabei mein Projekt um ein 
Standalone DMX Sender (Basis Atmega32) zu erweitern der fest 
abgespeicherte Programme zu den Clients sendet oder halt einfach nur ein 
Fading ;).

Als Verkabelung (bitte steinigt mich nicht) nutze ich nich XLR wie DMX 
typisch sondern Netzwerkkabel da super praktisch und günstig.

Habe mir einen 8fach Verteriler gebaut.
Hier wird das DMX Signal und Spannung eingespeist und an die Clients 
verteilt.

Adern 1+2+3: VCC
Ader 4:      D+
Ader 5:      D-
Ader 6+7+8:  GND

Bei den stärkeren Clients nutze ich getrennte Spannungsversorgungen.

Bei fragen einfach melden. ;-)

von Rafa (Gast)


Lesenswert?

Kannst du mir mal dein Code der PWM LED Dimmung zeigen.

von Matthias K. (nighty2k)


Lesenswert?

Kann ich schon tun aber viel bringen wird er dir nicht ;)

Hier wird ein 8 Bit PhaseCorrect PWM mit einem 64er Prescaler 
initialisiert.
1
    // Ports als Ausgang konfigurieren
2
  DDRB = (1 << DDB2) | (1 << DDB3) | (1 << DDB4);
3
4
  OCR0A=0;
5
  OCR1A=0;
6
  OCR1B=0;
7
  
8
  // Timer 0 PWM Init
9
  TCCR0B &= ~0x7;
10
  TCCR0A = (1 << WGM00) | (0 << WGM01) | (1 << COM0A1) | (1 << COM0A0) | (0 << COM0B1) | (0 << COM0B0);
11
  TCCR0B = (0 << CS02) | (0 << WGM02) | (1 << CS00) | (1 << CS01);
12
13
  // Timer 1 PWM Init
14
  TCCR1B &= ~0x7;
15
  TCCR1A = (1 << WGM10) | (0 << WGM11) | (1 << COM1A1) | (1 << COM1A0) | (1 << COM1B1) | (1 << COM1B0);
16
  TCCR1B = (0 << WGM12) | (0 << WGM13) | (1 << CS10) | (1 << CS11) | (0 << CS12);

Danach einfach die drei Kanäle mit
  OCR0A=0-255;
  OCR1A=0-255;
  OCR1B=0-255;
benutzen.  Allerdings wird dir Code Kopieren nicht viel bringen.
Würde dir lesen lesen und Datenblatt büffeln und oben genannten Link 
empfehlen ;)

Greetz

von Maik F. (sabuty) Benutzerseite


Lesenswert?

Das erinnert mich an einen total untergegangenen Beitrag von mir ;)

Beitrag "Sammelbestellung? Mini-Platine: 3 Kanal Power-PWM mit ATMega+IR+RS485"

von Kai Klaas (Gast)


Lesenswert?

Hallo Mixer,

>normal sieht man ab 100 Hz nichts mehr, aber dank HW-PWM kann man auch
>ein paar Herz höher gehen!

Bei Glühlampen, die nachleuchten, magst du recht haben, aber bei LEDs 
ist das anders. Das Flackern ist besonders störend und ermüdend, wenn 
man den Kopf bewegt. Dann fällt das Licht der flackernden LED im Auge 
auf unterschiedliche Sehstäbchen und das Flackern wird sichtbar.

Ich würde die Frequenz möglichst hoch wählen.

Kai Klaas

von Andreas K. (derandi)


Lesenswert?

Hardware-PWM kann man auch im kHz-Bereich betreiben, da sieht man nix 
mehr Flackern.
Im Zweifelsfalle ne Glättung mit Diode und Kondensator reinbauen, 
Gleichstrom flackert garnicht.

von Rafa (Gast)


Lesenswert?

Wenn ich als einen 8Bit,Fast PWM mit sagen wir 10KHz nehme würde dies 
flackerfrei funktionieren.

von Matthias K. (nighty2k)


Lesenswert?

Ja würde problemlos funktionieren.
Allerdings ein hinweis zum Tiny 2313 der hat im Fast PWM einen kleinen 
Fehler. Bei absolutem 0 Punkt hat der immernoch kleine High Spikes drin.
Gestern leider erst selbst am Oszi festgestellt.

Kannst also nicht absolut auf 0 dimmen.

Lösung 1:
PhaseCorrect PWM (So habe ich es gemacht da shcon 10 Attinys gekauft)

Lösung 2:
Atmega8 verwenden ;-) Hast auch gleich mehr Speicher zur Verfügung und 
Mehrpreis ist fast nicht nennenswert.

von Matthias K. (nighty2k)


Lesenswert?

Andreas Klepmeir schrieb:
> Hardware-PWM kann man auch im kHz-Bereich betreiben, da sieht man nix
> mehr Flackern.
> Im Zweifelsfalle ne Glättung mit Diode und Kondensator reinbauen,
> Gleichstrom flackert garnicht.

Thema verfehlt...

wenn ich dich recht verstehe willst du das Rechteck PWM Signal in ein 
Gleichstromsignal mit variabler Spannung 50% High und 50% Low bei 5V = 
ca 2,5 Volt wandeln?

Schonma ne LED über Spannung gedimmt?

von Rafa (Gast)


Lesenswert?

Dann werde ich mich morgen einmal daran setzten und werde wenn ich 
"fertig" bin dann meine ersten Versuche einstellen.

Danke euch allen fürs erste einmal.

von Rafa (Gast)


Lesenswert?

Ach ja warum verwendest du einen Phase Correct PWM und keinen Fast Mode 
PWM?

von Matthias K. (nighty2k)


Lesenswert?

Hab ich doch schonma gesagt....

...aber nochma

Der tiny2313 hat anscheinen ein Fehler im Fast PWM Mode

Wenn man eine 0 setzt sollte eine Flatline bzw ein dauerhaftes Low aus 
dem Port kommen. Aber wenn man sich das Signal auf dem Oszi anschaut hat 
man minimale Spikes im Signal. -> Led glimmt ganz leicht und geht nie 
ganz aus!

Dieser Fehler besteht im PhaseCorrect PWM nicht.

Bei einem anderen AVR z.B. dem Mega 8 würde ich aber natürlich Fast PWM 
Mode vorziehen aber bei genanntem Tiny entweder Glimmende LED oder auf 
den Phase Correct.

von avr (Gast)


Lesenswert?

@Rafa

Das hat Matthias Kuny oben schon erklärt ;(


@alle

Eine PWM-Frequenz von mehreren kHz ist zwar möglich
erhöht aber nur die Schaltverluste. Einige 100 Hz reichen
aus, dann geht auch phase-correct.

avr

von Philipp B. (philipp_burch)


Lesenswert?

Matthias Kuny schrieb:
> Lösung 1:
> PhaseCorrect PWM (So habe ich es gemacht da shcon 10 Attinys gekauft)
>
> Lösung 2:
> Atmega8 verwenden ;-) Hast auch gleich mehr Speicher zur Verfügung und
> Mehrpreis ist fast nicht nennenswert.

Lösung 3:
Ausgang invertieren. Dann bekommst 0, dafür nicht mehr 100%. Das sieht 
aber kein Mensch.

100Hz sind im Übrigen nicht sooo problematisch, wenn man nicht direkt in 
die LEDs schaut. Osram verwendet bei seinen Treibern beispielsweise 150 
- 500Hz, je nach Typ. Je höher die Frequenz, desto grösser sind halt die 
EMV-Probleme und allenfalls die Schaltverluste. Ersteres ist aber recht 
unkritisch, wenn du die LED eh gleich beim Treiber hast (= Keine 
Antennen dazwischen).

von Matthias K. (nighty2k)


Lesenswert?

Philipp Burch schrieb:
> Lösung 3:
> Ausgang invertieren. Dann bekommst 0, dafür nicht mehr 100%. Das sieht
> aber kein Mensch.


Gute Idee warum bin ich da nicht drauf gekommen :D
Werde ich ma versuchen setze bei mir sowieso Negierte ULNs ein :D

Danke :)

von avr (Gast)


Lesenswert?

@Matthias Kuny

Das mit dem "Spike" ist kein Fehler sondern Systembedingt bei
allen AVR im Fast-PWM-Mode.

Steht auch so in den Datenblättern!

Hier von Atmel:

Datenblatt Mega8 Timer2 Fast PWM
1
The extreme values for the OCR2 Register represent special cases when generating a PWM
2
waveform output in the fast PWM mode. If the OCR2 is set equal to BOTTOM, the output will be
3
a narrow spike for each MAX+1 timer clock cycle. Setting the OCR2 equal to MAX will result in a
4
constantly high or low output (depending on the polarity of the output set by the COM21:0 bits.)

avr

von Matthias K. (nighty2k)


Lesenswert?

avr schrieb:
> @Matthias Kuny
>
> Das mit dem "Spike" ist kein Fehler sondern Systembedingt bei
> allen AVR im Fast-PWM-Mode.

> avr

Man lernt nie aus...

THX :)

von Andreas K. (derandi)


Angehängte Dateien:

Lesenswert?

Matthias Kuny schrieb:
> wenn ich dich recht verstehe willst du das Rechteck PWM Signal in ein
> Gleichstromsignal mit variabler Spannung 50% High und 50% Low bei 5V =
> ca 2,5 Volt wandeln?

Fast.
Die Spannung fällt ja nie unter die Durchbruchspannung der LED, die 
Spannung lässt sich also nicht per PWM Steuern.
Dafür aber der (Effektiv-)Wert des Stroms, und die Flanken desselben 
würde ich gerne per Kondensator die Flanken verschleifen. Das vermindert 
bei kleinem Duty-Cycle das harte ein-ausschalten und bei größeren geht 
die LED in den Pausen nicht mehr aus.

> Schonma ne LED über Spannung gedimmt?
Mit Vorwiderstand kein Problem, oder?

von Marc R. (marc_r)


Lesenswert?

Hallo,

auch ich bin grade an einem ähnlichen Projekt. Bei mir sinds RGB-Power 
LED's + weiße Power LED's. Aufgebaut ists auch nach dem Master-Slave 
Prinzip. Der Master beseht momentan aus einem Mega 168 soll aber bald 
auf einen Mega32 erweitert werden. Der Master wird über ein 4 zeiliges 
LCD und 4 Tasten bedient. Außerdem ist an ihn ein externes 
Schaltnetzteil mit 24V angeschlossen, dass die Versorgungsspannung 
bereitstellt. Außerdem ist ein Schaltregler im Master, der die 5V 
versorgungsspannung für seine eigene Logik und die der Slaves 
bereitstellt. Über ein 5 poliges Kabel mit DIN Stecker gehts dann zu den 
Slaves (momentan hab ich nur einen dran hängen, ist aber mit meheren 
getest). Die Datenübertragung erfolgt auf 2 Adern per RS485. Als 
protokoll verwende ich SNAP http://www.hth.com/snap/. Das ist sehr 
ausführlich dokumentiert und für meine Zwecke ausreichend. Der Slave der 
momentan in betrieb ist besteht aus einem mega48 und einem tiny2313. Die 
unschöne Lösung mit 2 µC habe ich deswegen gewählt weil ich keinen AVR 
mit den benötigten 4 16bit PWM Kanälen dahatte. Das haben nur 1 oder 2 
recht exotische typen. Eine 16 bit PWM hab ich widerum gebraucht weil 
mir bei Versuchen mit 8 bit PWM aufgefallen ist, dass man bei 
logarithischer Verteilung der Dimmwerte und langsamen Übergängen eine 
Sichtbare Abstufung hat. Das Dimmen wirkt "ruckelig". Mit 16 bit kann 
man dagegen bei 255 dimstufen fast beliebig lange Übergänge machen. Aber 
wie gesagt hatte ich das problem nur weil ich pro Slave 4 Kanäle wollte. 
Wenn du nur einen Kanal je Slave willst reicht auch ein recht kleiner 
Controller. Bei mir dient der Mega48 im Slave als Empfänger der die 
Steuerbefehle entgegennimmt und verwurschtet und dem Tiny per TWI nur 
noch sagt wechen seiner beiden 16 bit PWMs er auf welchen wert stellen 
soll. Die andren beiden Kanäle übernimmt der Mega48. Außerdem sind im 
Slave noch 4 Konstantstromquellen auf basis des LM317. Das ist sicher 
auch noch eine Optimierungsbedürftige Lösung da die Konstantstromquellen 
fast 30 % der Gesammtleistung "verheizen". Aber IC's die speziell zur 
Stromregelung von Power-LED's entwickelt worden sind und zB im 
Automobilbau eingesetzt werden sind nur in winzigen SMD-Bauformen 
erhältlich und das übersteigt meine (derzeitigen) Bastelfähigkeiten.
Geplante erweiterungen sind übrigends:
- Künstlicher Sonnenaufgang zu bestimmter Zeit als Weckfunktion
- Dimmabfolgen verschiedener Farben aus Speicher automatisch abarbeiten
- USB - Anschluss zur Konfiguration über PC Software (momentan in 
Arbeit)
- Helligkeitssensor der bei unterschreiten eines Schwellwertes 
automatisch die Beleuchtung anschaltet

Ich hoffe ich konnte damit ein paar anregungen zu deinem Projekt geben.

Marc

von Rafa (Gast)


Lesenswert?

@Matthias Kuny

Ok, ich hätte die Frage anderst stellen müssen. Aber egal.

@Marc Riedlinger

Damit konntest du sehr viele Anregungen geben, soweit hatte ich noch 
garnicht gedacht. Danke dir. Dann werde ich meinem Projekt wenn die 
Dimmung und Kommunikation mit dem Master klappt noch ein paar Dinge 
hinzufügen.

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.