Autor Tema: Calcular valores medios y RMS  (Leído 845 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4739
Re:Calcular valores medios y RMS
« Respuesta #15 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

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4739
Re:Calcular valores medios y RMS
« Respuesta #16 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.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17596
    • MicroPIC
Re:Calcular valores medios y RMS
« Respuesta #17 en: 13 de Marzo de 2018, 12:45:58 »
Está muy interesante. Gracias Picuino
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Picuino

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


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:
row.png
*row.png
(1.57 kB . 673x24 - visto 73 veces)


Con todas las dependencias y enlaces necesarios para que todo funcione correctamente.
« Última modificación: 14 de Marzo de 2018, 11:57:41 por xocas »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3139
    • Pinballsp
Re:Calcular valores medios y RMS
« Respuesta #19 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 ?.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4739
Re:Calcular valores medios y RMS
« Respuesta #20 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6705
Re:Calcular valores medios y RMS
« Respuesta #21 en: 13 de Marzo de 2018, 21:09:34 »
le podes agregar el atributo "disabled" de los input a tu template. ( a los scalc )
« Última modificación: 13 de Marzo de 2018, 21:16:04 por KILLERJC »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3139
    • Pinballsp
Re:Calcular valores medios y RMS
« Respuesta #22 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6705
Re:Calcular valores medios y RMS
« Respuesta #23 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

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4739
Re:Calcular valores medios y RMS
« Respuesta #24 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.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2158
Re:Calcular valores medios y RMS
« Respuesta #25 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

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4739
Re:Calcular valores medios y RMS
« Respuesta #26 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.


 

anything