Forum: Mikrocontroller und Digitale Elektronik Softübergang bei Lauflicht in C ?


von Thomas H. (Gast)


Lesenswert?

Hi!

Ich habe mal gehört, dass es möglich ist bei einem Lauflicht
Softübergänge einzubauen. Soll irgendwie mit PWM funktionieren,
aber da ich noch ein Anfänger bin, sind das für mich noch
böhmische Dörfer. Kann mir vielleicht jemand weiterhelfen?
Ich habe ein STK500 und benutze das cvavr.

Vielen Dank schon mal!

Thomas

von Willi (Gast)


Lesenswert?

Geht das denn überhaupt??

von Rolf Magnus (Gast)


Lesenswert?

> Ich habe mal gehört, dass es möglich ist bei einem Lauflicht
> Softübergänge einzubauen.

Stimmt.

> Soll irgendwie mit PWM funktionieren,

Genau.

> aber da ich noch ein Anfänger bin, sind das für mich noch
> böhmische Dörfer. Kann mir vielleicht jemand weiterhelfen?

Vielleicht hilft das weiter?

http://www.mikrocontroller.net/forum/read-4-225283.html

Wenn du dazu Fragen hast, kann ich sie gerne beantworten.

von Rolf Magnus (Gast)


Lesenswert?

Ach, Mist. Gerade nach dem Absenden sehe ich, daß da C stand. Meins ist
in Assembler, weil's da mit dem Timing einfacher ist.
Bei Hardware-PWM wäre das Timing nicht so kritisch, aber die AVRs haben
nicht so arg viele PWM-Kanäle. Da kommt man mit Software-PWM weiter.

von Thomas H. (Gast)


Lesenswert?

Danke schon mal für Deine Antwort! Aber wie funktioniert das mit dem PWM
bzw. Software-PWM?

von Berne HPH (Gast)


Lesenswert?

hi thomas, da haßt du richtig gehört, das geht so, mit pwm.

allerdings ist Deine frage ja nicht grad so einfach, weil kein schwein
weis, welche lampen du "schwellen" lassen willst?

z.B: hallos mit 12v, el- folien, natriumdampflampen, leuchtstoffröhren,
LEDs, oder xenonlampen, oder sinds vielleicht
CFFL lampen, usw. ?????

Die einen werden mit Gleichspg. die anderen mit Wechselspg.,
betrieben, wieder andere mit hoch-, oder niederfrequenz betrieben,
usw.

Also genaueres kannst du, ohne Lampentyp, nicht erfahren!

Allerdings ist das in etwa so:

Bei einer PWM Ansteuerung wird jedem Typ von Lampen, die benötigte
Energie in quasi, Energiepackete übergeben, was auch bei reinen
wechselstrom betriebenen Lampen der Fall ist, wie zb: den CFFl lampen,
und den EL lampen, die sich allerdings auch mit getakteter
gleichspannung zufrieden geben.

PWM heist ja, P für Puls, also Energie Impuls.

W für Weite, also wie "weit" ist der Energieimpuls, was so viel
bedeutet, wie "lange" dauert die Energieeinspeisphase.

und M für Modulation, also zyklische, zeitlich gesehen, veränderbarkeit
der Pausendauer, zwischen einem Energiepacket.

OLED lampen, wie auch LEDs, hätten ihre Packetchen, die du verändern
musst, gerne, eher, konstantstrom abhänngig.

EL und Halogenlampen eher konstantspannugsabhänngig.

und und und  so weietr, gruss berne, also ohne "Zutaten"
kein Rezept, wie ein Koch zusagen plegt.

von Rolf Magnus (Gast)


Lesenswert?

Bei der PWM wird der Ausgang schnell mit konstanter Frequenz ein- und
ausgeschaltet. Dabei wird das Verhältnis zwischen den Zeiten im
eingeschaltetem und ausgeschaltetem Zustand variiert. Der Wechsel
geschieht so schnell, daß man das nicht wahrnimmt und die LED
erscheint, als leuchte sie mit nur einem Teil ihrer vollen Helligkeit.
In Wirklichkeit blinkt sie sehr schnell. Bei der Hardware-PWM ist ein
Timer in der Lage, dieses selbstständig zu generieren, so daß man ihm
nur noch das Tastverhältnis (also praktisch die gewünschte Helligkeit)
mitteilen muß.
Bei der Software-PWM generiert der Mikrocontroller die Impulse eben per
Software.
Das kleine Programm von mir macht das so, daß immer genau eine LED an
ist. Es wird schnell zwischen der "aktuellen" und der nächsten LED
hin- und hergeschaltet, wobei sich das Verhältnis der Dauer, mit denen
sie an sind, bei jedem Wechsel ändert, so daß die nächste immer heller
wird, die aktuelle immer dunkler. Sobald die nächste dann volle
Helligkeit hat, wird sie zur aktuellen, und das Spiel geht von vorne
los.

von Berne (Gast)


Lesenswert?

sorry,
hatte das nicht geblickt, daß es um leds geht.
hr.magnus hat das gut erklärt.
Vielleicht noch,
ich habe gemessen, daß die kleinste einschaltzeit bei roten
leds nicht kleiner als 0,5 mikrosec sein darf.

will man die leds ohne vorwiderstand direkt anschließen, was
an ein 5v port geht,wenn man moduliert, sollte die größte einschaltzeit
nicht über  250 mikrosec liegen,
man erhält dann so etwa 2omA effektivstrom.

von Thomas H. (Gast)


Lesenswert?

Ich danke Euch schon mal, ich werd mal nachlesen, wie man das in C
programmiert, aber Ihr habt mir schon sehr viel geholfen!

Gruß Thomas

von smiss (Gast)


Lesenswert?

hallo thomas,

hilfe dazu im gcc-tutorial, und unter avr_pwm (noch nicht fertig) in
der artikelsammlung.
ich schlage aber vor, erst ein bisschen was mit timern zu machen, und
dann pwm. so leuchten einem die zusammenhänge ein.

von Peter Dannegger (Gast)


Lesenswert?

@Rolf

> Das kleine Programm von mir macht das so, daß immer genau eine LED
> an ist. Es wird schnell zwischen der "aktuellen" und der nächsten
> LED hin- und hergeschaltet, wobei sich das Verhältnis der Dauer,
> mit denen sie an sind, bei jedem Wechsel ändert, so daß die nächste
> immer heller wird, die aktuelle immer dunkler.


Das ergibt bloß nicht den gewünschten Effekt, da der
Helligkeitseindruck des Auges logarithmisch ist. Beide LEDs scheinen
also lange Zeit etwa gleich hell zu leuchten.

Um nun z.B. ein Lauflicht mit 8 LEDs zu machen, nimmt man am besten
eine 8-Kanal-PWM in Software mittels eines Timerinterrupts.

Und im Hauptprogramm werden nun schrittweise logarithmische PWM-Werte
aus einer Tabelle gelesen und in die entsprechenden Register der
Software-PWM geschrieben.

So ne Tabelle sieht dann z.B. so aus:

.db 255, 180, 128, 90, 64, 45, 32, 23, 16, 11, 8, 6, 4, 3, 2, 1, 0


Peter

von Rolf Magnus (Gast)


Lesenswert?

> Das ergibt bloß nicht den gewünschten Effekt, da der
> Helligkeitseindruck des Auges logarithmisch ist. Beide LEDs
> scheinen also lange Zeit etwa gleich hell zu leuchten.

Also in meinem Fall sah es jedenfalls ganz gut aus. Möglich, daß es
nicht 100% perfekt ist, aber für mich gut genug.

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.