Medición de Tensión Alterna TrueRMS v1

Como hemos visto en otros post donde medimos tensión o corriente con el micrcontrolador, siempre lo hacemos en continua, donde no tenemos problemas con la forma de onda, valores pico, frecuencia y demás.
Pero cuando intentamos medir una señal alterna nos encontramos con algunos factores que complican nuestra medición, ya que si medimos una continua pulsante o una alterna, tendremos valores en el ADC que estarán cambiando constantemente, esto podríamos medirlo calculando un máximo, pero la idea nuestra es aplicar un poco de electrónica y calculo.
Si bien este proyecto mide el verdadero valor eficaz (TrueRMS) no pretende ser el reemplazo de instrumentos profesionales ni mucho menos. Es un proyecto que puede servir de modo educativo y también para realizar algunos proyectos hogareños donde no se requiere precisión ni certificaciones. 

Para comprender la teoría de nuestro proyecto debemos principalmente saber que es el valor RMS y porque existe la variante "Verdadero valor RMS" en un instrumento de medición.

Recordemos la forma de onda alterna que nos provee el suministro eléctrico domiciliario.



Como podemos ver en la imagen de la forma de onda, responde a la función seno con los máximos entre 1 y -1, con un periodo de 360° o 2¶. Donde también podremos ver el cruce por cero en 0°, 180° y 360°, al tratarse de una señal periódica este ciclo se repetirá indefinidamente.

El valor Vp o Valor Pico, es el que se encuentra entre el 0 de la amplitud y el valor máximo, el valor Vpp sera el valor entre los dos picos (el positivo y el negativo, que en este caso sera 2 veces Vp), por ultimo el valor eficaz o RMS (Root Mean Square, o Raíz Media Cuadrática).
El valor RMS como lo indica su nombre sera el valor de √2/2 lo que es igual a 0.707, como podremos ver en el gráfico la cota de Vef sale a 0.707.

Usualmente cuando uno busca el valor pico de una tensión alterna del suministro eléctrico, lo que se hace es tomar el valor eficaz medido por el multimetro (220V) y lo multiplicamos por √2 (1.4142) este valor nos dará un Vp=311V y un Vpp de 622V. 

El valor RMS conocido como √2/2, no es una constante física, sino que es el resultado de un calculo mas complejo en base a la formula del valor eficaz con su integral.
Donde debemos integrar en el rango deseado el valor del cuadrado de la función, en este caso, seno y luego debemos calcular su raíz.



Como podremos ver tendremos que cambiar v por la función seno y llegaremos al valor de Raíz de 2 sobre 2 "√2/2". 
Hay que tener en cuenta que el resultado de √2/2 solo servirá para una función seno, si la forma de onda que estamos midiendo no es senoidal (por ejemplo: una señal con ruido, la señal de una carga inductiva de potencia, la señal de un variador, de un dimmer, etc...) no servirá el valor √2/2. Esto quiere decir que deberíamos realizar un análisis de la función y una vez que llegamos a la función podremos aplicar la integral y demás, pero la realidad es que esto no es algo útil para un instrumento de medición, debemos encontrar la manera para que nuestro instrumento de medición pueda medir cualquier forma de onda y saber el valor eficaz de la misma para que sea un instrumento TrueRMS. 
Los instrumentos que no son TrueRMS solo dan el valor eficaz en señales senoidales ya que usan la formula √2/2.
Por suerte para nosotros existe otra forma de hacerlo mas discreta donde aplicaremos la formula de la raíz de la sumatoria de los cuadrados de la media.



Esta formula nos dará el mismo resultado que la formula de la integral, pero para utilizar la formula debemos tomar varias mediciones a la señal "Discretizar" tomando muchas mediciones a la misma y cada medición sera elevada al cuadrado, sumada con la siguiente y al finalizar todas las mediciones "Muestreo" dividiremos esa suma por la cantidad de muestras y aplicaremos la raíz cuadrada.
La precisión de la misma sera función de la cantidad de muestras que tomemos.



Como podemos ver en la imagen, estamos tomando valores instantáneos de tensión a determinado tiempo, V1, V2, V3, ... Vn, en esta imagen solo tomamos 7 valores pero mientras mas muestras tomemos mas cerca de la realidad estará nuestra señal. 
En nuestro caso tomamos 300 muestras, cada muestra se eleva al cuadrado (se multiplica por si misma) y se suma con la siguiente (aquí pondremos el concepto de acumulador), luego dividimos el valor final en 300 ya que son la cantidad de muestras realizadas y luego aplicaremos la raíz cuadrada, la cantidad de muestras es a gusto, y mientras mas muestras tomemos mas tardara nuestro programa en realizar el calculo, pero mas eficiente sera el valor que nos muestra.
Hay que tener en cuenta también el valor de la frecuencia de la forma de onda, como nuestro programa esta pensado para medir la tensión RMS en la red eléctrica solamente tendremos 50Hz que luego de rectificarla tendremos 100Hz lo que sera igual a 10ms.

En este caso la señal es senoidal, pero como nuestro sistema toma muestras y las procesa, dará igual el tipo de función o la forma de onda que se presente, lo cual lo convierte en un voltímetro AC TrueRMS.

Una vez que tenemos resuelto el procesamiento de la señal, tenemos el segundo problema, que será tratar la señal de 220Vac para ingresarla al ADC que soporta solo 5Vdc.
Para esto utilizamos un transformador de 220Vac a 9 o 12Vac, que aparte de reducir la tensión cumple la función de aislación galvánica del sistema para mayor seguridad, luego como estamos hablando de 12Vac podremos poner un puente rectificador de onda completa con 4 diodos ya que la caída de tensión de los diodos 1V para onda completa (ya que se usan dos diodos simultáneos por cada hemiciclo 500mV+500mV) y en 12Vac 1V no representa mucha caída en nuestra medición.
Luego de tener una señal pulsante (sin filtrarla) utilizaremos un divisor de tensión resistivo e ingresaremos esa señal en el ADC del microcontrolador.

Aquí podremos ver una simulación del mismo con el osciloscopio virtual.


En la practica hemos obtenido resultados similares



El circuito implementado es simple ya que la interfaz esta realizada con el transformador, el puente rectificador de onda completa y el divisor resistivo, el resto es solo el microcontrolador y el LCD.


El programa es muy sencillo y corto, se ha realizado de la manera mas sencilla para ser base de futuros proyectos y para comprender mas fácil su funcionamiento.

  1. #include <16F883.h>
  2. #device adc=10
  3. #use delay(int=4000000)
  4. #include <LCD.C>
  5. #include <math.h>
  6. void main(){
  7.    setup_adc_ports(sAN0|VSS_VDD);
  8.    setup_adc(ADC_CLOCK_DIV_2);
  9.    int16 i;
  10.    float adc1, valorMax=0;
  11.    lcd_init();
  12.    while(true){
  13.       for(i=0;i<300;i++){
  14.          set_adc_channel(0);
  15.          adc1=read_adc()*5.0/1023.0;
  16.          delay_ms(10);
  17.          valorMax=adc1*adc1+valorMax;
  18.       }  
  19.       lcd_gotoxy(1,1);
  20.       printf(lcd_putc,"Val Pico: %.3f ",sqrt(valorMax/300)*1.4142);
  21.       lcd_gotoxy(1,2);
  22.       printf(lcd_putc,"Val RMS: %.3f ",sqrt(valorMax/300));
  23.       valorMax=0;
  24.    }
  25. }

El muestreo de los valores se realiza dentro del lazo for en la linea 13, donde podremos ver que posee un 300 iteraciones que serán las muestras a realizar, luego accedemos al ADC y convertimos el valor entre 0 y 1023 a un valor entre 0 y 5V (valor que habrá que modificar cuando tengamos que hacer la relación entre 0 y 5V en los 220V (en mi caso estoy contemplando que la representación sea entre 150 y 250Vac ya que es para medición de la red eléctrica).
Luego de un delay, realizamos la sumatoria del cuadrado de los valores en base a un simple acumulador y el cuadrado lo realizamos multiplicando el valor del ADC por si mismo, podríamos usar la función pow() que se incluye en la librería math.h pero esta hace que el código sea demasiado pesado y el resultado es el mismo.
Una vez realizadas las 300 muestras salimos del lazo for y mostramos los valores.
Solamente es valido el valor del segundo renglón "RMS" ya que ahí tomamos el valor medido lo dividimos por 300 y le aplicamos la raíz (como dice la formula del valor eficaz con la sumatoria), notase que en este caso la raíz usa la función sqrt() de la librería math.h, pero sera lo único que utilizamos para no sobrecargar la memoria del microcontrolador.
Digo que solamente es valido el segundo renglón ya que ese es TrueRMS, el primer renglón se ha puesto solo para ver el valor pico pero como se puede ver esta utilizando el valor medido TrueRMS multiplicado por raíz de 2, entonces estaríamos realizando un calculo híbrido, primero tomamos el valor TrueRMS con la formula sumatoria y luego le multiplicamos raíz de 2 como si se tratara de la formula integral, lo cual solo sirve para la función seno, entonces si la forma de onda no es seno, no debemos tomar en cuenta el valor Vp, de echo se podría eliminar pero lo he dejado para que se comprenda esto a modo ejemplo.



Ir a la versión 2

8 comentarios:

  1. Hola Sebastian.
    Interesantes tus proyectos, como siempre. Una duda, los valores que muestra el LCD en el vídeo no son con el programa en C que compartes, sino con otro ¿cierto o estoy confundido?

    Gracias y saludos.

    ResponderEliminar
    Respuestas
    1. Claro, porque en el vídeo le aplique el calculo de regresión para que me de la tensión proporcional a la medida por el ADC.
      En la segunda parte del proyecto lo tengo modificado ya.
      http://electgpl.blogspot.com.ar/2016/04/medicion-de-tension-alterna-truerms-v2.html
      Pero son valores que hay que ajustar según el trafo que conseguís o vas a usar vos.
      Estoy trabajando en una versión nueva del tipo HOT, ya que no esta aislada, pero es para conectar sin tocar nada "como para que no sea peligrosa". A favor: al no estar aislada no dependes de transformadores tanto para el voltimetro como para el amperimetro (lo cual requiere menos ajustes), En Contra: No tenes aislación y es mas peligroso si vas a meter mano.
      Fíjate en la segunda versión que esta mas completo esa parte.
      Saludos.

      Eliminar
  2. Gracias. Ahora comprendo. Por lo tanto, independientemente del transformador que usáramos, debemos aplicar el cálculo de regresión. Pero claro, como explicas en el vídeo, hace falta un variac. Sin ese cálculo ¿los valores se alejarían mucho? Porque veo que comentas que los valores que te mostró son bastante lineales (claro que con tu transformador).
    Por otro lado, ¿entendí que el programa hace 300 mediciones en un semiciclo, pasa por cero y vuelve a hacer 300?

    Gracias de nuevo.

    ResponderEliminar
    Respuestas
    1. Por nada, es bastante lineal la relación, en si el proyecto tiene un preset para calibración, lo que pasa que la idea es poner un trafo de la misma tensión que estoy usando y calibrarlo ya que son variantes entre modelos y marcas. Pero voy a ver si puedo probar varios trafos de diferentes secundarios para dar la opción de que cada uno use el que pueda.
      Estuve probando también la medición directa sin aislación (un par de resistencias directas de 220) con el sistema alimentado directo de 220 con fuente transformerless, la medición de corriente mediante shunt directo de 220 y demás, es la opción mas económica y sencilla pero no es la mas eficiente.
      La realidad es que no funciona muy bien como quisiera, probé muchos filtros y tipos de fuente, pero al utilizar una fuente sin transformador tenes que usar la masa del micro común con la masa de mediciones común con el neutro de la linea y no es la mejor opción.
      Los multimetros miden directo de 220 sin aislación pero operan a batería... lo cual al no estar todo alimentado de la misma linea podes hacer alguna aislación mejor.
      Lo ideal para mi es usar un trafo de 220 a 6, 9 o 12Vac por 200 o 300mA para el sensado de tensión y un toroide para el sensado de corriente.
      Aunque también se podría usar un trafo de 1A o algo asi, y alimentar del mismo todo el circuito y tomar del secundario sin filtrar la señal como para medir tensión.
      Quiero hacerlo lo mas fácil posible para que pueda ser reproducido por todos, no tiene sentido usar esos integrados dedicados para esto, o optoacopladores de AC y esas cosas que no se consiguen...
      En cuanto a las mediciones, espera el cruce por cero y luego comienza las 300 mediciones, luego espera el cruce por cero y vuelve a comenzar las 300 mediciones, la espera del cruce por cero es para que se sincronice bien.
      Saludos!

      Eliminar
  3. Hola Sebastian, saludos desde Colombia.
    Amigo tengo un problema, pues resulta que siguiendo tus consejos construí un supervisor trifasico de 440v. Explicare brevemente mi circuito de acondicionamiento para la medición de la señal y luego te comento mi problema.

    En mi circuito entran mis 3 lineas para ser motorizadas a un terminal block, luego uso un arreglo de resistencias para disminuir el voltaje y sea leído por el micro, luego de esto la señal pasa por un seguidor de tensión y en paralelo la señal también pasa por un cruce por cero. la lectura la habilito cuando el cruce por cero correspondiente a la linea a medir se activa. el micro me lee correctamente, lo calibre como indicaste y todo perfecto. ahora, ¿cual es el problema?, cuando introduzco las puntas del tester para medir las lineas de entrada al circuito en el terminal block para verificar que si me esta midiendo lo correcto, la pantalla LCD se borra y se vacía y luego no responde el micro controlador, como que se queda pegado, no se reinicia, solo como que se apaga y no responde mas. me gustaría que me ayudaras, se que es algo sencillo pero no consigo el error, gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Buen dia! Saludos!!
      Es un tema de ruido eso, igual no deberia pasar, ya que la resistencia interna del multimetro deberia ser alta, pero debe ser un tema de ruido o de aislacion, la masa del circuito es la misma que la trifasica?, o como tenes la conexion entre fases? tal vez te convenga realizar una aislacion galvanica con tres transformadores pequeños donde tomes cada fase y la reduzcas y aisles, de esa forma podes aislar tu circuito de la red y te debería desaparecer cualquier error de masas vivas.
      Porque no es normal que pase eso.
      Contame como sigue el problema.
      Saludos.

      Eliminar
    2. Bueno sebastian me gustaria que me ayudaras pq aun no he dado con el problema, me pasas algun correo o algo para pasarte los planos y les heches un ojo?? o enviame tu correo aqui Boozsven@gmail.com

      Eliminar