mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 3W RGB LED Controller mit AVR mega8


Autor: Julian Gebhardt (nuss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe gestern abend mit der Hilfe von nem Kollegen meinen 3W RGB LED 
controller fertig gestellt.

Auf der Selbsterstellten Platine ist eine 3W ACULED von Perkin Elmer.
Die Led wird über PWM von einem mega8 indirekt angesteuert.
Die LED bekommt ihre Spannung/Strom von einem 500mA LEDtreiber von 
Infineon.

Die software wurde in C geschrieben und beinhaltet folgende modi:
-Blinken (weiss)
-dauerfarben (rgb, cyan, magenta, gelb)
-rainbow effekt

die software wird die tage noch angepasst und weitere modis hinzugefügt.

hier nun erstmal nen video wo die einzelnen modi gefahren werden.

Youtube-Video "ACULED 3W RGB LED Controller mit Atmel AVR"

mfg nuss

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, der Farbverlauf (Rainbow) schaut nicht so 100% gut aus.
Mit HSV->RGB Wandlung implementiert?
Kennlinien der LED (und des Menschlichen Auges) berücksichtigt?

Oder liegt das einfach an der Kamera mit der der Clip aufgenommen wurde?

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe auch noch eine "nette kleine" RGB-LED (Seoul 3x1W oder noch 
bisschen mehr) herumliegen. Software hab ich dafür schon geschrieben, 
allerdings will die noch nicht so recht.

Da die LED wirklich bestialisch hell ist, läuft per Software ein 14-Bit 
PWM mit >500Hz (ich bin ziemlich flacker-empfindlich).

Problem ist: der PWM läuft alles andere als sauber.
Ich verwende ähnlichen Code wie das fnordlicht, nur funktioniert meiner 
nicht ;)
Meine Software stellt den 16-Bit-Timer jeweils auf die Pause zur 
nächsten PWM-Position ein und wenn diese erreicht wurde (IRQ), wird die 
LED geschaltet.
Das große Problem an der Sache: wenn zwei PWM-Positionen relativ nah 
beieinander liegen, kommt die Farbe falsch bzw. der PWM schmiert mehr 
oder weniger ab. (ist schon bisschen länger her).

Wenn interesse besteht, kann ich den Code mal posten. Bzw. hat jemand 
von euch PWM-Code (am liebsten natürlich C bzw. ASM mit C-Interface ;) 
), der den hohen Anforderungen (3 Kanäle, 12-14 Bit, >500Hz Frequenz) 
entspricht?

Viele Grüße

hownottobeseen

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Code wird da nicht ganz reichen, hat nur 8Bit:
Beitrag "RGB-Moodlight auf ATTiny2313 mit RC5-Fernbedienung"

Autor: aktueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst Du gelobt werden?

Das Video lohnt die Zeit nicht.
Ausserdem ist es entweder Modus oder Modi, aber nicht Modis!

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab mal ein Video von meiner Anordnung hochgeladen:

Youtube-Video "Seoul RGB-LED with Atmega8 PWM"

Läuft allerdings noch mit einer älteren Software (die noch nicht zu den 
seltsamen Effekten neigt, damals hatte der PWM glaub so 10 Bit)

Viele Grüße

hownottobeseen

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Julian Gebhardt wrote:
> hier nun erstmal nen video wo die einzelnen modi gefahren werden.
>
> Youtube-Video "ACULED 3W RGB LED Controller mit Atmel AVR"
Früher hätte man den Leuten wahrscheinlich gesagt auf dem Video ist ein 
UFO zu sehen... Interessant(er) wäre auch mal eine Abbildung der Platine 
im ausgeschaltetem Zustand gewesen... aber da würde auch ein Foto 
reichen.

Autor: BATBAT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... hm, schlechtes video mit nichtfunktionierender SW (kein sanfter 
farbübergang etc) - worin besteht jetzt der sinn dieses postings, 
julian?

(falls du es nicht verstehst-ich für meinen teil kann gleich 50 ähniche 
postings schleudern, mit meinen nicht gelungenen entwicklungen)

Autor: Steve (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey mann der arme Julian! Er wird doch wohl stoltz sein können und sein 
krelles Lämpchen posten dürfen! Früher im Sandkasten haste auch nicht 
einfach jemanden rausschmeißen können, denn sonst wäre(diesmal ohne h) 
die liebe Mami gekommen und hätte dich "geschimpft".
Ich erinnere mich aber, dass man gespielt hat. Naja

Kommt das Lämpchen noch irgendwo rein, oder bleibt die so nackig, wie 
sie von meinem CRT aus schimmert.

>(falls du es nicht verstehst-ich für meinen teil kann gleich 50 ähniche
>postings schleudern, mit meinen nicht gelungenen entwicklungen)

Also ich kann dir eher mehr Funktionierende Entwicklungen posten, als 
misslungene. Ich weis ja nicht wie schnell du aufgibst...

lovely greets

Autor: Julian Gebhardt (nuss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für euren sehr geistreichen kommentare. was hätte ich 
anderes erwarten sollen?

aber naja für die, die sich hier konstruktiv geäußert haben:
ich hab den farbverlauf einfach "irgendwie" programmiert halt so wie ich 
es für schön empfunden habe.

ja die kamera mit der das aufgenommen wurde ist lausig(vga eben).

kennlinie des mennschlichen auges? ;) was ist das^^

so hier noch mal nen anderes video:
Youtube-Video "ACULED 3W RGB LED Controller mit Atmel AVR in IKEA Lampe"

foto von der platine:
http://img135.imageshack.us/img135/7329/dsc00376cy9.jpg

ich freu mich auf brauchbare antworten :)

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> kennlinie des mennschlichen auges? ;) was ist das^^

Beim LED-Fading finden sich unter "Die Kennlinie des Auges genau 
betrachtet" einige Links.

Autor: Fox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
z.B. Hier:

DDRB muss gesetzt werden ob Eingang oder Ausgang. Dabei von links nach 
rechts PB0 bis PB6. 1= Ausgang; 0=Eingang.
PORTB definiert ob der Eingang an den interne Pullup geschalten wird 
oder nicht.
!(PINB & (1<<PB4)) = Abfragen von Taster High or Low
Pin zu High: PORTB |= (1<<PB4);
Pin zu LowL: PORTB &= ~(1<<PB4);

So mit dem kann man nämlich arbeiten.

Jetzt wie sieht das für den ADC aus? Eventuell könnte mir jemand ein 
kleines Beispielprogramm senden? Ein Analoger Eingang schaltet ein 
Ausgang ab einem gewissen Bitwert. Ist das so viel verlangt?




int main (void) {           
 
     DDRB = 0b11101111;             // Pin 3 = Eingang
     PORTB = 0b00010000;             // Pin 4 = LOW


while(1) {               


  if ( !(PINB & (1<<PB4)) ){

    PORTB |= ( (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3) );
  
    }

  else {
    PORTB &= ~( (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3) );        //Pin 4 Einschalten
    }

}
                          
    return 0;               
}

Autor: Fox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach falsches Fenster Sorry.

Autor: Zippi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ey BATBAT

>Was funktioniert denn da nicht? Also ich sehe da ein laufendes programm. >Nur 
weil du 50 Projekte hast die nicht funktionieren brauchst du keine >andern Dumm 
anmachen weil die es geschaft haben ;).

Also beim 2. Video sieht man den Farbwechsel schon besser.

Hab nur mal so eine frage, bringt es das denn eine PWM mit 10 oder 14 
bits zu machen? Also ich habe ja schon bei 8bit pro farbe insgesammt 
eine Farbauswahl von 16,7 Mil farben.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zippi wrote:

> Hab nur mal so eine frage, bringt es das denn eine PWM mit 10 oder 14
> bits zu machen? Also ich habe ja schon bei 8bit pro farbe insgesammt
> eine Farbauswahl von 16,7 Mil farben.

Also hier nochmal der Link: LED-Fading

Das Auge nimmt Helligkeiten logarithmisch wahr, d.H. du musst eine 
exponentielle Kennlinie fahren um den Anschein einer Linearen 
Leuchtkraftzunahme zu erzeugen.

Um diese Kennlinie sauber auf die PWM zu kriegen braucht man ne hohe 
Auflösung.

Vielleicht so einfacher zu verstehen:

zwischen 1% und 2% PWM Einschaltdauer der LED kann man einen STARKEN 
Unterschied sehen. Zwischen 99% und 100% sieht man KEINEN Unterschied.

Du hast dann zwar theoretisch 16.7mio Farben, aber nur vielleicht 1000 
davon sind für nen Menschen unterscheidbar.

Autor: Zippi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK THX Ernst,

aber dafür brauch ich keine 10 bit. Das geht auch mit 8bit wunderbar. OK 
mit 8 bit kann ich knapp 0,4 % verändern und mit 10bit 0,1% der 
helligkeit. Doch weniger als 0,1% nimmt man warscheinlich nur sehr sehr 
schlecht war. also 14bit wären ja 0,006 % änderung. Ich denke, dass das 
schon etwas übertrieben ist.

Autor: Zippi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, werde mal mit 10bit, 12bit, 14bit oder 16bit PWM und e-funktion 
testen. Denke aber das ich dann auch mit mehr als 8 Mhz arbeiten muss.

mfg Zippi

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Zippi schrieb:
> also 14bit wären ja 0,006 % änderung. Ich denke, dass das
> schon etwas übertrieben ist.

das dachte ich auch ;)
ich hab auch mit 8 Bit angefangen, war ja ganz nett, aber: bei höchstem 
Strom und bei maximaler PWM-Helligkeit brennt es einem die Netzhaut 
runter.
Das andere Extrem (16 Bit) war bei 16 MHz-CPU-Takt zu langsam, man sah 
es durchweg flackern.

Nachdem das Ding bei mir später im Alltagseinsatz (Wohnzimmer, tagsüber 
hell, abends dunkel) ist, soll natürlich ein hoher Dynamikumfang da sein 
;)
Deswegen hab ich mich mal pauschal auf 12-14 Bit eingeschossen.

Mein letzter (vergeblicher) Versuch waren entweder 12 oder 14 Bit, das 
sollte für eine Kennlinie und für den erweiterten Helligkeitsraum dicke 
reichen.

Die LED(s) bei mir ist/sind übrigens die hier: 
http://www.dianaelectronic.de/faq/F50381.pdf

Kann ich nur empfehlen! Sind zwar ziemlich teuer aber machen ziemlich 
Druck ;)

Viele Grüße

hownottobeseen

Autor: Julian Gebhardt (nuss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die led auf meinem board ist diese hier:
http://www.dotlight.de/shop/product_info.php/cPath...

@ernst...jetzt hab ich das mit der kennlinie auch verstanden :D

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@julian:
verpass der led unbedingt noch nen kühlkörper!
sonst stirbt sie früher oder später!!

Autor: Julian Gebhardt (nuss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar hab ich hier liegen :D
muss ich nur noch festschrauben :D

danke für die information =)

Autor: Fox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde die Lampe genial!

Möchte mir auch so eine bauen. Wäre es möglich, dass du den Code und den 
verwendeten Chip mitteilen könntest?

Gruss Fox

Autor: Julian Gebhardt (nuss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der controller ist nen atmega8...
den code kann ich dir per mail schicken...will ich hier ned posten

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.