• Domingo 22 de Diciembre de 2024, 03:08

Autor Tema:  Bucle De Control Para Dspic30f  (Leído 1850 veces)

davidhuevo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Bucle De Control Para Dspic30f
« en: Sábado 17 de Junio de 2006, 19:13 »
0
Hola me gustaría saber si alguien tiene el código de un bucle de control para un microcontrolador dsPIC30F en lenguaje C, o en su defecto información sobre el microcontrolador que me pueda ayudar.

En pseudocódigo:

Cada (Periodo de tiempo) hacer
    rk=leer referencia;
    wk=leer proceso;
    error=rk-wk;
    ck=funcion(ek,...)
    escribir (ck)
Fin Cada

Gracias

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Bucle De Control Para Dspic30f
« Respuesta #1 en: Viernes 7 de Julio de 2006, 14:05 »
0
Supongo que te refieres a programar un controlador PID, el proceso es el siguiente:
Haces una interrupción que se ejecute cada t ms:

- Lees el valor del elemento a controlar: rk (temperatura, nivel...)
- Valor de salida:

   e(t) = r(t) - sp
   Etotal = Etotal + e(t)

   y(t) = Kc * e(t) + ki * Etotal + kd * ( e(t) - e (t-1) )

   e(t-1) = e(t)

FIN.

Esto sería un bucle de control de un PID, el controlador más famoso de la industria.
Los parámetros son los siguientes:
- e(t) es el error que hay en cada ciclo, el valor del elemento a controlar menos el valor real del elemento.
- r(t) es el valor medido del elemento, el valor que tiene realmente.
- sp es el set-point, el valor al que queremos llegar.
- Etotal es el sumatorio de los errores, es un termino que valdrá 0 al principio y se irá incrementando con cada ciclo, debes tener en cuenta posibles desbordamientos del mismo, pues al principio este valor es grande y aunque con cada ciclo el error decae es cierto que se sigue sumando.  A este mecanismo se le denomina anti-windup, por eso es mejor usar la parte integral sólo cuando el valor logrado es muy cercano al valor que se busca.
- y(t) es el valor de salida de tu controlador, la acción a realizar sobre el sistema.
- kc es la ganancia proporcional del controlador.
- ki es la gananacia integral del controlador.
- kd es la ganancia derivativa.
Estas tres constantes las deberás seleccionar con cuidado para que el sistema no se inestabilice y sea lo suficientemente rápido... a esto se denomina sintonización del PID.

Un ejemplo sería el control de la temperatura de un recinto, contamos con un calentador (una resistencia) y un sensor de temperatura.  r(t) será el valor que nos da el sensor e y(t) será la intensidad eléctrica que aplicaremos a la resistencia.  Conociendo la temperatura que proporcionamos dependiendo de la intensidad que circula por esa resistencia, ya tendriamos hecho el PID, sólo nos quedaría hacer una simple regla de tres para pasar y(t) que estará expresada en unidades de temperatura (ºC, K, F...) a amperios necesarios para conseguir esa temperatura con esa resistencia.
Una vez hecho basta sintonizar el PID para conseguir un comportamiento óptimo.

Espero que te sirva de ayuda.
Un saludo.  :lightsabre:
No hay tonto más molesto que el ingenioso.

davidhuevo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Bucle De Control Para Dspic30f
« Respuesta #2 en: Sábado 8 de Julio de 2006, 18:09 »
0
Gracias por el intento...pero lo que yo quiero es programas para un dsPIC30F6010 de Microchip, si además el programa implementa un bucle de control pues mejor, si el regulador es proporcional, integral o diferencial es secundario ahora mismo.

De todos modos gracias por las molestias