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

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

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
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: 5892
    • Picuino
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: 18310
    • MicroPIC
Re:Calcular valores medios y RMS
« Respuesta #17 en: 13 de Marzo de 2018, 12:45:58 »
Está muy interesante. Gracias Picuino

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
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. 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:

* row.png
(1.57 kB, 673x24 - visto 492 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: 3520
    • 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: 5892
    • Picuino
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: 8242
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: 3520
    • 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: 8242
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: 5892
    • Picuino
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: 2312
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: 5892
    • Picuino
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