Hilfe bei Phasenanschnittsteuerung für Lasten bis 1 kW

Hallo liebe Arduino Gemeinde,

lange Zeit war ich nur stiller Mitleser udn konnte mir viele Ratschläge, Tips udn Kniffe erlesen. Jetzt bin ich aber mit einem Projekt an meien Grenzen geraten und wollte gerne das Schwarmwissen bemühen. Ich hoffe, jemand kann mir weiterhelfen.

Wie im Titel beschrieben, geht es um die Programmierung/Umsetzung einer Phasenanschnittsteuerung mit einem Arduino Mega 2560. Der Anschnitt soll im 230V-Wechselstromnetz geschehen und für Lasten bis 1kW (IR-Heizstrahlerröhre) regeln können.

Dazu habe ich mich mal an folgendem Projekt orientiert:

Nachfolgend meine Schatbildskizze:


Hier noch der dazugehörige Code:

unsigned long Anschnittdauer = 9500; //Dauer bis zum Schalten des Relais
bool Nulldurchgang = false;
const byte interruptPin = 2;  //digitaler Pin 2 für Messung Nulldurchgänge
const byte SchaltPin = 3; //digitaler Pin zum Schalten des Triac



void setup() {
  pinMode(SchaltPin, OUTPUT);
  digitalWrite(SchaltPin, LOW);
  pinMode(interruptPin, INPUT_PULLUP);  //Initialisieren des Pins
  attachInterrupt(digitalPinToInterrupt(interruptPin), Durchgang_Null, CHANGE); //Ducgang_Null wird ausgeführt, sobald der Pin seinen Status wechselt (LOW --> HIGH oder HIGH --> LOW)
  if (Anschnittdauer <0) {Anschnittdauer = 0;}
  if (Anschnittdauer > 9500) {Anschnittdauer = 9500;}
}

void loop() {
  noInterrupts();
  if (Nulldurchgang == true) {
    digitalWrite(SchaltPin,LOW);
    delayMicroseconds(Anschnittdauer);
    digitalWrite(SchaltPin,HIGH);
    delayMicroseconds(200); //Zündimpuls
    digitalWrite(SchaltPin,LOW);
  }
  interrupts();
  Nulldurchgang = false;
}


void Durchgang_Null() {
  Nulldurchgang = true;
}

Datenblätter der Bauteile sind die folgenden:
Optokoppler OK1 udn OK2:HCPL-817-00AE

TRIAC: TO-220AB Insulated (BTA08)


Die (gewünschte) Funktionsweise möchte ich im folgendne erklären:
Am Optokoppler 1 liegt an der LED eien Wechselspannung an. Das heißt, dass bei jedem Nulldurchgang der Halbwellen einer Periode die LED kurz ausgeschalten ist (bzw. bei der Welle entgegen der Durchlassrichtung die ganze Zeit ausgeschalten ist). An der Ausgangsseite des Optokopplers ist der Arduino mit dem digitalen Pin 1 angebracht. Solange der Optokoppler dne Kreis geschlossen hält, ist der Pin HIGH, sobald die LED beim Nulldurchgang aus geht (der Kreis geöffnet ist), ist der Pin LOW. Zudem wurd enoch ein Widerstand verbaut, um dne Siganlpegel herabzuziehen.

Durch den attachInterrupt-Befahl kann dieser Wechsel von HIGH --> LOW buw. LOW-->HIGH detektiert werden und die Funktion "Durchgang_Null" wird ausgeführt. Das funktioniert auch meines Erachtens nach, da ich diese Funktion schon mit einem Programm zum Zählen der Nulldurchgänge über eien gewisse Zeit getestes habe. Bei z.B. einer Sekunde Messdauer kamen imme rudn zuverlässig 100 Nulldurchgänge heraus.

Somit weiß ich also jetzt, wann der Nulldurchgang erfolgt.

Im Loop wird permanent abgefragt, ob ein Nulldurchgang erfolgt ist. Ist ds der Fall, warte ich eien vordefinierte Dauer (Anschnittdauer), bevor ich den digitalen Pin 3 auf HIGH setze, diesne 200µs auf HIGH lasse udn dann wieder auf LOW setze. Dadurch erstelle ich einen kurzen Impuls. Dieser Impuls sorgt am Optokoppler 2 für einen kurzen Durchgang der am Ausgang anliegedne 230V Wechselspannung udn fungiert quasi alsSchalter am Gate des TRIAC.

Es liegt also kurzzeitig eien Spannung am Gate an udn der TRIAC sollte zünden. Die anoden des TRIAC sind in Reihe zur Last geschalten. Beim nächsten Nulldurchgang der Welle sollte der TRIAC dann wieder schließen.

Durch die Variation der Anschnittdauer sollte sich nun die Leistung stellen lassen.

Soweit die Theorie.
Leider scheint das nicht so einfach zu funktionieren.


Hier jetzt meine Probleme:

Selbst wenn ich als Anschnittdauer 10000µs vorgebe (was genau der Dauer einer Halbwelle entspricht), wird trotzdem eien Leistung übertragen (der IR-Strahler leuchtet).

Ich habe daraufhin mal mit einem Uno den Stromverlauf dargestellt, weil ich dazu die Bauteile gerade zur Hand hatte. Das folgende hat sich dabei abgezeichnet:
Bild1.jpg

Man erkennt schön den Sinusverlauf aber nur die positive Halbwelle wird angeschnitten udn dann auch nur ein kleines Stück udn nicht etwa die komplette Welle, was bei einer Anschnittdauer von 9500µs (~10000µs) eigentlich zu erwarten wäre.

Dann habe ich parallelzur Last mal mit dme Multimeter die Spannugn gemessen.
Beim variieren zwischen 0 und 9500µs Anschnittdauer variiert die gemessene Spannung nur zwischen 170 und 230V, was eigentlich selbst beim Anschneiden von nur einer Halbwelle eigentlich nicht sein kann (wenn ich eien Halbwelle wegnehme, sollte doch effektiv nur noch die halbe Spannung 115V vorherrschen, oder?).

Also kurzgesagt habe ich folgende Probleme:

  1. Anschnitt nur der positiven Halbwelle
  2. Anschnittdauer wird nicht rihtig umgesetzt

Ich hoffe, dass mir jemand helfen kann. Ich habe die Vermutung, dass es an der Hardware rund um dne TRIAC liegt. Softwarefehler möchte ich aber auch nicht ausschließen.

Ich danke euch auf jedne Fall schon mal für eure Hilfe.

Bild1.jpg

Hallo,

ich hab noch nicht verstanden wie das funktonieren soll.

Der Eingangsoptokoppler wird bei jeder positiven Halbwelle je nach den Widerständen irgendwann ein und wieder ausgeschaltet. Sagen wir mal bei steigenden 20V würde er einschalten und bei fallenden 20V wieder abschalten. Jedenfalls nicht beim Nulldruchgang denke ich. Irgendwie sollte ja auch der max. Strom für die LED nicht überschritten werden. Schutzbeschaltung mit Z-Diode ?

Dann bekommst Du mit "change" für den Interupt zwei Ereignisse. Das willst Du eigendlich aber nicht. Du willst nur die fallende Flanke wenn der Optokoppler durchschaltete,bei der positiv steigenden Halbwelle.

Bei der negativen Halbwelle schaltete Optokoppler gar nicht. Damit solltest Du eigentlich keine negative Halbwelle am Ausgang bekommen. Das könnte man erst über einen Gleichrichter laufen lassen um 2 positive Halbwellen zu bekommen.

Irgendwie stimmt da noch was nicht.

Wenn Du die Ansteuerung des Triac trennst bleibt er gesperrt. ?

Für eine Heizung benötigst Du auch keinen Phasenanschnitt. Also kannst Du erst mal probieren und gehst von sagen wir mal 1 s Taktzeit aus und steuerst das Tastverhältniss für die eine Sekunde. z.B 100ms ein 900ms aus= 10% Leistung. Das kann zunächst mal völlig unsynchron zum Netz sein.

Du solltest Deine Messung mit einem Oskar messen.

Jetzt muss ich Dich aber auch noch warnen. Du arbeitest mit Netzspannung da besteht Lebensgefahr. Also wenn Du keine Fachausbildung hast solltest Du die Finger davon lassen.

Heinz

Hallo Heinz,

vielen Dank für deine Antwort.
Ich versuche es nochmal zu erklären. Dazu folgendes Bild:


Du hast prinzipiell Recht, dass der Optokoppler (OK1) zum Detektieren des Nulldurchganges nicht direkt bei 0V zählen wird. Ein kleiner Versatz wird entstehen, den ich aber erstmal bereit bin in Kauf zu nehmen.

Am Eingang des Optokopplers, also auf der LED-Seite, liegtdie Wechselspannung an. Die LED selber lässt nur eine der Halbwellen durch, sagen wir mal die positive Halbwelle.

Das führt dazu, dass die LED bei der negativen Halbwelle immer ausgeschaltet ist.

Entsprechend ist auf der Seite des Fototransistors immer nur dann Durchgang, wenn die positive Halbwelle läuft, bis zu einer Spannung X, die zu klein wird, um die LED noch an zu schalten. Die LED bleibt ausgeschalten , bis die nächste positive Halbwelle beim Ansteigen wieder die Grenzspannung X überschreitet.

Das erzeugt am Ausgang, an dem vom Arduino 5V DC anliegen ein Rechtecksignal in (etwa) gleicher Frequenz wie die Spannung am Eingang. Dieses Rechtecksignal hat pro Periode (positive + negative Halbwelle am Eingang) zwei Flanken (1x von HIGH nach LOW und 1x von LOW nach HIGH), die jeweils den Interrupt auslösen, weil ich ja den CHANGE am digitalen Pin auswerte.
Diese Flanken fallen zeitlich in etwa mit dem Nulldurchgang der Wechselspannung zusammen.

Entsprechend sollte ich dadurch die Nulldurchgänge zählen und (mit leichten Abweichungen) zeitlich bestimmen können. Oder habe ich hier einen Denkfehler drin?


Die Absicherung der LED im Optokoppler OK1 sollte doch durch die beiden 100kOhm-Widerstände gewährleistet sein denke ich, oder?


Wenn ich die Ansteuerung des TRIAC trenne, bleibt er gesperrt. Wobei ich mir dabei nicht zu 100% sicher bin. Das würde ich heute nochmal prüfen. Worauf könnte es denn hinweisen, wenn der TRIAC nicht gesperrt bleiben würde?

Gruß udn Danke für die Hilfe.

Werner

Du nimmst die falschen Optokoppler. Halte Dich (wenigstens teilweise) an das Projekt, das Du Nachbauen willst.


Das Schaltsymbol der Triac ist falsch.

Der Optokoppler für den Triac hat einen Triacausgang (MOC3020) und keinen Transistorausgang der nur den Strom in eine Richtung (gut) durchschaltet. Der Gatewiderstand fehlt.

Statt dem 817C würde ich ein Modell mit DoppelLED (2 Entgegengepolte LED) verwenden oder wenigstens eine äußere Schutzdiode (engegengeolt gegenüber LED) Besser wäre 2 Optokoppler zu nehmen. Eingänge Gegengepolt paralellschalten; Ausgänge richtig gepolt paralellschalten. So kannst Du den genauen Ansteigzeitpunkt der Beider Halbwellen messen und nicht eine richtig und die andere ca.

Wie schon vorgeschlagen nimm Vollwellensteuerung und als Schaltglied da ein SSR mit Nulldurchgangschaltung und Schraubklemmen. Auf eine Lochrasterplatine mit 230V gehen ist schon grenzwertig bezüglich Mindestabstände Spannungsführender Teile.

Grüße Uwe

Nachtrag.
Aus dem der 817 Optokoppler hat:
Collector-Emitter Voltage, VCEO 70 V
Emitter-Collector Voltage, VECO 6 V

Damit willst Du 315V (Spitzenspanung von 230VAC) am Gate schalten? Der bricht auch ohne Ansteuerung durch (wird leitend wie eine Z Diode ab einem gewissen Spannungswert). Bei einer Halbwelle sofort und bei der anderen wenn diese 7Strom/0V erreicht. Das erklährt diesen Spannungsverlauf:
Bild1.jpg

Grüße Uwe

Hallo zusammnen,

vielen Dank für die Hinweise und Ratschläge. Das werde ich alles mal beherzigen.

Eine Steuerung der Leistung über die Zeit habe ich schon in einem anderen Projekt realisiert gehabt. Dabei ging es um das Aufheizen eines Bauteils mittels einer Heizschnüre (quasi ein um einen Gegenstand wickelbares Heizelement, was ebenfalls als ohm'sche Last fungiert).

Da hatte ich auch eine Gesamtregelzeit von 1000ms, die ich dann auf Anteile "EIN" und Anteile "AUS" geteilt habe. Das Verhältnis hat im Endeffekt die Leistung bzw. Temperatur geregelt.

Dabei kam es aber oft zu Überschwingern, weil die Gesamtregelzeit zu grob war.
Da hatte ich gedacht: "Was ist denn im Wechselstrombereich die kleinstmögliche Gesamtregelzeit?"
Meine Antwort war: 10ms (also die Dauer einer Halbwelle), weshalb ich dann auch schnell auf Phasenanschnittsteuerung gekommen bin.

Dann hätte ich nochmal eine Frage:
Gibt es für Wechselspannung durchschlagsfeste Lötplatinen oder ähnliche Konstrukte, auf denen Bauteile aufgelötet werden können? Ich hatte etwas recherchiert und bin auf diese Seite gestoßen:

https://www.mikrocontroller.net/articles/Leiterbahnabstände

Darin hatte ich die Tabelle "Mindestkriechstrecke" angeschaut für einen Effektivwert von 250V und einem Verschmutzungsgrad von II. Dabei wird vorgeschlagen, mindestens 1mm Abstand zwischen Leitern und leitenden Teilen zu halten.
Sehe ich das richtig?

Alternativ könnte man ja auch Lochrasterplatten nutzen ohne Lötpunkte.
Hier habe ich viele gefunden, die aus Hartpapier bestehen.

Wäre das eine adequate Lösung für den dauerhaften Einbau oder ist das eher zum Probieren geeignet?

Vielleicht habt ihr dazu auch nochmal Tipps für mich parat.

Danke euch schon mal.

Gruß

Werner

Den guten Tip hab ich Dir schon gegeben: SSR mit Schraubanschlüssen. Zur Veranschaulichung ich meine zB sowas:

Eine Platine kann für 230VAC korrekt gebaut sein aber eine Lochrasterplatine auf die Tischplatte gelegt ist sicher nicht sicher oder Normgerecht.

Eine Phasenanschnittsteuerung produziert wegen des Abschneidens eines Teils der Sinuswelle ziemlich viele Oberwellen sprich Elektromagnetische Störungen. Da ist eine Vollwellensteuerung viel besser.
Bei Vollwellensteuerung kann man die kleinste Regeleinheit in Funktion der Auflösung auch klein nehmen. Wenn man 5 Vollwellen als Grundlage für die Regelung nimmt ist das 200mS. Bei termischen Systemen die nicht gerade auf das milli°C geregelt werden müssen ist eine Regeldauer von einigen Sekunden überhaupt keine begrenzende Größe.

Grüße Uwe

Hallo Uwe,

nochmals danke für den Hinweis. Tatsächlich habe ich ein ähnliches Bauteil sogar schon zur Hand und als Alternative wollte ich das nutzen.
Werde ich jetzt wohl auch einfach so umsetzen. Das macht es einfacher für mich.

Nur interessehalber:
Ich habe ja nun den falschen Optokoppler zum Schalten des TRIAC verwendet, wie du festgestellt hast. Eine Möglichkeit wäre es ja nun, den Optokoppler zu wechseln und für 230V AC durchschlagssicher auszulegen.

Wäre es auch denkbar, die Spannung, die der Optokoppler schalten muss, herabzusetzen z.B. durch folgendes Bauteil:

https://www.reichelt.de/ac-dc-wandler-tmpm-85-264-v-ac-5-v-dc-modul-tmpm-04105-p116811.html?&trstct=pol_0&nbc=1

Der TRIAC sollte doch trotzdem zu schalten sein, oder?
Was wäre denn sinnvoller?
Ich danke nochmal für die Infos und Hinweise.

Gruß

Werner