¿Cómo probar si el cruce por cero está funcionando?

1

Usé un circuito como este:

En el led obtengo: 3.3 mA y 1.3V

¿Cuál es la mejor manera de comprobar si el cruce por cero funciona con arduino o multimetar?

    
pregunta Vladimir Djukic

3 respuestas

2

Una prueba simple es usar un multímetro para medir el voltaje en la salida. Como debería ser PWM, debería ver algo entre 5V y 0V. Si ves 5V o 0V, entonces no está funcionando, pero si ves algo entre los dos, probablemente esté funcionando.

Otra opción es conectar un LED con una resistencia adecuada entre 5V y la salida, luego pasar los ojos por el LED. 100Hz es una frecuencia muy baja, y debería parecer que, en lugar de una racha de luz sólida en su visión, debería haber una línea punteada de pulsos de luz si el cruce por cero está funcionando correctamente.

Otra opción es conectar un altavoz pequeño de baja potencia y una resistencia en serie entre 5V y la salida. Luego puede escuchar los cruces por cero de 100Hz si está funcionando correctamente.

Si tienes un arduino, sin embargo, es bastante fácil contar el número de pulsos por segundo y verificar el funcionamiento correcto.

    
respondido por el Adam Davis
1

¿Tiene su multímetro algún tipo de función de contador de frecuencia? Algunos lo hacen, y eso sería lo más sencillo: verifique que la salida del detector coincida con la frecuencia de su línea.

De lo contrario, programe el Arduino para que sea un contador de frecuencia y mire los resultados allí. No es dificil de hacer Solo cuente los bordes ascendentes durante un segundo e imprima el valor.

    
respondido por el Dave Tweed
0

Aquí hay un programa simple de Arduino para medir la interrupción de cruce de CA:

#define ZERO_DETECT   2     // Your arduino interrupt pin
#define BOARD_LED     13    // on board LED

// volatile required if you are going to reference this variable
// outside of the interrupt procedure
volatile  byte zeroCrossCounter = 0;

void setup() {
  // You don't need a pullup since you can use the Arduino pullup
  pinMode(ZERO_DETECT,INPUT_PULLUP);
  pinMode(BOARD_LED,OUTPUT);
  digitalWrite(BOARD_LED,LOW);
  attachInterrupt(digitalPinToInterrupt(ZERO_DETECT),AcZeroCrossingInterrupt,RISING);
}

void loop() {
  // put your main code here, to run repeatedly:
  // Nothing to do here
}

void AcZeroCrossingInterrupt () {

  if ( ++zeroCrossCounter == 60 ) {     // blink LED approx every 1/2 second
    zeroCrossCounter = 0;
    digitalWrite(BOARD_LED,!digitalRead(BOARD_LED));
  }
}
    
respondido por el user136378

Lea otras preguntas en las etiquetas