ACS714 5A AC Current Sensing arduino

1

Hola chicos, acabo de recibir mi ACS714 -5 a + 5A IC Soy nuevo en la detección de voltaje y corriente. Busqué en Google para los tutoriales en ACS714 5A pero no pude encontrar un tutorial adecuado con detección de CA. Obtuve el código de abajo del patio de recreo de arduino, pero la salida de la corriente no es adecuada. La lectura de Curernt mientras el interruptor está encendido o apagado es la misma. algunos pueden ayudarnos.

Fuente de detección actual de Arduino

int AnalogInputPin = 0; // Define analog input pin
// --------------------------------------------------------------------------------------------------------
void setup(){
  Serial.begin(9600);
}
void loop(){
  double Current = currentSensor(analogRead(AnalogInputPin));  // Read  analog value
  Serial.print(", VariationFromNull: "); 
  printDouble(Current, 2);                                     // display Current
  Serial.print(" A");
  Serial.println("");
  delay(1000);
}
// --------------------------------------------------------------------------------------------------------
// Print decimal numbers
void printDouble(double val, byte precision) {
  Serial.print (int(val));                                     // Print int part
  if( precision > 0) {                                         // Print decimal part
    Serial.print(".");
    unsigned long frac, mult = 1;
    byte padding = precision -1;
    while(precision--) mult *=10;
    if(val >= 0) frac = (val - int(val)) * mult; else frac = (int(val) - val) * mult;
    unsigned long frac1 = frac;
    while(frac1 /= 10) padding--;
    while(padding--) Serial.print("0");
    Serial.print(frac,DEC) ;
  }
}
// Read 1.1V reference against AVcc
long readInternalVcc() {
  long result;
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2);                                                    // Wait for Vref to settle
  ADCSRA |= _BV(ADSC);                                         // Convert
  while (bit_is_set(ADCSRA,ADSC));
  result = ADCL;
  result |= ADCH<<8;
  result = 1126400L / result;                                  // Back-calculate AVcc in mV
  return result;
}
// Calculate current with Allegro ACS714
double currentSensor(int RawADC) {
  int    Sensitivity    = 185; // mV/A
  long   InternalVcc    = readInternalVcc();
  double ZeroCurrentVcc = InternalVcc / 2;
  double SensedVoltage  = (RawADC * InternalVcc) / 1024;
  double Difference     = SensedVoltage - ZeroCurrentVcc;
  double SensedCurrent  = Difference / Sensitivity;
  Serial.print("ADC: ");
  Serial.print(RawADC);
  Serial.print("/1024");
  Serial.print(", Sensed Voltage: ");
  printDouble(SensedVoltage, 1);
  Serial.print("mV");
  Serial.print(", 0A at: ");
  printDouble(ZeroCurrentVcc, 1);
  Serial.print("mV");
  return SensedCurrent;                                        // Return the Current
}
    
pregunta Daniel Euchar

0 respuestas

Lea otras preguntas en las etiquetas