TODOPIC
FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: micro_pepe en 25 de Abril de 2006, 10:09:02
-
Hola, buscando una cosa en mis apuntes de la universidad he visto los medidores de verdadero valor eficaz, con un multiplicador analogico, y un filtro para obtener el valor medio. Me pregunto si un pic podria hacer esta operacion, elevando al cuadrado la lectura del ADC, y calculando el valor medio.
No se si el pic tendria velocidad suficiente, y como se calcula el valor medio, para una senoidal es dividir por pi, pero en otro tipo de señal, no se como se hace.
Saludos y gracias.
-
Hola, buscando una cosa en mis apuntes de la universidad he visto los medidores de verdadero valor eficaz, con un multiplicador analogico, y un filtro para obtener el valor medio. Me pregunto si un pic podria hacer esta operacion, elevando al cuadrado la lectura del ADC, y calculando el valor medio.
No se si el pic tendria velocidad suficiente, y como se calcula el valor medio, para una senoidal es dividir por pi, pero en otro tipo de señal, no se como se hace.
Saludos y gracias.
Hola micro_pepe, a tu pregunta si un PIC puede hacer eso, la respuesta es si, solo hay que tener en cuenta que un PIC corriendo a 20 MHz puede alcanzar una velocidad de muestreo de algunos pocos KHz, por lo que la senal a promediar no recomendaria que tubiece una frecuencia mayor a los 500Hz
Para calcular el valor promedio de una senoidal lo que se hace es medir el valor de la tension pico y dividirlo por rais de 2 (1,41 aprox.), con eso tendremos la tension RMS.
Si lo queremos hacer por medio de muestreo, lo que se hace es sumar una determinada cantidad de muestras (ejemplo 100) y el valor total de la suma de las 100 muestras dividorlo por 100, con lo que obtendremos el valor promedio, lo que deberas tener en cuenta que una señal alterna tiene 2 componentes, la que se extiende por sobre cero (tensiones positivas) y las que se encuentran debajo del cero (tensiones negativas), o sea que deberas definir el offset que usaras para el conversor A/D del pic ya que este no posee la habilidad de convertir señales de nivel negativos.
Espero me entiendas.
Un saludo.
Atte. CARLOS.
-
Hola Carlos, si me permites tengo que hacer una pequeña puntualización, si realizamos la suma de los valores de las 100 muestras y dividimos entre cien obtendremos el valor medio de la señal (valor que mediria un voltimetro de corriente continua), para nuestro caso de la señal senoidal sera cero. Si lo que queremos es calcular el valor eficaz tendremos que sumar los cuadrados de todas las muestras dividirlo entre el numero de muestras y sacar la raiz cuadrada ya que la definicion de valor eficaz es:
-
Hola jfh900, cuando una forma de onda no es una señal senoidal se usa ese calculo, pero si la señal es senoidal puedes usar y es mucho mas sencillo dividir el valor pico de voltaje por la raiz de 2.
Ahora si vamos a la situacion de muestreo, piensa que es el voltage RMS de una señal, es el promedio de ambos semi-ciclos tomados los 2 como positivos, por lo tanto si tratas ambos semiciclos como si fueran positivos y haces el promedio, conseguiras el valor RMS para esa señal sin importar la forma de onda.
Un saludo.
Atte. CARLOS.
-
Hola, me ha quedado bastante claro, pero entonces para tomar muestras de la parte negativa, seria necesario usar un rectificador de instrumentación, y así tener todas las muestras de valor positivo.
Saludos
-
Hola micro_pepe, puedes usar un rectificador o tambien por medio de OA, hacer que la entrada posea un offset de 2.5V, por lo tanto a esta tensión las tomas como cero, de esta manera las negativas estaran por debajo de 2.5V y las positivas sobre 2.5V, con 2 sencillas restas consigues el valor positivo
Si la convercion da sobre los 2.5V haces:
Vx - 2.5V = valor para la muestra actual
Si la convercion esta debajo de 2.5V haces:
2.5V - Vx = valor para la muestra actual
En definitiva, si usas un A/D de 10 bits sabes que las lecturas estaran comprendidas entre 0 y 1023, por lo tanto 1023/2=511.5 tomamos como 511 el valor de cero.
Para una señal senoidal de 1V de pico centrada en 511, nos dará aproximadamente 307 para el pico negativo y 715 para el pico positivo, por lo que haciendo los calculos anteriores nos quedaria:
Para el pico negativo:
511 - 307 = 204
Para el pico positivo:
715 - 511 = 204
Como veras obtenemos el mismo valos tanto para el pico negativo como para el positivo, por lo que ahora quedaria sumar varias muestras y dividirlas por el numero de ellas que se an sumado.
Espero me entiendas, si no solo pregunta, OK.
Un saludo
Atte. CARLOS.
-
Hasta agui entendido, pero a la hora de tomar las muestras, me pregunto si influye mas el tiempo que tarda en convertir el ADC, que la velocidad del pic, pues a lo mejor usando un dsPIC, que es mas rápido no se consigue nada.
Saludos y gracias.
-
Hola micro_pepe, definitivamente lo que más influye en el muestreo es el tiempo de la converción, en un PIC de la familia 16F la velocidad máxima usando un solo canal es de aprox. 10.000 muestras segundo se en PIC corre a 20 MHz, para la familia 18 ya la convercion puede llegar a 100.000 muestras segundo, y me imaguino que para los dsPIC esta opcion debe ser mucho mas alta.
En pocas palabras el limite de tu desarrollo lo tendras en el conversor A/D.
Un saludo.
Atte. CARLOS.
-
Carlos nuevamente siento discrepar contigo en cuanto al calculo del valor eficaz de una señal. Por ejemplo en corriente alterna su valor eficaz como bien dijiste es: Vefi=Vmax/Raiz(2), si la rectificamos y calculamos su valor medio es:
Vmed= 2*Vmax/PI y el valor eficaz de esta señal es: Vefi=Raiz(Vmax/2). Como puedes ver ninguno de los valores se parece al primero.
Un saludo.
-
Carlos nuevamente siento discrepar contigo en cuanto al calculo del valor eficaz de una señal. Por ejemplo en corriente alterna su valor eficaz como bien dijiste es: Vefi=Vmax/Raiz(2), si la rectificamos y calculamos su valor medio es:
Vmed= 2*Vmax/PI y el valor eficaz de esta señal es: Vefi=Raiz(Vmax/2). Como puedes ver ninguno de los valores se parece al primero.
Un saludo.
Hola jfh900, no hay problema con las diferencias de opiniones, en este caso tape un error que tenia:
Rectifiquemos los 220Vca, nos quedaria una tension de:
Vmax/Raiz(2)=Vefi despejando:
Vefi * Raiz(2)= Vmax
220 * 1.4142 = 311.124V
Para el promedio o valor medio sería:
2*Vmax/PI = Vmed
2*311.124/PI= 198.06V
Con lo cual admito mi error dandote la razon, ahora colega jfh900, esta formula que posteas Vefi=Raiz(Vmax/2) no le encuentro la razon ¿me la podrias explicar?
Nuevamente repito que lo expresado por mi en respuestas anteriores dentro de este hilo es un error que e comentido, por lo tanto micro_pepe, no te guies de lo que e dicho, ya que te llabará a cometer el mismo error.
Un saludo.
Atte. CARLOS.
-
No encuentras la razón por que esta mal ya que el valor eficaz de una corriente alterna rectificada de doble onda es igual al valor eficaz de la onda sin rectificar por consiguiente debería haber puesto Vefi = Vmax/Raiz(2).Perdón por el lapsus.
-
Como podras ver jfh900 errore sometemos todos, jajaja
No hay problema, pero te juro que me mate un rato para saber que era lo que tania mal al revisar esa formula
Un saludo.
Atte. CARLOS.
-
Por descontado, que todos cometemos errores y yo el primero, y de valientes es el reconocerlos. Carlos a sido un placer charlar contigo de estos temas, por cierto intentamos una simulación en Proteus que sea el voltímetro de verdadero valor eficaz?, yo solo tengo una duda, como resolvemos el problema de la determinación del periodo de la señal.
Un saludo.
-
Hola jfh900, toda señal alterna posee 2 cruces por cero, lo que se usa para esos tramites es un detector de "cruce por cero" y tu mediante el PIC debes tomar el tiempo.
Tienes 2 formas, un cruce dispara el contador, y el siguiente lo detienes, el tiempo medido deberias multiplicarlo por 2 para al periodo de una honda completa.
La otra manera es un pulso dispara el contador, salteas el segundo, y el tercero para el contador, asi obtienes el periodo de la honda completa.
Dependiendo del tipo de señal que desees medir en unas de esas te conviene medir el periodo de por ejemplo, 10 hondas completas y despues realizaz una division, lo que conseguiras con esto es mayor exactitud.
En este link hay 2 circuitos posibles para el detector de cruce por cero, ambos estan diseñados para una linea de 220Vca, pero puedes de forma facil adaptarlos a tus necesidades.
http://www.todopic.com.ar/foros/index.php?topic=11537.0
En lo que te pueda ayudar con gusto lo hare, un saludo.
Atte. CARLOS.
-
Ya habia pensado en esa solución pero es un poco restrictiva, ya que si quiero poder medir el valor eficaz del rizado de una fuente de alimentación (nunca pasa por cero), no podria. Lo ideal es poder comparar las muestras y ver donde se vuelven a repetir las muestras, ya que el problema es que si muestreamos por debajo o por encima de un periodo cometemos errores, aunque este ultimo caso se podria solventar trabajando con tiempo en vez de trabajar con radianes. Seria factible tomar 512 muestras, separarlas en 256 y 256 e intentar buscar la coincidencia entre valores?. El tiempo de cálculo es irrelevante, ya que aunque tarde 1 segundo el refresco de pantalla no pasaria nada. Adjunto una simulación en una hoja de calculo con los calculos necesarios para obtener el valor eficaz de 256 muestras de una señal senoidal:
-
Hola jfh900, si tu problema es solo ese, el de tener una alterna "montada" sobre una continua y que por consiguiente nunca pase por cero, la solucion es mucho más dencilla que la propuesta por vos, solo realiza un detector de cruce por cero que posea un condensador en la entrada, de esta manera podras usarlo tanto en alterna como en el rizado de una fuente, ya que al detector le sea indiferente cual de ambas es.
Un saludo.
Atte. CARLOS.
-
Tienes razón. Me pondre manos a la obra e intentare hacer la simulación en Proteus del voltímetro de verdadero valor eficaz y le someteremos a todas las perrerias posibles para ver si marca bien los resultados.
Un saludo.
-
Como lo prometido es deuda, ahi va la primera imagen de como va el voltímetro RMS:
-
Bueno, el voltimetro tiene un problema y es el conversor, es demaseado lento, creo. le echais un vistazo haber que se puede hacer.
Un saludo.
-
Hola, he estado mirando las caraceristicas del conversor ADC, de la serie 16f y 18f, y son iguales, necesitan un tiempo Tad minimo de 1,6us, y cuando se usan los 10 bit del conversor, es necesario un tiempo igual a 12 Tad, para realizar la conversión.
Se me ocurre que la lectura del conversor la hagas en ensamblador, seria algo así:
#asm bcf PIR1, ADIF//restaura flag del conversor
bsf ADCON0, GO//inicia conversion
ADC_ESPERA:
btfss PIR1, ADIF//¿conversion fin?
goto ADC_ESPERA//NO, esperar
bsf STATUS, RP0//banco1
movf ADRESL, W//copia resultado bajo de la conversion
movwf S2_L //en S2_L
bcf STATUS, RP0//banco0
movf ADRESH, W//copia resultado alto de la conversion
movwf S2_H //en S2_H
#ENDASM
los registros S2_L, y S2_H contienen el resultado de la conversión, para juntarlos en el ccs como un long, habria que hacer algo así:
Voltaje=S2_H*256+S2_L;
No se si esto hará mas rápida la conversion.
Saludos.
-
Desgraciadamente, la velocidad del conversor solo depende de este y no de como lo programes. Creo que la unica solucion factible seria utilizar un conversor externo, que sea mas rápido.
Un saludo.
-
Hola jfh900, ¿que frecuencia tiene la señal que deseas medir?, te comento que un PIC 16F tiene una velocidad de conversion de 10.000 samples/seg y un 18F puede llegar a los 100.000 samples/seg. y por supuesto que como configures el conversor por medio del programa que realices influye drasticamente en la frecuencia de muestreo.
Un saludo.
Atte. CARLOS.
-
Hola, me pregunto cual es la maxima frecuencia que miden los voltimetros de verdadero eficaz comerciales, pues quizas con el conversor del pic sea suficiente.
De todas formas el conversor del pic, como poco tarda en hacer la conversión unos 19.2us, segun las caracteristicas, necesita un tiempo minimo Tad de 1.6us, y tarda en hacer la conversion 12 Tad.
Saludos.
-
He intentado realizar el muestreo de una señal de 50 Hz, a 256 muestras por ciclo para obtener el valor adecuado de RMS y obtenemos: T=1/f=1/50=(1000/50) ms =100/5 ms=20 ms y el tiempo de muestreo será: 20 ms/256 = 0,078125 ms = 78,125 us que da una frecuencia de muestreo de: 12800 Hz = 12,8 KHz. Según las simulaciones en proteus cuando lanzo las conversiones y muestreo durante un periodo, solo llega a 40 o 50 muestras, que es insuficiente para llegar a las 256. En el mensaje anterior deje el programa y la simulación, por si teneis curiosidad de probarlo. Ni que decir tiene que si aumentamos la frecuencia y disminuye el periodo el numero de puestras se reduce drastricamente. Aunque la idea era probar con varias señales (cuadradas, triangulares, definidas a intervalos) que fueran conocidos sus valores eficaces y compararlo con lo indicado por el voltímetro.
Un saludo.
-
Hola, jfh900, he retomado este hilo porque en el zip que adjuntas con el listado en c, no viene la libreria "VoltRMS.h". No se si la podrias publicar.
Saludos y gracias.
-
Por diversas razones he tenido que estar apartado del foro y no he podido contestar, espero que no sea demaseado. Pongo la última versión que hice del Voltímetro de verdadero valor eficaz.
Un saludo.