Phasenanschnitt bis zu 5kVA zeitprobleme

Guten Tag alle zusammen,
ich möchte mit meinem Nano, Transformatoren bis 5kVA ansteuern. Mein bisheriger Aufbau funktioniert bei 800VA und Volllast problemlos. 3,5 kVA sowie 5kVA lassen sich im Leerlauf ohne Probleme ansteuern. Die Lastversuche für 3,5- und 5kVA werden wahrscheinlich in den nächsten 2 Wochen erfolgen. Die Last nach Trafo ist rein Ohmisch. Das natürlich Phasenverschiebung eintritt und entsprechende Entstörung benötigt wird ist mir bewusst. Zum Testen bisher aber weg gelassen.

Zur Ansteuerung verwende ich einen BTA 16/800B angetrieben von einem MOC3020.
Schaltspannungen betragen 230/400V. Da der BTA16/800B als Snubberless klassifiziert ist habe ich bisher auch noch keinen in der Schaltung integriert.

Mit dem Oszilloskop konnte ich sehen das der Nulldurchgang welcher nach zwei Schmitt-Trigger als Interrupt im Programm landet jedes mal Genau 200us vorher schon triggert.

Nun zu meinem Konkreten Problem:
Wenn ich über meinen Drehpoti einen Phasenanschnitt von "50%" einstelle,
dann zündet der Triac bereits ab ungefähr 3-4 ms. Wobei dieser ja bei 5ms schalten soll.
Bei 80% habe ich schon Vollast, bei unter 10% ist er aus. Das bedeutet das sich der Anschnittszeitpunkt nicht linear mit dem Programm verhält. Natürlich unter Last gemessen.
Ist die Induktion schuld für das Veränderte schaltverhalten? Oder irgendwas in der Software?

Habe im Code einen 200us delay auskommentiert eingefügt. Ersteres ist ja im Interrupt und macht daher für mich eigentlich direkt schon kein Sinn mehr. Hab in Zukunft sowieso vor den delay durch millis() zu ersetzen. Möchte in Zukunft auch für einen Drehimpulsgeber aufgrund der vermehrten Interruptinputs auf einen Mega setzen.

Ich danke für jede Hilfe und Anregungen

// Die Bibliotheken
#include <TM1637Display.h>
#include <TimerOne.h>

// Eingänge
const int poti = A0;
const int zerointerrupt = 2;
#define CLK A5
#define DIO A4
// Ausgänge
int triac = 10;
int test = 13;

// Variablen
int analogwert = 0;
volatile boolean nulldurchgang_erkannt;
int schnittzeitpunkt = 0; // 0 = An, 100 = Aus
int schrittbreite = 100; // 100us schrittbreite
int anzeigewert;
volatile int counter = 0;
TM1637Display display(CLK, DIO);




void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Booting...");
  nulldurchgang_erkannt = 0; // Nulldurchgang initialisieren
  pinMode(zerointerrupt, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), nulldurchgang, RISING);
  pinMode(triac, OUTPUT);
  pinMode(test, OUTPUT);
  Timer1.initialize(schrittbreite);
  Timer1.attachInterrupt(zeitscan, schrittbreite);
  display.setBrightness(0x0f);
  uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
  uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
  display.clear();
}

void nulldurchgang(){
	// delayMicroseconds(200);
  nulldurchgang_erkannt = true;
  counter = 0;
  digitalWrite(triac, LOW);
  digitalWrite(test, LOW);
  }

void zeitscan(){
if(nulldurchgang_erkannt == true){
	// delayMicroseconds(200);
  if(counter >= schnittzeitpunkt){
  digitalWrite(triac, HIGH);
  digitalWrite(test, HIGH);
  counter = 0;
  nulldurchgang_erkannt = false;

// Den Triac nach 10us auszuschalten brachte probleme.
    }
  else {
  counter++;
    }
  }
}
void loop(){
  analogwert = analogRead(poti);
  schnittzeitpunkt = map(analogwert, 0, 1023, 0, 100);
  anzeigewert = map(schnittzeitpunkt, 0, 100, 100, 0);
  display.showNumberDec(anzeigewert, false);
  Serial.println(schnittzeitpunkt);

Triac kann man nicht so einfach ausschalten.

5kVA lassen sich nicht mit einem 16A Triac schalten.

Grüße Uwe

Genau deshalb hab ich das wieder rausgeworfen.

Aus welchem Grund sollte man mit 16A keine 5kVA schalten lassen?
Bei 400V bleibt die Stromstärke im Bereich von 11-13A.

Hallo,
was mich an etwas stutzig mach ist die Aussage das der Zündimpuls zu früh kommt. Zu spät würde ich noch verstehen. Dein Sketch scheint auch nicht vollständig zu sein, ich finde den Aufruf deiner Function zeitscan() nicht. Eigentlich benötigen Triacs nur einen kurzen Impuls zum Zünden, wie lang genau findest Du im Datenblatt. Und den musst Du halt innerhalb der zur Verfügung stehenden 10ms ab dem Nulldurchgang verschieben.
Bei einem Trafo (induktive Last) sieht das wegen des Winkels zwischen Spannung und Strom etwas anders als als bei ohmischer Last. Ich bin da nicht so ganz fit auf dem Gebiet, aber ich kann mich erinnern das eine analog aufgebaute Triac Schaltung für ohmische Last bei induktiver Last nur sehr begrenzt funktioniert.

such doch mal nach "triac induktive last schaltbild"
kennst Du das

Heinz

Hi, die Funktion Zeitscan ist mitten drin. Müsstest eventuell nochmal drüber schauen.

Werde nochmal konkret nach dem Fall für induktive Lasten im Netz Mal einige Schaltungen anschauen.

Vielen Dank.