Está en la página 1de 18

https://www.luisllamas.

es/arduino-sensor-corriente-sct-013/
24 enero, 2017

Sensor de corriente eléctrica no invasivo con Arduino y SCT-013

¿Qué es un sensor SCT-013?

La familia SCT-013 son sensores de corrientes no invasivos que permiten medir la intensidad
que atraviesa un conductor sin necesidad de cortar o modificar el conductor. Podemos emplear
estos sensores con un procesador como Arduino para medir la intensidad o potencia consumida
por una carga

Los sensores SCT-013 son transformadores de corriente, dispositivos de instrumentación que


proporcionan una medición proporcional a la intensidad que atraviesa un circuito. La medición
se realiza por inducción electromagnética.

Los sensores SCT-013 disponen de un núcleo ferromagnético partido (como una pinza) que
permite abrirlo para arrollar un conductor de una instalación eléctrica sin necesidad de cortarlo.

Dentro de la familia SCT-013 existen modelos que proporcionan la medición como una salida
de intensidad o de tensión. Dentro de lo posible, lo normal es que prefiramos salida por
tensión porque la conexión es más sencilla.

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º.

Los transformadores de intensidad son componentes frecuentes en el mundo industrial y en


distribución eléctrica, permitiendo monitorizar el consumo de puntos de consumo donde sería
imposible otro tipo de medición. También forman parte de múltiples instrumentos de medición,
incluso en equipos portátiles como en pinzas amperimétricas o analizadores de red.

En nuestros proyectos de electrónica y domótica podemos emplear los sensores de corriente


SCT-013, por ejemplo, para medir el consumo eléctrico de un aparato, comprobar el estado de
una instalación eléctrica, siendo componentes frecuentes en monitores de energía caseros para
registrar el consumo de una instalación o incluso acceder a través de internet en tiempo real.

Precio

Existen diversos modelos dentro de la familia SCT-013, que varían en 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.

El precio de todos ellos es similar, podemos encontrarlos por 4-4.50€, buscando en vendedores
internacionales de eBay o AliExpress.

Los más frecuentes son el SCT-013-000 para una corriente máxima de 100A y salida de
intensidad de 50mA (100A:50mA), y el SCT-013-030 para corrientes máximas de 30A
(30A/1V) y salida en tensión de 1V.

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 cual es suficiente para
la mayoría de los usuarios domésticos.

¿Cómo funciona un SCT-013?

La familia de sensores SCT-013 son pequeños transformadores de corriente o CT (Current


transformartor). Los transformadores de corriente son instrumentos ampliamente empleados
como elementos de medición.

Un transformador de corriente es similar a un transformador de tensión y está basado en los


mismos principios de funcionamiento (de hecho, formalmente es idéntico). Sin embargo,
persiguen objetivos diferentes y, en consecuencia, están diseñados y construidos de forma
distinta.

Un transformador de corriente busca generar una intensidad en el secundario que sea


proporcional a la intensidad que atraviesa el primario. Para ello se desea que el primario esté
formado un número de espiras reducido.

Podemos emplear esto para construir un sensor de corriente no invasivo. En un sensor se


corriente el núcleo ferromagnético puede estar dividido de forma que pueda abrirse y arrollar un
conductor.

De esta forma, tenemos un transformador en el que:

 El cable por el que circula la intensidad a medir constituye un devanado primario


 La «pinza» es el núcleo magnético
 El devanado secundario está integrado como parte de la sonda.

Cuando la corriente alterna circula por el conductor se genera un flujo magnético en el núcleo
ferromagnético, que a su vez genera una corriente eléctrica en el devanado secundario.

La relación de transformación de intensidad depende de la relación entre el número de espiras.


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.

A diferencia de los transformadores de tensión, en un transformador de intensidad el circuito


secundario nunca debería estar abierto, porque las corrientes inducidas podrían llegar a dañar el
componente. Por ese motivo, los sensores de SCT-130 disponen de protecciones (resistencia
burden en los sensores de salida por tensión, o diodos de protección en los sensores de salida por
corriente).

Esquema de montaje

Para entender la conexión del sensor SCT-013 tenemos que entender y resolver tres
problemáticas,

 Salida del sensor en intensidad


 Adaptación de rango de tensión
 Tensiones positivas y negativas

Salida del sensor en intensidad

El SCT-013 son transformadores de intensidad, es decir, la medición se obtiene como una señal
de intensidad proporcional a la corriente que circula por el cable. Pero los procesadores solo
son capaces de medir tensiones.

Este problema es sencillo de resolver. Para convertir la salida en intensidad en una salida de
tensión únicamente tendremos que incluir una resistencia (resistencia burden).

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.

Únicamente en el caso del SCT-013-100, carece de resistencia burden interna, por lo que la
salida es una señal de ±50mA. Una resistencia de 33Ω en paralelo con el sensor será suficiente.

Tensiones positivas y negativas

Otro problema que tenemos que resolver es que estamos midiendo corriente alterna, y la
intensidad inducida en el secundario es igualmente alterna. Tras el paso por la resistencia burden
(interna o externa) la salida de tensión también es alterna.
Sin embargo, como sabemos, las entradas analógicas de la mayoría de los procesadores,
incluidos Arduino, sólo pueden medir tensiones positivas.

Para poder medir las tensiones de la salida del transformador tenemos varias opciones, de peor a
mejor:

 Rectificar la señal mediante un puente de diodos, y medir la onda como valores positivos.
No recomendable dado que perdemos la información de si estamos en el semiperiodo
negativo o positivo, además porque tendremos la caída de tensión del diodo y, aún peor,
el diodo no conduce por debajo de una tensión por lo que la señal estará distorsionada en
los cruces por cero.

 Añadir un offset en DC mediante el uso de dos resistencias y un condensador que


proporcionen un punto medio entre GND y Vcc. Mucho mejor si además añadimos
un amplificador operacional como seguidor de tensión.

 Añadir un ADC con entrada diferencial, que permite realizar mediciones de tensiones
positivas y negativas, como el ADS1115. Es la opción que vamos a usar nosotros.

Adaptación de rango de tensión

El último problema es que debemos adaptar el rango de tensiones en la salida del sensor.
Arduino sólo puede realizar mediciones entre 0 y Vcc. Además, cuanto más pequeño sea el
rango más precisión perdemos, por lo que conviene ajustarnos a este rango.

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.
Ajustando la ganancia del ADS1115 a 2.048V estaremos dentro del rango de ±1.414V. En el
caso de un sensor de 30A tendremos una precisión de 1.87mA, y 6,25 mA para un sensor de
100A.

Si usáis un SCT-013-100 con salida de ±50mA, tendremos que añadir una resistencia burden
externa de 33Ω y subir la ganancia del ADS1115 a 4.096V para cumplir con el rango de ±2.33V.

La conexión, vista desde Arduino, sería únicamente la alimentación del módulo ADS1115 como
vimos en la entrada sobre el ADS1115.

Para realizar las mediciones es importante que cojamos únicamente uno de los conductores
con la «pinza». Si cogemos más de un conductor (dos conductores en el caso de
instalaciones monofásicas, tres en instalaciones trifásicas) el efecto de los conductores se
anularía. Esto generando una inducción nula y, por tanto, una medición nula.

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 adelante, supondremos que usáis un Arduino de Vcc 5V. Si usáis otro procesador o un
modelo de Arduino con otro Vcc (por ejemplo 3.3V) deberéis corregir el montaje en
consecuencia.

Donde hemos añadido un punto de offset de DC de 2.5V por lo que el rango final es de 1.08V a
3.92V, dentro del rango de las entradas analógicas un Arduino alimentado a 5V.

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

Montaje con ADS1115

Si habéis usado el montaje con un SCT-013 con salida de ±1V RMS y ADS1115, el código
necesario es similar al que vimos en la entrada sobre el ADS1115. Necesitaréis la librería de
Adafruit para el ADS1115.

Para que el ADS1115 muestree a una velocidad superior, deberemos modificar la siguiente línea
del fichero ‘Adafruit_ADS1015.h’
https://naylampmechatronics.com/blog/51_tutorial-sensor-de-corriente-ac-no-invasivo-s.html

Tutorial sensor de corriente AC no invasivo SCT-013

En este tutorial trabajaremos con los sensores de corriente de la serie SCT-013, realizaremos


ejemplos para medir la potencia y corriente alterna.

Sensores SCT-013

Los sensores de la serie SCT-013 son sensores que trabajan como transformadores, la corriente
que circula por el cable que deseamos medir actúa como el devanado primario (1 espira) e
internamente tiene un devanado secundario que dependiendo del modelo pueden tener hasta más
de 2000 espiras.

La cantidad de espiras representa la relación entre corriente que circula por el cable y la que el
sensor nos entrega, esta relación o proporción es la que diferencia entre los diferentes modelos de
sensores SCT-013, adicionalmente pueden tener una resistencia de carga en la salida de esta
forma en lugar de corriente se trabaja con una salida voltaje.
A este tipo de sensores se los conoce como Sensores CT (Current transformers), que como se
explicó son transformadores, Por el núcleo solo debe de atravesar una sola línea, si pasamos por
ejemplo los dos cables de una conexión monofásica, nuestra lectura será 0, puesto que los cables
tienen corrientes opuestas.

Una ventaja de SCT-013 es que no necesitamos interrumpir (cortar o desempalmar) el cable que
vamos a medir, esto porque al igual que una pinza amperimétrica tiene el núcleo partido.

Entre los diferentes modelos podemos encontrar:

Sensor de corriente SCT-013-100

Con este sensor podemos medir una corriente hasta de 100A, teniendo como salida 50mA para
una corriente de 100A, la proporción entonces es de 100A/50mA.
Sensor de corriente SCT-013-030

Nos permite realizar medidas en un rango de 30A. Este modelo tiene una resistencia de carga
interna, entregándonos una salida de voltaje. La relación es de 30A/1V

Circuito acondicionador de señal.

La salida de este sensor es una señal alterna, cuyo valor no está dentro del rango de las entradas
analógicas (0 a +5V) del Arduino, si bien el rango del sensor puede ser inferior, la parte negativa
de la señal podría malograr a nuestro Arduino.

Lo ideal es, si nuestro sensor tiene una salida de -50mA a +50mA acondicionarlo a una salida de
0 a 5V. Esto se podría realizar convirtiendo de corriente a voltaje, (a un rango de [-1V +1V]),
luego amplificarlo (a [-2.5V +2.5V]) y finalmente un sumador para eliminar la parte negativa ([0
5V]).

Otra forma seria rectificando la entrada y trabajar con la parte positiva, esto asumiendo que la
señal es simétrica. Nosotros usaremos esta forma.

Para rectificar no podemos usar diodos, puesto que la caída de voltaje en el diodo es muy grande
en comparación al voltaje de la señal. Para esto usamos un operacional, configurado en un
seguidor de voltaje, usaremos el operacional LM358, que trabaja con polaridad positiva, de esta
forma se eliminará la parte negativa de la señal, si bien no es un rectificador de onda completa,
pero con una rectificación de media onda podemos trabajar.

El LM358 si se alimenta con 5V, se satura con 3.5V aproximadamente, motivo por el cual no
podemos amplificar hasta 5V, pero si trabajamos con Arduino no necesitamos alcanzar los 5V,
podemos trabajar con la referencia interna de 1.1V y de esta forma aprovechar en el rango
completo de la lectura a analógica.

Si estamos trabajando con el sensor SCT-013-030, significa que la salida está en un rango de +/-
1V, entonces nuestro circuito que usaremos es:

Y si el sensor es de salida de corriente como el SCT-013-100 hay que ponerle una resistencia de
carga para que esté en un rango de 1V (50mAx20ohmios=1V).

Debemos de tener en cuenta también los pines del conector, tiene un conector plug de audio:

El pin central está desconectado, los otros dos son la salida del sensor.

Conociendo esto podemos empezar a implementar las conexiones para poder trabajar con estos
sensores:

Conexión CST-013 y Arduino:

La conexión es simple, implementar el circuito explicado anteriormente y después conectarlo al


pin analógico 0 del Arduino.
No olvidar poner la resistencia respectiva si están trabajando con un sensor con salida de
corriente.

También no olvidar que solo se debe pasar por el sensor un solo cable de la línea que se desea
medir.

Realizando lecturas de la Corriente.

Para esto, básicamente realizaremos lecturas de la entrada analógica, posteriormente escalamos


los valores a voltaje (voltaje del sensor), y finalmente con la relación (Corriente/Voltaje) que
tenemos como dato del sensor obtendremos la corriente.

El código se muestra a continuación:

void setup() {
 Serial.begin(115200);
 analogReference(INTERNAL);
}

void loop() {  
 int sensorValue = analogRead(A0); //Lectura analógica
 float voltajeSensor = analogRead(A0) * (1.1 / 1023.0); //voltaje del sensor
 float corriente=voltajeSensor*30.0; //corriente=VoltajeSensor*(30A/1V)
 Serial.println(corriente,3);//enviamos por el puerto serie
}

Como se observa es una simple lectura analógica. En la siguiente línea se realiza el cálculo para
obtener la corriente:
 float corriente=voltajeSensor*30.0; //corriente=VoltajeSensor*(30A/1V)

Dependiendo del sensor que tengan deben cambiar el 30.0 por la relación correspondiente a su
sensor.

Si están usando Arduino mega, tiene dos referencias internas para su lectura analógica, hay que
usar la referencia de 1.1V, para esto si están usando un Arduino Mega hay que cambiar la
siguiente línea de código:

 analogReference(INTERNAL1V1); //solo Arduino Mega

A continuación, se muestra la salida del monitor serial cuando estamos midiendo una carga de
600W.

No olviden escoger la velocidad de 115200 baudios.

Y si abren el Serial Plotter de Arduino verán los mismos datos, pero de forma gráfica, y se puede
observar que es una señal rectificada pero solo en media onda.

 
Con este ejemplo podemos ver el comportamiento de la corriente, generalmente cargas
puramente resistivas muestran semi-ciclos sinusoidales, otro tipo de cargas no necesariamente
tendrán ese aspecto.

Realizando Medidas de Potencia y Corriente AC (Irms)

Sabiendo la corriente en cada instante podemos calcular la corriente eficaz o Irms y con esto
también calcular la Potencia.

La corriente RMS (Root Mean Square) o valor eficaz, es la corriente capaz de producir el mismo
trabajo que su valor en corriente directa o continúa. La corriente RMS es el valor que nos
entregan los instrumentos de medición, como por ejemplo una pinza amperimétrica.

Para calcular el RMS se utiliza la siguiente formula.

Y en tiempo discreto la ecuación seria:

Donde N es la cantidad de muestras en un periodo o múltiplo de este.

Con esta fórmula podemos obtener el valor RMS, y conociendo el voltaje (en Perú 220AC)
podemos calcular la Potencia.

A continuación, mostramos el código para realizar el ejemplo:

void setup() {
 
 Serial.begin(9600);
 analogReference(INTERNAL);
 //analogReference(INTERNAL1V1); //solo Arduino Mega
}

void loop() {
 
 float Irms=get_corriente(); //Corriente eficaz (A)
 float P=Irms*220.0; // P=IV (Watts)

 Serial.print("Irms: ");
 Serial.print(Irms,3);
 Serial.print("A, Potencia: ");
 Serial.print(P,3);  
 Serial.println("W");
 //delay(100);     
}

float get_corriente()
{
 float voltajeSensor;
 float corriente=0;
 float Sumatoria=0;
 long tiempo=millis();
 int N=0;
 while(millis()-tiempo<500)//Duración 0.5 segundos(Aprox. 30 ciclos de 60Hz)
 {
   voltajeSensor = analogRead(A0) * (1.1 / 1023.0);////voltaje del sensor
   corriente=voltajeSensor*30.0; //corriente=VoltajeSensor*(30A/1V)
   Sumatoria=Sumatoria+sq(corriente);//Sumatoria de Cuadrados
   N=N+1;
   delay(1);
 }
 Sumatoria=Sumatoria*2;//Para compensar los cuadrados de los semiciclos
negativos.
 corriente=sqrt((Sumatoria)/N); //ecuación del RMS
 return(corriente);
}

Notar que duplicamos el valor de la sumatoria para compensar el semiciclo negativo que se
anuló en la rectificación de media onda.

El tiempo que dura la toma de muestras para el cálculo del RMS, debe ser múltiplo del Periodo.
En nuestro caso 500ms que representan 30 ciclos de una señal de 60Hz. Si se desea una lectura
más rápida, podemos disminuir este tiempo.

A continuación, mostramos los resultados cuando medimos la corriente de un foco ahorrador de


25W

 
 

Y a continuación mostramos los resultados cuando se pone la misma carga que se usó en el
primer ejemplo.

Y si verificamos con una pinza amperimétrica podemos validar nuestros resultados.

 
Si su valor no coincide, hay que modificar el valor de 30 que representa  la proporción (30A/1V)
en la ecuación cuyo valor no es 100% correcto. Para realizar esta calibración es recomendable
trabajar con cargas grandes.

Adicionalmente en el código, después de calcular la potencia, pueden multiplicarlo por un


diferencial de tiempo y con esto medir el consumo de energía.

También podría gustarte