Hallo! Es sollen 5 Glühbirnen (12 V, wenige Watt) per Controller zum Flackern gebracht werden. Ich bräuchte also mindestens 5 PWM Kanäle. Da ich noch einen Mega8 hier habe (dieser hat nur 3 Hardware PWM) habe ich mich gefragt, ob ich das nicht auch per Software PWM lösen kann. Ich würde hierzu einen Timer initialisieren, eine Variable aufzählen und jedes mal mit den 5 PWM Werten der Lampen überprüfen und den Pin entsprechen an und abschalten. Eine Aufläsung von 8 Bit pro Kanal ist vollkommen ausreichend. Ich frage mich nun, ob der das mit dem Controller möglich ist (von der CPU Belastung her, m.E. durchaus) und mit welcher Frequenz der Timer in etwa aufgerufen werden sollte, damit ich eine saubere PWM erhalte. Das Flackern will ich mit Pseudozufallszahlen realisieren, die Lampen sollen über Mosfets (IRLU2905) angesteuert werden. Vielen Dank für Eure Zeit! Liebe Grüße Jan
(der von vor zwei Minuten) Wenn du Glühbirnen verwendest, dürften 100-200 Hz für die PWM ausreichend sein. Der Timer muss dann mit dem 256fachen aufgerufen werden, also etwa alle 40µs. Läuft der Controller bei 4Mhz bräuchte das etwa 30% der Rechenkapazität. Die restliche Zeit reicht also locker aus, um die Zufallszahlen zu erzeugen.
Hallo Jan :-) Danke für deine Antwort. Das bestätigt etwa das, was ich selbst auch gedacht habe. Dann werde ich das so angehen! Prima! Vielen Dank! (der andere) Jan
Ich erzeuge KEINE Zufallszahl, sondern nur eine Pseudozufallszahl. Diese ist zwar innerhalb eines Programmablaufes "zufällig", wiederholt sich aber immer wieder, sobal der Controller resettet wird. Das ganze wird einfach über die Laufzeit gemacht. Bei Codevision gibt es eine entsprechende Funktion. Bei mir ist es egal, ob die Kerze nach dem Anschalten immer gleich flackert, da das überhaupt nicht auffällt.
Wie langen die Birnen das Geflacker denn mit? Wie lange stellst Du die PWM auf "on" ?
(Jan, der andere) Bitte was? Die PWM steht immer so lange auf on, je nach dem, wie lange die Glühbirne eben an sein soll, um die gewünschte Helligkeit zu erzeugen.
@Simon Küppers: Auch mit einer Uhr kannst Du keine vernüftigen Pseudo-Zufallszahlen erzeugen. Eine Uhr ist absolut deterministisch. Überlege mal: Angenommen, Du weißt, dass ein Programm vor ca. einer Stunde gestartet wurde. Wenn die Uhr nur Sekundenauflösung hat, hast Du pro Stunde nur 3.600 mögliche Startwerte für den Pseudozufallsgenenerator. Um echte Zufallszahlen zu erzeugen, brauchst Du externe Entropie. Und selbst dann musst Du höllisch aufpassen, dass Du wirklich Entropie hast, und nicht nur glaubst, Du hättest Entropie. Entropie bekommst Du z.B. aus den Zugriffszeiten einer Festplatte, da die Umdrehungsgeschwindigkeit des Plattenstapels immer etwas schwankt, oder auch teilweise aus dem Rauschen der Audio-Eingänge und auch aus Tastaturdrücken bekommt man ein bis zwei Bit Entropie pro Tastendruck oder teilweise unter bestimmten Bedingungen auch aus den Laufzeiten einer Datenübertragung durchs Internet usw.
Hagen Jakubaschk hat sich mal eine Schaltung zum Flackern patentieren lassen, bei der das Rauschen eines Transistors zum Zünden eines Thyristors genutzt wurde. Dies hat einige Beleuchter an Theatern arbeitslos gemacht, da man zur Immitation von Feuer nicht mehr mit dem Lappenwedel vor den Scheinwerfern herumfuchteln musste. Die Episode und die Schaltung kann in einem seiner zahlreichen Bücher (vom DMV) nachgelesen werden. ...
Für diese Anwendung reicht offensichtlich ein völlig einfacher Pseudu-Zufallsgenerator. Am einfachsten sind dafür meiner Meinung nach die Rpckgekoppelten Shift-Register geeignet. Die sind schnell programmiert, und man kann die Perdiode der Zufallssequenz beliebig wählen. Von vier Bits bis 2^64 oder noch mehr...
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.