TODOPIC

FORO TÉCNICO => Electrónica de potencia => Mensaje iniciado por: Picuino en 09 de Marzo de 2018, 10:39:19

Título: Calcular valores medios y RMS
Publicado por: Picuino en 09 de Marzo de 2018, 10:39:19
Hola a todos.

Estoy desarrollando una hoja de cálculo basada en formularios y javascript y me gustaría recibir críticas para mejorarla.

Os dejo la primera beta que puede calcular valores medios y RMS de diferentes señales.

Si alguien ve errores o posibles mejoras, por favor comentadlo.

Un saludo.

PD: Actualizo el archivo a la versión más nueva en GitHub:

https://rawgit.com/Picuino/picalc/master/rms_calculator.html

Título: Re:Calcular valores medios y RMS
Publicado por: Chaly29 en 10 de Marzo de 2018, 00:24:27
Hola Picuino, incluiría gráficos con la descripción de las definiciones que usas, esta un poco complicado de entender cuando te refieres a "OLA" y aparte es demasiado usado.

Por ejemplo, las tensiones máximas y mínimas son tensiones pico a pico o pico máximo y pico mínimo.

La onda cuadrada también es una onda y no una ola (de hecho, las olas son las del mar).

Para el 4º título, "Ondas triangular y diente de sierra"

Por otro lado, las ondas senoidales, cuadradas, triangulares y diente de sierra no tienen voltaje DC, si no que tienen tensión de offset. Por ejemplo, una alterna con 5Vpp (5 voltios pico a pico) con el pico mínimo en 0V y el pico máximo en 5V, tiene una tensión de offset de 2.5V. O siempre que el pico mínimo coincida con el 0V se llama onda unipolar (para todas las formas de onda), caso contrario son ondas bipolares y si no están centradas en el 0V son bipolares con XX tensión de offset. Otro ejemplo es con una onda cuadrada, si esta centrada en el 0V, o sea el pico máximo y el mínimo poseen la misma tensión es una onda cuadrada bipolar, si el pico mínimo coincide con el 0V es una cuadrada unipolar, cualquier otra opción es una cuadrada bipolar con XX tensión de offset. Por lo dicho anteriormente, una cuadrada unipolar (la más usada) se la puede definir como una señal cuadrada bipolar con un offset de 2.5V, para simplificar, a esta señal simplemente se la llama señal cuadrada

Valor RMS de onda sinusoidal sin/con DC. Por definición, una onda senoidal no tiene DC (lo dicho en el punto anterior), porque si tuviera tensión DC sería una onda compuesta, o sea, pasaría a ser una onda senoidal con XX tensión de offset, esta tensión de offset es la tensión continua sobre la cual esta "montada" la senoidal.

Con esto por ahora tienes bastante.

Por supuesto las explicaciones/correcciones son sin ánimos de ofender.

Un saludo.

Atte. CARLOS.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 10 de Marzo de 2018, 07:38:32
Muchas gracias Carlos.
Lo de los gráficos estoy con ello. Quería hacerlos interactivos, con un javascript externo, pero aún no lo he conseguido.

En cuanto a los nombres, me pongo con ellos.

El que no me queda claro es wave. ¿Cómo cambiarias tú square wave?

Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: KILLERJC en 10 de Marzo de 2018, 09:49:10
square wave = onda cuadrada

No se donde Chaly esta leyendo "ola", pero si considero que wave se repite y mucho.
la traduccion litearal de wave es ola, pero la usamos para onda tambien.

Y lo de DC/no DC opino igual que Chaly

Lo que no me quedo muy en claro es el cuadro final, donde podes poner varias tensiones, no se para que esta.
Título: Re:Calcular valores medios y RMS
Publicado por: Chaly29 en 10 de Marzo de 2018, 11:36:09
Hola gente, KILLERJC, ahora que tu lo dices, pues me doy cuenta que el google chrome está aplicando el traductor automático y por eso yo veo el famoso "ola" en ves del wave.

Entonces mi pregunta a Picuino, por que en ingles y no en castellano?

Un saludo.

Atte. CARLOS.

Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 10 de Marzo de 2018, 16:43:55
Intento que sea lo más genérico posible. En inglés puede llegar a todo el mundo, las palabras son sencillas.

Lo primero que me va a costar es que se entienda sin explicación.
Voy a añadir un gráfico estático a ver si así se entiende.

Los puntos finales son para evaluar cualquier tipo de onda de forma aproximada o para evaluar el valor RMS de la suma de varias señales.

Si pones 0, 1, 0, -1   te evaluará el valor RMS de una función triangular con máximo en 1 y mínimo en -1

Si tienes una señal cuadrada de 5 V_rms y le añades una triangular de 4V_rms te calcula el valor rms total de la suma de las dos señales.
Pero me acabo de dar cuenta de que no suma bien los valores. Tengo que corregirlo.

Me pongo a ello y lo vuelvo a colgar.

Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 10 de Marzo de 2018, 20:55:27
Ya tengo la segunda versión.

La última parte simplemente suma valores rms para poder combinar varias señales y calcular el valor total rms. Por ejemplo una onda cuadrada que tenga superpuesta una triangular (son ondas de corriente que aparecen con frecuencia en las fuentes conmutadas)

Falta todavía añadir el valor rms de una señal triangular discontinua.

Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 11 de Marzo de 2018, 13:53:39
Borro la versión anterior que tenía fallos en los cálculos.
Además he añadido la señal senoidal rectificada.
Nueva versión. A ver si a la cuarta va la definitiva.

 - Tienes que ingresar para ver archivos adjuntos -

Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 08:17:24
He subido el proyecto a GitHub:


Página html:  https://rawgit.com/Picuino/picalc/master/rms_calculator.html


Proyecto: https://github.com/Picuino/picalc
Título: Re:Calcular valores medios y RMS
Publicado por: AcoranTf en 12 de Marzo de 2018, 09:58:01
Una pregunta, mas que nada por curiosidad, ¿porque no me deja descargar el zip?. Me indica que no estoy autorizado a entrar en esa seccion.

Saludos.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 10:06:15
¿A qué zip te refieres? ¿Al del proyecto?  Es este: https://codeload.github.com/Picuino/picalc/zip/master

Los zip de las versiones antiguas los he quitado porque quería cambiar la licencia (de creative commons a GPL) y mantener la versión más nueva en el primer mensaje del foro con un link al proyecto de GitHub.

He tenido algún lio con las licencias porque al tener contenido de tipo programa (javascript, python) y otro contenido más 'creativo' (textos, imágenes, css, html, etc.) no sabía bien que licencia escoger. Al final me he decantado por una licencia GPL porque el proyecto en conjunto tiene más características de programa que de otro tipo de obra.

Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 10:09:55
El proyecto también contiene una hoja de cálculo para inductancias, pero aún está en fase de pruebas.
Título: Re:Calcular valores medios y RMS
Publicado por: AcoranTf en 12 de Marzo de 2018, 10:20:18
Los zip de las versiones antiguas los he quitado porque quería cambiar la licencia (de creative commons a GPL) y mantener la versión más nueva en el primer mensaje del foro con un link al proyecto de GitHub.

Un saludo.

Si, me referia al zip del proyecto y supongo que el error era porque ya lo habrias eliminado, pero aun salia el enlace para su descarga. Lo que me llamo la atencion es que no decia nada de que no existiese el archivo, sino que yo no tenia permiso para acceder a el.

Saludos.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 10:26:25
Ah, eso te ha pasado porque borré el proyecto para volverlo a crear de nuevo.

No tengo mucha experiencia con GitHub y he tenido algún problema al hacer el proyecto y sincronizarlo, de manera que me pareció más sencillo borrar todos los datos del Git  local y el proyecto de GitHub y comenzar de nuevo.
Ahora está todo correcto y funcionando y se puede utilizar GitHub para proponer mejoras o avisar de bugs.


PD: Vuelvo a copiar el enlace a la hoja de cálculo en GitHub

https://rawgit.com/Picuino/picalc/master/rms_calculator.html


Un saludo.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 10:31:15
Acabo de descubrir un problema gordo que antes no tenía.
Las tensiones de offset se calculan mal  :oops:
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 12 de Marzo de 2018, 10:45:33
Ale, ya está solucionado.
Simplemente necesitaba multiplicar los valores por 1.0 para convertirles siempre en números, porque trataba los valores como cadenas y los concatenaba en vez de sumarles:

  1 + 2 = 12

Esta versatilidad de JavaScript da problemas.

Actualizado sin bug (tardará unos segundos):

https://rawgit.com/Picuino/picalc/master/rms_calculator.html
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 13 de Marzo de 2018, 10:56:56
Creo que ya está libre de bugs.

También he modificado el CSS para que se vea un poco mejor:

https://rawgit.com/Picuino/picalc/master/rms_calculator.html


Saludos.
Título: Re:Calcular valores medios y RMS
Publicado por: Nocturno en 13 de Marzo de 2018, 12:45:58
Está muy interesante. Gracias Picuino
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 13 de Marzo de 2018, 18:51:46
Gracias Nocturno.
En realidad el proyecto que estoy haciendo es más ambicioso.
Esta página html la genero a partir de una macro en Python, una plantilla genérica y una base de datos.

Cambiando la base de datos se puede cambiar toda la página para realizar otros cálculos distintos.

Esta es la base de datos que utilizo para esta página:

rms_calculator.yaml
Código: XML
  1. title: Average and RMS value Calculator
  2. description: JavaScript average and RMS value Calculator
  3. keywords: RMS, average, median, value, calculator
  4.  
  5. template: template.html.jinja2
  6.  
  7. resolution: 5
  8.  
  9. width:
  10.    max: 640px
  11.    min: 420px
  12.    name: 7em
  13.    value: 5em
  14.    units: 2em
  15.    comment: 20em
  16.  
  17. include:
  18.    - type: script
  19.      name: zeros.js
  20.  
  21.  
  22. # *******************************************************************
  23.  
  24. rows:
  25.  
  26. - type: img
  27.   name: Wave Types
  28.   src: images/waves.png
  29.  
  30. # ** INPUT PARAMETER **
  31.  
  32. - type: header
  33.   name: Maximum and Minimum values of wave (peak to peak)
  34.  
  35. - type: var
  36.   comment: Maximum value of signal
  37.   name: V_max
  38.   value: 5
  39.   unit: V
  40.  
  41. - type: var
  42.   comment: Minimum value of signal
  43.   name: V_min
  44.   value: 1
  45.   unit: V
  46.  
  47. - type: var
  48.   comment: Duty cycle
  49.   name: D
  50.   value: 50
  51.   unit: '%'
  52.   prefix: 0.01
  53.  
  54.  
  55. # ** SINE WAVE **
  56.  
  57. - type: header
  58.   name: Sine wave
  59.  
  60. - type: calc
  61.   comment: Average value of sine wave (offset)
  62.   name: V_offset
  63.   unit: V
  64.   id: V_offset1
  65.   calc: V_offset1 = V_min + 0.5 * (V_max - V_min)
  66.  
  67. - type: calc
  68.   comment: RMS value of sine wave (without offset)
  69.   name: V_sin_ac_rms
  70.   unit: V
  71.   calc: V_sin_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(0.125)
  72.  
  73. - type: calc
  74.   comment: RMS value of sine wave (with offset)
  75.   name: V_sin_rms
  76.   unit: V
  77.   calc: V_sin_rms = Math.sqrt(V_sin_ac_rms * V_sin_ac_rms + V_offset1 * V_offset1)
  78.  
  79.  
  80. # ** TRIANGLE WAVE **
  81.  
  82. - type: header
  83.   name: Triangle wave
  84.  
  85. - type: calc
  86.   comment: Average value of Triangle wave (offset)
  87.   name: V_offset
  88.   unit: V
  89.   id: V_offset2
  90.   calc: V_offset2 = V_min + 0.5 * (V_max - V_min)
  91.  
  92. - type: calc
  93.   comment: RMS value of Triangle wave (without offset)
  94.   name: V_tri_ac_rms
  95.   unit: V
  96.   calc: V_tri_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(1.0/12)
  97.  
  98. - type: calc
  99.   comment: RMS value of Triangle wave (with offset)
  100.   name: V_tri_rms
  101.   unit: V
  102.   calc: V_tri_rms = Math.sqrt(V_tri_ac_rms * V_tri_ac_rms + V_offset2 * V_offset2)
  103.  
  104.  
  105. # ** RECTIFIED SINE WAVE **
  106.  
  107. - type: header
  108.   name: Rectified Sine wave
  109.  
  110. - type: calc
  111.   comment: Average value of Rectified Sine wave (offset)
  112.   name: V_offset
  113.   unit: V
  114.   id: V_offset3
  115.   calc: V_offset3 = V_min + (V_max - V_min) * 2 * D / Math.PI
  116.  
  117. - type: calc
  118.   comment: RMS value of of Rectified Sine wave (without offset)
  119.   name: V_rsin_ac_rms
  120.   unit: V
  121.   calc: V_rsin_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(D*(0.5 - 4.0 /(Math.PI*Math.PI)))
  122.  
  123. - type: calc
  124.   comment: RMS value of of Rectified Sine wave (with offset)
  125.   name: V_rsin_rms
  126.   unit: V
  127.   calc: V_rsin_rms = Math.sqrt(V_rsin_ac_rms * V_rsin_ac_rms + V_offset3 * V_offset3)
  128.  
  129.  
  130. # ** SAWTOOTH WAVE **
  131.  
  132. - type: header
  133.   name: Sawtooth wave
  134.  
  135. - type: calc
  136.   comment: Average value of Sawtooth wave (offset)
  137.   name: V_offset
  138.   unit: V
  139.   id: V_offset4
  140.   calc: V_offset4 = V_min + D * 0.5 * (V_max - V_min)
  141.  
  142. - type: calc
  143.   comment: RMS value of Sawtooth wave (without offset)
  144.   name: V_saw_ac_rms
  145.   unit: V
  146.   calc: V_saw_ac_rms = Math.abs(V_max - V_min) * Math.sqrt(D * 0.0833333)
  147.  
  148. - type: calc
  149.   comment: RMS value of Sawtooth wave (with offset)
  150.   name: V_saw_rms
  151.   unit: V
  152.   calc: V_saw_rms = Math.sqrt(V_saw_ac_rms * V_saw_ac_rms + V_offset4 * V_offset4)
  153.  
  154.  
  155. # ** SQUARE WAVE **
  156.  
  157. - type: header
  158.   name: Square wave
  159.  
  160. - type: calc
  161.   comment: Average value of Square wave (offset)
  162.   name: V_offset
  163.   unit: V
  164.   id: V_offset5
  165.   calc: V_offset5 = V_min +  D * (V_max - V_min)
  166.  
  167. - type: calc
  168.   comment: RMS value of Square wave (without offset)
  169.   name: V_sq_ac_rms
  170.   unit: V
  171.   calc:
  172.   - V_sq_rms = Math.sqrt(V_max*V_max*D + V_min*V_min*(1-D))
  173.   - V_sq_ac_rms = Math.sqrt(V_sq_rms*V_sq_rms - V_offset5 * V_offset5)
  174.  
  175. - type: calc
  176.   comment: RMS value of Square wave (with offset)
  177.   name: V_sq_rms
  178.   unit: V
  179.  
  180.  
  181. # ** ADD WAVES **
  182.  
  183. - type: header
  184.   name: Sum of waves RMS value
  185.  
  186. - type: var
  187.   comment: V_rms of Wave 1
  188.   name: V1_rms
  189.   unit: V
  190.  
  191. - type: var
  192.   comment: V_rms of Wave 2
  193.   name: V2_rms
  194.   unit: V
  195.  
  196. - type: var
  197.   comment: V_rms of Wave 3
  198.   name: V3_rms
  199.   unit: V
  200.  
  201. - type: var
  202.   comment: V_rms of Wave 4
  203.   name: V4_rms
  204.   unit: V
  205.  
  206. - type: var
  207.   comment: V_rms of Wave 5
  208.   name: V5_rms
  209.   unit: V
  210.  
  211. - type: calc
  212.   comment: RMS value of all waves
  213.   name: V_add_rms
  214.   unit: V
  215.   calc: V_add_rms = Math.sqrt(V1_rms*V1_rms + V2_rms*V2_rms + V3_rms*V3_rms + V4_rms*V4_rms + V5_rms*V5_rms)


En cada línea pongo cómo se llaman los elementos:

- type: var
  comment: V_rms of Wave 5
  name: V5_rms
  unit: V

y la página html se genera automáticamente:
 - Tienes que ingresar para ver archivos adjuntos -

Con todas las dependencias y enlaces necesarios para que todo funcione correctamente.
Título: Re:Calcular valores medios y RMS
Publicado por: planeta9999 en 13 de Marzo de 2018, 19:49:18
 

¿ Los campos en azul, no deberían estar protegidos para que no se pueda teclear nada en ellos ?, entiendo que son campos de salida con los datos calculados, ahí me deja teclear cualquier cosa.

Y en los campos de entrada en amarillo (y en azul también), te deja entrar de todo, incluidas letras, ¿ no deberías habilitar solo números ?.
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 13 de Marzo de 2018, 21:06:04
Puede.
No lo he limitado porque si reescribes y pulsas [tab] o [enter], enseguida te borra lo que has puesto con un nuevo cálculo. ¿Tú Cómo lo bloquearías?

En cuanto a las letras, en ocasiones es necesario ponerlas: 12e3
Pero por ahora no me preocupa mucho. Si te equivocas el cálculo no sale y te das cuenta enseguida.

Por ahora estoy intentando añadir selectores para añadir valores automáticamente dependiendo de la selección realizada. Me servirá para la próxima página que estoy haciendo para calcular inductancias. Quiero añadir los cores E más utilizados en una lista de selección y que al seleccionar, todos los parámetros del núcleo se copien en su posición.

También intento añadir gráficas sencillas que se actualicen en tiempo real. Lo he intentado con Chartist pero no me ha salido bien. Las gráficas programadas por mí son demasiado sencillas y no tienen buen aspecto.

Saludos.
Título: Re:Calcular valores medios y RMS
Publicado por: KILLERJC en 13 de Marzo de 2018, 21:09:34
le podes agregar el atributo "disabled" de los input a tu template. ( a los scalc )
Título: Re:Calcular valores medios y RMS
Publicado por: planeta9999 en 13 de Marzo de 2018, 23:55:59
Puede.
No lo he limitado porque si reescribes y pulsas [tab] o [enter], enseguida te borra lo que has puesto con un nuevo cálculo. ¿Tú Cómo lo bloquearías?


No te se decir, hace años que no programo páginas web. JavaScript apenas lo toqué, tampoco HTML5, desarrollaba módulos para Joomla/Virtuemart en PHP/MySQL y antes hice adaptaciones de PHPNuke y OsCommerce, pero ya hará como 6 años desde que hice algo.

Ahora con el proyecto GPRS, voy a tener que retomar y refrescar cosas, también quiero meterme con Javascript y HTML5 para temas gráficos.
Título: Re:Calcular valores medios y RMS
Publicado por: KILLERJC en 14 de Marzo de 2018, 09:38:48
En cuanto a las letras, en ocasiones es necesario ponerlas: 12e3

HTML5 admite el uso del atributo type="number" y limita a que pueda expresarse como pedis.
https://www.w3.org/TR/html/sec-forms.html#number-state-typenumber
https://www.w3.org/TR/html/infrastructure.html#valid-floating-point-number

Por el tema de los inputs que no deben modificarse, bueno,, ya dije como solucionarlo, es bloqueandolos con el disabled.

Y asi espero que se solucione todo lo que pide planeta jeje
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 14 de Marzo de 2018, 11:43:21
Ya lo he cambiado, pero estoy liado con las plantillas y no he tenido tiempo de subirlo.

Saludos.
Título: Re:Calcular valores medios y RMS
Publicado por: xocas en 14 de Marzo de 2018, 12:32:43
Picuino, he tenido que cambiar la etiqueta del código YAML de uno de tus mensajes porque genera errores. Selecciona otro de la lista desplegable si XML no te parece correcto.

Algunos de los archivos de lenguaje incluidos en Geshi son muy antiguos (yaml es de 2010) y no funcionan bien en las nuevas versiones de SMF. Sorry

saludo
Título: Re:Calcular valores medios y RMS
Publicado por: Picuino en 19 de Marzo de 2018, 10:54:58
Nueva versión:

La página funciona con Query strings para dar valores a las variables desde la URL
Ejemplo con V_max=3v y V_min=-1v:
https://rawgit.com/Picuino/picalc/master/rms_calculator.html?V_max=3&V_min=-1&D=50&


Ahora el historial del navegador está integrado con los cálculos. Al ir hacia atrás y adelante con el navegador, también cambian los valores y los cálculos hacia atrás y adelante.


Nuevo botón copiar URL, para copiar la url más los valores introducidos en las variables. Así se puede almacenar un cálculo o enviárselo a alguien en formato enlace URL.


Un saludo.