Arduino AC Dimmer

In der Gleichstromtechnik kann man mit einem MOSFET und mit PWM die Leistung einer Lampe oder die Drehzahl von einem Motor regeln. Genau solche Dimmer kann man auch in der Wechselstromtechnik bauen, allerdings nicht mit einem MOSFET, sondern mit einem TRIAC. Neben diesem Bauteil wird aber noch einiges mehr an Elektronik benötigt und da es sich hier um Wechselstrom handelt, muss eine galvanische Trennung von der AC-Seite auf die DC-Seite bzw. zum Steuerkreis vom Mikrocontroller sichergestellt sein. In diesem Artikel zeigen wir, wie ein Dimmer bzw. Leistungsregler für das 230V Wechselstromnetz gebaut wird.

Achtung: Diese Schaltung enthält Netzspannung! Bei unsachgemäßer Handhabung besteht die Gefahr von Stromschlägen, Kurzschlüssen sowie Brandgefahr. Wir empfehlen, die Schaltung gegen Überstrom abzusichern und die Verwendung eines Trenntrafos.

Was kann man mit dieser Schaltung regeln?

Grundsätzlich können nur rein ohmsche und induktive Lasten gesteuert werden. Dazu gehören normale Glühbirnen, Halogenbirnen und dimmbare LED-Lampen. Außerdem kann die Schaltung auch kleinere Elektromotoren wie z. B. in Tischventilatoren oder kleinen Wasserpumpen vorkommen steuern. Als Regler für kleine Heizungen kann der Dimmer auch verwendet werden, aber durch die hohen Ströme kommt hier der TRIAC schnell an seine Grenzen. Wie auch bei handelsüblichen Dimmern kann man hier keine Energiesparlampen oder Leuchtstoffröhren anschließen.

50 Hz Sinus Schwingung Wechselstrom mit 230V

Dimmen per Phasenanschnitt

Das Dimmen entsteht wie bei den meisten Dimmern auch hier durch einen Phasenanschnitt. Das Wechselstromnetz in Europa hat eine Frequenz von 50 Hertz. Das bedeutet, dass es pro Sekunde 50 Schwingungen gibt. Zwischen jedem wechsel einer Halbwelle gibt es einen sogenannten Nulldurchgang. Bei diesen Nulldurchgang liegt die Netzspannung genau bei 0 Volt. Unmittelbar danach steigt die Spannung bis zur Sinusspitze an und wieder ab. Danach erfolgt wieder ein Nulldurchgang. Beträgt die Netzfrequenz 50 Hertz, so haben wir neben diesen 50 Schwingungen pro Sekunde auch 100 Nulldurchgänge. Der zeitliche Abstand zwischen den einzelnen Nulldurchgängen bzw. einer Halbwelle dauert daher 10 Millisekunden (1000 ms/50 Hz/2 Halbwellen). Wird jetzt der Stromfluss in jeder einzelnen Schwingung für z. B. 5 Millisekunden unterbrochen, so bekommt der Verbraucher zeitlich nur noch 50 % der Spannung pro Halbwelle. Ein Multimeter würde dann nur noch die halbe Spannung anzeigen, eine Lampe etwa nur noch halb so hell leuchten oder ein Ventilator um die hälfte langsamer drehen.

50 Hz Phasenanschnitt Dimmer Sinus

Nulldurchgang mit dem Arduino messen

Um den TRIAC zeitlich richtig schalten zu können muss dem Arduino oder einem anderen Mikrocontroller der Nulldurchgang bekannt sein. Diese Nulldurchgänge können über einen einfachen digitalen Pin eingelesen werden und dann am besten mit Interrupts richtig verarbeitet werden. Die Netzspannung muss dann so weit reduziert werden, dass die Eingangsspannung am Arduino zwischen 0 und 5 Volt liegt. Das könnte über Widerstände vor dem Eingang gelöst werden. Da dies aber viel zu gefährlich ist, sollte man unbedingt zwischen dem Wechselstromnetz und den Mikrocontroller eine galvanische Trennung der Stromnetze machen. Dies geschieht über einen Optokoppler. In diesem Bauteil befinden sich im Wesentlichen nur eine LED (meist Infrarot) und ein Phototransistor. Liegt bei der LED eine Spannung an, so fängt diese im Bauteil an zu leuchten und der Transistor steuert durch. Da das Signal jetzt optisch übertragen wird, sind über dieses Bauteil beide Netze galvanisch getrennt. In dieser Schaltung kann man sich diesen Optokoppler auf der Seite vom Mikrocontroller wie einen Taster vorstellen. Solange die Schwingung eine Spannung hat, ist der "Taster" gedrückt, sobald der Nulldurchgang kommt, liegt auf den Pin keine Spannung an bzw. unser gedanklicher Taster wird kurz losgelassen. Genau in diesem Moment ist dem Mikrocontroller dann der Nulldurchgang im Wechselstromnetz bekannt.

Arduino Dimmer Wiring

Wie die Schaltung funktioniert

Für die Messung der Nulldurchgänge wird ein 817C Optokoppler verwendet. Um die interne Leuchtdiode vom Optokoppler nicht zu beschädigen befindet sich sowohl bei der Phase als auch am Neutralleiter jeweils ein Widerstand (R1, R2). Gesamt sollte hier der Widerstand (R1+R2) um die 200-300K haben. Auf der anderen Seite vom 817C Optokoppler befindet sich einmal die 5V Leitung vom Arduino, die dann über den internen Phototransistor zum digitalen Eingang (D3 Pin) geht. Ein 10K Widerstand (R5) fungiert als Pull-Down Widerstand um den Signalpegel nach unten zu ziehen. Der zweite Optokoppler (MOC3020) dient zur Steuerung des TRIACs und trennt auch hier wieder die Stromkreise galvanisch. Auch hier befindet sich wieder ein Widerstand (R4) zwischen dem Ausgang vom Mikrocontroller und der Anode vom zweiten Optokoppler. Auf der zweiten Stromkreisseite vom zweiten Optokoppler befindet sich wieder die Netzspannung, mit der wiederum der TRIAC angesteuert wird. Über den Widerstand R3 kommt die Netzspannung an den internen Phototransistor und geht danach weiter auf das Gate vom TRIAC. Der TRIAC ist mit den restlichen zwei Pins in Serie zwischen Spannungsquelle und dem Verbraucher geschaltet und ist hier vereinfacht betrachtet der Schalter für die Leistung. Durch eine vollständige galvanische Trennung der beiden Stromkreise kommt der Mikrocontroller nie mit der Netzspannung in Berührung und es sind auf der Gleichstromseite keine weiteren Vorkehrungen zu treffen. Um den TRIAC gegen eine Überlastung zu sichern, sollte eine Glasrohrsicherung an der Phase installiert werden. In unserem Testaufbau haben wir mit dem TRIAC eine Last von 500 Watt über mehrere Stunden gesteuert und bis auf eine leichte Wärmeentwicklung konnten wir keine Veränderungen feststellen.

AC Dimmer Schaltplan

Widerstände

R1, R2 100 KΩ
R3 470 Ω
R4 150 Ω
R5 10 KΩ

Die Software

Der Arduino Sketch ist eigentlich gleich einfach aufgebaut wie die Schaltung selbst. Zuerst wird der Verbraucher für zwei Sekunden aktiviert. Damit kann überprüft werden, ob die korrekte Funktion vom TRIAC gegeben ist. Anschließend wird die Interrupt-Funktion aktiviert. Dadurch wird bei jeder Veränderung am digitalen Input-Pin (Nulldurchgang) eine definierte Funktion aufgerufen. In diesem Beispiel wird dann die "zero_cross" Variable auf TRUE gesetzt. In der Loop-Schleife wird dann der digitale Ausgang für den TRIAC auf LOW gestellt, damit der Verbraucher keine Spannung mehr bekommt. Je nach Dimmstärke wird dann die Stromzufuhr nach einer bestimmten Zeit wieder aktiviert, indem der TRIAC-Pin wieder auf HIGH geschalten wird. Danach wird die "zero_cross" Variable wieder auf FALSE gesetzt und es wird auf den nächsten Nulldurchgang gewartet. Nachdem die Software vollständig läuft und alles synchronisiert wurde, dimmt die Software automatisch auf 50 % Leistung. Über den Serial Monitor kann ein Zahlenwert zwischen 0 und 100 gesendet werden. Je nach eingegebenen Wert wird dann der Verbraucher entsprechend gedimmt.

Tools zum Testen

Die Schaltung und Software teilt sich in zwei Teile auf, die miteinander synchron arbeiten müssen. Der erste Teil befasst sich mit der Auswertung der Nulldurchgänge. Dazu befindet sich im Code-Package ein weiterer Beispielcode (ZeroCross Detektor), der den Eingang vom Arduino auswertet und die Anzahl der Nulldurchgänge auswertet. Bei einem 50 Hertz Wechselstromnetz, wie es in Europa üblich ist, haben wir 100 Nulldurchgänge pro Sekunde. Funktionieren alle Bauteile, die für die Auswertung notwendig sind, so sollte im Serial Monitor bei diesem Sketch der Wert 100 stehen. Ist das der Fall, so kann man davon ausgehen, dass die gesamte Auswerteeinheit korrekt funktioniert. Im zweiten Teil kann auch separat der digitale Ausgang getestet werden und somit alle Bauteile, die für den Stromsteuerkreis verantwortlich sind. Dazu kann das Arduino Blink Beispiel verwendet werden und an den TRIAC-Pin angepasst werden. Wenn jetzt der Verbraucher blinkt, dann kann davon ausgegangen werden, dass auch die Steuereinheit funktioniert und somit der Dimmer korrekt arbeiten wird.

Oft gelesen

Anzeige:

Social Media

Newsletter