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.
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.
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.
#include <16F883.h>
#device adc=10
#use delay(int=4000000)
#include <LCD.C>
#include <math.h>
void main(){
setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
int16 i;
float adc1, valorMax=0;
lcd_init();
while(true){
for(i=0;i<300;i++){
set_adc_channel(0);
adc1=read_adc()*5.0/1023.0;
delay_ms(10);
valorMax=adc1*adc1+valorMax;
}
lcd_gotoxy(1,1);
printf(lcd_putc,"Val Pico: %.3f ",sqrt(valorMax/300)*1.4142);
lcd_gotoxy(1,2);
printf(lcd_putc,"Val RMS: %.3f ",sqrt(valorMax/300));
valorMax=0;
}
}
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.