Obtener un valor incorrecto de la corriente mientras se detecta Transfromer actual

0

Estoy trabajando en un amperímetro de CA. Para detectar la corriente, se utiliza un transformador de corriente que tiene 2500 giros y un rango de detección de hasta 50A.

La resistencia de carga de 200 ohmios se usa entre la conexión a tierra y el pin de salida del transformador de corriente.

Anteriormente, trabajé en un voltímetro de CA, funcionó bien y utilicé la misma forma para detectar la corriente. Como la SALIDA del transformador de corriente es onda sinusoidal, usé el método RMS para extraer el valor.

Esto es lo que he hecho:

#define ADC_BUFFER_LENGTH 40

     if(adc_data_index >= ADC_BUFFER_LENGTH )
          {
            adc_data_index = 0;

            // Time to Process and Display Data
            adc_buf_local = 0;
            adc_filter_val_current = 0.00;
            for(i=0; i<ADC_BUFFER_LENGTH; i++ )
            {
                adc_buf_local = adc_data[i];
                adc_filter_val_current += ((float)(adc_buf_local*(float)adc_buf_local ));
            }
            // 625*625 = 390625
            // 128*128 = 16384
            // 625^2 / 128^2 = 23.8414
            adc_filter_val_current = (unsigned long)((float)adc_filter_val_current * 23.84);
            adc_filter_val_current /= ADC_BUFFER_LENGTH;      // mean squared sum
            adc_filter_val_current *= 2; //To even Negative Pulse
            ac_value_current = (float)sqrt(adc_filter_val_current);// root mean square
            ac_value_current /= 1000;    
            }

¿Qué me estoy perdiendo?

    
pregunta Embedded Geek

1 respuesta

-1

adc_filter_val_current * = 2; // Hasta pulso negativo; Esto no tiene sentido, dado que los valores de ADC a lo largo de un ciclo completo de la onda son de pico a pico.

A medida que muestrea el voltaje a lo largo del tiempo, promediando las lecturas del ADC (su bucle for) y dividiéndolo por el valor del resistor debería darle la corriente instantánea.

Sin embargo, nuevamente, dependiendo de la frecuencia de muestreo, puede medir la corriente en un ciclo completo con un detector de cruce por cero. Lo suficientemente fácil de hacer en el código, ya que sabe qué valor de bit, cero volts AC es. En qué punto podría calcular la corriente máxima o la corriente RMS.

    
respondido por el LateDev

Lea otras preguntas en las etiquetas