Ayuda con el sensor de corriente DFRobot ACS758 50A

0

Compré este sensor de DFRobot para medir la corriente DC usando mi 5v Trinket Pro. Seguí la configuración de cableado y las muestras de código de su sitio web. Parece que funciona bien una vez que todo está configurado, pero me pregunto ¿por qué es que una vez que desconecto las líneas de las conexiones de ENTRADA y SALIDA, todavía obtendría una lectura? Mi entendimiento es que debería obtener un valor de 0A una vez que los desconecte. ¿Me estoy perdiendo de algo?

Se adjuntan las fotos de mi configuración a continuación:

Actualización:aquíestáelcódigodelboceto

//includethelibrarycode:#include<LiquidCrystal.h>intRS=3;intEN=4;intD4=9;intD5=10;intD6=11;intD7=12;//initializethelibrarywiththenumbersoftheinterfacepinsLiquidCrystallcd(RS,EN,D4,D5,D6,D7);constintnumReadings=30;floatreadings[numReadings];//thereadingsfromtheanaloginputintindex=0;//theindexofthecurrentreadingfloattotal=0;//therunningtotalfloataverage=0;//theaveragefloatcurrentValue=0;//thesetupfunctionrunsoncewhenyoupressresetorpowertheboardvoidsetup(){//setuptheLCD'snumberofcolumnsandrows:lcd.begin(16,2);for(intthisReading=0;thisReading<numReadings;thisReading++)readings[thisReading]=0;}//theloopfunctionrunsoverandoveragainforevervoidloop(){total=total-readings[index];readings[index]=analogRead(0);//Rawdatareadinglcd.setCursor(0,1);lcd.print("Orig: ");
    lcd.print(readings[index]);

    //Data processing:510-raw data from analogRead when the input is 0;
    // 5-5v; the first 0.04-0.04V/A(sensitivity); the second 0.04-offset val;
    readings[index] = (readings[index]-512)*5/1024/0.04-0.04;                    
    total= total + readings[index];       
    index = index + 1;                    
    if (index >= numReadings)              
      index = 0;                           
    average = total/numReadings;   //Smoothing algorithm (http://www.arduino.cc/en/Tutorial/Smoothing)    
    currentValue= average;

    lcd.setCursor(0, 0);
    lcd.print("A0: ");
    lcd.print(currentValue);
    delay(10);
}

Por favor, tengan paciencia conmigo, ya que todavía soy nuevo en electrónica.

    
pregunta Rafael Ibasco

2 respuestas

1

Por su aspecto, es probable que esté obteniendo una lectura de compensación. Si resta este valor (leyendo cuando está desconectado) y luego inicia / detiene la corriente, ¿se comporta de acuerdo con las expectativas? ¿También tiene la oportunidad de calibrar utilizando otro amperímetro? Al menos, compare a 10 o 20 amperios, independientemente de la corriente que pueda manejar su amperímetro. También tengo curiosidad por saber cómo está generando 50 amperios en su configuración de prueba.

En otra nota, puedo sugerir un algoritmo de suavizado más fácil:

SmoothReading doble, NewReading, Factor;

configuración () {

Factor = 30;

}

loop () {

SmoothReading = (SmoothReading * (Factor-1) + NewReading) / Factor;

Pantalla (SmoothReading);

}

Cuanto más grande sea el 'Factor', más suave será la lectura, pero también el instrumento de reacción más lenta.

Este simple filtro de paso bajo digital me sirvió bien a lo largo de los años. Si desea obtener una fantasía real, puede hacer 2 o más filtros de orden. Con los filtros de orden superior se obtiene un mejor rechazo del ruido con una reacción más rápida. Para hacer un filtro de segundo orden, debe tratar SmoothReading del primer filtro como un NewReading para el segundo y así sucesivamente. Para el filtro de 3er orden, dividiría Factor por 3 para obtener una respuesta similar.

    
respondido por el Dario Dentes
0

Estos sensores pueden medir el flujo de corriente en cualquier dirección, por lo tanto, la corriente cero produce un voltaje de salida de rango medio. La corriente en una dirección producirá un voltaje por encima de eso, y la corriente en la otra dirección un voltaje por debajo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas