SoloCodigo

Programación Específica => Microcontroladores => Programación en C => Mensaje iniciado por: davidhuevo en Sábado 17 de Junio de 2006, 19:13

Título: Bucle De Control Para Dspic30f
Publicado por: davidhuevo en Sábado 17 de Junio de 2006, 19:13
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
Título: Re: Bucle De Control Para Dspic30f
Publicado por: carmamezo en Viernes 7 de Julio de 2006, 14:05
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:
Título: Re: Bucle De Control Para Dspic30f
Publicado por: davidhuevo en Sábado 8 de Julio de 2006, 18:09
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