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
}