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.
> 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
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. ;-)
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
Das erinnert mich an einen total untergegangenen Beitrag von mir ;) Beitrag "Sammelbestellung? Mini-Platine: 3 Kanal Power-PWM mit ATMega+IR+RS485"
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
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.
Wenn ich als einen 8Bit,Fast PWM mit sagen wir 10KHz nehme würde dies flackerfrei funktionieren.
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.
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?
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.
Ach ja warum verwendest du einen Phase Correct PWM und keinen Fast Mode PWM?
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.
@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
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).
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 :)
@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
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 :)
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?
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.