Phasenabschnittsdimmer mit Kondensatornetzteil

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo,

ich tüftle seit ca. 2 Wochen an einem Phasenabschnittsdimmer kombiniert mit Kondensator-Netzteil. Aber irgendwie stecke ich gerade fest. Für die Basis des Dimmers habe ich mich von der ELV-Schaltung DI 300 "inspirieren lassen". Das Priznip ist, dass die Schaltung selbst als "Schalter" fungiert, indem Sie zwei Pins mit einem FET kurzschließt und darüber den Stromkreis für die Lampe schließt. Damit dies auch mit nur einem FET geht, werden die Eingänge über einen Brückengleichrichter geführt.

Das funktioniert prinzipell, habe ich auch getestet. Aber das von ELV vorgeschlagene Netzteil war für mich ungeeignet. (zuwenig Strom)

Deshalb dachte ich, ich baue einfach ein Standard-Kondensator-Netzteil dazu, was zu einigen Hirnkrämpfen geführt hat, weil die "Masse" dann geändert werden muss und ich zusätzlich die Lampe gegen N anschließen wollte, nicht gegen L wie von ELV vorgeschlagen. Bei den ganzen Krämpfen habe ich dann wohl einen groben Fehler übersehen, was erst mal zu einem riesen Knall beim einschalten geführt hat.

Nach etwas weiterem Nachdenken habe ich den Grund gefunden: da bei einem Standard Kondensator-Netzteil, ebenfalls mit Brückengleichrichter dann in Kombination mit meinem Dimmer 3 Dioden in Reihe voll auf 230V liegen habe ich damit einen vollen Kurzschluss gebaut. Je eine dieser Dioden ist in je einem der Brückengleichrichter und die dritte ist die Z-Diode zur Stabilisierung. Als Lösung habe ich das Kondensator-Netzteil von seinem Brückengleichrichter "befreit". Herausgekommen ist dann folgende Schaltung:
Dimmer_Netzteil.png
Das Netzteil funktioniert nun auch und liefert eine ausreichend stabile Spannung bei meinem benötigten Strom. Allerdings funktioniert jetzt die Dimmung nicht mehr, bzw. kann ich den FET nicht mehr "löschen". Wenn ich das Gate des FET beim Einschalten auf Masse lasse bleibt die angeschlossene Lampe aus. Verdächtig ist dann aber schon, wenn ich 12V über einen Vorwiderstand ans Gate anlege, dass die Lampe mit ca. einer halben Sekunde Verzögerung angeht. Wenn ich das Gate dann wieder mit Masse verbinde bleibt die Lampe einfach an. Ich habe das Gate auch schon direkt hart mit Masse gebrückt. Die Lampe (LED) brennt einfach weiter. Jetzt überlege ich seit gestern, woran es liegen könnte und komme nicht drauf. Die Dioden, den Brückengleichrichter und den FET habe ich vorsichtshalber noch mal getauscht. Hat jemand von euch eine Idee?

Viele Grüße
Andreas
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Zumindest für eine Polarität des Netzes hast du deinen ganzen Dimmverhau überbrückt.
Bei positiven Halbwellen kann über V10, V7, V9, und die untere linke Diode vom Brückengleichrichter Strom direkt von L nach Lampe fließen. Ob das mit dem Kondensatornetzteil ansonsten geht, habe ich noch nicht ganz erfolgreich zerdacht.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ferdimh,

du glaubst gar nicht, wie lange ich den Schaltplan angestarrt habe um einen solchen Strompfad zu finden. Jetzt fällt es mir natürlich wie Schuppen vor den Augen.

Nach Entfernung von V10 funktioniert die Ansteuerung des FET wieder einwandfrei. Das Kondensator-Netzteil produziert auch brav 12 V, die sind jetzt aber nicht mehr belastbar. Selbst bei 12 kOhm Last, also 1 mA bricht die Spannung Sie auf fast 0 V zusammen. Es wird vermutlich nur Energie übertragen, wenn der Kondensator auch umgeladen wird, was ich über V10 bewerkstelligen wollte. Also wieder weiter nachdenken...

Viele Grüße
Andreas
Benutzeravatar
ESDKittel
Beiträge: 3153
Registriert: Fr 23. Aug 2013, 13:18

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ESDKittel »

Wie währ es damit (Prinzipschaltbild):
Bild
In der Art habe ich einen Halogenlampenschalter realisiert, allerdings in Kleinspannunghochstrom.
Die MOSFET Rücken an Rücken. "Masse" liegt am gemeinsamen Sourceanschluß.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ESDKittel,

danke für den Vorschlag. Der sieht doch echt einfach aus. Eine ähnliche FET-Beschaltung habe ich auch schon mal als Bidirektionelr Schalter benutzt, allerdings auch nur im Kleinspannungsbereich. Jetzt müsste ich dazu mal zwei kompatible Hochspannungs-FETs finden.

Viele Grüße
Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ESDkittel noch mal,

auf deiner Skizze wird es mir nicht ganz klar, deshalb Frage ich noch mal sicherheitshalber nach. Wie bereits geschrieben habe ich eine ähnliche Schaltung schon einmal gebaut. Das war für die Arbeit und ist schon ein paar Jahre her. Ich konnte mich nicht mehr genau erinnern. Ich bin deshalb davon ausgegangen, dass du einen N-Channel und einen P-Channel FET in Reihe geschaltet hast. Darum bin ich auf die Suche nach Hochvolt P-Channel FETs gegangen und habe festgestellt, dass es sowas (eigentlich) nicht gibt. Ich habe ein Exemplar gefunden, dass bis 500V einsetzbar ist, dafür aber einen RDSon von 6 Ohm hat. :shock:

Also habe ich mal die Schaltung von damals gesucht und gefunden: Es war der "Ein-/Ausschalter" für einen Akku an einer AARlogic-Platine. Also entweder Strom rein zur Versorgung, oder Strom raus zum Laden. Dabei habe ich gesehen, dass ich damals tatsächlich zwei N-Channel FETs in Reihe verwendet habe:
Nchannels.png
Nchannels.png (10.94 KiB) 2080 mal betrachtet
Ist es diese Verschaltung, die du in deiner Skizze meinst?

Sollte das der Fall sein und ich jetzt nicht wieder einen Hirnkrampf bekommen, müsste ich das Gate mit einer negativen Spannung ansteuern in Bezug auf die Masse in deiner Skizze?

Edit sagt: Oh mann, das sind ja P-Channel. Ok, dann wird es interessant welche zu finden...

Viele Grüße
Andreas
Benutzeravatar
ESDKittel
Beiträge: 3153
Registriert: Fr 23. Aug 2013, 13:18

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ESDKittel »

In meiner Skizze sollen das zwei Hochvolt N-Kanäler sein, die sind mit ihren Source zusammengeschaltet.
Bezugspunkt der Ansteuerschaltung ist der gemeinsame Sourceanschluß.
Gatespannung positiv gegen diesen Bezugspunkt.
Die Rückwärtsdiode des linken FET ist Teil der 12V Kondensatornetzteilstromversorgung.
Diese bezieht sich auch auf den gemeinsamen Sourceanschluß.

Vorsicht: Dieser Bezugspunkt springt potentialmäßig in Bezug auf den Neutralleiter/das "Erdpotential"!

(in der von Dir angehängten Batterieabschaltung sind P-FET verwendet)
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ESDKittel,

du hast recht, ich bin mit den ganzen N- und P-Kanal FETs durcheinander gekommen. Ich habe jetzt mal ein paar Tage Ruhe walten lassen und die Schaltung am Wochenende in Ruhe gezeichnet:
ESDKittel_Vorschlag_SP.png
Und dann auch auf Lochraster aufgebaut:
ESDKittel_Vorschlag_Top.jpg
ESDKittel_Vorschlag_Bottom.jpg
Leider kommt am Kondensatornetzteil exakt 0 V raus. Ich habe schon alle Verbindungen geprüft und auch durchgemessen. Die Werte der Bauteile habe ich auch nachgemessen. Ich konnte sogar die Body-Diode des FET V2 zur Sicherung messen. (Uf ca. 500 mV). Also sollte eigentlich alles funktionieren... sollte...

Ich habe einen Trenntrafo, habe aber doch sehr großen Resepekt vor dieser Spannung. Ein Oszi ist vorhanden. Wie würdet ihr mit der Fehlersuche beginnen? Hier z.B. mal das Messbild des Knotenpunkt R2 / V4 / V5 in Bezug auf die Masse:
ESDKittel_Messung.jpg
Das schaut meiner Meinung nach gut aus? Warum kann ich dann trotzdem keine 12 V an der Z-Diode messen?

Viele Grüße
Andreas
Benutzeravatar
ESDKittel
Beiträge: 3153
Registriert: Fr 23. Aug 2013, 13:18

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ESDKittel »

V5 ist falschrum eingezeichnet.
Benutzeravatar
Bastelbruder
Beiträge: 11560
Registriert: Mi 14. Aug 2013, 18:28

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bastelbruder »

Wenn V5 umgekehrt gepolt wird und das untere Ende an der (hektischen) Masse liegt, könnte was draus werden. Bloß umpolen führt zu magic smoke.

Gaanz sauber ist das mit dem Kondensatornetzteil nicht, es könnte nämlich sein daß die Mimik den Arsch nicht hochkriegt, wenn irgendwas an den 12 Volt saugt. Da muß die Versorgung durch die 3x330 k erstmal hergestellt werden. Richtig funktioniert das mit dem Kondenstor bloß, wenn der linke FET eingeschaltet ist.

Soll da eigentlich noch ein Kleinhirn mitversorgt werden?
Benutzeravatar
ESDKittel
Beiträge: 3153
Registriert: Fr 23. Aug 2013, 13:18

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ESDKittel »

In der Tat, da ist mir auf die Schnelle ein Strompfad entgangen :oops:.
Seinerzeit hatte ich das mit Einweggleichrichtung und ohne Vorschaltkondensator gelöst.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Guten Morgen,
ESDKittel hat geschrieben:V5 ist falschrum eingezeichnet.
:shock: :? :oops: Oh Mann! Langsam wird es echt peinlich für mich. Analog und Wechselspannung ist einfach nicht meine Welt. Ich dachte, ich bringe diesen "Leistungsteil" schnell hinter mich und kann mich dann gemütlich auf die Software konzentrieren.

Ich habe die Diode schnell umgedreht und das Netzteil läuft natürlich.
Bastelbruder hat geschrieben:Gaanz sauber ist das mit dem Kondensatornetzteil nicht, es könnte nämlich sein daß die Mimik den Arsch nicht hochkriegt, wenn irgendwas an den 12 Volt saugt.
Ich habe jetzt mal 500 Ohm dran gehängt (ca. 24 mA, was ich mir so an benötigten Strom vorgestellt habe) und die Schaltung ein paar mal Ein- und Ausgeschaltet. Es scheint zu funktionieren. Die Schaltung wird später vermutlich dauerhaft versorgt. Das genügt mir also erst mal.
Bastelbruder hat geschrieben:Soll da eigentlich noch ein Kleinhirn mitversorgt werden?
Ja. Die Steuerung verlangt derzeit ca. 19 mA @ 5 V. Und ich brauche noch ein paar wenige mA @ 12 V. Dieser Wert ist mir aber derzeit noch nicht bekannt und sollte erst später, wenn der Teil mit dem Dimmer läuft ermittelt werden. Aktuell habe ich noch einen Linearregler für die 5 V verbaut. Ich überlege aber einen kleinen Schaltregler zu spendieren, um die Versorgung des Kleinhirns auf ca. 10 mA @ 12 V zu bringen. Somit bleiben mir ca. 14 mA, was sich erst mal gut "anfühlt".



Die Schaltung hat allerdings das gleiche Problem wie meine erste: Die Lampe bleibt an Wenn ich die Schaltung so einschalte, wie gezeichnet (mit V5 richtig herum) geht brav die Lampe an. Wenn ich allerdings Pin 3 von X2 auf Masse ziehe passiert nichts.

Wenn ich die Schaltung allerdings bereit mit Pin 3 von X2 auf Masse einschalte bleibt die Lampe auch aus. Wenn ich dann Pin 3 "freigebe", geht die Lampe an (meiner Meinung nach wieder leicht verzögert). Lässt sich dann aber wieder nicht mit Masse an Pin 3 ausschalten.

C3 ist übrigens derzeit nicht bestückt. Der soll laut ELV-Beispiel zur EMV-Verhinderung dienen, indem das Gate "langsam" ausgeschaltet wird. Aber ist wie gesagt derzeit nicht bestückt.

Viele Grüße
Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Nachtrag:
Bastelbruder hat geschrieben:und das untere Ende an der (hektischen) Masse liegt[/u


Das habe ich jetzt doch glatt schon wieder übersehen... Ich werde das dann mal umsetzen.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

So, ich habe erneut den Lötkolben geschungen. Zuerst einmal zur Sicherheit, dass wir alle von der gleichen Schaltung sprechen habe ich den Schaltplan mal wie folgt aktualisiert. So habe ich eure Vorschläge verstanden:
ESDKittel_Vorschlag_V2.png
ESDKittel_Vorschlag_V2.png (9.28 KiB) 1776 mal betrachtet
Bastelbruder hat (wie immer) recht: Das Netzteil kriegt seinen Arsch nicht hoch, vor allem nicht wenn die Lampe aus ist. Mehr noch, wenn ich die Lampe ausschalte bricht die Spannung ebenfalls zusammen.

Wer hat eine noch eine Idee zur Rettung dieser Idee?

Viele Grüße
Andreas
Sir_Death
Beiträge: 3446
Registriert: Mo 11. Mai 2015, 22:36
Wohnort: südlich von Wien

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Sir_Death »

So was da läuft seit ca. 4 Jahren problemlos in einem Luftentfeuchter, nachdem das Kondensatornetzteil nicht mehr wollte:
https://www.electrodragon.com/product/a ... 12v-800ma/

- wobei jetzt kommt sicher gleich jemand, der mit erklärt, dass die Schutzabstände grottig sind. - Mir in dem Fall egal, da das Gerät Schutzisoliert ist - mehr als dass das Kleinhirn geröstet wird, kann mir nicht passieren.
E_Tobi
Beiträge: 641
Registriert: Mo 12. Aug 2013, 22:26

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von E_Tobi »

Evtl. so? Oder sieht jemand einen Fehler der mir entgangen ist...
Unbenannt.PNG
Müsste eigentlich von 0% bis 100% sauber funktionieren, einer der beiden Zweige liefert immer, egal welche Stromrichtung...
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo,

ich hätte noch einen weiteren Vorschlag mit Optokoppler. Die Idee schirrt mir schon seit über einer Woche im Kopf, ich habe diese aber immer verworfen, da die Optokoppler-LED meiner Meinung nach zuviel Strom benötigt. Andererseits ist damit wieder ein Kondensatornetzteil mit Brückengleichrichter möglich, also wesentlich effektiver:
Netzteil_Dimmer_Optokoppler.png
Was ist davon zu halten? Rentiert sich es das mal aufzubauen und zu "spielen" mit wie wenig Strom die LED den Optokoppler noch durchschaltet?

Viele Grüße
Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Guten Morgen,

ich wollte mal kurz Erfolg vermelden. Meine Schaltung mit dem Optokoppler scheint zu laufen. Jetzt muss ich erst mal ein Stück Software schreiben, um die passenden Ausschalt-Zeitpunkte zu haben und dann weiß ich mehr.

Viele Grüße
Andreas
Benutzeravatar
Weisskeinen
Beiträge: 3950
Registriert: Di 27. Aug 2013, 16:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Weisskeinen »

Postest du den ganzen Schaltplan und den Code dann auch hier? Ich habe mir nämlich schon mehrfach einen Ast gesucht nach einer Selbstbauanleitung für einen Phasenabschnittsdimmer und war immer erfolglos. Deshalb hätte ich da gesteigertes Interesse dran...

Edit: Weißt du schon, wie du die Nulldurchgangserkennung machen willst?
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo Weisskeinen,

der Schaltplan ist ja quasi schon online und die Software sollte nicht sehr aufwändig sein. Man muss ja nur beim Nulldurchgang einschalten und dann je nach Dimmwert wieder abschalten.

Die Nulldurchgangs-Erkennung ist im Schaltplan im ersten Post bereits zu sehen. Sie besteht aus R1, R2, R31, C17, V3 und R17. Diesen Schaltungsteil habe ich bereits getestet und sie funktioniert einwandfrei. Sie liefert zwar nur einen Nulldurchgang pro Sinuswelle (nicht zwei), aber den fehlenden kann man sich leicht errechnen.

Bei den Widerständen mache ich aus Angst immer 3 in Reihe, da ich nicht weiß welche Spannungsfestigkeit meine hier haben. Anstatt R1, R2 und R31 kannst du auch einfach 1x 1 Megaohm nehmen.

Viele Grüße
Andreas
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Guten Morgen,

ich habe mal Fotos vom Signal der Nullspannungs-Erkennung gemacht:
Zero_voltage_detection.jpg
und ein Zoom vom Nulldurchgang:
Zero_voltage_detection_zoom.jpg
Meiner Meinung nach einwandfrei, um zu dimmen. Man kann sogar beide Flanken nutzen, nicht wie gestern von mir geschrieben. Mein Satz, dass nur eine Halbwelle zu erkennen ist war in der ELV-Schaltungsbeschreibung begründet, von der ich meine "Inspiration" habe. Dort wird nämlich der Nulldurchgang von der "gedimmten" Netzspannung erzeugt. Deshlab ist davon auch nur eine Flanke tatsächlich verwendbar. Da ich aufgrund des Kondensatornetzteils eh einen N auf der Platine habe, habe ich dieses Problem nicht.

Die gleiche Schaltung verwende ich auch als Detection des 230V-Tasters.

Viele Grüße
Andreas
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Es sei hierbei angemerkt, dass bei reaktiver Last (das kann auch kapazitiv sein!) der Nulldurchgang des Stromes/der Spannung über dem Dimmer nicht mit dem Nulldurchgang vom Stromnetz zusammenfällt.
Wenn man nicht bei Nullspannung über dem Dimmer einschaltet, führt man das ganze Konzept ad absurdum (Man kann eben keine kapazitiven Lasten mehr regeln stellen).
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ferdimh,

vielen Dank für deinen Einwand. Das bedeutet, dass ich meinen Nulldurchgang doch nicht über L/N messen sollte, sondern über L Ausgang zur Lampe und N?

Ich habe mich mal etwas Software geschrieben und zuerst mit einem Frequenzgenerator @ 50 Hz auf grobe Fehler überprüft und dann mal versucht zu dimmen. Klappt natürlich nicht, obwohl die Ausgangsspannung gut aussieht. (blau = Netz, gelb = gedimmt). Das kann aber auch an meiner LED liegen. Ich muss wohl mal eine Glühlampe rauskramen:
Dimm.jpg
Wie stellt man eigentlich solche Spannungen mit dem Oszi ordentlich dar? 50 V / Div. ist die größte Einheit, die ich einstellen kann. Sollte ich noch mal einen Spannungsteiler vorschalten zum messen?

Viele Grüße
Andreas
Benutzeravatar
Weisskeinen
Beiträge: 3950
Registriert: Di 27. Aug 2013, 16:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Weisskeinen »

Bei einer reaktiven Last ist das einschalten beim Spannungs-Nulldurchgang doch gar nicht so schlimm, wenn ich das richtig sehe. Das Abschalten bei Spannung und Strom dürfte da schon unschöner sein, weil gerade eine induktive Last die Spannung am FET hochschnellen lässt. Da muss man auch noch was gegen unternehmen...
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Nein.
Ein PhasenABschnittsdimmer ist nunmal für das Dimmen induktiver Lasten prinzipbedingt völlig ungeeignet. Ebenso, wie ein PhasenANschnittsdimmer keine kapazitiven Lasten verträgt.
Einen Tod muss man hier sterben.
Wenn wir annehmen, dass das Ding für kapazitive Lasten da ist, wird auf einmal der Einschaltzeitpunkt kritisch.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Guten Morgen ferdihm,

über das Problem mit dem Anschnittsdimmer habe ich gestern bereits nachgedacht. Es sollte bei meiner Schaltung einfach zu lösen sein: Ich kann in der Software einfach den Ausgang invertieren und schon habe ich einen Phasenanschnittsdimmer. Das könnte man konfigurierbar per Jumper oder Dipswitch machen... Oder man findet eine Lösung die Last zu erkennen. ;-)
ferdimh hat geschrieben: Wenn wir annehmen, dass das Ding für kapazitive Lasten da ist, wird auf einmal der Einschaltzeitpunkt kritisch.
Und wie könnte man das lösen?

Viele Grüße
Andreas
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Naja, darauf bezieht sich ja die ganze Sache mit der Nulldurchgangserkennung (denn da wird nun mal eingeschaltet). Bei Gleichrichter-Elko-Lasten ist der Netznulldurchgang schon ok , wenn da noch signifikante Kapazität am Eingang sitzt, muss man halt dann einschalten, wenn die Spannung über dem Schaltelement Null ist. Ich würde das vermutlich so angehen:
Über den FET kommt ein großer Widerstand (sagen wir 470k). Wenn nach dem Ausschalten die Spannung wieder unter eine bestimmte Schwelle fällt (5V oder so) wird wieder eingeschaltet.
Man verliert hier halt die Information, wenn man ganz voll aufdreht; es ist also zweckmäßig, "Vollgas" auf 95% oder so zu begrenzen.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Ok, ich habe geplant einen ATmega168 als Controller zu nutzen. Der hat einen analog-Komperator "onboard". Damit könnte man das mit einem Spannungsteilern einfach realisieren. Blöd ist allerdings, dass ich durch das Kondensatornetzteil die Masse des Dimmers und der restlichen Schaltung trennen musste. Wenn ich es aber richtig verstehe, sollte das aufgrund der beiden Brückengleichrichter keine große Rolle spielen, muss aber darüber noch mal nachdenken.

Was ich noch nicht genau verstanden habe ist, wo du den 470k geplant hast. Was meinst du mit "über den FET"?
Mal angenommen die Massen wären verbunden, dann hätte ich einen Spannungsteiler vom Drain des FET auf Masse verstanden?

Viele Grüße
Andreas
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Genau das hatte ich gemeint. Fet-Source wird hoffentlich Controllermasse sein.
Wenn dann der Drain niedrig genug ist, kann man gefahrarm einschalten.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo ferdimh,

das ist genau das Problem, dass ich am Anfang meines letzten Posts beschrieben habe. Die Masse ist NICHT verbunden, da sonst keine stabile Kombination auf Dimmer und Kondensatornetzteil möglich war. "Galvanische Trennung" erledigt jetzt der Optokoppler. Aber wie bereits geschrieben bin ich mir nicht sicher, ob die beiden "Massen" nicht doch durch Diodenstrecken irgendwie verbunden sind. Das Nachdenken darüber hat bisher aber noch keine Ergebnisse gebracht.

Aber ich habe etwas über die Realisiserung nachgedacht und etwas gerechnet. Der Eingangswiderstand des onboard-Komperators beträgt 100 MOhm, ist also vernachlässigbar. Ein Eingang des Komperators kann mit der internen Bandgap-Referenzspannung von 1,1 V verbunden werden. Daraus ergibt sich folgender Spannungsteiler mit zusätzlicher Z-Diode als Schutz des Controller-Pins:
Dimmer_Netzteil_Optokoppler_2.png
Die Null-Spannungs-Erkennung habe ich zur Übersichtlichkeit auch mal dazu gezeichnet. (oben)

Der Komperator sollte mit diesem Spannungsteiler bei ca. 4,9 V über Controller-Masse triggern. Aber was mache ich dann mit diesem Trigger? Über die Nullspannungs-Erkennung kann ich die Perioden dauer der Netzspannung ermitteln. Und dann schalte ich bei Trigger des Komperators ein. Und dann wie lange? So lange wie eine gemesse Halbwelle, oder bis zum nächsten Null-Durchgang?

Oder sollte ich die Netzfrequenz über diesen Komperatur-Eingang messen und nicht ganz auf 100 % dimmen, wie von dir vorgeschlagen? Ich glaube darurch wid sich irgendwas ganz schön verschieben. :?: Irgendwas habe ich an diesem Konzept noch nicht richtig verstanden.

Viele Grüße
Andreas
Benutzeravatar
ferdimh
Beiträge: 9429
Registriert: Fr 16. Aug 2013, 15:19

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von ferdimh »

Oh. den Plan hatte ich noch garnicht gesehen. Oder zumindest nicht geistig verarbeitet.
Hier ergibt sich aber auch eine Möglichkeit:
Du hast eine BlackBox, die zwischen L und Lampe hängt (MOSFET mit Zeug) und eine, die zwischen L und N hängt (Netzteil mit Nulldurchgangserkenner).
Wenn du letztere umdrehst (L und N vertauschst), kannst du den Nulldurchgang auch zwischen L und Lampe detektieren.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Phasenabschnittsdimmer mit Kondensatornetzteil

Beitrag von Bumbum »

Hallo,

wieder mal ein Update von mir nach etwas längerer Zeit. Ich habe ewig ein Problem gesucht, und endlich gefunden. Die Dimmung hat grundsätzlich funktioniert. Auch die Umschaltung zwischen An- und Abschnitt. Allerdings hatte ich sehr viel flackern in der Lampe. Die Messung mit dem Oszi hat bestätigt, dass bereits die Ansteuerung ab und zu für eine Halbwelle auf High oder Low bleibt. Für mich war das eindeutig ein Software-Fehler, da ich direkt am AVR-Pin gemessen habe. Ich habe tagelang versucht den Fehler zu finden und es war keiner da. :roll:
Der AVR-Pin hat einen Weg bekommen, vermutlich bei einem der vielen Versuche bei dem etwas in der Schaltung den Magic Smoke abgelassen hat. Ärgerlicheweise hat der Pin grundsätzlich funktioniert und nur so ca. jede 100. bis 500. Halbwelle etwas anderes gemacht als die Software ihm befahl.

Deshalb poste ich hier auch wie angefragt die Software bisher. Sie ist noch nicht ganz Stör-Unanfällig. Wenn z.B. ein anderer Verbraucher am Netz eine Spitze erzeugt kommt es vor, dass ein weiterer Nulldurchgang detektiert wird. Dies habe ich versucht zu umgehen, indem ich die Plausibilität der Halbwelle prüfe. Dadurch konnte ich dann erfolgreich das Aufblitzen der Lampe verhindern, wenn ein anderer Verbraucher Müll ins Netz wirft, ohne weitere Bauteile zu verwenden. Allerdings werden aktuell dadurch zwei Halbwellen keine Zündimpulse generiert. Die Lampe wird also kurz dunkler. Das ist zwar wesentlich besser, als ein aufblitzen, aber die Ursache werde ich schon noch finden...

Der nächste Plan ist jetzt erst mal den erwähnten Schaltregler für die Erzeugung der 5V zu ergänzen. Dadurch erhoffe ich mir eine stabiliere Versorung des Controllers. Der stürzt nämlich bei Störungen im Netz auch ab, was ich von den Atmels überhaupt nicht gewohnt bin. Durch den Schaltregler erhoffe ich mir eine bessere Filterung der VCC.

Viele Grüße
Andreas


Code: Alles auswählen

/**
Target:	ATmega168	@ 16 MHz


IOs:

PB0		frei
PB1		frei
PB2		frei		(war OC1B Ansteuerung PWM-Transistor)
PB3		MOSI
PB4		MISO
PB5		SCK	

PC0		frei
PC1		frei
PC2		frei
PC3		frei
PC4		frei
PC5		frei

PD0		frei
PD1		frei
PD2		INT0		Schalter-Eingang
PD3		INT1		Nullgangs-Erkennung
PD4		frei
PD5		OUT			Ansteuerung PWM-Transistor Phasenabschnitt
PD6		frei
PD7		frei



Timer 0:	100 Hz für allgemeine Zeitmessung
			Prescaler: 1024



Timer 1:	PWM-Steuerung und Messung der Periodendauer
			OCR1A schaltet den PWM-Pin
			OCR1B ist ein Timeout für die Messung der Periodendauer

			Timer wird synchronisiert auf Netz-Sinus (Reset des Timer-Stands bei Null-Durchgang)
			
			Annahme Netz-Sinus: 50 Hz						--> Periodendauer:			20 ms
															--> Clocks pro Periode:		320000		(@ FCPU = 16000000)
			da aber jede Halbwelle gesteuert wird (100 Hz)	--> Clocks pro Halbwelle:	160000		(@ FCPU = 16000000)
			Maximale Timer-Auflösung (16 Bit): 65536		--> Prescaler minimum:		2,44		(@ FCPU = 16000000)
															
															--> Prescaler:				8
															--> Timer-Frequenz:			2 MHz
															
															--> Ticks pro Periode:		40000
			Annahme Netz-Sinus: 50 Hz						--> Ticks pro Halbwelle:	20000

			Annahme Netz-Sinus: 60 Hz 						--> Periodendauer:			16,66 ms
															--> Clocks pro Periode:		266666		(@ FCPU = 16000000)
															--> Clocks pro Halbwelle:	133333		(@ FCPU = 16000000)
															--> Prescaler minimum:		2,03		(@ FCPU = 16000000)
															
															--> Ticks pro Periode:		33333
															--> Ticks pro Halbwelle:	16666
**/



#define AVRGCC 

#include <avr/io.h>
#include <avr/sleep.h>
#include <util/atomic.h>
#include <compiler.h>



#define Taster_Entprellung							5								// * 10 ms
#define Taster_min_duration							3								// * 10 ms
#define Taster_dimm_duration						100								// * 10 ms
#define Taster_dimm_speed							3								// * 10 ms pro %-Step
#define Taster_doppel_tip_intervall					80								// * 10 ms

#define Halbwellendauer_min							15000							// ca. 66 Hz
#define Halbwellendauer_max							21500							// ca. 45 Hz
#define Halbwellendauer_init						20000							// 50 Hz Standard-Wert
#define Halbwellendauer_timeout						2000							// Timeout, falls kein Nulldurchgang erkannt wird
#define Halbwellendauer_Entprellung					100
#define Netzfrequenz_min							45



#define Lampe_off									PORTD = (PORTD | (1<<PD5))
#define Lampe_on									PORTD = ~(~PORTD | (1<<PD5))




#define Halbwellendauer_buffer_size					32
#define Halbwellendauer_buffer_divisor				5




typedef struct sSetup
{
	U8		Taster_brightness_min;
	U8		Taster_brightness_max;
	bool	Taster_is_Schalter;
	bool	Taster_direct_control;
	
	U8		Lampe_brightness_min;
	U8		Lampe_brightness_max;
	U8		Lampe_power_on_brightness_min;
	U8		Lampe_power_on_duration;

	bool	Dimmer_mode_Abschitt;
} tSetup;




typedef struct sDevice_state
{
	bool	Taster_state;
	U8		Taster_value;
	bool	Taster_value_changed;
	
	bool	Lampe_state;
	bool	Lampe_last_state;
	U8		Lampe_value;
	U8		Lampe_power_on;
} tDevice_state;



volatile			tSetup							setup;
volatile			tDevice_state					state;

volatile			U8								Sekunden_precounter									= 0;

volatile			U8								Taster_last_detection								= 0xFF;
volatile			U8								Taster_duration										= 0;
volatile			U8								Taster_dimm_timer									= 0;
volatile			bool							Taster_dimm_direction								= TRUE;					
volatile			U8								Taste_last_tip										= 0xFF;

volatile			U16								Lampe_PWM_value										= 0;

volatile			U8								Netzfrequenz_counter								= 0;
volatile			U8								Netzfrequenz										= 0;

volatile			bool							Halbwelle_was_timeout								= TRUE;
volatile			U16								Halbwellendauer_current								= 0;
volatile			U16								Halbwellendauer_last								= 0;
volatile			U16								Halbwellendauer_buffer[Halbwellendauer_buffer_size];
volatile			U8								Halbwellendauer_buffer_pointer						= 0;
volatile			U16								Halbwellendauer										= Halbwellendauer_init;



ISR (TIMER0_COMPA_vect)																// Timer 0 output compare A (ca. 100 Hz)
{
	Sekunden_precounter++;
	if (Sekunden_precounter == 100)
	{
		Sekunden_precounter = 0;

		Netzfrequenz = Netzfrequenz_counter>>1;										// gezählte Netzfrequenz übernehmen...
		Netzfrequenz_counter = 0;													// und neue Zähung starten
	}



	if (state.Lampe_power_on < 0xFF)												// Lampe-Power-On Dauer zählen
		state.Lampe_power_on++;



	if (Taste_last_tip < 0xFF)
		Taste_last_tip++;

	if (Taster_last_detection < 0xFF)
		Taster_last_detection++;
	
	bool Taster_aktiv = (Taster_last_detection <= 2);
	


	if (setup.Taster_is_Schalter)
	{
		state.Taster_state = Taster_aktiv;											// Bei Schalter-Modus einfach den Wert direkt übernehmen:
	}
	else																			// ansonsten Taster auswerten:
	{
		if (Taster_aktiv)
		{																			// wenn Taster betätigt:
			if (Taster_duration < 0xFF)												// ...dann Betätigungs-Zeit zählen
				Taster_duration++;
	
			if (Taster_duration >= Taster_dimm_duration)							// Taster lange genug gedrückt zum dimmen?
			{
				if (Taster_dimm_timer >= Taster_dimm_speed)							// Dimm-Geschwindigkeit einhalten
				{
					Taster_dimm_timer = 0;
				
					if (Taster_dimm_direction)										// Dimm-Schritt Berechnung
					{
						state.Taster_value++;										// Heller
						if (state.Taster_value >= setup.Taster_brightness_max)		// Bei Überlauf Dimm-Richtung ändern
						{
							state.Taster_value = setup.Taster_brightness_max;
							Taster_dimm_direction = FALSE;
						}
					}
					else
					{
						state.Taster_value--;										// Dunkler
						if (state.Taster_value <= setup.Taster_brightness_min)		// Bei Überlauf Dimm-Richtung ändern
						{
							state.Taster_value = setup.Taster_brightness_min;
							Taster_dimm_direction = TRUE;
						}
					}

					state.Taster_state = TRUE;										// Auf jeden Fall Status auf "Ein", wenn gedimmt wird
				}
				else
					Taster_dimm_timer++;											// Dimm-Geschwindigkeits-Timer weiterzählen
			}
		}
		else																		// Taster wurde losgelassen:
		{
			if (Taster_last_detection == Taster_Entprellung)						// Schalter lange genug losgelassen (Entprellung)?
			{
				if (Taster_duration >= Taster_min_duration)							// Kurze Impulse ignorieren (ebenfalls Entprellung)
				{
					if (Taster_duration < Taster_dimm_duration)						// Taster war kurz getippt?
					{
						if (Taste_last_tip <= Taster_doppel_tip_intervall)			// dann prüfen, ob letzter kurzes Tipp im Doppel-Tipp-Intervall ist?
						{
							state.Taster_state = TRUE;								// wenn ja, dann Status auf "Ein" mit voller Helligkeit:
							state.Taster_value = setup.Taster_brightness_max;

							Taste_last_tip = 0xFF;
							Taster_dimm_direction = FALSE;
						}
						else
						{
							state.Taster_state = !state.Taster_state;				// wenn kein Doppel-Tipp, dann einfach Zustand wechseln:

							Taste_last_tip = 0;										// Timer für Doppel-Tipp erkennung starten
						}
					}
					else
						Taster_dimm_direction = !Taster_dimm_direction;				// Taster war lange gedrückt (Dimmen) --> Dimm-Richtung umkeheren für nächsten Dimm-Vorgang
				}

				Taster_duration = 0;												// Tastdauer zurücksetzen
			}
		}
	}
}




ISR (INT0_vect)																		// INT0 (Taste-Eingang, kommt bei Betätigung 100x pro Sekunde)
{
	Taster_last_detection = 0;
}




ISR (INT1_vect)																		// INT1 (Null-Durchgang Netzspannung)
{
	if (Halbwelle_was_timeout)
		Halbwellendauer_current = 0;												// Bei Timeout, Halbewellen-Dauer verwerfen
	else
		Halbwellendauer_current = TCNT1;											// ansonsten Halbwellen-Dauer festhalten



																					// PWM-Timer (Timer1) steuern:
	TCNT1 = 0;																		// Timer auf Null-Durchgang synchronisieren
	TIFR1 = (1<<OCF1B) | (1<<OCF1A);												// OCR1A und OCR1B zurücksetzen, falls noch welche anstehen
	OCR1A = Lampe_PWM_value;														// neuen PWM-Wert übernehmen
	OCR1B = Halbwellendauer + Halbwellendauer_timeout;								// neuen Timeout übernehmen


	
	bool Halbwellendauer_plausibel = (!Halbwelle_was_timeout && (Halbwellendauer_current >= Halbwellendauer_min) && (Halbwellendauer_current <= Halbwellendauer_max));

	if (!Halbwellendauer_plausibel && !Halbwelle_was_timeout)						// wenn Halbwellendauer unplausibel, dann letzte Dauer mit einbeziehen (um Störimpulse zu ignorieren):
	{




// Funktioniert noch nicht.



		U16 Halbwellendauer_temp = Halbwellendauer_current + Halbwellendauer_last;	// vermutliche Halbwellendauer ohne Störimpuls berechnen
		if ((Halbwellendauer_temp >= Halbwellendauer_min) && (Halbwellendauer_temp <= Halbwellendauer_max))
		{
			Halbwellendauer_current = Halbwellendauer_temp;							// wenn neue Dauer plausibel, dann übernehmen
			Halbwellendauer_plausibel = TRUE;
		}
	}

	
	
	if (Halbwellendauer_plausibel)
	{
		if (setup.Dimmer_mode_Abschitt)
		{
			if (state.Lampe_state)													// Wenn Lampe an bei Phasen-Abschnitts-Modus, dann Lampe einschalten
				Lampe_on;
		}
		else
			Lampe_off;																// Bei Phasenanschnitt Lampe im Null-Durchgang auf jeden Fall ausschalten

		Netzfrequenz_counter++;

		Halbwellendauer_last = 0;
	}
	else
		Halbwellendauer_last = Halbwellendauer_last + Halbwellendauer_current;		// Wenn Halbwellendauer unplausibel, dann Dauer addieren


																					
	Halbwelle_was_timeout = FALSE;													// Neue Messung, also Timeout-Flag zurücksetzen	
}




ISR (TIMER1_COMPA_vect)																// Timer 1 output compare A (PWM-Wert der Lampe erreicht)
{
	if (setup.Dimmer_mode_Abschitt)
		Lampe_off;																	// bei Phasenabschnitt Phasenabschnitt Lampe ausschalten
	else
	{
		if (state.Lampe_state)														// Bei Phasenanschnitt und wenn Lampe an, dann jetzt einschalten:
			Lampe_on;
	}
}




ISR (TIMER1_COMPB_vect)																// Timer 1 output compare B (Timeout erreicht, Halbwelle zu lang)
{
	Lampe_off;
	Halbwelle_was_timeout = TRUE;
}




int main (void)
{
	DDRB 	= 0b00000111;															// IOs konfigurieren und initialisieren:
	PORTB	= 0b11111111;

	DDRC 	= 0b00000000;
	PORTC	= 0b11111111;

	DDRD 	= 0b00100010;
	PORTD	= 0b11110010;




	EICRA	= (1<<ISC10) | (1<<ISC00);												// steigende und fallende Flanke für INT0 und INT1 konfigurieren
	EIMSK	= (1<<INT1) | (1<<INT0);												// INT0 und INT1 aktivieren




																					// Timer 0 konfigurieren (CTC-Mode 2)
	TCCR0A	= (1<<WGM01);															// CTC-Mode 2, normal port operation
	TCCR0B	= (1<<CS02) | (1<<CS00);												// CTC-Mode 2, Prescaler auf 1024
	OCR0A	= (F_CPU / 1024l / 100l);												// output compare A auf 100 Hz
	TIMSK0	= (1<<OCIE0A);															// output compare A Interrupt aktivieren


																					// Timer 1 konfigurieren (Mode 0)
	TCCR1A	= 0;																	// Mode 0, normal port operation
	TCCR1B	= (1<<CS11);															// Mode 0, PreScaler auf 8
	TCCR1C	= 0;
	TIMSK1	= (1<<OCIE1A) | (1<<OCIE1B);											// output compare A und B Interrupt aktivieren

	OCR1A	= 0;																	// PWM-Position setzen (0%)
	OCR1B	= Halbwellendauer + Halbwellendauer_timeout;							// Maximal-Wert (Halbwellen-Dauer) initialisieren




	for (U8 i1 = 0; i1 < Halbwellendauer_buffer_size; i1++)							// Perioden-Dauer Durchschnitts-Buffer initialisieren
		Halbwellendauer_buffer[i1] = Halbwellendauer;


		
	setup.Taster_brightness_min = 10;
	setup.Taster_brightness_max = 100;
	setup.Taster_is_Schalter = FALSE;
	setup.Taster_direct_control = TRUE;
	
	setup.Lampe_brightness_min = 20;
	setup.Lampe_brightness_max = 100;

	setup.Lampe_power_on_brightness_min = 30;
	setup.Lampe_power_on_duration = 50;

	setup.Dimmer_mode_Abschitt = TRUE;



	state.Taster_state = FALSE;
	state.Taster_value = 30;

	state.Lampe_state = FALSE;
	state.Lampe_value = 30;
	state.Lampe_power_on = 0;



	
	Lampe_off;

	_delay_ms (100);
	
	sei ();																			// Interrupts aktivieren




	while (1)
	{
		if (state.Taster_value < setup.Taster_brightness_min)						// Taster-Werte auf Grenzen prüfen und ggf. korrigieren:
			state.Taster_value = setup.Taster_brightness_min;
		if (state.Taster_value > setup.Taster_brightness_max)
			state.Taster_value = setup.Taster_brightness_max;

		if (setup.Taster_direct_control)											// wenn der Taster die Lampe direkt steuert, dann Werte übernehmen:
		{
			state.Lampe_state = state.Taster_state;
			state.Lampe_value = state.Taster_value;
		}

		if (state.Lampe_value < setup.Lampe_brightness_min)							// Lampen-Werte auf Grenzen prüfen und ggf. korrigieren
			state.Lampe_value = setup.Lampe_brightness_min;
		if (state.Lampe_value > setup.Lampe_brightness_max)
			state.Lampe_value = setup.Lampe_brightness_max;




		if (state.Lampe_state && !state.Lampe_last_state)							// Wurde die Lampe eingeschaltet?
			state.Lampe_power_on = 0;												// dann Power-On-Timer der Lampe starten
		state.Lampe_last_state = state.Lampe_state;




	
		U16 Halbwellendauer_new;
		ATOMIC_BLOCK (ATOMIC_FORCEON)
		{
			Halbwellendauer_new = Halbwellendauer_current;
			Halbwellendauer_current = 0;
		}

		if ((Halbwellendauer_new >= Halbwellendauer_min) &&							// gemessene Halbwellen-Dauer plausibel?
			(Halbwellendauer_new <= Halbwellendauer_max))
		{																			// dann Halbwellen-Dauer im Glättungs-Buffer ablegen:
			Halbwellendauer_buffer[Halbwellendauer_buffer_pointer] = Halbwellendauer_new;
			Halbwellendauer_buffer_pointer++;
			if (Halbwellendauer_buffer_pointer >= Halbwellendauer_buffer_size)
				Halbwellendauer_buffer_pointer = 0;
		
			U32 temp = 0;															// Neue Durchschnitts-Perioodendauer berechnen
			ATOMIC_BLOCK (ATOMIC_FORCEON)
			{
				for (U8 i1 = 0; i1 < Halbwellendauer_buffer_size; i1++)
					temp = temp + Halbwellendauer_buffer[i1];
				temp = temp>>Halbwellendauer_buffer_divisor;						// Durchschnitt berechnen
				ATOMIC_BLOCK (ATOMIC_FORCEON)
				{
					Halbwellendauer = temp;
				}
			}
		}



		U32 PWM_value = state.Lampe_value;											// Neuen PWM-für Lampe Wert berechnen:

		if ((state.Lampe_power_on < setup.Lampe_power_on_duration) &&				// Ist die Lampe noch in Power-Up-Zeit?
			(PWM_value < setup.Lampe_power_on_brightness_min))						// und die Helligkeit kleiner als die minimale Power-Up Helligkeit?
			PWM_value = setup.Lampe_power_on_brightness_min;						// dann Mindest-Helligkeit übernehmen




		if (!setup.Dimmer_mode_Abschitt)											// Bei Phasenanschnitt wird der Zeitpunkt "von hinten" angenommen
			PWM_value = setup.Lampe_brightness_max - PWM_value;
			
		PWM_value = PWM_value * (U32)Halbwellendauer;
		PWM_value = PWM_value / (U32)setup.Lampe_brightness_max;
		
		if (Lampe_PWM_value != PWM_value)											// Wert nur übernehmen, wenn er sich auch geändert hat:
		{
			ATOMIC_BLOCK (ATOMIC_FORCEON)
			{
				Lampe_PWM_value = PWM_value;
			}
		}
	}

	return (0);}
Antworten