Autor Tema: Conmutacion-Programa  (Leído 7401 veces)

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

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Conmutacion-Programa
« en: 12 de Septiembre de 2021, 02:42:59 »
Hola a todos.

Estoy haciendo un programa para un estabilizador y quisiera determinar que salida de un autotransformador debe activarse.

El control de la tension de entrada lo estoy haciendo con el canal analogico 0 del PIC para hacer los cortes por subtension o sobretension. Esta parte funciona correctamente(170V a 268V).

El problema se me presenta al intentar hacer las conmutaciones con base en la lectura de la tension de salida mediante el canal analogico1.

Mi programa usa una interrupcion por cambio de nivel en uno de los pines del PIC. Al producirse la interrupcion se activa la salida correspondiente del autotransformador y se lee por el canal 1 la tension de salida. Los valores leidos para cada salida del autotransformador los estoy guardando en la EEPROM del PIC. Estos valores son muy cercanos a 220V.

Esto es porque para cada salida, la conmutacion se hace cuando en la entrada tengo un nivel de tension tal que a la salida correspondiente tenga 220V.

Pensaba usar esas lecturas equivalentes a 220V y hacer las conmutaciones restando 4V y sumando 13V para que la salida se mantenga
entre 216V y 233V pero no lo he podido hacer bien.

RC2,RC3,RC4 y RC5 se activan pero en los intervalos incorrectos y solo al encender el equipo. Si voy variando la tension llega un punto en el cual se desactivan y los demas se activan secuencialmente hasta que se apaga y ya no hace nada. RC0 y RC1 nunca se activan.

Dejo el fragmento del programa por si lo pueden checar y hacerme las correcciones de las cosas que estan mal. Gracias.


combinacion=0b00000001; 
PORTC = combinacion;    // Habilitar pin RC0

Control:

        obtenerPico(0);  // Leer tension de entrada

        if(valorPico<310 || valorPico>496) //310 a 170V y 496 a 268V
        {
           goto InhibirTriacs; //Si el voltaje de entrada esta fuera de rango se inhiben los triacs.
        }
        else if( valorPico > 325 && valorPico < 449)  // Si la tension de entrada esta dentro del rango medir la tension de salida
        {
           for(direccion=10;direccion>=0;direccion-=2)
           {
              obtenerPico(1);                                                               // Leer tension de retroalimentacion del canal 1
              lecturaAlmacenada = EEPROM_Read_Int(direccion);          // Leer EEPROM en la direccion actual y asignar valor a
                                                                                                   //    lecturaAlmacenada
              if(valorPico > (lecturaAlmacenada-13) && valorPico < (lecturaAlmacenada+45))  // 13 es equivalente a 4V y 45 a 13V
              {
                 break;
              }

              else
              {
                 combinacion<<=1;
                 PORTC=combinacion;  // habilitar siguiente combinacion
              }

           }  // for

        } // else if

        goto Control;

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #1 en: 12 de Septiembre de 2021, 15:42:38 »
Hola a todos.

Estoy haciendo un programa para un estabilizador y quisiera determinar que salida de un autotransformador debe activarse.

El control de la tension de entrada lo estoy haciendo con el canal analogico 0 del PIC para hacer los cortes por subtension o sobretension. Esta parte funciona correctamente(170V a 268V).

El problema se me presenta al intentar hacer las conmutaciones con base en la lectura de la tension de salida mediante el canal analogico1.

Mi programa usa una interrupcion por cambio de nivel en uno de los pines del PIC. Al producirse la interrupcion se activa la salida correspondiente del autotransformador y se lee por el canal 1 la tension de salida. Los valores leidos para cada salida del autotransformador los estoy guardando en la EEPROM del PIC. Estos valores son muy cercanos a 220V.

Esto es porque para cada salida, la conmutacion se hace cuando en la entrada tengo un nivel de tension tal que a la salida correspondiente tenga 220V.

Pensaba usar esas lecturas equivalentes a 220V y hacer las conmutaciones restando 4V y sumando 13V para que la salida se mantenga
entre 216V y 233V pero no lo he podido hacer bien.

RC2,RC3,RC4 y RC5 se activan pero en los intervalos incorrectos y solo al encender el equipo. Si voy variando la tension llega un punto en el cual se desactivan y los demas se activan secuencialmente hasta que se apaga y ya no hace nada. RC0 y RC1 nunca se activan.

Dejo el fragmento del programa por si lo pueden checar y hacerme las correcciones de las cosas que estan mal. Gracias.


combinacion=0b00000001; 
PORTC = combinacion;    // Habilitar pin RC0

Control:

        obtenerPico(0);  // Leer tension de entrada

        if(valorPico<310 || valorPico>496) //310 a 170V y 496 a 268V
        {
           goto InhibirTriacs; //Si el voltaje de entrada esta fuera de rango se inhiben los triacs.
        }
        else if( valorPico > 325 && valorPico < 449)  // Si la tension de entrada esta dentro del rango medir la tension de salida
        {
           for(direccion=10;direccion>=0;direccion-=2)
           {
              obtenerPico(1);                                                               // Leer tension de retroalimentacion del canal 1
              lecturaAlmacenada = EEPROM_Read_Int(direccion);          // Leer EEPROM en la direccion actual y asignar valor a
                                                                                                   //    lecturaAlmacenada
              if(valorPico > (lecturaAlmacenada-13) && valorPico < (lecturaAlmacenada+45))  // 13 es equivalente a 4V y 45 a 13V
              {
                 break;
              }

              else
              {
                 combinacion<<=1;
                 PORTC=combinacion;  // habilitar siguiente combinacion
              }

           }  // for

        } // else if

        goto Control;

Hola, no entiendo muy bien el problema, pero lo que si te recomiendo es no usar 'goto' en lenguaje C.

Crean algo que denominaba código espagueti o algo así. No recuerdo el nombre correcto. En el pasado, los lenguajes de programación no tenían bucles while, declaraciones if, etc., y los programadores usaban goto para crear la lógica de sus programas. Pero sé que 'goto', conduce a un desorden, que insostenible. Es posible que funcione bien, pero tampoco hay garantía que no tengas problemas en el futuro.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Conmutacion-Programa
« Respuesta #2 en: 12 de Septiembre de 2021, 17:20:47 »
Hola bueno lo que quiero hacer es un programa  que controle la conmutacion de las salidas de un autotransformador detectando si la tension en la carga esta entre 212V y 229V.

Gracias por lo del goto. Solo lo uso en esa instruccion

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #3 en: 12 de Septiembre de 2021, 17:31:10 »
Hola.

Creo que más o menos comprendo lo que quieres hacer, deberías expresarte lo más simple, sin tanta literatura, o utilizando diagramas de flujo.

Lo que entiendo que quieres hacer es lo siguiente.

Tienes un autotransformador, con salidas para amplificar el voltaje, una para una relación 1:1 y otras salidas para reducir el voltaje.

La entrada del autotransformador es analizada por la entrada analógica de un MCU.

En función de ese voltaje, tu activas una sola salida del transformador, mediante SCRs, para "regular" el voltaje sobre una carga.

¿estoy en lo correcto?

Si es así ¿Qué problema tienes?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Conmutacion-Programa
« Respuesta #4 en: 12 de Septiembre de 2021, 19:01:53 »
Con un canal del ADC leo la entrada y controle que este entre 170V y 268V. Aquí no tengo problema.

Lo que no se es como controlar que triac activar para que la tension de Salida este entre 212V y 229V. Es un estabilizador de lazo cerrado  ya que la muestra para el control de Los triacs  la tomo de la salida una vez conectado el triac.

He visto que hay otros que con las muestras de entrada  controlan los triacs pero yo necesito uno que lo haga tomando muestras de la salida. La muestra de entrada la uso solo para controlar subtension o sobretension.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #5 en: 12 de Septiembre de 2021, 19:14:06 »
Con un canal del ADC leo la entrada y controle que este entre 170V y 268V. Aquí no tengo problema.

Lo que no se es como controlar que triac activar para que la tension de Salida este entre 212V y 229V. Es un estabilizador de lazo cerrado  ya que la muestra para el control de Los triacs  la tomo de la salida una vez conectado el triac.

He visto que hay otros que con las muestras de entrada  controlan los triacs pero yo necesito uno que lo haga tomando muestras de la salida. La muestra de entrada la uso solo para controlar subtension o sobretension.

O sea lo que tu necesitas es regular el Angulo de disparo del SRC y obviamente con eso controlar el voltaje sobre una carga resistiva ¿Verdad?

Si es así, ¿Para que necesitas el autotransformador?

Si compartieras un esquemático, simple, sin tantos detalles de tu proyecto se entendería mejor. (Una imagen es más que 1000 palabras)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Conmutacion-Programa
« Respuesta #6 en: 12 de Septiembre de 2021, 23:07:50 »
En la imagen se observa lo que quiero hacer. Controlar que triac debe activarse para que la salida se mantenga entre 212V y 229V.

Lo que necesito es alguna idea de como hacer el programa que haga esto.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Conmutacion-Programa
« Respuesta #7 en: 13 de Septiembre de 2021, 07:21:47 »
Hola, en todos los sistemas que he visto de estabilizadores, utilizan relés cómo conmutadores, y tiene sus ventajas ante un TRIAC. Por ejem. robustez y no generan ruido eléctrico en el cruce por cero, cómo lo hace un TRIAC y eso, suele ser un grave problema, para ciertas cargas, sobre todo inductivas.
En fin, yendo al programa, lo que debe hacer es  arrancar siempre en el escalón más bajo, luego monitorear permanentemente  la salida, y en función de si está más bajo que... o mayor que, secuenciar a un escalón menor/mayor, según la lógica.
Aunque a tu sistema le falta una desconexión total, en caso de sobretensión/subtensión que están fuera del rango de estabilizar.
« Última modificación: 13 de Septiembre de 2021, 07:25:09 por Robert76 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Conmutacion-Programa
« Respuesta #8 en: 13 de Septiembre de 2021, 07:34:31 »
No tiene ningún sentido monitorear la salida cuando tenes un autotransformador.

La relacion es fija y por lo tanto para no hacer mas cálculos de los necesarios, es mejor solo controlar la entrada.
Sabiendo que si esta dentro de ciertos rangos la tension, activar o desactivar los reles. En los estabilizadores mas simples esto se realiza con unos AO

2 Reles y tenes tu selector de 3 a 1

Y estaria faltando tambien una salida al autotrasformador que es la salida de alimentación del circuito de control.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #9 en: 13 de Septiembre de 2021, 09:07:32 »
No tiene ningún sentido monitorear la salida cuando tenes un autotransformador.

La relacion es fija y por lo tanto para no hacer mas cálculos de los necesarios, es mejor solo controlar la entrada.
Sabiendo que si esta dentro de ciertos rangos la tension, activar o desactivar los reles. En los estabilizadores mas simples esto se realiza con unos AO

2 Reles y tenes tu selector de 3 a 1

Y estaria faltando tambien una salida al autotrasformador que es la salida de alimentación del circuito de control.

Pensaba que era algo obvio leer el voltaje de entrada para controlar los "interruptores", Killer tiene razón en lo que afirma.

¿Qué circuito o como estás intentando activar los SRCs o no tienes idea de como hacerlo?

¿No es mejor y más fácil utilizar relés en lugar de SRCs?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Conmutacion-Programa
« Respuesta #10 en: 13 de Septiembre de 2021, 09:25:56 »
Si monitoreamos la salida a la carga, sólo hace falta una lectura de ventana que indique, bajar un escalón o subir un escalón, hasta que la lectura esté dentro de lo que se espera.
Si monitoreamos la entrada, hay que generar 3 ventanas, una para cada escalón.
La ventaja de ésta última, es que puede saltearse escalones yendo de máximo a mínimo o viceversa según se requiera. Pero el programa es más complejo.
La ventaja de la 1ra. opción, es que el programa es simple, ya que sólo mira una ventana, pero es más lento para saltear escalones, ya que debe hacerlo de manera secuencial.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #11 en: 13 de Septiembre de 2021, 09:45:28 »
Si, puede ser, analizado sería algo así:

1. Digamos que inicialmente el voltaje está dentro del rango normal, entonces el autotransformador está en una relación 1:1

2. El voltaje de entrada disminuye, lo detectas que está fuera de rango "normal" y decides amplificarlo, apango el relé que controla la salida 1:1 y conectado aquel que "amplifica" el voltaje.

3. Supongamos que el voltaje de entrada vuelve al rango normal, entonces en la salida del autotransformador "siente" el MCU que el voltaje está muy alto, así que desconecta el relé de "amplificación" y conecta el relé de 1:1

4. Suponiendo que aun sigue "sintiendo" que está muy alto el voltaje, conectaría el relé de "reducción" de voltaje.

Pueda que tengas razón.

Aquí la única precaución que debes tener es que cuando decides apagar y encender otro relé, no debes leer el voltaje de entrada puesto que ahí vas a tener "0" voltios y podrías pensar que el voltaje ha disminuido y debes "amplificarlo". O sea en esa transición debes bloquear la tarea que decide cuando activar los reles.

SI tu intención es seguir usando SCRs, creo que primero debes intentar con relés ver si funciona tu proyecto. Cuando veas que si funciona, ahí deberías intentar sustituir los relés por SRCs.

Un error común de crear un sistema, es que construyes todo y no sabes donde están las fallas. Si lo haces en partes, vas probando una por una, cuando logras superar una, pasas a la siguiente.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Conmutacion-Programa
« Respuesta #12 en: 13 de Septiembre de 2021, 09:54:16 »
En este momento volviendo a pensar, el problema que tendrías sería cuando tengas un voltaje tan grande, que aunque con el autotranformador lo estés reduciendo, siga siendo muy grande, y ahí deberías apagar los tres relés para proteger la carga, pero de esa manera tu propio circuito de control quedaría sin energía y se pagaría todo.

Y también en las transiciones entre relés, como dije antes tendrías un voltaje igual a cero. Tu circuito de control debería tener un respaldo de energía durante esas transiciones, pueden ser lo capacitores electrónicos de las fuentes o un super capacitor, sobre todo en la alimentación del microcontrolador.

¿Otra pregunta es como inicia tu sistema cuando aplicas energía por primera vez? Porque mientras esté apagado todo, los SRCs/relés no está activados, al aplicar energía, el circuito de control también está apagado y por lo tanto no funcionaría para nada.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Conmutacion-Programa
« Respuesta #13 en: 13 de Septiembre de 2021, 12:08:19 »
Buena pregunta, es por ello que el sistema se alimenta de una tensión independiente del autotransformador en éste caso.
Y vuelvo a repetir, le falta añadir otro relé más a la salida a la carga, por si la tensión está fuera de los rangos de regulación.

Desconectado afta

  • PIC16
  • ***
  • Mensajes: 123
Re:Conmutacion-Programa
« Respuesta #14 en: 14 de Septiembre de 2021, 05:43:07 »
Hola a todos gracias por su tiempo.

El circuito de control esta alimentado con otra salida del autotransformador.

Hice un Sistema que me mida la tension en la carga porque lei que esto lo hace mas robusto si cambia la carga. Segun averigué leyendo solo la tension de entrada podría tener problemas si la carga cambia.

Logre que regule pero cuando se apaga por subtension y subo el voltaje para que vuelva a regular ya no vuelve a encender y se queda apagado aunque debiera estar regulando. Solo pasa en el corte por subtension; del corte por sobretension si retorna con normalidad. No sé si falte mejorar la regulacion.
 
« Última modificación: 14 de Septiembre de 2021, 05:52:11 por afta »