Buenas! Soy alumna del grado superior de Automatización y Robótica Industrial. Intento hacer para clase un proyecto de Eficiencia Energética con Arduino, el cual trata de la medida de la potencia (y con ello el consumo de un taller). Mi proyecto tiene un Arduino UNO R3 (marca ELEGOO), un nodemcu v2 (para enviar el dato de la potencia al móvil hasta la aplicación Blynk y por último de una placa bredboard. Ésta placa tiene unos dispositivos los cuales me permiten modificar las ondas de entrada para que al conectarlas al Arduino vaya todo bien y se encuentren entre el rango 0 - 5VDC permitidos.
Para poder obtener la potencia (Potencia = Intensidad * Tensión) tengo un sensor de intensidad SCT 013 030 (que a la entrada detecta 30 A y a la salida me devuelve 0 - 1 VAC pero al Arduino (pin analógico 0) me llegan entre 0 - 5 VDC gracias a la bredboard (cuando tengo 1VAC, a mi me llegan 5VDC, si me llegan 0.5VAC a mi me llegan 2.5VDC y así sucesivamente). Y la tensión la obtengo desde la red (con un enchufe) que de 0 - 240VAC me llega 0 - 5 VDC nuevamente gracias a la bredboard.
Pues bien, para poder realizar el código del Arduino me he fijado de dos páginas web, de las cuales de la primera obtengo la parte de la intensidad (Control de consumo eléctrico con Arduino (1)) y de la segunda la tensión (Electgpl Electrónica: Medición de Tensión Alterna TrueRMS v1).
Pero, como era de esperar, al no tener muchas nociones de Arduino, los resultados son extraños ya que la tensión me da 0V y a veces 8V y la intensidad (para medirla con el sensor de intensidad SCT uso de consumo una lampara de escritorio) me da 1 - 2 mV los cuales no cambian aunque haya consumo (lámpara encendida) o no (lámpara apagada).
Espero que me puedan ayudar y agradezco cualquier pista que me puedan dar.
int analogInPin_0 = A0; // Pin Intensidad
int analogInPin_1 = A1; // Pin Tensión
// Variables Intensidad
int retardo = 2 ; // Tiempo (s.) entre visionados
float lectura;
float ff; // Factor de frecuencia (50Hz -> 5 / 60Hz -> 4.15)
float pKW; // Potencia
float iA; // Intensidad
float vS; // Sensor de intensidad (mV)
float S_Ratio; // Sensor/ratio (mV/mA)
float fc; // Factor corrector
float ni; // Nº de iteraciónes
// Variables Tensión
float vV; // Tensión
float valorMax=0; //
float smoothread (float fc);
float retorno;
int x;
int i;
// -- initialización serial comm & parametros ------------
void setup() {
Serial.begin(9600);
S_Ratio = 0.55; // Sensor/ratio (mV/mA ) : 36.5
ff = 5; // freq. factor / (50Hz -> 5 / 60Hz -> 4.15)
int ni=35;
float retorno=0.0;
int x;
int i;
}
// -- smooth read routine ----------------------------
float smoothread(float fc){ // fc (factor corrector)
int ni=35; // n. de iteraciones => smooth
// (ni) => rango 10 a 50 mejor promedio [smoothing]
float retorno = 0.0;
for (int x=0;x<ni;x++){
do { // espero paso por cero
delayMicroseconds(100);
} while (analogRead(analogInPin_0)!= 0) ;
delay (ff); // espera centro de ciclo
delay (10); // estabilizacion CAD
retorno = retorno +(analogRead(analogInPin_0)*fc);
}
return retorno / ni;
while (true){
do {
vV=analogRead(analogInPin_1);
delay(20);
}
while (vV!=0);
for (i=0;i<300;i++){
vV=analogRead(analogInPin_1);
delay(60);
valorMax=vV*vV;
}
}
}
// -- main loop --------------------------------------
void loop() {
lectura = (smoothread(1)/1.41); // lectura (rms)
vS = (lectura*0.0048); // valor de C.A.D.
iA = (lectura*S_Ratio)/1000; // Intensidad (A)
pKW = (vV*iA)/1000; // Potencia (kW)
vV = (valorMax/300);
Serial.print("\n" );
Serial.print("\n- Tension [V] --> " );
Serial.print(vV,0);
Serial.print("\n- Lectura del sensor [mV] --> " );
Serial.print(vS,3);
Serial.print("\n- Intensidad calculada [A] --> " );
Serial.print(iA,3);
Serial.print("\n- Potencia calculada [kW] --> " );
Serial.print(pKW,3);
Serial.print("\n-------------------------------\n" );
delay(retardo * 1000);
}