Schaltung zur Nulldurchgangserkennung korrekt?

Ich arbeite an einer DIY-Wechselstrom-Dimmerschaltung mit Arduino. Dieses Projekt ist Teil der hier erwähnten AC-Dimmerschaltung

Seitdem steckte ich fest und dachte daran, meine Schritte zurückzuverfolgen und jeden Teil der Schaltung zu überprüfen und mich dann nur weiter zu bewegen (zum Triac-Teil).

Es stellt sich heraus, dass ich nicht einmal eine Nulldurchgangserkennung durchführen kann.

Mein Code in Arduino:

int led_to_glow = 12;

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2), zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above
}

//the interrupt function must take no parameters and return nothing
void zero_crosss_int(){
  digitalWrite(led_to_glow, HIGH);
  delayMicroseconds(10);
  digitalWrite(led_to_glow, LOW);
  delayMicroseconds(10);
}

void loop()  {
}

Nachfolgend der Schaltplan:Schaltungsbild

Jetzt bin ich ein Neuling in DIY-Projekten und da diese Schaltung nicht so funktionierte, dachte ich, ich würde meine Steckbrettschaltung auch hier posten.

Bitte werfen Sie einen Blick in die physikalische Schaltung.

Physikalische Schaltung

(Ich habe die irrelevanten Teile der Schaltung gelöscht)

Ein bisschen Erklärung (weil das Diagramm vielleicht nicht klar genug ist)

Der gelbe Überbrückungsdraht von wird als Interrupt an den digitalen Pin 2PC 817 des Arduino gesendet (wie im Diagramm zu sehen).

Das Arduino erkennt das RISING-Signal darauf und ruft die ISR auf. Ich habe die Ausgabe an den Pins von PC 817 überprüft, die zum Arduino gehen (mit einem Multimeter), es gibt ~ 10 V.

Ich habe eine gemeinsame Masse und VCC von arduino hinzugefügt, da sie später in der AC-Dimmer-Schaltung verwendet wird (und ich verstehe, dass überall dort, wo VCC von arduino ist, gnd auch von arduino sein muss und nicht von woanders, oder?) .

Danke. Sizu

Aktualisierung 1:

Ich habe PC 817 auf 4N25 geändert (wie ich später herausfand, dass ich diese Komponente hatte)

Ich habe dem Eingang von 4n25 einen Widerstand hinzugefügt, der 2 V eingibt (ich erwäge einen höheren Widerstand, da die maximale Durchlassspannung für 4n25 1,5 V beträgt).

YELLOW Wire ist direkt mit Arduino Digital Pin 2 verbunden (dh INT0)

Aktualisierte Platine

Aktualisierung 2:

Wie sich herausstellt, beträgt der Spannungsabfall zwischen dem gelben Draht (Interrupt-Pin) und GND von Arduino 5 V DC, wenn AC ausgeschaltet ist, während er bei eingeschaltetem AC 0,54-0,55 V beträgt. Gibt es einen Grund dafür?

Ich habe es auch versucht

attachInterrupt(digitalPinToInterrupt(2), zero_crosss_int, FALLING);  // Choose the zero cross interrupt # from the table above

Ich habe RISING in FALLING geändert , es hat immer noch nicht funktioniert.

Hoffentlich gelöst:

Ich muss die LED leuchten lassen, ich habe vergessen, den LED-Pin als Ausgangspin im Arduino-Code zu definieren, aber dann leuchtet er auch sehr schwach und selbst das Multimeter kann den potenziellen Abfall über der LED nicht finden

Der neue Code sieht also so aus:

pinMode(12, OUTPUT);
attachInterrupt(0, ledBlink, FALLING);  // Choose the zero cross interrupt # from the table above
}

Notiz :

Falling / RISING / CHANGE (alle 3 funktionierten, aber ich denke, FALLING sollte wegen des Pull-up-Widerstands verwendet werden)

LED leuchtet schwach, weil Sie ein kleines PWM-Verhältnis haben. Die LED ist für 10 us eingeschaltet und die PWM-Frequenz beträgt 100 Hz (bei 50 Hz Netz). Die LED ist also 0,1% der Zeit eingeschaltet
Ich habe mich heute Morgen genau dasselbe gefragt, Sie haben es bestätigt, danke. Wenn ich also die Verzögerung erhöhe, sollte sie hell leuchten? Und ja, das hat es :) Nochmals vielen Dank

Antworten (1)

Die von Ihnen entworfene Nulldurchgangsschaltung ist konzeptionell korrekt, jedoch nicht richtig dimensioniert. Genau, die 30 k Ω Widerstände, die Sie aus der ursprünglichen Schaltung entfernt haben, haben nicht nur die Funktion, die Spannung zu reduzieren, die an die geht T 5 Optokoppler ( Typ 4N25 ) auf ein zerstörungsfreies Niveau, sondern begrenzen auch seinen Eingangsanodenstrom ICH A . Ohne sie wird die Eingangsfotodiode von T 5 wird wahrscheinlich beim Einschalten zerstört. Daher sollten Sie der Sekundärwicklung des Transformators zwei weitere Widerstände in Reihe schalten, um den Maximalwert von zu begrenzen ICH A .

Bearbeiten . Auch wenn das Problem wahrscheinlich durch die richtige Einstellung des Pins der Arduino-Platine gelöst werden kann, hat das OP um Rat gefragt, wie der Eingangswiderstand des Optokopplers richtig dimensioniert werden kann, also habe ich beschlossen, die folgenden Hinweise hinzuzufügen. Betrachten wir zunächst die folgende Optokoppler-Standardschaltung mit BJT-Ausgang:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Wo R C ist der Ausgangskollektor-(Pull-up-)Widerstand und R ich N ist der Eingangsvorspannungswiderstand.

  • So legen Sie den Eingangswiderstand richtig aus R ich N ? Unter der Annahme, dass der maximale Kollektorstrom von Q 1 Ist

    ICH C 1 max = v C C R C
    wir müssen sicherstellen, dass der Anodenstrom von D 1 ist ausreichend, um unter allen Bedingungen einen solchen Kollektor-Photostrom zu erzeugen . Dies wird durch Berücksichtigung der minimalen Spitzenspannung erreicht v ich N , die maximale Anodenspannung von D 1 und die garantierte Mindestklickrate ( aktuellen Übertragungsverhältnis), dh wir sollten das verlangen
    R ich N C T R v ich N P k Mindest v A max ICH C 1 max
    Dadurch wird sichergestellt, dass die Q 1 geht in die Sättigung. Gleichzeitig müssen wir, dass der Anodenstrom nicht über seinen absoluten Nennwert ansteigt , daher sollten wir dies fordern
    ICH A max v ich N P k max v A Mindest R ich N R ich N v ich N P k max v A Mindest ICH A max
    In Summe,
    v ich N P k max v A Mindest ICH A max R ich N C T R v ich N P k Mindest v A max ICH C 1 max

  • Überlegungen zur Anstiegs-/Abfallzeit der Kollektorspannung von Q 1 . Optokoppler sind nicht gerade die schnellsten auf dem Markt erhältlichen Bauelemente, aufgrund der inhärenten Akkumulation von optisch erzeugten Minoritätsträgern, die nicht schnell entfernbar sind, und ihrer langsamen Erzeugung in ihrem BC-Bereich. Der Einschaltvorgang ist jedoch normalerweise schneller, da gespeicherte Ladungen nicht entfernt werden. Wenn Sie also "steile", gut definierte Flanken als Eingangssignale benötigen , wählen Sie die v C E Q 1 fallende .

Danke Daniele, aber ich habe die Spannung auf der anderen Seite des Optokopplers gemessen, nur um sicherzugehen, und es funktioniert (ich habe dasselbe in der Frage erwähnt) und selbst ohne die Widerstände ist der Optokoppler nicht durchgebrannt (wie habe ich jetzt überprüft). Wenn ich Widerstände hinzufügen würde, wie berechnet sich der Wert? Danke :)
Basierend auf dem Datenblatt von PC817 hier: sharp-world.com/products/device/lineup/data/pdf/datasheet/… habe ich festgestellt, dass der Durchlassstrom 50 mA und maximal 1 A beträgt, also habe ich einen 330-Ohm-Widerstand eingebaut Eingang von PC817. Jedoch immer noch kein Blinken
HALLO @SizuTaylorventuresllc; Ich werde meiner Antwort heute Abend einige Überlegungen hinzufügen. Vielleicht gibt es auch ein Problem am Ausgang: Ist der Kollektor des Fototransistors direkt mit dem Arduino-Board verbunden oder ist er mit einem Eingangsnetzwerk verbunden?
Daniele, es ist mit dem digitalen Pin 2 verbunden (dh INT0 der Arduino-Platine direkt), es ist das gelbe Kabel.
Wie sich herausstellt, beträgt der Spannungsabfall zwischen dem gelben Draht (Interrupt-Pin) und GND von Arduino 5 V DC, wenn AC ausgeschaltet ist, während er bei eingeschaltetem AC 0,54-0,55 V beträgt. Gibt es einen Grund dafür?
Ich muss die LED leuchten lassen, ich habe vergessen, den LED-Pin als Ausgangspin im Arduino-Code zu definieren, aber dann leuchtet er auch sehr schwach und selbst das Multimeter kann den potenziellen Abfall über der LED nicht finden
@SizuTaylorventuresllc. Später werden wir uns auch mit diesen Themen befassen. Aktualisieren Sie die Frage weiterhin mit Ihren Ergebnissen, wie Sie es bereits tun.