Utilizando la libreria de Microchip para dsPICs: controlador PID

Posted by Juan Marcano | Posted in Electrónica, Software | Posted on 05-04-2011

0

Los dsPIC son DSC, ello significa que combinan las características de un MCU junto a las bondades de un DSP,  se caracterizan fundamentalmente por la prescencia de A/D rápidos (incluso con DMA en la familia 33f), presencia  de módulos especializados de PWM, y enfocados principalmente a la necesidad de operaciones matemáticas cíclicas a alta velocidad sobre todo en aplicaciones comúnmente denominadas  de ¨tiempo real¨, en fin: los DSC son muy versátiles, aunque la limitante a su uso y tal ves por ello su poca popularidad es:

–          Como todo micro nuevo requiere cierto tiempo de aprendizaje, y tal vez su uso no se justifique en la mayoría de aplicaciones, siendo tal vez más conveniente el uso de la familia de PICs 24 (muy versátil y funcional) o incluso uC más económicos si es que ya se ha acostumbrado, sin embargo la familia de PIC24 utiliza el mismo compilador C30 de MICROCHIP y la mayoría de módulos del los dsPICs guardan muchas similitudes con los uC de la familia de PICs 24 por lo que el salto de PICs 24 a dsPICs no resulta para nada complicado.

–          El costo es obviamente mayor para el dsPIC.aunque a veces resulta contradictorio que uC de la familia 18 con un rendimiento mucho menor, módulos menos versátiles y a su vez complicados de configurar, con mayores limitantes y de solo 8 bits tengan costos iguales e incluso mayores que los de familias de microcontroladores más versátiles e incluso más sencillos de programar como la familia 24, al menos en el super-limitado mercado nacional.

La familia de PIC24 comparte junto a los dsPIC el mismo compilador C30 ofrecido por microchip que en su versión académica puede dar resultados más que satisfactorios, con la típica posibilidad de incluir código en assembler si se considerase necesario. En fín cuestión de opiniones, de probar y comparar.

Dejando ya de lado esta pequeña introducción vayamos al grano y al verdadero motivo de este artículo:

Como utilizar un dsPIC para implementar un controlador PID?

La respuesta es simple: microchip nos brinda una librería de algoritmos que permite hacerlo haciendo uso del motor DSP y brinda el código fuente por lo que la podemos modificar si se nos antoja.

Es solo una de las muchas librerías que se incluyen junto al compilador C30, que como dijimos tiene un único propósito: aumentar la velocidad de las operaciones matemáticas. Entonces si deseamos implementar un PID con un dsPIC no es lo mas eficiente el uso del cálculo del controlador utilizando las instrucciones MCU (aunque no por ello inválido),pero un programa más eficiente debe hacer uso del motor DSP que lo disminuirá el tiempo ocioso de nuestro microcontrolador dejándolo libre para ejecutar otras tareas, despues de todo debemos sacarle el jugo al DSC y ello no resulta tan difícil:

La verdad es que aquí no hay ningún misterio, aparece documentación acerca del uso de la librería  en varios trabajos publicados en la red, en varios foros y en los documentos de microchip que suelen tener muchas versiones y la intención de este post es condensar un poco esa información.

Es necesario acotar que todos los archivos necesarios están en la carpeta del compilador C30 que ya deberia haber instalado, explore en la carpeta de instalación: los siguientes archivos y añádelos a tu proyecto en el MPLAB, o utilice el ¨Linker script¨ que viene con el ejemplo CE019_PID que a fin de cuentas es el que explica claramente con un ejemplo como se emplea la librería y que archivo debe añadir y en general todas las instrucciones a seguir.

El documento 16Bit_Language_Tool_Libraries Chapter 2–> control functions , brinda una introducción muy didáctica y condensada acerca de los PID, y explica con más detalle las 4 funciones en lenguaje C para implementar el PID, indicando inclusive el numero de ciclos que toma la ejecución de cada función.

Con estos 2 documentos debería ya poder empezar!

Como comentario adicional:

No olvide incluir la cabecera <dsp.h>  (echele un ojo al final del código) aunque personalmente prefiero en cualquier proyecto incluir todos los archivos de código fuente y cabeceras dentro de la carpeta del proyecto en el MPLAB.

Para mayor información aún nada mejor que revisar y estudiar un poco el código fuente de la funciones para PID que está escrito en assembler y está contenido en el archivo PID.s, nótese el uso de las instrucción MAC (multiplica y acumula) propia de los DSP. Las instrucciones en assembler para el dsPIC están aquí.

También es necesario el archivo dspcommon.INC

Para el uso de las instrucciones DSP es necesario estar claro con el uso de números fraccionales de 16 bits, también conocido como formato Q15, no es más que numeración de ¨punto fijo¨ (en analogía a punto flotante) pues la librería y el motor DSP emplea este formato. Para documentarse mejor acerca del formato Q15 revise en este este documento, es otra versión del documento ¨16 bit lenguaje tools¨, también tocan bien el tema en este libro.