¿Circuito de detección de cruce por cero correcto?

1

Estoy trabajando en un circuito de atenuación de CA de bricolaje con arduino. Este proyecto es parte del circuito de atenuación de CA como se menciona aquí

Desde entonces, me quedé atrapado, así que pensé en volver sobre mis pasos y revisar cada parte del circuito y luego solo moverme más (hacia la parte del triac).

Resulta que no soy capaz de hacer la detección de cruce por cero incluso.

Mi código en 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()  {
}

A continuación se muestra el diagrama del circuito:

Ahora,soyunnovatoenproyectosdebricolajey,comoestecircuitonoestabafuncionando,penséquetambiénpublicaríaaquímicircuitodepruebas.

Porfavor,echeunvistazoalcircuitofísico.

(Heborradolaspartesirrelevantesdelcircuito)

Unpocodeexplicación(porquequizáseldiagramanosealosuficientementeclaro)

ElcabledepuenteamarillodePC817seenvíacomointerrupciónalpindigital2delarduino(comosepuedevereneldiagrama).

ElarduinodetectalaseñalRISINGenélyllamaalISR.HecomprobadolasalidaenlospinesdelaPC817quevanalarduino(usandounmultímetro),da~10V.

AgreguéunpuntocomúnyunVCCdearduino,yaquemásadelanteenelcircuitodeatenuacióndeCAseutilizará(ytengoentendidoquedondeseaqueVCCseadearduino,gndtambiéndebeserdearduinoynodeotraparte,¿verdad?).

Gracias.Sizu

Actualización1:

HecambiadolaPC817a4N25(comodescubrímástardequeteníaesecomponente)

Heagregadounaresistenciaalaentradade4n25queingresa2V(Estoyconsiderandounaresistenciamásalta,yaquelatensióndirectamáximapara4n25es1.5V)

YELLOWWireestádirectamenteconectadoalpindigital2dearduino(esdecir,INT0)

Actualización 2:

Resulta que, cuando la CA está apagada, la caída de voltaje entre el cable amarillo (pin de interrupción) y el gnd de arduino es de 5 VCC, mientras que cuando se enciende la CA es de 0,54-0,55 V, ¿por qué razón?

También lo he intentado

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

Cambié RISING a FALLING , todavía no funcionó.

Esperemos que resuelto:

Tengo que iluminar el LED, olvidé definir el pin del LED como el pin de salida en el código arduino, pero también se ilumina muy débilmente e incluso el multímetro no puede encontrar la caída potencial en el LED

Entonces el nuevo código se ve así:

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

Nota:

Caída / LEVANTAMIENTO / CAMBIO (los 3 funcionaron pero creo que FALLING debería usarse debido a la resistencia de arranque)

    

1 respuesta

1

El circuito de cruce por cero que ha diseñado es conceptualmente correcto: sin embargo, no está dimensionado correctamente. Precisamente, los resistores \ $ 30 \ mathrm {k} \ Omega \ $ que eliminó del circuito original no solo tienen la función que reduce el voltaje que va a la clase \ $ T_5 \ $ optoacoplador ( 4N25 type) para un nivel no destructivo, pero también limita su corriente de ánodo de entrada \ $ I_A \ $ . Sin ellos, es probable que el fotodiodo de entrada de \ $ T_5 \ $ se destruya al momento del encendido. Por lo tanto, debe agregar otras dos resistencias en serie al devanado secundario del transformador, para limitar el valor máximo de \ $ I_A \ $ .

Editar . Incluso si es probable que el problema se resuelva al configurar correctamente el pin de la placa Arduino, el OP ha pedido consejos sobre cómo dimensionar correctamente la resistencia de entrada del optoacoplador, así que decidí agregar las siguientes notas. Comencemos considerando el siguiente circuito estándar de optoacoplador de salida BJT:

simular este circuito : esquema creado usando CircuitLab

donde \ $ R_C \ $ es la resistencia del colector de salida (pull-up) y \ $ R_ {in} \ $ es la resistencia de polarización de entrada.

  • ¿Cómo diseñar correctamente el resistor de entrada \ $ R_ {in} \ $ ? Suponiendo que la corriente de recopilación máxima de \ $ Q_1 \ $ es $$ I_ {C1_ \ max} = \ frac {V_ {CC}} {R_C} $$ debemos asegurarnos de que la corriente de ánodo de \ $ D_1 \ $ sea suficiente para producir dicha fotocorriente de colector en todas las condiciones . Esto se logra considerando el voltaje máximo mínimo \ $ V_ {in} \ $ , el voltaje máximo del ánodo de \ $ D_1 \ $ y el CTR mínimo garantizado ( \ $ \ equiv \ $ relación de transferencia actual), es decir, deberíamos exigir que $$ R_ {in} \ le \ mathrm {CTR} \ frac {V_ {inpk _ {\ min}} - V_ {A_ \ max}} {I_ {C1_ \ max}} $$ Esto asegura que el \ $ Q_1 \ $ va en saturación. Al mismo tiempo, necesitamos que la corriente del ánodo no supere su calificación máxima absoluta , por lo tanto deberíamos exigir que $$ I_ {A_ \ max} \ gg \ frac {V_ {inpk _ {\ max}} - V_ {A_ \ min}} {R_ {in}} \ iff R_ {in} \ gg \ frac {V_ {inpk _ {\ max }} - V_ {A_ \ min}} {I_ {A_ \ max}} $$ En suma, $$  \ frac {V_ {inpk _ {\ max}} - V_ {A_ \ min}} {I_ {A_ \ max}} \ ll R_ {in} \ le \ mathrm {CTR} \ frac {V_ {inpk _ {\ min} } -V_ {A_ \ max}} {I_ {C1_ \ max}} $$

  • Consideraciones sobre el tiempo de aumento / caída del voltaje del colector de \ $ Q_1 \ $ . Los optoacopladores no son exactamente los dispositivos de ayuno disponibles en el mercado, debido a la acumulación inherente en su región B-C de portadores minoritarios generados ópticamente, que no son removibles rápidamente, y su generación lenta. Sin embargo, el Turn-on-transient es generalmente más rápido ya que no implica la eliminación de los cargos almacenados, por lo que si necesita bordes "bien inclinados" y bien definidos como señales de entrada , elija el \ $ V_ {CE_ {Q_1}} \ $ caídas .

respondido por el Daniele Tampieri

Lea otras preguntas en las etiquetas