Hallo Forum, ich möchte dieses typische Flackern, vor allem von alten Leuchtstoffröhren beim Einschalten in Software simulieren. Hat dazu jemand mal einen Algorithmus? So in der Art: erstmal nicht leuchten, dann zufälliges kurzes Flackern, irgendwann nach 2 bis 5 Sekunden an. Wenn nicht gibt es Mitschnitte, Oszibild oder Diagramm eines typischen Einschaltflackerns? Rangi
Wozu braucht man das? Dann nimm doch eine Röhre und zeichne mit einem Speicheroszi den Einschaltstrom auf.
Wie wäre es mit Zufall? Eine "typische" Leuchtstofflampe gibts nicht, und deswegen auch kein typisches Flackern. Warte einfach kurz, dann Flackern per Zufall und nach paar Sekunden volle Durchschaltung.
@magroma: für den Modellbau @ich: Zufall hab ich schon probiert, sieht aber nicht echt aus, eben wie zufälliges Flackern, aber nicht wie das Einschaltflackern. Deshalb wollte wissen ob jmd ein Oszibild davon hat.
Du kannst doch mit einem Controller das optische Bild einer zündenden Leuchtstofflampe mit einem Fotowiderstand aufzeichnen und dann den gespeicherten Signalverlauf auf eine LED wieder ausgeben. Optisch müsste dann eine Ähnlichkeit vorhanden sein.
ich schrieb: > Eine "typische" Leuchtstofflampe gibts nicht, und deswegen auch kein > typisches Flackern. Warte einfach kurz, dann Flackern per Zufall und > nach paar Sekunden volle Durchschaltung. Naja, das Flackern ist Zufall mit einigen Randbedingungen und damit doch eher typisch. Also als Erstes kein reines ein-/ausschalten, sondern am Anfang auch mal glimmen mit niedrigerer Intensität, dann verlöschen, wieder glimmen, verlöschen .... bis Sie an ist. Dann kann der Strom und damit die Helligkeit auch nicht beliebig schnell ansteigen/abfallen und so weiter. Und dann eben das Zünden erst an den Spitzen, danach komplett - ist aber dann auch eine Frage, wie es nachgebildet werden soll. Von daher wäre Nachmessen das Sinnvollste oder - wenn keine Lust - dann eben "nach Gefühl" implementieren.
:
Bearbeitet durch User
Rangi Jones schrieb: > @magroma: für den Modellbau > @ich: Zufall hab ich schon probiert, sieht aber nicht echt aus, eben wie > zufälliges Flackern, aber nicht wie das Einschaltflackern. > Deshalb wollte wissen ob jmd ein Oszibild davon hat. Dann siehts doch auch immer wieder gleich aus, wenn du nur etwas aufgezeichnetes wiedergibst. Spiel doch mal ein wenig mit dem Zufall rum, auch mehrere Zufallszahlen miteinander verknüpfen usw. Dann wirst du auch ein wirklich zufälliges Flackern erzeugen können. Ist nicht schwer, und man bekommt echt aussehende Zündvorgänge. Bei Kerzenbeleuchtung ist es das gleiche. Nur ein- und ausschalten per Zufall sieht unecht aus. Eine PWM PWM für die Helligkeit und die dann per Zufall steuern...
ich schrieb: > Bei Kerzenbeleuchtung ist es das gleiche. Nur > ein- und ausschalten per Zufall sieht unecht aus. Genau, da muss die Melodie von "Happy Birthday" zur Speisung der LED benutzt werden. :-)
Harald Wilhelms schrieb: > ich schrieb: > >> Bei Kerzenbeleuchtung ist es das gleiche. Nur >> ein- und ausschalten per Zufall sieht unecht aus. > > Genau, da muss die Melodie von "Happy Birthday" zur Speisung > der LED benutzt werden. :-) Gute Idee, und wenn man dann noch eine Fotodiode an einen Mikrofonverstärker hängt, kann man das Lied sogar hören :-)
Ich hab mal eben für dich ein altes Projekt ausgegraben. Das war damals mit RGBW und PWM. Deshalb meine Fragen an dich: 1. Welche Sprache? 2. Nur Weiß? 3. PWM oder An/Aus?
Die grundsätzlichen Effekte lassen sich leicht simulieren, allerdings kommt sehr viel "Zufall" zustande, wenn die Regelelekronik des Vorschaltgerätes mit ins Spiel kommt, da die interagieren. Das wird sehr schnell chaotisch und unvorhersehbat. Das Prinzip aber ist leicht simulierbar.
@ich: ich wollte das Oszibild um mir daraus selber einen Algorithmus auszudenken, eigentlich nicht um das einfach nur nachzuspielen. Ich wollte damit die Bitzdauer und die etwaigen Pausenzeiten ableiten und per Zufall variiren. @samuel: Sprache C, Led-Farbe ist nicht relevant, da der Algortihmus universell werden soll, PWM ja, ich habe eine PWM mit 100 Abstufungen mit 100Hz. Meine Statusmaschine kann alle 20ms einen neuen PWM Wert berechnen und asynchron ausgeben. Ausserdem habe ich einen Pseudo-Zufallsgenerator mit dem Seed aus einem frei laufenden Timer.
Ok, dann hier mal mein Versuch, das an deine Umgebung anzupassen:
1 | /* Werte für Grenzen der Zufallswerte (*20ms) */ |
2 | #define aufheizen_min 50 // minimale Zeit des Heiz-Effekts |
3 | #define aufheizen_max 100 |
4 | #define aus_min 2 // minimale Zeit zwischen Blitzen |
5 | #define aus_max 75 |
6 | #define an_min 1 // minimale Zeit der Blitze |
7 | #define an_max 10 |
8 | |
9 | #define blitze_min 1 // Mindestanzahl der Blitze |
10 | #define blitze_max 6 |
11 | |
12 | #define h_aufheizen 44 // Helligkeit nach dem Aufheizen |
13 | #define h_start 100 // Helligkeit am Schluss (ganz an) |
14 | |
15 | uint16_t temp_lsr; |
16 | uint16_t temp; |
17 | uint8_t blitzzähler; |
18 | |
19 | temp_lsr = rand(aufheizen_max - aufheizen_min) + aufheizen_min; // Aufheizzeit bestimmen |
20 | |
21 | helligkeit_zeit(h_aufheizen , temp_lsr); // Funktion, die die Helligkeit gleichmäßig fadet (auf den Wert h_aufheizen über die Zeit temp_lsr) |
22 | |
23 | temp = rand(blitze_max - blitze_min) + blitze_min; // Anzahl der Blitze bestimmen |
24 | |
25 | for(blitzzähler=0; blitzzähler < temp; blitzzähler++) { // Für jeden Blitz |
26 | temp_lsr = rand(an_max - an_min) + an_min; // Blitzdauer bestimmen |
27 | pwm_laden(h_start) ; // Blitz starten |
28 | wait(temp_lsr); // Blitzdauer warten |
29 | |
30 | temp_lsr = rand(aus_max - aus_min) + aus_min; // Blitzpause bestimmen |
31 | pwm_laden(h_aufheizen); // Blitz beenden |
32 | wait(temp_lsr); // Blitzpause warten |
33 | } |
34 | |
35 | pwm_laden(h_start); // Lampe komplett einschalten |
Ich war mit dem Effekt immer zufrieden. Wie du den jetzt allerdings in deiner Maschine umsetzt (ich nehme an, du hast eine Art Ablaufsteuerung/State Machine/SPS oder was auch immer im Hintergrund) kann ich dir leider nicht sagen :) Die Routine war urspünglich auch mal in einer anderen Sprache, ich habe sie nur kurz übersetzt, also bitte sieh über Flüchtigkeitsfehler und unsaubere Darstellung hinweg^^
:
Bearbeitet durch User
@dragonsam: danke für die hinweise. ich konnte zwar deinen code in der weise nicht verwenden, aber die zeiten sind gut. Ich habs jetzt so gemacht: der algorithmus kommt bei einschalten dran und kann alle 20 ms drankommen. jedes mal bestimmt er wievel n x 20 ms vergehen, bis er wieder dran kommt. diese bestimmung ist, wenn "an" rand(4)+1. wenn aus, dann wird noch bestimmt zu welcher zeit nach dem einschalten sich der code befindet, innerhalb der ersten 50x20 ms = rand(64), 50..99x20ms = rand(16), 100..149x20 ms = rand(8), >150x20 ms = rand(4). wenn zu irgendeiner zeit rand(x) == 0, dann wird er ausgang dauerhaft eingeschaltet. ergebnis ist ein blitzen, anfangs selten, später häufiger. bei rand(4) (also nach 3 sec) ist die wahrscheinlichkeit hoch, recht bald einen 0 auszuwürfeln und die lampe einzuschalten.
In meiner Küche hängt eine ganz "herkömmliche" Leuchstoffröhre an der Decke, die Bauart mit Bimetall/Glimmlampem-Starter und Spule. Abgesehen von wirklich seltenen Ausnahmen startet diese Lampe immer ohne zu flackern gleich beim ersten Zündversuch. Das hat sich in den vergangenen 6 Jahren Nutzungsdauer auch nciht verändert. Als "typisches" Bild habe ich allerdings mehrere Zündversuche im Gedächtnis. Vielleicht kommt das daher, dass in einem Flur oder einer Tiefgarage viele dieser Lampen hängen und immer irgendeine davon schlecht startet. Insofern wüsste ich nicht, was man da nun simulieren sollte, damit es "typisch" aussieht.
stefanus schrieb: > In meiner Küche hängt eine ganz "herkömmliche" Leuchstoffröhre an der > Decke, die Bauart mit Bimetall/Glimmlampem-Starter und Spule. > > Abgesehen von wirklich seltenen Ausnahmen startet diese Lampe immer ohne > zu flackern gleich beim ersten Zündversuch. Das hat sich in den > vergangenen 6 Jahren Nutzungsdauer auch nciht verändert. atypischer gehts ja wohl nicht ... Es grüßt RainerK
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.