Buenas tardes. Deseo controlar el consumo de una línea AC de 230 V. Para ello utilizo un Arduino Mega 256, un ADS1115 y un transformador YMDC SCT-013 10A/1V.
El circuito es el siguiente:

Conexión SCT-013 y ADS1115 :
Pines A0 y A1 del ADS1115.
Conexión ADS1115 con Arduino Mega 256:
Vdd -> 5V
GND -> GND
SCL -> SCL (21)
SDA -> SDA (20)
ADDR -> GND
Y el sketch:
// ADS1115_Dif_Vpp
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads; // Crear una instancia del ADS1115
const float FACTOR = 10; //10A/1V
const float multiplier = 0.000125F; // GAIN_ONE => intervalo ADC: ±4,096V => 1 bit = 0,1250mV
float Irms;
float Prms;
void setup()
{
Serial.begin(9600);
ads.setGain(GAIN_ONE); // ±4,096V 1 bit = 0,1250mV
ads.begin(); // Inicializa el ADS1115 en la dirección predeterminada (0x48) como esclavo en el protocolo I2C
}
void printMeasure(String prefix, float value, String postfix) // Define la función printMeasure
{
Serial.print(prefix);
Serial.print(value, 4);
Serial.println(postfix);
}
void loop()
{
Irms=getCorriente();
printMeasure("Irms: ", Irms, "A");
Prms=Irms*230;
printMeasure("Prms: ", Prms, "W");
Serial.println(".");
delay(1000);
}
float getCorriente()
{
int adc0=0;
int Vpp = 0; // Voltage pico positivo
int Vpn = 0; // Voltage pico negativo
float voltage;
float corriente;
long tiempo = millis();
while (millis() - tiempo < 10000)
{
voltage = ads.readADC_Differential_0_1();
if (voltage > Vpp) {
Vpp = voltage;
}
if (voltage < Vpn) {
Vpn = voltage;
}
}
voltage = (Vpp + abs(Vpn))/2; // Voltage pico
voltage = voltage * multiplier;
corriente = voltage * FACTOR;
corriente = corriente / sqrt(2);
return(corriente);
}
He obtenido los siguientes resultados:
Potencia teórica equipo = 0 W
I1 Int. téster (A) -
Pot. = I1 x 230 V -
I2 Int. Arduino = 0,0009 A
I1/I2 -
Potencia teórica equipo = 76 W
I1 Int. téster = 0,33 A
Pot. = I1 x 230 V = 76,13 W
I2 Int. Arduino = 0,08139 A
I1/I2 = 4,07
- - - -
Potencia teórica equipo = desconocida
I1 Int. téster = 4,14 A
Pot. = I1 x 230 V = 952,2 W
I2 Int. Arduino = 1,0359 A
I1/I2 = 4
Potencia teórica equipo = 2.000 W
I1 Int. téster = 8,13 A
Pot. = I1 x 230 V = 1.869,9 W
I2 Int. Arduino = 1,9781 A
I1/I2 = 4,11
Potencia teórica equipo = desconocida
I1 Int. téster = 6,32 A
Pot. = I1 x 230 V = 1.453,6 W
I2 Int. Arduino = 1,5486 A
I1/I2 = 4,08
Ignoro por qué hay un factor de 4 entre la intensidad real medida con el téster y la medida mediante el circuito. He revisado el programa y las conexiones un montón de veces y a mi me parece correcto.
¿Podríais echarle un vistazo?
Gracias,