Forum: Mikrocontroller und Digitale Elektronik Software PWM


von Jan (Gast)


Lesenswert?

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

von Jan (Gast)


Lesenswert?

PS: Ich bin NICHT der Jan, der etwa zwei Minuten vor mir gepostet hat
:-)

von Jan (Gast)


Lesenswert?

(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.

von Jan (Gast)


Lesenswert?

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

von Simon Küppers (Gast)


Lesenswert?

Wie erzeugst du eine Zufallszahl ohne Uhr und ohne weitere Hilfsmittel?

von Jan (Gast)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

Wie langen die Birnen das Geflacker denn mit? Wie lange stellst Du die
PWM auf "on" ?

von Jan (Gast)


Lesenswert?

(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.

von Unbekannter (Gast)


Lesenswert?

@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.

von Läubi (Gast)


Lesenswert?

Die frage sit halt wie zufällig der Zufall sein muss ;)

von Hannes L. (hannes)


Lesenswert?

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.

...

von Unbekannter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.