Forum

Einloggen | Registrieren | RSS  

Carsten Wallner(R)

03.03.2008,
10:33
 

Software-PWM mit AVR - stehe ich auf der Leitung?? (Elektronik)

Hi,

hab mich gestern mit nem Gläschen Wein hingesetzt um mal eben eine Software-PWM zum Dimmen von LEDs oder Lampen zu realisieren...
Gut, ich hab die Dinger seit dem Sommer nicht mehr angefasst aber damit, das es überhaupt nicht will hab ich nicht gerechnet.

Hab den Kram erstmal weggelegt und starte mit wachem Kopf später nochmal neu...

Hier meine Grundidee:
Timer0 laufen lassen, dieser bedient einen Zähler.
Nun habe ich einen Maxwert und einen Pulslängenwert.
Wenn der Zähler kleiner ist als der Pulslängenwert, gehen die zugehörigen Ausgänge auf High, sonst auf low.
Ist der Maxwert erreicht wird der Zähler zurückgesetzt.

Nun hielt ich mich für besonders schlau und habe den Internen Zähler des Timers (Tcnt0) dafür verwendet und dem Timer einen Prescale von 256 verpasst.
Wenn ich korrekt denke, dann sollte der Takt von 8MHz heruntergeteilt werden auf 31250 Zählimpulse pro Sekunde. Die 256 Prozessortakte zwischen je zwei Zählimpulsen sollten dicke reichen um den Pulslängenwert mit dem Tcnt zu vergleichen und die Ports zu schalten. Da es sich um einen 8Bit-Timer handelt - also immer bis 255 hochzählt und neu startet, sollte die daraus resultierende PWM-Frequenz bei etwa 122Hz liegen.

Das Ergebnis war aber entteuschend - bei einem Tastverhältnis von 200:256, 150:256, 100:256, 60:256 und 20:256 war für mich keine Helligkeitsänderung bei den LEDs ersichtlich. Erst wenns noch kleiner wurde - dann wurden sie aber auch sehr dunkel.

Klar kann man das alles auch anders realisieren - aber ich wüsst halt gerne ob in meiner Grundidee ein Denkfehler steckt und wenn ja welcher.

Bin für jeden Tipp dankbar
Gruß
Carsten

--
Vermeintliche Tippfehler in diesem Posting sind keineswegs Rechtschreibfehler sondern Vorschläge für die nächste Rächtschraiprevorm ;o)

x y

03.03.2008,
11:04

@ Carsten Wallner

Software-PWM mit AVR - stehe ich auf der Leitung??

» Das Ergebnis war aber entteuschend - bei einem Tastverhältnis von 200:256,
» 150:256, 100:256, 60:256 und 20:256 war für mich keine Helligkeitsänderung
» bei den LEDs ersichtlich. Erst wenns noch kleiner wurde - dann wurden sie
» aber auch sehr dunkel.

Weber-Fechner-Gesetz. Aber hast du dir das Ausgangssignal auch mal mit dem Oszi angesehen?


» Klar kann man das alles auch anders realisieren - aber ich wüsst halt
» gerne ob in meiner Grundidee ein Denkfehler steckt und wenn ja welcher.

Nicht, dass mir einer aufgefallen wäre. Ich würde für sowas wie PWM allerdings Interrupts nutzen, ist von der Programmierung her übersichtlicher.

hws(R)

E-Mail

59425 Unna,
03.03.2008,
16:07

@ Carsten Wallner

Deine Idee hatte Atmel auch schon ...

und eine PWM Erzeugung in Hardware integriert.

» Das Ergebnis war aber entteuschend - bei einem Tastverhältnis von 200:256,
» 150:256, 100:256, 60:256 und 20:256 war für mich keine Helligkeitsänderung
» bei den LEDs ersichtlich. Erst wenns noch kleiner wurde - dann wurden sie
» aber auch sehr dunkel.

Da stimmt was nicht. Signale schonmal mit Oszi angesehen?

» Klar kann man das alles auch anders realisieren

das kann man meistens. Ist die Freiheit des Entwicklers.

hws

Carsten Wallner(R)

03.03.2008,
16:52

@ hws

Deine Idee hatte Atmel auch schon ...

Hi hws

» und eine PWM Erzeugung in Hardware integriert.
ist mir bekannt, hab ich auch schon mehrfach benutzt - in dem Fallmuss aich aber zig verschiedene Ausgänge teils abhängig, teils unabhängig voneinander per PWM dimmen - einer genügt nicht, daher hatte ich mich für die Softwarevariante entschieden.
Habe auch diverses Material dazu gelesen,daher ist mir klar, dass die Hardware-PWM sich nicht sonderlich vonmeiner Softwarevariante unterscheidet.

» Da stimmt was nicht. Signale schonmal mit Oszi angesehen?
nein noch nicht, hatte gestern Nacht nachdem ich ne halbe Stunde für den Spaß eingeplant hatte dann irgendwann die Faxen dicke, werd ich später mal probieren...
Wollt halt nur erstmal nachhorchen ob ein grundsätzlicher Fehler in meinem Ansatz ist (wie "Tcnt0 kann man nicht auslesen", oder "der Zählt nur die ersten 4 bit auch wenn er 8-Bit-Zähler heißt" oder wie auch immer... ;o) )

» » Klar kann man das alles auch anders realisieren
» das kann man meistens. Ist die Freiheit des Entwicklers.
...und meine Sturheit den Fehler in meinem Ansatz erst verstehen zu wollen bevor ich auf nen anderen umsteige ;o)

Gruß
Carsten

--
Vermeintliche Tippfehler in diesem Posting sind keineswegs Rechtschreibfehler sondern Vorschläge für die nächste Rächtschraiprevorm ;o)

Carsten Wallner(R)

10.03.2008,
19:54

@ Carsten Wallner

Danke, klappt...

Hi,

so jetzt klappts, hab einzelne Absätze gelöscht und neu getippt - und jetzt hauts hin....
Danke an euch beide...

Gruß
Carsten

--
Vermeintliche Tippfehler in diesem Posting sind keineswegs Rechtschreibfehler sondern Vorschläge für die nächste Rächtschraiprevorm ;o)