Autor Tema: Medir valor pico  (Leído 2409 veces)

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

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Medir valor pico
« en: 18 de Mayo de 2021, 17:09:57 »
Hola estoy haciendo haciendo un programa en asm para medir el valor pico de una señal.

Estoy usando el timer del PIC para tomar mediciones para hallar el valor pico. He calibrado el timer para 10ms.

El problema es que no sé si sea el tiempo adecuado.

La señal proviene de la red eléctrica, la cual ha sido rectificada con onda completa y filtrada con un filtro de opamp. Esto proporciona al PIC una señal que en estado estable es una continua con forma de senoide.

Tampoco sé si debo considerar la parte transitoria de la señal o solo la parte estable.


Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Medir valor pico
« Respuesta #1 en: 18 de Mayo de 2021, 19:03:53 »
Para medir valor de pico una forma es hacer con un operacional un detector de pico y leer a baja velocidad con un ADC.   En una situación así, con muestrear cada 100ms o mas está bien.

Otra manera es full digital.  Rectificar, acondicionar niveles y un filtrado que no deforme la señal y vas a necesitar muchas muestras a menos que las sincronices con la red.

Tu refefinición del concepto de fase transitoria y estable, sumado al oxímoron  "una continua con forma de senoide"  hacen al mensaje difícil de entender.

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Medir valor pico
« Respuesta #2 en: 18 de Mayo de 2021, 21:18:53 »
Hola Eduardo.
A lo que me refiero es que es una señal continua pero con rizo, que en simulación se ve como una senoide. Lo que hice es hallar el valor pico de esa forma de señal.

Dejé 100ms para superar la parte tansitoria de la señal y luego hice mediciones por 10ms.

 En simulación logro obtener el valor pico de la forma de onda pero no estoy seguro si los tiempos son adecuados.

Lo quiero usar para controlar que el nivel de tension en la red eléctrica se mantenga dentro de un límite inferior y uno superior.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Medir valor pico
« Respuesta #3 en: 19 de Mayo de 2021, 00:02:47 »
A lo que me refiero es que es una señal continua pero con rizo, que en simulación se ve como una senoide. Lo que hice es hallar el valor pico de esa forma de señal.
Eso se llama ripple, aunque si todavía ves ondulación es porque te quedaste corto con el filtrado.

Citar
...
Lo quiero usar para controlar que el nivel de tension en la red eléctrica se mantenga dentro de un límite inferior y uno superior.
Es preferible medir el valor medio al pico porque es menos sensible a los disturbios de línea.  Al programa le dá lo mismo porque la tensión RMS es siempre la lectura del ADC por una constante (asumiendo una línea senoidal pura)
No es necesario un operacional, lo que sí, un filtrado de 2do orden mínimo y si 3er orden mejor.

Por ejemplo:
 

* filtrolin.jpg
(19.3 kB, 512x200 - visto 396 veces)


- La doble hilera de resistencias es para no estar vinculado de forma directa a línea.
- El valor RMS de linea es aprox Vrms = 1 + K*ADC   donde el 1 es para corregir la caida en los diodos y es un valor que depende de las resistencias elegidas y conviene sacarlo de una calibración.  En el del dibujo es K aprox 0.354
- Esas 2 etapas de filtrado dejan unos milivolts de ripple,  según los requerimientos se la deja así, se agrega otra etapa RC o se hace un pequeño filtrado por software.




Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Medir valor pico
« Respuesta #4 en: 19 de Mayo de 2021, 00:10:50 »
Gracias Eduardo.

Para sacar el valor medio, cuánto tiempo sería recomendable?

El filtro que uso es de 2do orden, cómo podría hacer un filtrada por software?

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Medir valor pico
« Respuesta #5 en: 19 de Mayo de 2021, 10:14:10 »
Para sacar el valor medio, cuánto tiempo sería recomendable?
El valor medio es lo que lees a la salida del filtro (aunque siendo estrictos, no es el valor medio teorico), podés leerlo cada 250ms si querés, pero si te falta filtrado y vas a reforzar con un filtrado digital conviene mayor velocidad, tipo una muestra cada 50ms...100ms para no retardar tanto la respuesta.

Citar
El filtro que uso es de 2do orden, cómo podría hacer un filtrada por software?
Un algoritmo sencillo de pasabajo de 1er orden es:  Xn = Xn-1 + K*(ADC-Xn-1)  ; (con K < 0.25 preferiblemente)

Si NO se usa punto flotante se elige un valor de K que simplifique el proceso, por ejemplo 1/4 , 1/8 etc  pues en lugar de una multiplicación se hace un desplazamiento.
En C sería
Código: [Seleccionar]
     X+=(ADC-X)>>3  ;  // K=1/8

Puede filtrarse en cascada, pero no hay que entusiasmarse con las etapas porque la evolución se pone lentísima.

Hay por supuesto mejores filtros, si te interesa ponete a leer sobre filtros digitales.






 

anything