Control de consumo eléctrico con Arduino (1)

Hoy en día, la frase “control de consumo eléctrico” está adquiriendo nuevas connotaciones, y la actual situación económica, unida a las constantes subidas de la factura que tenemos que pagar a fin de mes, hace que los aficionados al mundillo electrónico nos hayamos planteado la manera de controlar el gasto – léase kWh – que tenemos en determinada parte de nuestra casa o – incluso – la monitorización de la energía doméstica total. Con esta intención os presentamos el artículo de hoy. No se trata de un control “profesional”, pero por un módico precio si que puede ayudarnos a tener las ideas más claras en cuanto a ahorro energético. No vamos a abordar excesivas disquisiciones técnicas sobre la operativa electrónica (solo las justas), de forma que el aficionado con menor bagaje técnico pueda montar sin más el circuito, y los más expertos ¡ no las necesitan !. Al fin y al cabo, este blog es para DIVERTIRNOS con la tecnología… de todas formas, al final de esta entrada se citan algunos documentos y referencias para aquellos interesados en “profundizar” o – ¿quién sabe? – modificar el montaje propuesto.

En esta entrada vamos a abordar:

– Base teórica y sensor utilizado.

– Interfaz electrónica con Arduino

– Software de control y ajustes

Esperamos que, además de entretenernos con su montaje, nos ayude a ahorrar unos eurillos …

Image courtesy of Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net

Image courtesy of Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net

– Base teórica y sensor utilizado.

Lo primero que necesitamos para nuestro montaje (al margen del Arduino, claro esta) es un sensor que sea capaz de “medir” el consumo de un cable eléctrico de la forma más efectiva y sencilla posible. Nos hemos decantado por el sensor “no invasivo” modelo SCT-013-030 que se puede utilizar en modo “pinza amperimétrica” y que, gracias a su diseño de nucleo partido nos permite efectuar la medida de intensidad eléctrica que circula por dicho cable. El aspecto de este sensor puede verse en la figura adjunta.

Este sensor puede obtenerse fácilmente en Internet, por ejemplo, en la tienda de BricoGeek

ArduPowerControl_03

La gran ventaja de este sensor frente a otra circuitería – o incluso al típico multímetro – es que no precisamos “cortar” (interrumpir) el cable donde vamos a efectuar la medición ya que el sensor puede abrirse para que hagamos pasar por el mismo el cable (¡ojo! , tan solo uno) de la instalación que deseemos verificar. Pasamos el cable y este se comporta como un bobinado (de espira única) en el transformador que incorpora el sensor.

ArduPowerControl_04

ArduPowerControl_05

Su principio de funcionamiento está basado en el transformador eléctrico (extrictamente en un transformador de intensidad). Internamente el sensor incorpora un pequeño transformador constituido por su nucleo y, en vez de dos devanados – típicamente primario y secundario – tiene tan solo un bobinado en uno del los extremos de su núcleo ferrromagnético. Si tomamos este bobinado como el secundario, la parte correspondiente al primario serían las espiras (en este caso la espira única) que constituirá el mismo en cuanto lo insertemos en el circuito a medir.

ArduPowerControl_14

Al hacer pasar por el “primario” de este sensor un cable de nuestra instalación este capta el flujo magnético generado que será proporcional a la intensidad que circula en ese instante por el cable. Por efecto de la inducción electromagnética obtendremos en el secundario (salida del sensor) una intensidad que será proporcional a la del primario. El efecto transformador de intensidad de primario con espira única puede verse en esta ilustración. Aunque en la figura anterior no la hemos representado por simplicidad, existe una resistencia de carga en la salida del transformador, de cuyos bornes tomaremos la señal a utilizar. Debemos fijarnos que tan solo hemos de pasar por el sensor un hilo de los dos que conforman la red a monitorizar en nuestra casa, tal y como se muestra aquí …

ArduPowerControl_13

Sea cual sea la instalación que deseemos controlar, y aunque el sensor no es invasivo y se instala sin tener que cortar un solo cable, si que hemos de tener alguna precaución si, por ejemplo, queremos verificar el consumo total de nuestra casa. En este caso no tendremos más remedio que localizar la entrada general (típicamente antes del magnetotérmico o diferencial general) e insertar con sumo cuidado el sensor. Esta operativa conviene que sea hecha por alguien “curtido” en estas artes, para evitar así desconectar algún cable al manipular esta zona. Una vez instalado el sensor tan solo tendremos que conectar su salida (vía jack tipo audio de 3.5 mm) al circuito interfaz que comentaremos a continuación. Conviene mencionar que los terminales de salida del sensor se corresponden con los extremos del jack, tal y como vemos en la ilustración adjunta.

ArduPowerControl_11La señal obtenida en función del consumo (intensidad) que circula por el cable monitorizado nos proporcionara una tensión proporcional a la salida del sensor – en bornes de la resistencia interna mencionada – y que es de muy pequeño valor (milivoltios), razón – entre otras – por la que necesitaremos un circuito interfaz-amplificador …

La respuesta del sensor ante diversas cargas de consumo comprobadas nos ha devuelto una respuesta suficientemente lineal…

ArduPowerControl_15

Aunque las pruebas efectuadas han sido con consumos de tipo bajo/medio, basta para hacernos una idea.

– Interfaz electrónica con Arduino

El circuito interfaz propuesto tiene dos funciones, a saber: rectificar y amplificar la señal proviniente del sensor (esta es de tipo senoidal, lógicamente). Al ser una señal de tensión tan reducida nos hemos visto obligados a evitar el uso del típico rectificador, esto es, el diodo o puente de diodos, ya que la caida de tensión en los mismos se “comería” literalmente los milivoltios AC de que disponemos. La solución pasa por un rectificador de precisión mediante el uso de un amplificador operacional (A.O.). No vamos a comentar aquí la operativa de los A.O., pero baste decir que la señal así tratada se rectifica convenientemente y nos da pie (también usando un AO) a realizar una pequeña amplificación ajustable por el usuario y que puede servirnos de ajuste “fino” del montaje una vez terminado.

En este pequeño esquema vemos como quedaría – a nivel de bloques – el montaje. La alimentación de +5V puede obtenerse desde el propio arduino o, si lo estimamos oportuno, dotar al interfaz de una alimentación de +5v autónoma.

ArduPowerControl_12Como hemos dicho, la misión de la primera parte del circuito interfaz es rectificar sin pérdida de tensión la señal del sensor, para obtener así una señal continua – aunque pulsante – capaz de ser luego amplificada y obtener niveles de tensión adecuados en la entrada analógica de nuestro Arduino. La señal a tratar se hace llegar a la entrada analógica (A0) del mismo.

ArduPowerControl_01G

Hemos utilizado como tanto para la etapa rectificadora como para la amplificadora el amplificador operacional LM358. Dado que cada uno de estos chips incorpora una pareja de A.O. tendremos que utilizar tan solo un chip. El circuito -al margen del chip – precisa de pocos componentes externos adicionales. Un condensador de desacoplo de 100 nF, un diodo y unas cuantas resistencias. Podemos montar en principio el circuito en una proto-board para evaluación de prototipos. En esta ilustración lo vemos funcionando de esta manera. Observamos que hemos añadido un conector “hembra” tipo jack audio para conectar el sensor a la placa. Una vez que tengamos en marcha el circuito ya podremos decidir si lo implementamos en una placa de circuito impreso, lo soldamos en una placa de prototipos pre-perforada, etc.

ArduPowerControl_17

A modo de ayuda vemos aquí el esquema internos del A.O. LM358. Como casi siempre, las patillas de alimentación son: 4(GND) y 8 (+Vcc)

ArduPowerControl_02

La señal obtenida al circular corriente por el sensor tiene un aspecto tal que así :

ArduPowerControl_18b

Una vez rectificada ( en modo onda completa ) obtendremos:

ArduPowerControl_19b

Y tras ser amplificada, la señal CC llega al CAD de nuestro Arduino.

– Software de control y ajustes

El software desarrollado a modo de test para controlar el sensor de corriente no es excesivamente complejo. Podemos verlo funcionando aquí:

ArduPowerControl_16b

Comentamos las particularidades del mismo, cuyo contenido mostramos aquí, y que podremos descargar desde el link al final de esta entrada.

 

El programa calcula varios parámetros a partir de la señal (milivoltios) recibida desde el sensor. La conversión analógica del Arduino (CAD) nos permite obtener 1024 niveles de tensión en la entrada A0, lo que significa que tendremos niveles de 0.0048 V ( 5/1024 ), o lo que es igual, una resolución de 4.8 mV /bit.

El valor así obtenido se maneja en la variable vS, pero la “lectura” del valor se hace en la función “smoothread“, que además de lanzar la conversión, lo hace de una forma repetitiva y específica para obtener un resultado más fiable. Podemos ajustar mediante la variable “ni” (número de iteraciones de lectura a promediar) obteniendo así al final de esta un valor más estable (puede compensar pequeñas variaciones en la CAD del Arduino).

La rutina de lectura localiza el punto de paso por cero de la señal y, a partir del mismo introduce un retardo de 5 ms. – lo que equivale a 1/4 del periodo ( t/4 ) cuando medimos una CA de 50 Hz)- . Este valor (variable ff) puede – y debe – ser modificado si queremos operar con una tensión de 60 Hz. (ff=4.15) . El punto de lectura(s) efectuada(s) puede verse más claramente en este gráfico

ArduPowerControl_22

Como quiera que el valor devuelto por la rutina smoothread será una media de n lecturas (ni), pero aprovechando el valor máximo de la tensión, tendremos que efectuar un cálculo del valor RMS para dicha lectura ( lectura = smoothread (1) / 1.41; ), y una vez tengamos este, lo multiplicaremos por 0.0048 ( 1/1024 ) para tener la tensión medida en mV. por el sensor. Para obtener el valor de intensidad que circula por el sensor tendremos que utilizar la variable S_Ratio (experimentalmente calculada) y que nos da – como su nombre indica – la relación mV/mA proporcionada por el sensor, dvidiendo la misma por 1000 para que el valor de iA sea en Amperios.

Una vez tengamos el valor de intensidad lo demás es sencillo. Por simple aplicación de fórmulas obtendremos la potencia (en kW) que se alojará en la variable pKW.

Es importante mencionar que el valor de la variable vV, correspondiente a la tensión doméstica AC (prefijada en el programa), ha de ser modificada por el usuario para obtener las lecturas correctas. No todas las poblaciones reciben una tensión idéntica, en nuestro caso, los 220 voltios típicos se han pre-fijado (tras medirlos) en 230 V.

A modo de resumen, vamos a enumerar los pasos (incluídos los opcionales) a seguir para poner en marcha el montaje …

Para el Hardware:

  1. Realizamos el cableado del circuito ( ¡ y lo revisamos !).
  2. Dejamos el potenciómetro de ajuste en su posición central.
  3. Conectamos el sensor a 1 hilo del circuito a medir (fase).
  4. Conectamos el sensor a nuestro montaje.
  5. Comprobamos que al conectar la alimentación luce el Arduino correctamente.

Para el Software:

(algunas variables solo han de verificarse y pueden dejarse como están)

  1. Editamos el fichero ArduPowerDVTK.ino antes de ejecutarlo
  2. Ajustamos la variable retardo (tiempo entre visionados).
  3. Ajustamos la variable vV (tensión AC en nuestra casa).
  4. Ajustamos la variable ff (delay para 50 o 60 Hz).
  5. Ajustamos la variable ni (n. iteraciones para smooth-effect).
  6. Ejecutamos el programa

Ajustes:

Como ajuste final aconsejamos – una vez arranquemos el programa – hacer circular cierta intensidad de valor medio ( unos 1000 W puede ser correcto ) por el cable a medir. Conviene que sepamos siquiera de forma aproximada el consumo en vatios de dicha carga, y también que esta sea de tipo resistivo preferentemente (p.ej. un calefactor ).Una vez que el programa nos de los valores en pantalla (abriendo el terminal serie del IDE Arduino) deberemos realizar un ajuste fino del montaje mediante el potenciómetro R6 hasta que obtengamos la lectura de potencia correcta.

ArduPowerControl_21

Cabe mencionar que el montaje no es muy sensible a pequeñas cargas ( < 40 vatios) cuando se conectan solas, pero suma adecuadamente su consumo al computar un conjunto de estas, por lo que el consumo total debería ser muy aproximado al real. Factores que pueden afectar a discrepancias en la lectura del dispositivo pueden ser:

  • Cargas de tipo reactivo (motores, cuircuitos capacitivos)
  • Cargas de muy poca potencia medidas aisladas (ya comentado).
  • Valor de tensión (variable vV) mal ajustado.
  • Valor de frecuencia (variable ff) mal ajustado.
  • Incorrecto cierre del sensor.

A DIVERTIRSE

En una próxima entrada abordaremos el montaje de un circuito de adquisición de datos (en formato SD) también para Arduino.

Referencias y descarga de código:

Referencias de diseño

El fichero descargable contiene:

  • Software de control ArduPower_DVTK.ino para medir potencia.
  • Información del sensor modelo SCT-013-030

Descarga de código

ArduPower_DVTK

ArduPowerControl_20

  Bitcoin Currency Converter
Amount of BTC to convert
To currency:
1BTC =