Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sensor de Corriente Eléctrica No Invasivo Con Arduino y SCT-013
Sensor de Corriente Eléctrica No Invasivo Con Arduino y SCT-013
ELÉCTRICA NO
INVASIVO CON ARDUINO
Y SCT-013
24 ENERO, 2017
Anuncio:
La precisión del sensor puede ser de 1-2%, pero para ello es muy importante que el
núcleo ferromagnético se cierre adecuadamente. Hasta un pequeño hueco de aire
puede introducir desviaciones del 10%.
Como desventaja, al ser una carga inductiva, el SCT-013 introduce una variación del
ángulo de fase cuyo valor es función de la carga que lo atraviesa, pudiendo llegar a ser
de hasta 3º.
PRECIO
Existen diversos modelos dentro de la familia SCT-013, que varían el rango de
medición y en la forma de la salida. Físicamente son idénticos, aunque es posible
identificarlos por el texto escrito en la carcasa.
No obstante aunque el SCT-013-000 sea muy frecuente en las tiendas online, como
hemos dicho, normalmente vamos a preferir los modelos con salida en tensión.
Por último, es importante disponer un rango amplio de medición pero hay que
tener en cuenta que un modelo de mayor intensidad máxima se traducirá en una
menor precisión. Una intensidad de 30A a 230V corresponde con una carga de 6.900W,
lo cuál es suficiente para la mayoría de usuarios domésticos.
El primario generalmente está formado por una única espira formada por el
conductor a medir. Aunque es posible enrollar el conductor haciendo que pase más de
una vez por el interior de la “pinza”. El número de espiras del secundario, integrado en
la sonda, varía 1000-2000 según modelos del SCT-013.
ESQUEMA DE MONTAJE
Para entender la conexión del sensor SCT-013 tenemos que entender y resolver
tres problemáticas,
Excepto el modelo SCT-013-100, todos los demás modelos tienen una resistencia
de burden interna para que la salida sea una señal de tensión de 1V. Por lo cual ni
siquiera tendremos que preocuparnos por ello.
Para poder medir las tensiones de la salida del transformador tenemos varias
opciones, de peor a mejor.
Por otro lado, debemos tener en cuenta que al hablar de tensión alterna
normalmente se emplean valores RMS. Recordemos brevemente las ecuaciones de
tensión pico, y pico a pico.
Por tanto, en el caso de los sensores con salida de ±1V RMS, la tensión de pico será
±1.414V, y la tensión pico a pico 2.828V.
En el caso del SCT-013-100 la salida será ±50mA. Con una resistencia burden
externa de 33Ω la tensión de salida será ±1.65V RMS, y por tanto una tensión de pico de
±2.33V y una tensión de pico a pico de 4.66V.
CONEXIÓN ELÉCTRICA
Ya tenemos todos los componentes para medir la intensidad de red con un sensor
SCT-013. Vamos a usar un sensor con salida de tensión ±1V RMS y resistencia burden
interna, junto con un ADC como el ADS1115 en modo diferencial.
Los sensores SCT-013 disponen de un conector Jack 3.5, muy frecuente en audio,
pero no el más cómodo para emplear en nuestros proyectos de electrónica. Para poder
conectarlo deberemos o cortar el cable, o adquirir un conector hembra al que soldemos
los cables. Afortunadamente son terminales fáciles de adquirir., aunque tampoco
descartéis cortar el cable.
Si no queréis usar un ADC externo, podéis usar la solución más convencional, que
es añadir un circuito que nos permita añadir un offset central.
En caso de usar el SCT-013-100 con salida de ±50mA, tendremos que añadir una
resistencia burden externa de 33 Ohm y el rango final será de 0.17V a 0.483V, también
dentro del rango de las entradas analógicas de un Arduino a 5V.
EJEMPLOS DE CÓDIGO
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads;
void setup()
{
Serial.begin(9600);
void loop()
{
float currentRMS = getCorriente();
float power = 230.0 * currentRMS;
sum += sq(corriente);
counter = counter + 1;
}
float getCorriente()
{
long tiempo = millis();
long rawAdc = ads.readADC_Differential_0_1();
long minRaw = rawAdc;
long maxRaw = rawAdc;
while (millis() - tiempo < 1000)
{
rawAdc = ads.readADC_Differential_0_1();
maxRaw = maxRaw > rawAdc ? maxRaw : rawAdc;
minRaw = minRaw < rawAdc ? minRaw : rawAdc;
}
maxRaw = maxRaw > -minRaw ? maxRaw : -minRaw;
float voltagePeak = maxRaw * multiplier / 1000;
float voltageRMS = voltagePeak * 0.70710678118;
float currentRMS = voltageRMS * FACTOR;
return(currentRMS);
}
Podemos ver los resultados en el monitor del puerto serie, graficarlo con el serial
plotter, o recogerlo en un proyecto mayor para mostrarlo en una página web, o
registrarlo en una SD.