Autor Tema: Algoritmo para estabilizador de tension  (Leído 275 veces)

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

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Algoritmo para estabilizador de tension
« en: 18 de Octubre de 2020, 01:31:49 »
Hola estoy pensando en cómo hacer un programa que me permita controlar el funcionamiento de un estabilizador de tensión.

Hay un circuito que sensa el nivel de la tensión de entrada, la cual va a un pin del PIC para ver si está dentro del rango dónde el estabilizador debe operar. Si está fuera de rango se apaga el sistema.

El circuito también cuenta con una retroalimentación de la salida a otro pin del PIC para controlar el nivel de la salida a  un rango predefinido.

Mediante 6 Triac's quiero conmutar las 6 derivaciones en la salida de un autotransformador.

Encontré información dónde se hacía lo siguiente, lo cual no me queda claro. Talvez alguien me pueda ayudar a entender:

Hay un pin del PIC que tiene funciones de
Master Clear, RA3, Vpp.
Este pin está conectado a 5V mediante una resistencia.

Deduzco lo siguiente:

Al conectar el pin a tierra del circuito, el nivel cambia y puede usarse este cambio de nivel como una interrupción por cambio de nivel usando la función RA3 del PIC.

El procedimiento es como sigue:

Mediante un variador se pone el nivel de tensión a por ejemplo 180V:
Luego el pin en estado alto se conecta a tierra. Al hacer esto uno de los LED que acompaña a cada triac comienza a parpadear y finalmente queda encendido.
Al quitar la conexión a tierra el pin vuelve a su estado alto normal y el LED se apaga.

Luego para por ejemplo 190V se hace lo mismo.

Esto se repite para cada uno de los Triac's.

Según la información con esto lo que se hace es setear el PIC para que quede listo para funcionar y dice que sin esto no funciona.

Lo que no entiendo es cómo sería el algoritmo para hacer esto.




Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 328
Re:Algoritmo para estabilizador de tension
« Respuesta #1 en: 18 de Octubre de 2020, 13:00:17 »
Hola, recuerda que NO recomiendo el uso de TRIACs para éstos casos.
*Ruido en la carga.
*Falta de robustez comparado a un relé.
Es importante añadir varistores, red snubber, etc. Ya que trabajarán en un sistema fuertemente inductivo.
Aún así, son delicados.
« Última modificación: 18 de Octubre de 2020, 13:07:56 por Robert76 »

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Re:Algoritmo para estabilizador de tension
« Respuesta #2 en: 18 de Octubre de 2020, 14:52:50 »
Si gracias.
Solo quiero probar.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7944
Re:Algoritmo para estabilizador de tension
« Respuesta #3 en: 18 de Octubre de 2020, 15:50:04 »
¿Por que queres unir todo?


1 pin para leerlo con el ADC, en el cual el rango de tu interes supongamos 180 a 240V este en el rango de los 1.5V a 4.5V. Si lo aislas mejor!

Te conviene crear un circuito que te lo rectifique y que te lo convierta a "continua". Ojo que este circuito es luego el que determina la velocidad de respuesta.

Luego los pines de cada salida, aislados de la red. Fin...

Lees el ADC, determinas que salida es la que tiene que estar conectada y  conectas LISTO..

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Re:Algoritmo para estabilizador de tension
« Respuesta #4 en: 18 de Octubre de 2020, 19:51:15 »
Un bloque del circuito controla la tension de entrada. La señal va al PIC y este determina si está dentro del rango de entrada.

Otro bloque controla la tensión a la salida. Este bloque es la retroalimentación del circuito.

Quiero que el PIC controle el sistema con la información de la tensión de salida no con la información de la tensión de  entrada, la cual solo es para activar o desactivar el sistema dependiendo si está en el rango de entrada o no.

El PIC lee la información mediante dos pines. Un pin para la tension de entrada y el otro para la tensión de salida.

Lo que no se me ocurre es como hacer el
algoritmo para ir cambiando de Triac de acuerdo a la informacion leída por el PIC del circuito de salida.

La información que encontré dice que puedo setear el PIC en cada nivel donde entra a funcionar cada Triac. Aunque no
entiendo cómo sería el algoritmo para hacer esto.
« Última modificación: 18 de Octubre de 2020, 19:58:06 por afta »

Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 328
Re:Algoritmo para estabilizador de tension
« Respuesta #5 en: 18 de Octubre de 2020, 21:38:32 »
Monitoreando la entrada, es suficiente determinar si puede activarse o no y para elegir el escalón correspondiente.
Así que puedes prescindir de monitorear la salida.
Lo que debes considerar es, una conmutación retardada, o bien con histeresis, quizás ésta última funcione más óptimamente.
Pues de lo contrario en un umbral entre un escalón y otro, habrá conmutaciones rápidas y eso no se verá nada bien.
« Última modificación: 18 de Octubre de 2020, 21:43:41 por Robert76 »

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Re:Algoritmo para estabilizador de tension
« Respuesta #6 en: 19 de Octubre de 2020, 14:38:12 »
Leí que controlando la salida puedo obtener un mejor funcionamiento que leyendo solo la entrada.
Me base en esto para armar mi circuito.
Ahora mi problema es como hacer el algoritmo que me permita mantener la salida en el rango donde debe variar.

Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 328
Re:Algoritmo para estabilizador de tension
« Respuesta #7 en: 19 de Octubre de 2020, 15:51:21 »
El tema es que a la entrada debes monitorearla si o si.
Sino cómo saber cuándo conectar?
Por ejem. En la entrada hay 150V pero el sistema lee sólo la salida cómo planteas.
Entonces se ve obligado a conectarse para poder ver qué hay en la salida, y ahí define que hacer, pero mientras tanto la carga tuvo que percibir esa tensión fuera de rango.
Y el problema no termina ahí.
El sistema puede oscilar conectando y desconectando para sondear cuándo mantener conectado, en resumen un desastre.
En cbio. si solamente lees la entrada, el equipo sabe si puede o no conectar a la salida.
El sig. punto es saber que derivación elegir.
El programa debe tener cómo dato los rangos de cada escalón. Y sabe instantáneamente dónde posicionarse, pero con acciones retardadas, siempre y cuándo NO exista peligro de sobrecargas o tensión muy baja.
Me explico?
« Última modificación: 19 de Octubre de 2020, 15:56:20 por Robert76 »

Desconectado Eduardo2

  • PIC18
  • ****
  • Mensajes: 396
Re:Algoritmo para estabilizador de tension
« Respuesta #8 en: 19 de Octubre de 2020, 16:12:13 »
Leí que controlando la salida puedo obtener un mejor funcionamiento que leyendo solo la entrada.
Me base en esto para armar mi circuito.
Ahora mi problema es como hacer el algoritmo que me permita mantener la salida en el rango donde debe variar.

Monitoreando la salida:

- Si V > 228  Bajar un punto. Error si estaba en el mínimo.
- Si V < 212  Subir un punto. Error si estaba en el máximo.

(para una franja de +/- 8V)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7944
Re:Algoritmo para estabilizador de tension
« Respuesta #9 en: 19 de Octubre de 2020, 16:34:31 »
Código: C
  1. valores_in[6] = {190,200,210,220,230,240};   //Uno para cada salida, valores entrada para tener 220V
  2. histeresis = 2;
  3.  
  4.  
  5. uint8_t NewOutput(lectura_adc, salida_antigua) {
  6.  
  7.         uint8_t aux, i=0;
  8.         //Check limits aca maximo y minimo
  9.         for(i=1;i<sizeof valores_in; i++) if(lectura_adc < valores_in[i]) break;
  10.         i--;
  11.         aux = (valores_in[i]-valores_in[i+1]) >> 2;
  12.         if((aux + histeresis) < (lectura_adc-valores_in[i])) return ++i;
  13.         if((aux - histeresis) > (lectura_adc-valores_in[i])) return i;
  14.  
  15.         // Esta dentro del valor de la histeresis. No cambiamos
  16.  
  17.         return salida_antigua;
  18. }

Algo asi, pero arreglando varias cosas mas.... tiene muchisimos errores el codigo de arriba y casos que no se contemplan tambien.

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Re:Algoritmo para estabilizador de tension
« Respuesta #10 en: 19 de Octubre de 2020, 17:20:13 »
Gracias a todos. Voy a tratar de implementar un algoritmo y lo publicaré para recibir sus sugerencias de las cosas que me falten considerar.

Desconectado afta

  • PIC12
  • **
  • Mensajes: 63
Re:Algoritmo para estabilizador de tension
« Respuesta #11 en: 26 de Octubre de 2020, 13:43:45 »
   aux = (valores_in-valores_in[i+1]) >> 2;
   if((aux + histeresis) < (lectura_adc-valores_in)) return ++i;
   if((aux - histeresis) > (lectura_adc-valores_in)) return i;

Alguien entiende porque se hace la diferencia  (valores_in-valores_in[i+1]) y luego un doble corrimiento con lo cual se logra un division entre 4? Segun entiendo aux deberia ser el valor promedio entre las entradas.

Este codigo es para monitorear la entrada cierto?
Otra pregunta es si puedo usar una histeresis de 1
« Última modificación: 26 de Octubre de 2020, 14:14:33 por afta »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7944
Re:Algoritmo para estabilizador de tension
« Respuesta #12 en: 26 de Octubre de 2020, 14:16:40 »
Tuve un error, o pense en otra cosa cuando lo pase... En realidad es 1 solo shift a la derecha, es decir una división por 2.

Supongamos que

Tus "escalones" fueran: 200V y 220V
Histeresis = 5V

Código: C
  1. (valores_in-valores_in[i+1])
(Hay un error, como ves están dados vueltas, debería ser el i+1 menos el i. )

Te da 20V que es la diferencia. (220V-200V)

Dividirlo por 2, te deja la mitad, es decir 10V

Luego comparamos dos cosas:

10V+-5V (punto medio +- histeresis)   y   leido - 200V  (cuanto supera al escalon inferior)

Supongamos que leiste 216V
Si es el limite superior es +, por lo que 15V < 16V, se cumple, y por lo tanto activa la salida siguiente o la que pertenece al escalon de los 220V

Supongamos que la entrada eran 203V
Si es el limite inferior es -, por lo que 5V > 3V, se cumple, y por lo tanto activa la salida anterior o la que pertenece al escalon de los 200V

Supongamos que la entrada es de 210V
No cumple con ninguno de los valores, en este caso pueden ocurrir dos cosas:
- Suponiendo que uses de comienzo este codigo (inicio, ninguna salida activa), vas a tener que ver cual es el "mejor caso", es decir cual se aproxima mas al escalon. Y elegir ese
Esto lo vas a lograr con un for recorriendo, restando y observando cual tiene el menor error posible.
- Suponiendo que ya esta funcionando con una entrada activa, entonces seguirias con la misma entrada. Por eso devuelve la salida "vieja"

Citar
Otra pregunta es si puedo usar una histeresis de 1
Vos podes hacer lo que quieras... Todo depende de:
- que tan rapido sea tu circuito de medida, ya que si detecta todos los cambios en la señal de entrada, entonces va a tener que se conectan y desconectan a cada rato las salidas.
- La capacidad de lectura que tengas con el ADC, si 1V no es posible detectarlo, entonces no tiene mucho sentido pensar en hacer una histeresis de ese valor.

Citar
Este codigo es para monitorear la entrada cierto?
Teniendo el valor de entrada, y los escalones, te dice cual salida activar.

Por supuesto, personalmente traduciria los valores de tension a lecturas del ADC, asi ser lo mas directo posible, al igual que la histeresis
« Última modificación: 26 de Octubre de 2020, 14:20:16 por KILLERJC »