Hallo, es ist Weihnachtszeit und ich würde gerne einen dieser Außenleuchtbäume aufpeppen. So ein Ding, wo ein warmweißer Lampenschlauch um die Konturen eines Tannenbaums gelegt ist. Meine Idee ist, vereinzelt kaltweiße LEDs darauf zu verteilen und sie "zufällig" aufblitzen zu lassen, so dass es so einen Eiseffekt gibt. Hat schon mal jemand versucht ein Sternenflackern zu imitieren? Lässt man die LED wohl schnell von maximal auf nix abfaden? Oder muss man das zweimal wiederholen? Oder genau andersherum? Danke & Gruß, - Michael
Hallo, Genau das hab ich vor kurzem gemacht: Ich hab einfach die Helligkeit zufällig entweder stark vermindert oder ein wenig erhöht, wobei das vermindern unwahrscheinlicher war. War ein schöner Kerzeneffekt, taugt also eventuell auch für Sterne. Ich hatte 8 verschiedene Fälle, so sah das kongret aus:
1 | switch(((rand()^rand()^rand())>>5)&7) /zufallszahl von 0 bis 7 |
2 | {
|
3 | case 0: |
4 | pwm_setting[i]>>=1; |
5 | pwm_setting[i]+=16; |
6 | if(pwm_setting[i]>63) |
7 | pwm_setting[i]=0; |
8 | break; |
9 | case 1: |
10 | break; |
11 | pwm_setting[i]-=8; |
12 | if(pwm_setting[i]>63) |
13 | pwm_setting[i]=0; |
14 | case 2: |
15 | pwm_setting[i]+=3; |
16 | if(pwm_setting[i]>63) |
17 | pwm_setting[i]=63; |
18 | break; |
19 | case 3: |
20 | break; |
21 | pwm_setting[i]+=4; |
22 | if(pwm_setting[i]>63) |
23 | pwm_setting[i]=63; |
24 | case 4: |
25 | break; |
26 | pwm_setting[i]+=5; |
27 | if(pwm_setting[i]>63) |
28 | pwm_setting[i]=63; |
29 | case 5: |
30 | pwm_setting[i]--; |
31 | if(pwm_setting[i]>63) |
32 | pwm_setting[i]=0; |
33 | break; |
34 | case 6: |
35 | pwm_setting[i]+=16; |
36 | if(pwm_setting[i]>63) |
37 | pwm_setting[i]=63; |
38 | break; |
39 | case 7: |
40 | break; |
41 | };
|
Ich hab hier für unsere Krippenbeleuchtung was kleines gebastelt. Verwendet wird ein Attiny13. Man kann zwei LEDs flackern lassen, sieht aus wie ein Lagerfeuer oder auch eine Laterne mit einer Kerze drin.
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | #include <avr/power.h> |
4 | #include <avr/sleep.h> |
5 | |
6 | #include <stdlib.h> |
7 | |
8 | int main() { |
9 | ACSR = (1 << ACD); |
10 | ADCSRA = 0; |
11 | |
12 | clock_prescale_set(clock_div_4); |
13 | |
14 | // Bevor was geht, muss man zuerst die Pins auf Ausgang setzen.
|
15 | DDRB = (1 << PB1) | (1 << PB0); |
16 | |
17 | // Am Anfang gehen wir mal von einer Pulsweite von 50 % aus.
|
18 | OCR0A = 128; |
19 | OCR0B = 128; |
20 | |
21 | // Wir brauchen den Timer0-Overflow-Interrupt, weil wir da jeweils die Pulsweite ändern.
|
22 | TIMSK0 = (1 << TOIE0); |
23 | |
24 | sleep_enable(); |
25 | sei(); |
26 | |
27 | // Hier wird die PWM konfiguriert.
|
28 | TCCR0A = (1 << COM0A1) | (1 << COM0B1) | (1 << WGM01) | (1 << WGM00); |
29 | TCCR0B = (0 << WGM02) | (1 << CS01) | (1 << CS00); |
30 | |
31 | while (1) { |
32 | sleep_cpu(); |
33 | }
|
34 | }
|
35 | |
36 | |
37 | // Wir ändern bei jedem Timer Overflow die PWM-Zahl ab...
|
38 | ISR(TIM0_OVF_vect) { |
39 | int zufallszahl = rand(); |
40 | |
41 | // Maximale Änderung pro Durchlauf um 14 Einheiten.
|
42 | uint8_t addz = zufallszahl % 15; |
43 | |
44 | // Nur wenn die Zufallszahl ungerade ist und OCR0B kleiner als 200 bleibt.
|
45 | if (zufallszahl % 2 && (OCR0B + addz < 200)) { |
46 | OCR0B += addz; |
47 | } else if (OCR0B - addz > 60) { // Nur wenn OCR0B größer als 60 bleibt. |
48 | OCR0B -= addz; |
49 | }
|
50 | |
51 | // dasselbe machen wir nochmal für den OCR0A...
|
52 | zufallszahl = rand(); |
53 | addz = zufallszahl % 15; |
54 | |
55 | if (zufallszahl % 2 && (OCR0A + addz < 200)) { |
56 | OCR0A += addz; |
57 | } else if (OCR0A - addz > 60) { // Nur wenn OCR0A größer als 60 bleibt. |
58 | OCR0A -= addz; |
59 | }
|
60 | }
|
Mein 'Randomlights' Projekt erzeugt mit einem Attiny eine Zufallszahl und schickt die dann per SPI auf eine Reihe Shiftregister an dem LEDs hängen. Hat verschiedene Modi und wird per 'tapping' auf das Gehäuse gesteuert und beeinflusst . Ein Taster schaltet zwischen den Modi um und lässt es schlafen (Assembler): http://www.schoeldgen.de/avr/
Könnt ihr davon mal ein paar Videos (z.B. bei Youtube) reinstellen? Ich habe bis jetzt noch keine einzige LED-Kerze gesehen, die auch nur annähernd das Licht einer echten Kerze zum Verwechseln ähnlich imitiert hat.
> Meine Idee ist, vereinzelt kaltweiße LEDs > darauf zu verteilen und sie "zufällig" aufblitzen > zu lassen, so dass es so einen Eiseffekt gibt. In dem Fall würde ich so was probieren: Alle LED leuchten auf, sagen wir mal 50%. Mittels Zufallszahl für jede LED eine Zeitdauer bestimmen. Nach Ablauf der Zeitdauer wird die LED auf volle Helligkeit gesetzt, im nächsten Zeitschritt wird die LED dann wieder auf normale Helligkeit gesetzt und eine nächste Wartezeit für diese LED bestimmt. Die Grundhelligkeit kann man dabei auf einem fixen Wert lassen, oder auch mittels Zufallszahlen für jede Wartezeit erneut festlegen. Deine wichtigste Formel ist Wert = Minimum + rand() % ( Maximum - Minimum ) um eine Zahl zwischen Minimum und Maximum zu bestimmen. Bei genügend vielen LED ergibt das dann so einen Effekt, wie man ihn von Stadionübertragungen kennt, bei dem ein Glitzern durch Blitzlichter im Zuschauerraum durchgeht. Edit: Und es sollte auch klar sein, dass der ganze Effekt damit steht und fällt, dass man mehrere (viele) LED einzeln in der Helligkeit ansteuern kann. Wenn nur vereinzelte LED alle gleichzeitig aufblitzen, sieht das nicht besonders gut aus. Eines der Markenzeichen von Glitzern ist es nun mal, dass viele Punkte unabhängig voneinander kurz aufblinken.
Santa Claus schrieb: > Könnt ihr davon mal ein paar Videos (z.B. bei Youtube) reinstellen? Ich > habe bis jetzt noch keine einzige LED-Kerze gesehen, die auch nur > annähernd das Licht einer echten Kerze zum Verwechseln ähnlich imitiert > hat. Da hast du dann, aber nicht viel gesucht. Dieses Modul habe ich schon mehrmals für Krippen nachgebaut, und bei dieser Gelegenheit, möchte ich mich beim Autor für die Bereitstellung, des Schaltplans und des Hex Files bedanken. http://www.jtronics.de/avr-projekte/led-feuer-led-kerze
glow schrieb: > Gelegenheit, möchte ich mich beim Autor für die Bereitstellung, des > Schaltplans und des Hex Files bedanken. kannst du dem autor vielleicht ein paar bilder senden. irgendwie bekommt man so gut wie kein feedback im inet. Bilder von anderen projekten mit dem modul wären da total super. die könnte man auch mit in dem artikel vorstellen ;-) grüße martin
Hallo, vielen Dank! Ich habe mir den großen Dortmunder Weihnachtsbaum genauer angesehen und dort wird es wie von Karl Heinz beschrieben gemacht (wobei die Lichter wohl nicht auf 50%, sondern auf aus geschaltet werden. Es sind andere, als die, die zur Baumbeleuchtung verwendet werden). Mein Nachbar hat am Haus so einen Weihnachtstern, wie er häufig an Geschäften zur Weihnachtszeit hängt. Da sind ein Haufen 60W Birnen dran. Aus meiner Sicht verbrauchen die zu viel, aus seiner Sicht sind sie zu schwer zu beschaffen, weil jedes Jahr wohl einige kaputt gehen. Er hat vor den für das nächste Jahr mit einen Lichtschlauch zu versehen. Ich würde ihm gerne ein paar "GlitzerLEDs" verpassen, der hängt ja quasi auch vor meinem Fenster :-) Die "Flacker-LEDs" werde ich mir auch mal ansehen. Ich habe in diesem Jahr diverse "Teelicht-Weihnachtsleuchten" auf LEDs umgebaut und die kamen bei der älteren Verwandschaft gut an, da kamen inzwischen schon weitere Anfragen. Ich habe dazu übrigens einen Stift von einer Heißklebepistole auf die entsprechende Länge gekürzt, ein Loch in eine Stirnfläche gebohrt (darf man nicht zu schnell und zu lange drehen lassen, sonst wird das Material um den Bohrer weich und klebt :-) und eine warmweiße LED rein. Mit 2 AAA-Batterien leuchtet das glaube ich die ganze Weihnachtzeit. Da man die Flamme selbst eigentlich nie sieht, wirkt das schon recht gut. Das ist deutlich besser, als irgendwelche LED-Teelichter mit Knopfzellen. Wenn ich denen jetzt noch das Flackern beibringe... Mit einem Microcontroller reduziere ich wahrscheinlich deutlich die Batterielebensdauer. Möglicherweise versehe ich die dann einfach mit den vielen übrig gebliebenen Steckernetzteilen aus der Grabbelkiste. Erstmal vielen Dank und ein schönes Weihnachtsfest! - Michael
Michael Z. schrieb: > Mit einem Microcontroller reduziere ich wahrscheinlich deutlich die > Batterielebensdauer. Die Lebensdauer erhöht sich wohl eher. Der Eigenverbrauch des Controllers liegt im µA-Bereich. Dafür sind die LEDs nicht ständig eingeschaltet.
Ich dachte nur, dass der Controller die PWM ja "machen" muss und daher unter (Rechen-)Last steht? Damit dürfte der seinen Maximalverbrauch haben. Ich habe mal ein paar Bilder angehängt, nicht vom Sternenflackern, aber von den Leuchten. Es ist war eine Lichterkette, an der 10 solcher laser-geschnittenen Sperrholzkuben hingen. Völlig unbrauchbar das Ding. Ich hebe die einzelnen Würfel vorsichtig zerlegt und den Deckel, in dem das Loch für das Birnchen der Lichterkette war, mit dem Boden ohne Loch getauscht. Man kann aber auch irgendein anderes Sperrholzwindlicht nehmen. Dann habe ich von einem 15mm Heißklebestift ein Stück abgeschnitten, mit dem Cuttermesser an einer Stirnseite kreuzweise eingeschnitten und ein Loch für die LED gebohrt. Dann habe ich das Stück noch ein wenig angespitzt, damit es in das Loch der Bodenplatte passt. Warmweiße 2,4-3,6V LED rein, Heißklebestift auf der Rückseite mit dem Lötkolben fixiert, frei mit einem Schalter (ist nicht der schönste, war aber gerade greifbar) und einem Batteriehalter für 2xAAA verdrahtet, Sockel aus Sperrholzstücken um den Batteriehalter rum, fertig. Platz für einen Controller für's Flackern ist auch noch, da mache ich mich im nächsten Jahr mal dran... Schöne Weihnachten! - Michael
Karl Heinz Buchegger schrieb: > In dem Fall würde ich so was probieren: > Alle LED leuchten auf, sagen wir mal 50%. Und beachten: Kerzen gehen nie ganz aus. Das hat mit an der Grableuchte, die mit ihrem Soundmodul so hektisch vor sich hingezappelt hat, auch irritiert... :-/ Billige Abhilfe für halbwegs augenfreundliches Flackern: ein 47uF Elko parallel zur LED. Jetzt sieht das im abendlichen Gruselvergleich bei der Heimker von der Einkehr und beim direkten Vergleich mit den Funzeln der Nachbarn eher nach Kerze aus... ;-) Der Stromverbauch ist nicht messbar gestiegen, die Batterien halten gefühlt noch gleich lang wie vorher. Nur einen Windsensor müsste man jetzt noch anbringen, denn bei Windstille flackert eine Kerze überhaupt nicht...
Lothar Miller schrieb: > Nur einen Windsensor müsste man jetzt noch anbringen, denn bei > Windstille flackert eine Kerze überhaupt nicht... Genau das ist bei fast allen Kerzenflackern der Fall, permanentes Discoflackern. Ich habe mal probiert, das Flackern einer Kerze mit einem Photosensor "aufzuzeichnen" und es hat eigentlich ganz gut geklappt. Einfach die Werte mit der Zeitdifferenz über Serial ausgeben, später in ein Array packen und dann wieder "abspielen". Muss dazu sagen, dass ich das mit einem ATMega328 probiert habe, der dafür auch genug Flash hat. Für ne Kerze wär der aber überdimensioniert. Sah aber toll aus!
Was macht denn ein Grablicht für Sound? Zähneklappern? Fledermausflattern? Grabesstille? Das Eisblitzen, das ich erreichen möchte, geht immer wieder ganz aus. Hier geht es eher darum, mehrere Lichter möglichst zufällig blitzen zu lassen. Gruß, - Michael
Die fertig flacker Lichter nutzen oft Sound Module um das zufällige Flackern zu erzeugen.
Sternenflackern ist eine Gute Idee, vielleicht mache ich demnächst noch eine zweite Version des Codes, sodass der Aufbau noch für weitere Sachen verwendet werden kann. Hier sieht man mal den Einsatz der Platine in einer Weihnachtskrippe. Live sehen die Lichter wirklcih wie echtes Feuer aus. Leider bekommt man das mit der Kamera nicht so hin. http://www.youtube.com/watch?v=G9OyntiBL9w Grüße Martin
Hallo ich wollte mal ein kleines Update zu dem Modul geben... Es geht dabei um eine neue Version der schon bewährten LED Controller Platine zum erzeugen von LED Kerzen flackern, LED Feuer oder ähnlichem. Anforderungen an das neue Board waren: - eine kleinere Platine - 16 Pins zur Ansteuerung von LEDs oder kleinen Lämpchen - jeder Ausgang kann bis 100mA treiben Für die Umsetzung wurde ein Atmega88 im BGA Gehäuse verwendet. Damit auch der Benötigte Strom für kleine Modellbaulämpchen geschaltet werden kann, wurden zusätzlich für jeden Kanal ein kleiner Digitaltransistor verbaut. Über die beiden Taster können verschiedene Lauflicht, Blink oder Flacker Modi ausgewählt und deren Geschwindigkeiten eingestellt und abgespeichert werden. hier findet ihr noch ein Demo Video zu dem Modul und ein Beispiel einer Weihnachtspyramide: Modul: http://youtu.be/Sg5OPPjkLug Pyramide: http://youtu.be/bisPpVR37wA grüße martin
:
Bearbeitet durch User
Ein Flackerlicht gibt's auch im Lagerfeuer, vielleicht taucht das ja auch für Sternenfunkeln: Beitrag "Miniprojekt: Lagerfeuer-LED (ATtiny25)"
ja das sollte auch gehn. Man kann damit alles mögliche machen. Lagerfeuer, Sternenflackern, Kerzenlicht, Düsenantriebe, Schweißen, usw. mit dem neuem Board kann man sogar noch wählen zwischen verschiedenen Blinkmodi wie Polizeilicht, Feuerwehr, ... und verschiedenen Lauflichtern für zum Beispiel eine Baustelle auf einer Modelleisenbahn oder was auch immer alte Version:http://www.jtronics.de/avr-projekte/led-feuer-led-kerze.html neue Version:http://www.jtronics.de/avr-projekte/led-control-2.html
:
Bearbeitet durch User
Hallo! > Könnt ihr davon mal ein paar Videos (z.B. bei Youtube) reinstellen? > Ich habe bis jetzt noch keine einzige LED-Kerze gesehen, die auch > nur annähernd das Licht einer echten Kerze zum Verwechseln ähnlich > imitiert hat. Anbei der Code von meiner Umsetzung, vielleicht kannst Du ihn gebrauchen. Ein Video dazu gibt es hier: http://www.pcfilter.de/Hallo1001/Temp/Video-Feuer2.wmv LG Jens
Das ist übrigens ein LQFP-Gehäuse und kein BGA (Ball Grid Array). Letzteres hätte mich schockiert :)
:
Bearbeitet durch User
Ihr habt interessante Kerzen oder zugige Wohnungen wenn die bei Euch so flackern wie ein Lagerfeuer. Eine ruhig brennende Kerze flackert kaum und meine LED-Kerzen sahen erst einigermaßen natürlich aus, wenn sie nicht öfter als alle 2-3 Sekunden die Helligkeit merklich geändert haben.
Oliver R. schrieb: > Eine ruhig brennende Kerze flackert kaum und meine LED-Kerzen sahen erst > einigermaßen natürlich aus, wenn sie nicht öfter als alle 2-3 Sekunden > die Helligkeit merklich geändert haben. Da hast du Recht. Die meißten käuflichen Dinger erkenne ich sofort als LED. Gestern Abend sah ich schon von weitem eine dicke Kerze in einem Hauseingang stehen, erst als ich ganz dicht vorbei ging, erkannte ich die LED. Hut ab, es geht also auch realistisch.
Tim . schrieb: > So und welches ist jetzt der best "Flackeralgorithmus"? :) Das ist sicher nicht so einfach zu sagen, da es, wie du siehst sehr viele verschiedene Meinungen gibt, wie denn so etwas auszusehen hat. Das endet sicher in einer Grundsatzdiskussion. Das ist auch der Hintergrund, warum ich in der neuen LED Control 2 (http://www.jtronics.de/avr-projekte/led-control-2.html) die Möglichkeit geschaffen habe die Geschwindigkeit des Flackern's selber einzustellen. Damit kann jeder selber entscheiden was ihm besser gefällt.
Tim . schrieb: > So und welches ist jetzt der best "Flackeralgorithmus"? :) Wofür? Lagerfeuer, Kerze, blitzende Sterne? Bei den AVR-Freaks hatte ich mal eine Schaltung mit LDR zum Aufnehmen einer Originalkerze gefunden, echter wird man das nicht hinbekommen.
Tim . schrieb: > So und welches ist jetzt der best "Flackeralgorithmus"? :) Derjenige der die Realität am besten abbildet. Geht es dir um Kerzenlicht dann ist es an dir uns jetzt die Daten des Kerzenlichtes zu posten damit man dir daraus einen passenden Algorithmus vorschlagen kann.
Ich dachte an eine elektronische Kerze. Ich habe die Programme mal ausprobiert, so richtig überzeugt hatte mich noch keines. Ein paar Ideen hätte ich noch: - Man könnte die LED nutzen, um periodisch die Umgebungshelligkeit zu messen und die "Kerze" bei Tag automatisch in den Schlafmodus versetzen. - Um die Farbe besser abzubilden, könnte man eine RGB-LED nutzen. Mit WS2812 würde ein ATtiny auch für mehrere LEDs reichen.
> So und welches ist jetzt der best "Flackeralgorithmus"? :) Ich würde mal sagen, der der Dir am besten gefällt. Wenn Dir „keiner so richtig zusagt“, dann spricht doch auch nichts dagegen wenn Du die Parameter Deinem Geschmack anpasst. Du kannst Die PWM schneller/langsamer machen, die PWM Schrittweite eingrenzen und auch die Geschwindigkeit wie schnell es flackern soll. Da sollte doch irgendwo etwas Passendes dabei sein... > Um die Farbe besser abzubilden, könnte man eine RGB-LED nutzen. Ich bin der Meinung das eine rote und eine orange LED ausreicht, wenn Du sie „mischst“ (also zwei unterschiedliche PWM Signale mischen). Wenn Du Dir das durch einen Diffuser anschaust kommt es einer Flamme schon sehr nahe. Eine RGB so anzusteuern dass sie „nur“ die Farben einer Flamme wieder gibt halte ich für etwas aufwändig.
Jens schrieb: > nahe. Eine RGB so anzusteuern dass sie „nur“ die Farben einer Flamme > wieder gibt halte ich für etwas aufwändig. Mit WS2812 würde man sich die PWM-Ansteuerung sparen. Das macht es sogar einfacher!
> Mit WS2812 würde man sich die PWM-Ansteuerung sparen. > Das macht es sogar einfacher! Es ist also einfacher einen 24-Bit Time-Slot in Software zu programmieren, als die Zufallszahlen direkt an ein PWM-Register weiter zu geben? Viel Spaß schon mal beim heraussuchen der passenden Farben...
Ok, ich habe die Herausforderung angenommen. Anbei mein code. Das Ganze läuft auf einem ATtiny10 mit einer WS2812 LED an PB2. Es sollte aber kein Problem sein, den Code auf andere AVR-MCUs zu portieren. In meiner Implenmentierung wird zwischen zwei RGB Farbwerten interpoliert. Der Interpolationswert wird durch einen Zufallszahlengenerator, welchen ich aus einem der anderen Beispeile geklaut habe, in festlegbaren zeitlichen Intervallen verändert. Damit weiche übergänge möglich sind, wird der Zufallswert zusätzlich noch durch einen IIR Tiefpass gefiltert. Für den Lagerfeuer/Kerzenmodus wird zwischen Gelbweiss und Rotgelb interpoliert. Es gibt noch andere Modi. Das Ergebnis überzeugt noch nicht so ganz, ist aber nicht schlechter als die andern Variantion. Hier ist ein Video. Leider überstrahlt die LED trotz Diffusor. In der Realität sieht es etwas besser aus. http://youtu.be/c-YXeCCxTAk
:
Bearbeitet durch User
Inzwischen gibt es sogar LEDs mit integriertem "Kerzenchip". http://www.aliexpress.com/store/product/1000PCS-Free-shipping-Candle-LED-diode-5MM-Yellow-flicker-round-led-3-0-3-5V/121968_1126255662.html Hat jemand interesse an einer Sammelbestellung? 1000 LEDs sind mir etwas zu viel...
Fabian K. schrieb: > Hallo, > Genau das hab ich vor kurzem gemacht: Ich hab einfach die Helligkeit > zufällig entweder stark vermindert oder ein wenig erhöht, wobei das > vermindern unwahrscheinlicher war. > > War ein schöner Kerzeneffekt, taugt also eventuell auch für Sterne. > > Ich hatte 8 verschiedene Fälle, so sah das kongret > aus:switch(((rand()^rand()^rand())>>5)&7) /zufallszahl von 0 bis 7 > { > case 0: > pwm_setting[i]>>=1; > pwm_setting[i]+=16; > if(pwm_setting[i]>63) > pwm_setting[i]=0; > break; Hallo Fabian.K bin Neuling und genau so einen lichtefekt hab ich für meine krippe gesucht hast du bitte einen fertigen Code arbeite mit Arduino Uno danke im voraus für deine bemühung
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.