Phasenanschnittsteuerung mit 230V Wechselspannung.
Grundlagen:
Bei der Phasenanschnittsteuerung wird der Stromfluss meist durch einen Triac (Antiparallelschaltung zweier Thyristoren) gesteuert. Nach dem Nulldurchgang der Wechselspannung (und des Stromes) leitet der Triac den Strom so lange nicht, bis er einen Zündimpuls erhält; ab diesem Zeitpunkt (dieser „Phase“ des Wechselstromsignals) wird der Verbraucher mit Energie versorgt (bis zum nächsten Nulldurchgang). Je später der Triac gezündet wird, desto geringer ist die mittlere Leistung.
um die Zeit zu ermitteln wann der Thyristor gezündet werden kann, braucht man den Nulldurchgang der Phase.
In dem Schaltplan wird die Phase durch den Brückengleichrichter in positive Halbwellen gewandelt.
Die Halbwellen werden durch einen Widerstand auf einen Optokoppler IC1 geleitet.
Damit der Optokoppler nicht in die ewigen Jagdgründe wechselt, muss hier mit einem Vorwiderstand gearbeitet werde.
Der Vorwiderstand habe ich mit 56kOhm berechnet. Bei einem U-Scheitelwert von Us = 1.41 * Ueff = 1.41 * 230V = 325 V.
I = U / R I = 325V / 56000 Ohm = 0,0058 A da die vernichtende Leistung bei P = 325V * 0,0058A = 1,885W.
Da ich hier mit dem Scheitelwert gerechnet habe , reicht ein 56k Ohm Widerstand mit 1Watt Leistung.
Um den Thyristor zu zünden ist ein Impuls auf das Gate von T1 nötig.
Durch einen Optokoppler IC2 wird der Thyristor gezündet.
Arduino :
Um mit einem Arduino einen Verbraucher zu dimmen, brauchen wir zwei Digitale Pin.
D3 Output zum zünden des Thyristor.
D2 Input zur Detektion eines Phasen Nulldurchgang.
Ist eine Nulldurchgang detektiert, bei einem 50Hz Netz sind das alle 10ms, haben wir maximal <10ms Zeit den Thyristor zu zünden.
die Zeit der Verzögerung nach dem Nulldurchgang bis zur Zündung verändert die Ausgangsleistung.
//--------------------------------------------------------------- // Dimmer // // // //--------------------------------------------------------------- int AC_LOAD = 4; // Output to Opto Triac pin int dimming = 128; // Dimming level (0-100 %) 0 = OFF, 100 = ON void setup(void) { Serial.begin(115200); dimming = 0; pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output attachInterrupt(1, zero_crosss_int, RISING); } void loop(void) { } void zero_crosss_int() { // Zündzeitpunkt berechnen : 1 full 50Hz wave =1/50=20ms // Jeder Nulldurchgang: (50Hz)-> 10ms (1/2 Cycle) // 10ms=10000us // (10000us - 10us) / 128 = 75 (Approx) if (dimming == 0) { digitalWrite(AC_LOAD, LOW); } else { if (dimming == 100) { digitalWrite(AC_LOAD, HIGH); } else { int dimtime = (75 * (120 - dimming)); delayMicroseconds(dimtime); // Wartet die Zeit zum zünden des TRIAC digitalWrite(AC_LOAD, HIGH); // zünde TRIAC delayMicroseconds(10); // pause zum durchzünden digitalWrite(AC_LOAD, LOW); // TRIAC löschen } } }
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.