Hallo,
ich habe ein Problem mit der Phasenanschnitt Steuerung über einen Triac.
Die Nulldurchgangserkennung habe ich mit einem Optokoppler realisiert.
Funktioniert soweit auch ganz gut (Jede Sekunde werden genau Hundert Nulldurchgänge gezählt).
Als Optotriac für die Zündung verwende ich einen MOC3020 und als Schalttriac einen BTB12 (Ein- bzw. Ausschalten fünktioniert einwandfrei).
Ich besitze leider kein Oszilloskop, was natürlich die Überprüfung meiner Software sehr schwierig macht.
Vielleicht kann mir jemand bei eine kurzen Blick auf die Software helfen, um evtl. Grundprobleme zu beseitigen.
Mein Gedanke war: Bei Nulldurchgang wird ein Interrupt ausgelöst, indem der Timer1 gestartet wird. Dieser zählt dann je nach gewünschter Helligkeit eine bestimmte Zeit ab und löst einen Timerinterrupt aus, in der der Triac kurz gezündet wird. Dieser löscht sich beim Nulldurchgang selber und das ganze beginnt wieder von vorne.Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Pind.2 = Input Config Pind.5 = Output Portd.2 = 1 Triac Alias Portd.5 Config Timer1 = Timer , Prescale = 8 '16 bit timer mit prescaler 8 und 16 Mhz ergibt 'Zeitspanne von 0 - 32 ms Config Int0 = Change On Int0 Int0_isr On Timer1 Timer_irq Enable Interrupts Enable Timer1 Enable Int0 Dim X As Word X = 55536 '5ms '************************************************************************** '************************************************************************** Do nop ' Incr X ' Print X ' Waitms 100 Loop '************************************************************************** '************************************************************************** Int0_isr: Start Timer1 Return '************************* Timer_irq: Stop Timer1 Timer1 = X Set Triac Waitus 30 Reset Triac Return
ERGEBNIS: Lampe dimmt ca 2 mal in der Sekunde leicht runter und dann wieder hoch!?
Irgendwie scheint mir das so, als ob das nicht ganz synchron läuft.
Allerdings habe ich auch schon versucht Pausen einzufügen, da der Nulldurchgangs Interrupt ja nicht genau bei Null ausgelöst wird und zudem die Timerwerte von 0 - 10 ms zu ändern. -> ohne Erfolg.
Vielleicht hat jemand eine Idee, wo der Hund begraben sein könnte?
Gruß Daniel







Zitieren

Lesezeichen