Forum: Mikrocontroller und Digitale Elektronik Kerzensimulator


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Steffen (Gast)


Lesenswert?

Hallo zusammen!

Für eine Tanzaufführung bin ich gebeten worden, eine elektrische Kerze
zu bauen (da offenes Feuer in diesem Raum nicht gestattet ist). Ich
habe folgende Schaltung:

Ein Mega8 als Steuercomputer soll mittels Pseudozufallszahlen die
Helligkeit einer Glühbirne steuern. Momentan hängt an dem Ausgang noch
eine LED, die aber durch Transistor oder Mosfet mit der Lampe (9 V)
später ersetzt wird. Die Helligkeit wird mittels Timer1 PWM über OCA1
gesteuert.

Jetzt habe ich für die Software die Evolution Version von Codevision.
Diese kann ja Pseudozufallszahlen erzeugen. Die Lampe flackert am
Anfang auch kurz, jedoch stellt sich schnell ein sehr stabiler Zustand
ein, so dass die PWM selbst mit dem Oszi nachgemessen immer das selbe
Tastverhältnis behält.

Zur Software: Ich lasse mir zwei Zufallszahlen generieren. Anschließend
setze ich die eine Zufallszahl als Helligkeit und danach warte ich in
einer Schleife die andere Zufallszahl ab (damit sich die Helligkeit
nicht immer gleich schnell ändert).

Der Mega8 läuft mit 1 MHz des internen Taktgenerators.

Hie ein Teil der Software (der selbstverständlich in der
Programmschleife steht):

      // Pseudozufallszahl ereugen
      random = rand();
      // neue Lampehelligkeit festlegen
      brightness = random / 256;
      // neue Wartezeit festlegen (Pseudozufallszahl)
      durance = rand();
      // Helligkeit (PWM) setzen
      OCR1AL=brightness;
      // Durance warten
      for (n; n<=durance; n++)
      {
        for (s; s<=10000; s++)
        {
          #asm("nop");
        }
      }

Hat jemand eine Idee, warum das ganze nach einer Zeit immer stabil
wird? Vielleicht hat jemand einen Vorschlag, wie man das Flackern der
Kerze noch naturgetreuer mit obiger Schaltung nachahmen könnte.

Vielen Dank & viele Grüße
Steffen

von Christian (Gast)


Lesenswert?

Hi,

einfache & fertige Lösung: es gibt fertige Lampen für wenig Geld, die
eine Kerzen/ein Feuer simnulieren sollen. Ich habe sie z.B. schon um
Weihnachten rum in Krippen gesehen. Wenn man nicht zu nahe ran geht,
sieht es gut aus. Einfach mal bei Conrad suchen, die haben sowas glaube
ich.
Wenn natürlich der Basteldrang überwiegt...

/Christian

von Steffen (Gast)


Lesenswert?

Hallo!

Ich kenne solche Lampen. Bisher habe ich ndie nur für 240V gesehen,
allerdings wird es sie wahrscheinlich auch für 12 V geben.

Ich möchte das aber schon gerne selbst bauen :-)
Sollte ja eigentlich keine sos schwierige Aufgabe sein.

Ich vermute, dass die "Pause" (Schleife) irgendwann einen Wert
annimmt, so dass nach Ablauf der Schleife die Zufallszahl wieder so
groß ist wie vorher. Daher der stabile Zustand der PWM. Aber wie kann
man das ändern?

Viele Grüße
Steffen

von Benedikt (Gast)


Lesenswert?

Simulier die Software doch mal, dann siehst du welche Zufallswerte
erzeugt werden.

PS: Es gibt keine fertigen Flackerlampen für 120V, da es hierbei um
Glimmlampen handelt, die mindestens 100V benötigen.

von Peter (Gast)


Lesenswert?

Hi,
vielleicht solltest du Zählvariablen der Schleifen initialisieren ?
[for(x=0;x<=y;x++){......}] mein ich.
Peter

von Steffen (Gast)


Lesenswert?

@Benedikt:
Leider kann man mit CodeVision keine Programme simulieren.

@Peter:
Du hast Recht. Das habe ich jetzt gemacht, allerdings bleibt jetzt das
Tastverhältnis sofort von Anfang an konstant. Das ist mir noch
unerklärlicher ...

Viele Grüße
Steffen

von Bitte_Löschen (Gast)


Lesenswert?

"Momentan hängt an dem Ausgang noch
eine LED"

Die Frage ist ob später die Glühlampe auch so schön flackert? Denn die
wird sicherlich viel träger reagieren als Deine LED. Solltest Du am
besten schon berücksichtigen. Aber das nur als Tipp :-)
Bei Deinem Programm-Problem kann ich Dir leider nicht weiterhelfen.

von Steffen (Gast)


Lesenswert?

So - es funktioniert jetzt.
Es hing an der Schleife innerhalb der Schleife. Das war wohl doch etwas
zu lang ;-)

Jetzt werd ich es mal mit einer Glühlampe austesten, in der Hoffnung,
dass "Bitte-Löschen's" Zweifel unbegründet sind!
Wenns nicht klappt, kann ich ja dann die Blinkfrequenz noch ändern.

Vielen Dank und viele Grüße
Steffen

von Dennis Brücke (Gast)


Lesenswert?

Hi Steffen,

warum Mega8 ? Ist der nicht ein wenig überdimensioniert für so was ?
Ich hatte mal die gleiche aufgabe (120 Kerzen) ;)

Habe dafür einen Tiny11/12 genommen diesen über einen Transistor eine
12Volt/6Watt Glühlampe mit 7,2Volt schalten lassen (weniger Spannung
damit das schummer licht besser rüberkommt)

Ging supi ;)

Gruß Dennis

von Steffen (Gast)


Lesenswert?

Hallo Dennis!

Keine Frage - aber das ist der einzige Controller, der keine externe
Taktquelle bruacht, den ich grade noch dahabe. Und ich möchte
eigentlich nichts neues bestellen.

Bei der nächsten Bestellung sind ein paar Tinys dabei, klar :-)

Grüße
Steffen

von Dennis Brücke (Gast)


Lesenswert?

Nachtrag:

komme nie auf die Idee zu sagen... "Schatz schau mal wir brauchen nie
wieder wachs kerzen..." ich sag Dir das gibt nur stress... grins

von Steffen (Gast)


Lesenswert?

Alles klar - werde mich dran halten :-)

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]
  • [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.