Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARTAGENA
Escuela Técnica Superior de Ingeniería Industrial
i
Hardware-in-the-loop
Hardware-in-the-loop (HIL) es una metodologı́a que nos permite reproducir y emular el com-
portamiento de un sistema dinámico en tiempo real de una forma económica, ágil y más didáctica
desde el punto de vista académico que a través de la realización de pruebas sobre una planta
real [9]. Es por esto que, cada vez más, su uso se está extendiendo no solo en el ámbito eduactivo
y de investigación, donde destaca por su flexibilidad y reducido coste (frente al alto coste de la
infraestructura necesaria), sino en el ámbito profesional, por los mismos motivos.
Esta metodologı́a nos permite emular un sistema en tiempo real, esto es, proveer de un marco
compuesto por Hardware y Software en el que se reproduce de manera precisa su comportamiento,
es por esto que su puesta en marcha tiene cabida en múltiples dispositivos (FPGAs y microcontro-
ladores, entre otros) que son fácilmente configurables y reúnen estos requisitos, ası́ como ser una
solución de bajo coste [8]. Además, HIL ofrece la posibilidad de combinar subsistemas reales, répli-
cas a menor escala de éstos u otros subsistemas y subsistemas simulados en una única emulación en
lazo cerrado, haciendo de ésta técnica una con una amplia versatilidad no solo en la fase de análisis
sino en la validación del modelado realizado y la posibilidad de comparar los resultados obtenidos.
Hardware-in-the-loop es una metodologı́a vigente desde hace décadas, y que surge ante la nece-
sidad de realizar pruebas ágilmente y de bajo coste en industria aeronáutica. Su uso se ha extendido
rápidamente hacia otros campos como la automoción, por los mismos motivos de coste tanto en
infraestructura como de reducción de tiempos en la puesta en marcha. Recientemente, HIL está
cobrando fuerza en el campo de la electrónica de potencia, puesto que reduce al mı́nimo (o eli-
mina, en el mejor de los casos) la necesidad de la infraestructura costosa que se requiere para la
realización de ensayos, pruebas en laboratorio, instalaciones de gran escala, entre otros [2]. Adi-
cionalmente, introduce el uso de simuladores en el proceso de diseño y desarrollo, con todos los
beneficios que conlleva como la posibilidad de realizar prototipado rápido, permitir la concurrencia
en el desarrollo, eliminar el factor de riesgo en su uso, entre otros [9].
ii
Resumen
Este proyecto aborda el estudio y la emulación mediante Hardware-in-the-loop (HIL) en el
microcontrolador TMS320F28379D de la familia C2000 de Texas Instruments de un convertidor
DC-DC reductor con la finalidad de obtener (y posteriormente validar) el modelo en lazo abierto
de este sistema. Se resuelve haciendo un amplio uso de las prestaciones que este dispositivo nos
ofrece, es por esto que las limitaciones fı́sicas impuestas definirán algunas de las propiedades de los
resultados obtenidos en cuanto a la frecuencia de muestreo, a la velocidad de cálculo en rutinas de
interrupción y a la precisión en el cálculo y representación de sus variables de estado. Además, se
propone un regulador con el que se cierra el lazo de control de tensión para observar la respuesta del
sistema emulado ante una fuente de perturbación, integrando las dos CPUs disponibles del sistema
entre sı́. Finalmente, se cierra el trabajo con un conjunto de conclusiones extraı́das a partir de los
resultados obtenidos, dando lugar a posibles trabajos futuros basados en la emulación de sistemas
en tiempo real en el ámbito académico a través de HIL.
Abstract
In this project we intend to study and carry out a real-time emulation of a DC-DC buck converter
based on Hardware-in-the-loop (HIL) technique in TMS320F28379D microcontroller from Texas
Instrument’s C200 family, as well as to validate the proposed open-loop model of this particular
system. It is solved by making an extensive use of the features that this device offers us, thus, the
physical limitations of this device will be heavily present in the results obtained in terms of sampling
frequency limitations, calculation speed in interrupt service routines and overall precision in the
representation of the state variables obtained. Furthermore, a compensator is proposed through
which the loop of voltage control is closed, with the intention of observing the system’s response to
disturbances, made possible by integrating both available CPUs. Finally, the project is concluded
with a set of conclusions drawn from the obtained results, prompting possible topics for future
works based on the real-time emulation of dynamic systems in an academic scope through HIL.
iii
Objetivos
El caso de estudio que se desarrollará en este trabajo será, en primer lugar, la emulación en un
microcontrolador de la familia C2000 de Texas Instruments, concretamente la familia LaunchPad
TMS320F28379D, el modelo conmutado en HIL de un convertidor DC/DC reductor con el fin de
obtener sus estados (corriente en el inductor y tensión en el condensador) de la forma más precisa
que las limitaciones fı́sicas de este dispositivo nos permita en cuanto a resolución y precisión. Tras
ello, se procederá a implementar un lazo de control sobre la tensión de salida del convertidor
haciendo uso de todas las prestaciones que ofrece el microcontrolador.
Con el cumplimiento de estos objetivos se procederá, finalmente, a analizar de una forma precisa
los resultados obtenidos, ası́ como proponer algunas ideas o soluciones que podrı́an mejorarlos,
formando esto parte también de los objetivos del trabajo que se propone.
iv
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000
Índice
1. Capı́tulo 1. Introducción. 5
1.1. Definición del problema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Desafı́os de la simulación en tiempo real en electrónica de potencia. . . . . . . . . . . 5
1.3. Convertidor DC-DC reductor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1. Modelo conmutado del convertidor reductor. . . . . . . . . . . . . . . . . . . 7
1.3.2. Implementación en un sistema digital. . . . . . . . . . . . . . . . . . . . . . . 8
1.3.3. Modelo conmutado del convertidor elevador. . . . . . . . . . . . . . . . . . . . 9
1.3.4. Modelo conmutado del convertidor reductor-elevador. . . . . . . . . . . . . . 11
1.4. Control de tensión sobre el convertidor reductor. Lazo cerrado. . . . . . . . . . . . . 12
3. Capı́tulo 3. Resultados. 47
3.1. Preámbulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2. Simulación en lazo abierto. Validación del modelo. . . . . . . . . . . . . . . . . . . . 50
3.2.1. Análisis de los resultados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.2. Respuesta frente a preturbaciones. . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3. Simulación en lazo cerrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.1. Respuesta frente a preturbaciones. . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4. Análisis de tiempos en rutinas de interrupción. . . . . . . . . . . . . . . . . . . . . . 58
3.4.1. Análisis temporal ISR. Tabla de tiempos. . . . . . . . . . . . . . . . . . . . . 58
3.5. Medidas de mejora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4. Conclusiones. 63
4.1. Contribución del trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2. Trabajos futuros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Referencias 65
Anexos 67
1
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000
Índice de figuras
1.1. Circuito eléctrico equivalente del convertidor DC-DC reductor. . . . . . . . . . . . . 7
1.2. Circuito eléctrico del convertidor DC-DC reductor en estado ON. . . . . . . . . . . . 8
1.3. Circuito eléctrico del convertidor DC-DC reductor en estado OFF. . . . . . . . . . . 8
1.4. Circuito eléctrico del convertidor DC-DC elevador. . . . . . . . . . . . . . . . . . . . 9
1.5. Circuito eléctrico del convertidor DC-DC elevador en estado ON. . . . . . . . . . . . 10
1.6. Circuito eléctrico del convertidor DC-DC elevador en estado OFF. . . . . . . . . . . 10
1.7. Circuito eléctrico del convertidor DC-DC reductor-elevador. . . . . . . . . . . . . . . 11
1.8. Circuito eléctrico del convertidor DC-DC reductor-elevador en estado ON. . . . . . . 11
1.9. Circuito eléctrico del convertidor DC-DC reductor-elevador en estado OFF. . . . . . 12
1.10. Esquema del control feedback para la tensión del convertidor. . . . . . . . . . . . . . 14
1.11. Diagrama de bode del sistema en lazo cerrado con la red de adelanto de fase. . . . . 16
2.1. Microcontrolador TMS320F28379D LaunchPad. . . . . . . . . . . . . . . . . . . . . . 20
2.2. Mapa de situación de los MCUs de la familia C2000. . . . . . . . . . . . . . . . . . . 20
2.3. Comparativa entre F2807x, F2833xS y F2837xD. . . . . . . . . . . . . . . . . . . . . 21
2.4. Estructura en diagrama de bloques F2837xD. . . . . . . . . . . . . . . . . . . . . . . 23
2.5. Pin map F28379D LaunchPad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6. Registro TCR de CpuTimer0Regs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7. Diagrama de interrupciones de F28379D LaunchPad. . . . . . . . . . . . . . . . . . . 27
2.8. Control de interrupciones de F28379D LaunchPad. . . . . . . . . . . . . . . . . . . . 28
2.9. Tabla de vectores de interrupción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.10. Registro Time-base Control (TBCTL). . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.11. Registro Action Qualifier Control A (AQCTLA). . . . . . . . . . . . . . . . . . . . . 31
2.12. Instantes de muestreo para el control de tensión. . . . . . . . . . . . . . . . . . . . . 32
2.13. Registro Event Trigger Selection (ETSEL). . . . . . . . . . . . . . . . . . . . . . . . 33
2.14. Registro Event Trigger Pre-Scale (ETPS). . . . . . . . . . . . . . . . . . . . . . . . . 33
2.15. Diagrama de bloques del ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.16. Registro SOC0 Control (SOC0CTL). . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.17. Registro de selección de interrupciones 1 y 2 del ADC (ADCINTSEL1N2). . . . . . . 35
2.18. Diagrama de bloques del DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.19. Registro de control del DAC (DACCTL). . . . . . . . . . . . . . . . . . . . . . . . . 37
2.20. Composición del tiempo de establecimiento del DAC. . . . . . . . . . . . . . . . . . . 38
2.21. Hoja de fabricante del DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.22. Esquema de reparto de periféricos en CPU1 y CPU2. . . . . . . . . . . . . . . . . . . 40
2.23. Entorno de programación en CCS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.24. Árbol del proyecto creado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.25. Propiedades del proyecto. Dirección de ficheros fuente y cabecera en Include options. 43
2.26. Propiedades del proyecto. Sı́mbolos predefinidos. . . . . . . . . . . . . . . . . . . . . 44
3.1. Flujograma del programa main realizado en CPU1. . . . . . . . . . . . . . . . . . . . 47
3.2. Flujograma de la rutina de interrupción realizado en CPU1. . . . . . . . . . . . . . . 48
3.3. Flujograma del programa main realizado en CPU2. . . . . . . . . . . . . . . . . . . . 49
3.4. Flujograma de la rutina de interrupción realizado en CPU2. . . . . . . . . . . . . . . 49
3.5. Esquema de conexiones para la emulación y control de tensión del convertidor re-
ductor en F28379D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6. Modelo empleado para la emulación (F28379D) y simulación en software comercial
del convertidor reductor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.7. Simulación en lazo abierto. Variables de estado del convertidor. TMS320F28379D. . 51
2
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000
3
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
1. Capı́tulo 1. Introducción.
1.1. Definición del problema.
El problema que se aborda en este trabajo es la emulación de un convertidor DC-DC reductor
mediante la técnica HIL, en el microcontrolador TMS320F28379D de TI. Para realizar la emulación
y poder representar las variables de estado del convertidor (corriente en el inductor y tensión en el
condensador) se hace necesario estudiar previamente el modelo del convertidor reductor y describir
cómo llevarlo desde su definición en ecuaciones diferenciales a su implementación en un sistema de
este tipo, digital, mediante una discretización apropiada.
Tras el estudio y descripción del convertidor DC-DC reductor como sistema, se persigue ob-
tener visualmente en un osciloscopio las señales de la corriente en el inductor y la tensión en el
condensador.
La emulación consistirá en programar en el microcontrolador las ecuaciones diferenciales dis-
cretizadas del convertidor reductor, y, con una señal de ciclo de trabajo generada internamente
por el mismo microcontrolador, establecer dentro de éste todo aquello necesario para obtener de
forma simulada las variables eléctricas de estado del sistema propuesto. Una vez obtenidas, se pre-
tende visualizarlas en un osciloscopio y en tiempo real, y ası́ acercarse lo máximo posible a una
simulación realizada sobre un convertidor DC-DC reductor real, conectado a una alimentación y
controlado mediante una señal PWM externa generada por un equipo de control ajeno al converti-
dor, y mostrando en un osciloscopio la evolución de sus estados. Como se realizarı́a tı́picamente en
un laboratorio pero siendo ésta una solución de bajo coste y sin riesgo de dañado de dispositivos y
equipo electrónico de alto coste.
Finalmente, para cerrar el lazo sobre el control de la tensión de salida, se dedicará un apartado
(en este mismo capı́tulo) para el análisis del regulador digital que se implementará con el fin de
controlar esta variable de estado. Se persigue, además, la emulación del lazo cerrado ante la acción
de una perturbación [7] sobre la tensión de alimentación y sobre la carga del convertidor para poder
observar el control de la tensión en tiempo real y para las condiciones del regulador previamente
diseñado.
5
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
4. Elección y/o adecuación óptima del sistema hardware para la simulación en HIL.
La elección del hardware para la simulación en tiempo real debe ser meditada, considerando
completamente los requisitos de la aplicación que se pretende implementar. Dado que el tiem-
po de cómputo es crı́tico, se deben considerar considerar todos los aspectos desde las latencias
en las adquisiciones, procesos de conversión, y demás, ası́ como el tiempo de ejecución, la re-
presentación de datos, las comunicaciones de bus, entre otros. Además, la implementación del
hardware de simulación en tiempo real también puede variar en cuanto a la metodologı́a de
modelado y el algoritmo de resolución numérica que vendrá especificado por el fabricante.
Los diseños tienden a ser personalizados para aplicaciones especı́ficas y carecen de generalidad
y versatilidad, siendo ésta una de las grandes ventajas de la emulación en HIL, y que, al
reducirse, se gana en optimización de recursos y tiempo. Al mismo tiempo, existe una gran
demanda de diseños genéricos al tratarse de una emulación en HIL. Es por esto que lograr un
diseño e implementación genéricos de la simulación en tiempo real en términos de modelado,
simulación, estructuras de hardware y entorno de desarrollo es difı́cil de equilibrar entre la
generalidad y el rendimiento. Y, por tanto, conforma uno de los principales desafı́os a la
simulación en tiempo real en electrónica de potencia.
6
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
Existen varios tipos de convertidores de potencia, que incluyen convertidores de corriente conti-
nua a corriente alterna (DC-CA), convertidores de corriente alterna a corriente continua (CA-DC),
convertidores de corriente alterna a corriente alterna (CA-CA) y convertidores de corriente continua
a corriente continua (DC-DC). Cada tipo de convertidor de potencia tiene sus propias caracterı́sticas
y se utiliza en diferentes aplicaciones, como en la alimentación de motores eléctricos, la regulación
de la energı́a solar y eólica, la carga de baterı́as, entre otras.
Para el propósito de este trabajo, únicamente nos centraremos en convertidores DC-DC. Dentro
de esta tipologı́a de convertidores, existe una clasificación más especı́fica atendiendo a su relación
entre la tensión de salida (Vo ) y la tensión de entrada (Vin ).
4. Existen otros convertidores que ofrecen una salida DC aislada ante una entrada DC no aislada
(Flyback), u otros de mayor potencia (Forward), que no son el objeto de estudio de ete trabajo.
El control de la relación entre la tensión de salida y la tensión de entrada se regula a través del
ciclo de trabajo del convertidor (d), en modo de conducción continua (MCC), es decir, cuando la
corriente en el inductor es, en todo momento, positiva.
El convertidor DC-DC reductor se puede modelar gráficamente mediante el siguiente circuito
eléctrico equivalente (figura 1.1):
Este circuito presenta dos posibles estados, el primero (ON) en el que el transistor se encuentra
en conducción y el diodo no, puesto que trabajan de forma complementaria; y el segundo (OFF)
en el que la situación es la contraria. La señal de control q(t) será la que alterna entre estos dos
posibles estados, y que es una señal modulada en ancho de pulso, que alterna entre un nivel alto y
un nivel bajo y definido, esencialmente, por su ciclo de trabajo. Es decir, una señal PWM.
7
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
Figura 1.2: Circuito eléctrico del convertidor DC-DC reductor en estado ON.
En esta configuración, las variables de estado del sistema, definidas como la corriente que circula
por el inductor (iL ) y la tensión almacenada en el condensador (vC ) se pueden expresar según las
ecuaciones 1 y 2.
diL 1 1
= Vin − vC (1)
dt L L
dvC 1 1
= iL − vC (2)
dt C RC
Para el estado OFF:
Figura 1.3: Circuito eléctrico del convertidor DC-DC reductor en estado OFF.
Las variables de estado en este segundo caso vendrán dadaas por las ecuaciones 3 y 4.
diL 1
= − vC (3)
dt L
dvC 1 1
= iL − vC (4)
dt C RC
Siendo la entrada al sistema la tensión de entrada al convertidor (Vin , y considerando esta señal
como continua pero pudiendo variar a trozos en distintos niveles escalonados de tensión. Para este
caso se considera siempre constante).
8
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
se denotará como perı́odo de muestreo (Ts ). Cuanto más pequeño sea este tiempo, más fiel será la
respuesta a la de tiempo continuo, y más precisa será, por tanto, la simulación del sistema dinámico
conmutado del convertidor DC-DC reductor.
Se pueden expresar las ecuaciones anteriores según sus ecuaciones en diferencias de la forma:
1. Para el estado ON:
Ts Ts
iL [n] = iL [n − 1] + Vin [n − 1] − vC [n − 1] (5)
L L
Ts Ts
vC [n] = vC [n − 1] + iL [n − 1] − vC [n − 1] (6)
C RC
2. Para el estado OFF:
Ts
iL [n] = iL [n − 1] − vC [n − 1] (7)
L
Ts Ts
vC [n] = vC [n − 1] + iL [n − 1] − vC [n − 1] (8)
C RC
Será en base al valor de la señal de control PWM (que será generada de manera interna en el
microcontrolador) que se decidirá si el convertidor se encuentra en un estado ON o un estado
OFF, y se aplicarán un conjunto de ecuaciones u otro (ecuaciones 5 y 6, o ecuaciones 7 y 8,
respectivamente).
Se han programado estas ecuaciones tratando de optimizar el cómputo sustituyendo operaciones
de división por operaciones de multiplicación por el número inverso. Es por esto que se emplean las
variables de inductancia, capacidad y resistencia del convertidor como inversas, y como argumentos
de la función IQmpy() que nos permite multiplicar dos variables representadas en coma fija.
Además, puesto que basta con almacenar el valor de la variable de estado en una muestra
anterior, se emplean las variables vC1 e iL1 como la tensión y corriente en el instante anterior,
respectivamente; mientras que vC2 e iL2 almacenan el valor de ambas variables de estado en el
instante actual.
9
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
Figura 1.5: Circuito eléctrico del convertidor DC-DC elevador en estado ON.
En esta configuración, las variables de estado del sistema, definidas como la corriente que circula
por el inductor (iL ) y la tensión almacenada en el condensador (vC ) se pueden expresar según las
ecuaciones 9 y 10.
diL 1
= Vin (9)
dt L
dvC 1
=− vC (10)
dt RC
Para el estado OFF:
Figura 1.6: Circuito eléctrico del convertidor DC-DC elevador en estado OFF.
Las variables de estado en este segundo caso vendrán dadaas por las ecuaciones 11 y 12.
diL 1 1
= Vin − vC (11)
dt L L
dvC 1 1
= iL − vC (12)
dt C RC
Para implementar el modelo conmutado en tiempo continuo del convertidor elevador en un
sistema digital únicamente habrá que discretizar las variables continuas en el tiempo y tomarlas
como muestras en instantes discretos, y, por otra parte, discretizar los operadores diferenciales
como incrementos producidos entre dos muestras consecutivas, distantes entre sı́ en un tiempo que
se denotará como perı́odo de muestreo (Ts ), de manera análoga al caso expuesto anteriormente.
Se pueden expresar las ecuaciones anteriores según sus ecuaciones en diferencias de la forma:
10
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
Figura 1.8: Circuito eléctrico del convertidor DC-DC reductor-elevador en estado ON.
En esta configuración, las variables de estado del sistema, definidas como la corriente que circula
por el inductor (iL ) y la tensión almacenada en el condensador (vC ) se pueden expresar según las
ecuaciones 17 y 18.
diL 1
= Vin (17)
dt L
11
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
dvC 1
=− vC (18)
dt RC
Para el estado OFF:
Figura 1.9: Circuito eléctrico del convertidor DC-DC reductor-elevador en estado OFF.
Las variables de estado en este segundo caso vendrán dadaas por las ecuaciones 19 y 20.
diL 1
= − vC (19)
dt L
dvC 1 1
= iL − vC (20)
dt C RC
De forma análoga a los dos casos expuestos anteriormente, se pueden expresar las ecuaciones
anteriores según sus ecuaciones en diferencias de la forma:
1. Para el estado ON:
Ts
iL [n] = iL [n − 1] + Vin [n − 1] (21)
L
Ts
vC [n] = vC [n − 1] − vC [n − 1] (22)
RC
2. Para el estado OFF:
Ts
iL [n] = iL [n − 1] − vC [n − 1] (23)
L
Ts Ts
vC [n] = vC [n − 1] + iL [n − 1] − vC [n − 1] (24)
C RC
12
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
1. Definir la función de transferencia en lazo abierto del sistema que se pretende controlar,
incluyendo elementos sensores necesarios para adaptar las escalas de las señales en el lazo. Se
denota como función de transferencia de control a salida, Gvd , puesto que relaciona la salida
en tensión (la magnitud que se pretende controlar) respecto de la acción de control, o ciclo
de trabajo del convertidor.
2. Expresar la ganancia del lazo, incluyendo el controlador, denotada como T , y que presenta la
siguiente expresión:
1
T (s) = Gc (s) Gvd (s)H(s)
KP W M
El objetivo de definir la ganancia del lazo (abierto) se justifica posteriormente, puesto que el
objetivo del diseño del regulador es asegurar un margen de fase (establecido por el diseñador)
localizado en una frecuenca de corte (también escogida por el diseñador). Ésto se puede
observar gráficamente mediante el diagrama de Bode de la función de transferencia en lazo
cerrado, incluyendo el controlador, y compuesta como
para asegurar el cruce de la ganancia del sistema en lazo abierto en la frecuencia de corte
establecida. Las frecuencias fz y fp son las del cero y el polo, respectivamente, y se calculan
como: s
1 − sin(M F )
fz = fc ·
1 + sin(M F )
s
1 + sin(M F )
fp = fc ·
1 − sin(M F )
13
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
6. Finalmente, se puede incluir una red de atraso de fase con el objetivo de atenuar las bajas
frecuencias (pudiendo llegar a ser imprescindible en aplicaciones en las que se pueden presentar
armónicos de la tensión de alimentación del convertidor (múltiplos de 50 Hz) y que pueden
alterar la calidad armónica del sistema, o resultar en ineficiencias. Para ello se compone una
red de atraso de fase que atenua aquellas frecuencias inferiores a una década por debajo de
la frecuencia de corte, esto es
1
fL = fc
10
y se añade a la función de transferencia del regulador de adelanto y atraso de fase con un
cero invertido a baja frecuencia como:
s ωL
(1 + ωz ) · (1 + s )
Gc (s) = Gcm · s
(1 + ωp )
Para este ejemplo, se propone un convertidor reductor definido según los siguientes parámetros:
R 3Ω
L 50 µH
C 500 µF
Vin 28 V
fP W M 100 kHz
Figura 1.10: Esquema del control feedback para la tensión del convertidor.
En la figura 3.13a se muestra el esquema del control en lazo cerrado de la tensión de salida
del convertidor reductor. Se dispone de una tensión de referencia de magnitud constante e igual
14
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
a vref = 5V , y se pretende alimentar una carga de 5A, es por esto que se define la ganancia del
sensor de tensión como
vref 1
H(s) = = ,
vo 3
y el ciclo de trabajo requerido viene dado por la solución en estado estacionario del convertidor
vo
d= = 0,536.
vin
La acción de control, en estado estacionario, viene dada por la expresión:
u = d · KP W M
donde KP W M representa la ganancia del modulador PWM, que se escoge como 14 , por lo que
u = 2,14V
donde
1
fo =√ = 1kHz
2π LC
r
C
Qo = R = 9,5 −→ 19,5dB
L
Gd0 = 28V
La ganancia del lazo se define según la expresión
1
T (s) = Gc (s) Gvd (s)H(s)
KP W M
donde Gc (s) representa la función de transferencia del regulador que se pretende diseñar, y se puede
expresar en forma normalizada [2] como:
1
T (s) = T0 · s
1+ Q o ωo + ( ωso )2
donde
Hvo
T0 = = 2,33 −→ 7,4dB
dKP W M
1
Se diseñará un regulador en una frecuencia de corte fc = 20 fP W M = 5kHz, y la función de
transferencia en lazo cerrado cuenta con una ganancia en la frecuencia de corte de
fo 2
Tu ( ) = 0,093 −→ −20,6dB,
fc
15
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
por lo que se debe aumentar la ganancia de la función de transferencia para que cruce en 0 dB a
la frecuencia de corte escogida. Se corrige mediante una ganancia de +20,6 dB. Además, la fase en
la frecuencia de corte es, aproximadamente, -180º, lo que implica un margen de fase prácticamente
nulo. Es por esto que se precisa de una red de adelanto de fase (análoga al controlador proporcional-
derivativo, PD).
Se escoge un margen de fase (MF) de 52º (arbitrariamente, pudiendo adoptar cualquier otro
valor, siendo más estable cuanto mayor sea). La red de adelanto de fase está compuesta por un polo
y un cero situados a frecuencias definidas en función del MF escogido. Su función de transferencia
viene dada por la expresión:
1 + ωsz
Gc (s) = Gc0 ·
1 + ωsp
donde s
1 − sin(M F )
fz = fc · = 1,7kHz
1 + sin(M F )
s
1 + sin(M F )
fp = fc · = 14,5kHz
1 − sin(M F )
s
fc 2 1 fz
Gc0 =( ) = 3,7 −→ 11,3dB
fo Tu0 fp
Se puede comprobar que, una vez incorporada la red de adelanto de fase, se corrige el margen de
fase al previamente definido en la frecuencia de corte de 5 kHz (figura 1.11).
Figura 1.11: Diagrama de bode del sistema en lazo cerrado con la red de adelanto de fase.
Para el diseño del controlador de atraso de fase se determinan la frecuencia del cero invertido que
lo compone, puesto que la red de adelanto de fase ya ha introducido un cero y un polo, aumentando
el orden del sistema.
La función de transferencia del regulador, integrando la red de adelanto y atraso de fase, tiene
la forma descrita en el punto 6. La frecuencia fL se escoge como aquella frecuencia por debajo de
16
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 1. Introducción.
u[n] = 1,261 u[n − 1] − 0,2609 u[n − 2] + 1,646 e[n] − 3,108 e[n − 1] + 1,466 e[n − 2]
siendo u[n] el ciclo de trabajo d en cada muestra y e[n − N ] el error del lazo de control en la
muestra N-ésima. Realizado en el Programa para el cálculo del compensador en frecuencia.
MATLAB. En los Anexos del trabajo.
En cuanto a la implementación en el sistema digital, se reservará CPU1 para emular el com-
portamiento de la planta, mientras que CPU2 estará dedicada al control digital de la tensión.
17
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
19
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
generaciones (ası́ indicadas por el fabricante [6]) distintas de los periféricos que componen el hard-
ware del microcontrolador puede llegar a hacerlos incompatibles entre sı́.
Se sitúa dentro de la familia C2000 de TI tal y como se muestra en la figura 2.2, enmarcado
en la generación 3 de periféricos, y con una capacidad operativa muy destacable por su potencia y
prestaciones.
Entre los tres microcontroladores alineados dentro de la generación 3, se puede realizar un análi-
sis comparativo en función de las prestaciones de estos 3, y ası́ poder valorar al microcontrolador
con el que se plantea este trabajo de una forma más rigurosa (figura 2.3).
Se puede comprobar que el microcontrolador F2837xD (designación genérica para el microcon-
trolador con el que se abordará este trabajo) supera con creces las prestaciones de los otros dos;
tanto en memoria flash y RAM, como en la velocidad del reloj de la CPU (en este caso Dual-Core),
como en la existencia de algunos periféricos esenciales para la realización del trabajo (DAC, con-
vertidor digital-analógico), ası́ como, fundamentalmente, en la existencia de dos CPUs operativas
y con capacidad de comunicación entre sı́.
El microcontrolador incluye múltiples periféricos. No se hará uso de todos ellos para aborar el
caso de estudio que se propone, sin embargo, cabe destacar la amplia capacidad de la que dotan a
este sistema.
20
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
2. Separación de tareas: Al tener múltiples CPUs, se pueden separar las tareas crı́ticas en dife-
rentes CPUs para mejorar la eficiencia y fiabilidad del sistema.
3. Flexibilidad y escalabilidad: Una arquitectura de múltiples CPUs proporciona una gran flexi-
bilidad en la programación del sistema, lo que permite la implementación de diversas funciones
y caracterı́sticas en el sistema.
4. Reducción de latencia: Al tener múltiples CPUs, se pueden reducir las latencias asociadas
con la comunicación y el procesamiento de datos. Esto es especialmente útil en aplicaciones
de control en tiempo real que requieren respuestas rápidas y precisas (ı́ntimamente ligado al
punto 1).
5. Reducción de la carga de trabajo: Al distribuir las tareas en diferentes CPUs, se puede re-
ducir la carga de trabajo de cada CPU individual, lo que puede mejorar la vida útil del
microcontrolador y aumentar la fiabilidad del sistema.
21
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Pese a contar con una arquitectura similar a otros microcontroladores de la familia C2000, a con-
tinuación se describe cómo está compuesto.
Otras caracterı́sticas destacables de este microcontrolador son, entre otras, que incorpora en la
ALU (unidad aritmética lógica) un módulo que permite trabajar en coma flotante (módulo FPU,
Floating-Point Unit, en inglés) siendo este dispositivo de coma fija. Además, incorpora métodos de
acceso a la memoria sin necesidad de pasar por la CPU, es decir, aliviando la carga sobre ésta (a
través del DMA, Direct Memory Access, en inglés).
Finalmente, resulta de especial interés comentar un módulo hardware (por lo que nos ofrece
la posibilidad de incorporarlo en nuestro poryecto y que trabaje de forma paralela a la CPU)
dedicado especı́ficamente a la implementación de leyes de control y demás operaciones destinadas
a ese propósito. Éste módulo es el acelerador de leyes de control (o CLA, Control Law Accelerator,
en inglés), que resulta especialmente útil en aplicaciones en las que el tiempo real es crı́tico.
En la figura 2.4 se puede observar la estructura en forma de diagrama de bloques que detalla el
fabricante que compone el microcontrolador Dual-Core F28379D. En ella se puede apreciar en dos
colores distintos (uno para cada CPU), amarillo para CPU1 (la principal) y en verde para CPU2.
Dentro de los bloques que modelan ambas CPUs se puede observar que cuentan con Watchdog
Timer, o Perro Guardián, que monitoriza el estado de la CPU y detiene la ejecución de los programas
en caso de bloqueo; también cuenta con 3 temporizadores internos en la CPU (Timer 0, 1 y 2), y
el PIE, un módulo dedicado a la gestión de interrupciones.
Entre estos dos bloques se puede observar un bloque denotado como IPC, Interprocessor Com-
munication Module, o módulo de comunicación interprocesador. Es un módulo dedicado a la gestión
de la comunicación entre las dos CPUs, con el fin de facilitar el envı́o y recepción de mensajes entre
las unidades centrales de procesamiento. Más adelante en el trabajo será relevante puesto que se
aprovecharán ambas CPUs del microcontrolador con la potencia que nos brindan, y este módulo
de comunicaciones resultará necesario.
Sobre las CPUs se destina un conjunto de bloques para representar la memoria, flash y RAM,
con la que cuenta cada CPU, y, a su lado, los módulos CLA que operan de forma paralela a la
CPU. El color de los buses nos indica qué módulos están conectados entre sı́, y es especialmente
importante puesto que, sabiendo esto, se puede optimizar el flujo de información y aliviar ası́ a la
CPU de la forma más eficiente; es decir, sabiendo que el bus CPU1.CLA1 (en naranja) conecta al
módulo analógico (ADC y DAC) y el marco de periféricos 1 (que incluye los módulos ePWM1-12,
y módulos de captura eCAP1-3) se podrı́a cubrir la necesidad de hardware de una aplicación en la
que se necesite realizar un muestreo a través del ADC, un conjunto de operaciones matemáticas o
de control sobre su resultado (CLA), y una realimentación a través de una señal generada por el
módulo PWM de forma completamente autónoma a la CPU.
En este caso la CPU1 únicamente deberı́a escuchar interrupciones y atenderlas, y todo el trabajo
estarı́a repartido en los distintos módulos que pueden acceder a la memoria a través del módulo
DMA sin necesidad de que la CPU1 intervenga. Y ésta es precisamente una de las principales
ventajas que nos ofrece un microcontrolador como éste, que cuenta con un abanico amplı́simo
en hardware y que alivian a la CPU y permiten ası́ que ésta solo deba cubrir necesidades de
interrupciones, seguridad y monitoreo de la ejecución del programa main.
Tras representar todos los periféricos (con sus conexiones a buses) se observa, en la parte inferior,
un bloque que recoge todas las entradas/salidas de los periféricos, denotado como GPIO MUX. Esto
se debe a que la placa no cuenta con tantos pines como funciones entre todos los periféricos que
incluye, y, por tanto, se debe asignar a cada pin la función que se desee que realice, ya sea tipo E/S
digital, analógica, tipo salida PWM, entre otras.
22
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Esto implica que en primer lugar, previo a la labor de programación para cubrir la necesidad de
la aplicación que se desee, es necesario realizar una planificación en forma de layout para organizar
las funciones y periféricos que se necesitarán, qué pines habrá que configurar según su función, y,
finalmente, desarrollar el software que lo haga funcionar de la manera deseada. Para localizar qúe
funciones se pueden atribuir según cada uno de los pines de la placa, el fabricante [6] nos ofrece un
layout de ésta (figura 2.5):
23
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
El registro con nombre CpuTimer0Regs es, realmente, el que el fabricante [6] denomina como Device
Register, y cuyo nombre de registro es CP U T IM ER REGS, cuya dirección comienza en la zona
de memoria 0x0000 0C00, hasta la dirección 0x0000 0C07 Bajo este registro, la expresión antes
mencionada nos indica que se encuentra dentro del registro TCR. Este registro, como todos los
demás salvo en ciertas excepciones, contiene 16 bits, y según se escriba en unas posiciones u otras
estaremos modficando la funcionalidad del módulo o periférico que estemos programando, en este
caso, el temporizador interno de la CPU. A continuación (figura 2.6) se muestra la estructura del
registro TCR:
24
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Las cuatro primeras posiciones (0 a 3) son reservadas, ası́ como los bits 6 al 9, 12 y 13. La
quinta posición (bit TSS) tiene permisos de lectura-escritura (RW), asi como todas aquiellas no
reservadas, en este caso. Escribiendo un valor de nivel bajo (0 lógico) en el bit TSS haremos arrancar
la cuenta al temporizador, que funciona incrementando en cada ciclo de reloj del reloj SY SCLK
(a 200 MHz) en uno la cuenta. Es un temporizador de 16 bits, por lo que cuando alcance el valor
de 216 − 1 = 65535 (porque incluye al 0), se desbordará y se reiniciará de forma autónoma. Si se
escribe un nivel alto (1 lógico) en el campo del bit TSS detendremos la cuenta.
En este modelo, cada campo de bits tiene asociada una función especı́fica y que nos permite
modificar de una u otra manera el comportamiento del módulo o periférico que se esté programando.
La forma de programar y configurar los periféricos necesarios para la aplicación que se desee
será a través de instrucciones que presentan esta estrucura, en C, atendiendo a los distintos tipos
de registros para cada uno.
1. Núcleo de procesador DSP de 32 bits: Este microcontrolador cuenta con un potente núcleo
25
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
de procesador de señal digital (DSP) de 32 bits que se puede ejecutar a una frecuencia de
reloj de hasta 200 MHz.
7. Otros periféricos: Este microcontrolador también incluye otros periféricos útiles, como un
módulo de detección de fallos de alimentación, un controlador de interrupción de alta veloci-
dad, un controlador de DMA y un módulo de detección de eventos externos.
Las caracterı́sticas técnicas y la forma de configurar cada uno de los periféricos que se emplearán
en este trabajo se detallarán en el capı́tulo pertinente en el que se introduzcan, junto a la razón de
su necesidad y la solución que ofrecen.
26
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Las interrupciones son útiles en muchos casos, como en sistemas de tiempo real donde es necesa-
rio atender eventos en tiempo real o en sistemas que necesitan monitorear constantemente sensores
o periféricos externos.
El microcontrolador F28379D gestiona las interrupciones a través de un periférico llamado
PIE (Peripheral Interrupt Expansion, en inglés, o Periférico de Expansión de Interrupciones). El
objetivo de este periférico será el de agrupar todas las lı́neas de interrupciones (caminos por los que
se transmiten los eventos de interrupción desde una fuente externa o interna, o desde periféricos)
en 16, de las cuales dos de ellas están reservadas para el RESET del microcontrolador y para una
interrupción no enmascarable o NMI (Non-Maskable Interrupt), respectivamente.
Una NMI es una interrupción que no se puede gestionar (permitir o denegar) mediante el
PIE, es decir, que siempre que se produzca llegará a la CPU y alterará la ejecución de ésta, ası́
como el RESET, y las interrpciones del Timer1 y Timer2 (ambos de la CPU) TINT1 y TINT2,
respectivamente. En la figura 2.7 se puede apreciar en un diagrama la agrupación de interrupciones
en el microcontrolador.
La necesidad de un periférico como el PIE se debe, principalmente, a que hay más eventos
que pueden producir interrupciones (tanto internos como externos) que lı́neas de interrupción que
llegan a la CPU, es por esto que la misión del PIE es agrupar en paquetes de 16 todas las posibles
fuentes de interrupción (192) y concentrarlas en las 12 lı́neas disponibles.
Una vez se produce una interrupción, para permitir (o denegar) que ésta llegue a la CPU y
altere la ejecución normal del programa principal, se configurarán unos registros de seguridad que
permitan este hecho. Se puede apreciar en la figura 2.8.
27
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Cuando un evento de interrupción se produce, para permitir que pueda llegar a la CPU (28x
Core) debe encontrarse con todos los interruptores cerrados, tanto en el PIE, modelados como
PIEIFR (Flag de Interrupción), y PIEIER (Enable de Interrupción), y configurables a partir de los
registros con el mismo nombre, como en la CPU, IFR, IER e INTM. Cuando todos los interruptores
están cerrados es cuando se puede atender una interrupción mediante la ejecución de una rutina de
interrupción alojada en una dirección definida en memoria y que, previamente, debe estar marcada
por un vector de interrupción.
Un vector de interrupción es un elemento predefinido por el fabricante, y que apunta a una
dirección de memoria donde se aloja la rutina de interrupción asociada a un evento de interrupción
de la misma clase. Es por esto que debe haber un vector de interrupción para cada posible evento,
y que debe contar con orden de prioridad en caso de producirse más de uno simultáneamente y
sobre distintas o la misma lı́nea de interrupción. Toda esta información se recoge en la figura 2.9,
donde se muestran clasificados en una tabla ordenada los vectores de interrupción.
28
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
29
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
EP wmxRegs.T BCT L
30
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Si se pretende que la señal PWM generada presente un flanco ascendente cuando el contador
alcance el valor de CMPA, y que presente un flanco descendente en el paso por cero, será necesario
escribir la siguiente instrucción [6]:
EP wm1Regs.T BP RD = TBPRD;
A modo de ejemplo, para generar una señal PWM de frecuencia fP M W = 20kHz y con un ciclo
de trabajo d = 0,5, se calculará el valor de TBPRD en modo de conteo asimétrico (pudiendo ser
simétrico también) como [6]:
fT BCLK
T BP RD = −1
fP W M · n
Siendo n = CLKDIV ·HSP CLKDIV , fT BCLK = 200M Hz y fP W M la frecuencia PWM deseada.
Para calcular el valor de CMPA [6]:
CM P A = (1 − d) · (T BP RD + 1) − 1
31
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Entrada Valor
R 1Ω
L 100 µH
C 100 µF
Vin 1V
fP W M 10 kHz
fs 500 kHz
Cuadro 1: Parámetros del convertidor para realizar la simulación mostrada en la figura 2.12.
Dado que el muestreo sobre la tensión para su control se realiza una vez por cada perı́odo de
la señal PWM (en la parte superior), para que el control de la tensión sea efectivo y anule el error
del sistema, el muestreo debe producirse cuando la tensión alcanza el valor medio. De esta forma el
error en estacionario será nulo al compararse con una referencia de tensión, puesto que el propósito
de establecer una tensión de referencia es que la tensión del convertidor alcance dicha magnitud en
valor medio.
Para sincronizar el muestreo en el instante requerido, se aprovechará la funcionalidad del módulo
ePWM (el cual se detallará en el siguiente capı́tulo) que ofrece la posibilidad de sincronizar el flanco
ascendente de la señal PWM con la generación del evento de interrupción EPWMxSOC.
Se debe configurar el registro correspondiente para lanzar el evento al alcanzar el valor de
comparación en cuenta ascendente (al configurar el modo de conteo como simétrico, o ascendente-
descendente).
En la figura 2.13 [6] se muestra el registro
EP wmxRegs.ET SEL
32
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Para una sincronización del evento acorde a las caracterı́sticas que se han descrito, se deben
escribir las instrucciones:
EP wm1Regs.ET SEL.bit.SOCASEL = 2;
EP wm1Regs.ET SEL.bit.SOCAEN = 1;
EP wmxRegs.ET P S
Se ha configurado para lanzar los eventos de interrupción en cada perı́odo de la señal PWM,
puesto que se desea controlar la tensión de la forma más rápida posible, y se configura mediante la
instrucción:
EP wm1Regs.ET P S.bit.SOCAP RD = 1;
33
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
En la figura 2.15 se puede observar el diagrama de bloques del módulo ADC. Se puede comprobar
cómo, mediante el registro de control del SOC (SCOxCTL, x de 0 a 15) se puede configurar el canal
sobre el que se muestrea (mediante CHSEL) variando desde ADCIN0-15, posteriormente, se puede
definir el tamaño de la ventana de adquisición (mediante ACQPS), y, finalmente y relativo al SOC,
el trigger o evento de disparo del muestreo. Estas tres variables conforman el SOC (conversión
simple), y será el segundo paso a determinar para programar este periférico tras haber configurado
debidamente el periférico mediante el registro ADCCTL, que servirá para indicar el modo de
muestreo que se prefiere. ası́ como para inicializar el periférico debidamente.
Finalmente, en cuanto al caso de estudio que nos ocupa, habrá que configurar el registro de
selección de interrupciones del ADC, para habilitar las interrupciones y lanzar los eventos por la
lı́nea correspondiente, ası́ como para configurarlo en modo de muestreo continuo o discontinuo,
según se requiera.
El registro de control del SOC para cada uno de los cuatro ADCs (ADCa/b/c/d) [6]
AdcaRegs.ADCSOCxCT L
34
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
En nuestro caso, dado que se requiere que el perı́odo de muestreo sea el máximo posible (2µs),
el trigger que indicará al ADC cuándo muestrear la señal PWM que estará conectada a la entrada
analógica ADCINA3 (puesto que el canal ADCINA1 estará configurado como salida del DACa)
será el CpuTimer0, configurado para tal uso. Por tanto, se debe escribir en el campo CHSEL y
TRIGSEL [6]
AdcaRegs.ADCSOC0CT L.bit.CHSEL = 3;
AdcaRegs.ADCSOC0CT L.bit.T RIGSEL = 1;
para que muestree el canal ADCINA3 y con el periodo de muestreo que indique CpuTimer0,
respectivamente.
En cuanto al registro de selección de interrupciones (figura 2.17 [6]), de forma general, si se
desean habilitar las interrupciones por la lı́nea ADCINT1 y permitir el modo de muestreo continuo,
se deberá escribir [6]
35
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
interrupción y retirar el flag de interrupción para permitir que otras futuras interrupciones puedan
ser atendidas. Se realiza mediante la instrucción [6]:
AdcaRegs.ADCIN T F LGCLR.bit.ADCIN T 1 = 1;
Mediante DACREFSEL podremos escoger las referencias de tensión tanto para nivel alto como
bajo, en nuestro caso se escogerá VREFHI y VREFLO, puesto que son compartidas con el ADC
(3V y 0V , respectivamente).
El funcionamiento de éste periférico es el siguiente: el buffer de 12 bits almacena el valor escrito
en el registro DACVALS (con permiso de lectura/escritura, puesto que será aquı́ donde se escribirá
el valor que se desee obtener en la salida DACOUT, acotada entre VREFLO y VREFHI), y, ante
36
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
la señal de disparo, que puede ser o bien SYSCLK o mediante PWM, el valor será escrito en la
salida.
Al ser el buffer uno de 12 bits, deberá escribirse en él un valor acotado entre 0 y 4095, por lo
que habrá que realizar la conversión del valor en tensión que se desee escribir mediante un simple
factor para transcribirlo a entero entre 0 y 4095, y, de forma autónoma, el DAC escribirá la tensión
a la cual se corresponde el entero introducido (en DACVALS) en la salida (DACOUT), que puede
visualizarse en el osciloscopio de forma inmediata.
Para configurar el DAC, se hará mediante el registro DACCTL [6]
DacxRegs.DACCT L
DacaRegs.DACOU T EN.bit.DACOU T EN = 1;
La conversión (idealmente) se realiza, finalmente, según la conversión que nos indica el fabricante
[6]:
DACREF (V )
DACOU T (V ) = DACV ALS(int) ·
4096
siendo DACREF = V REF HI − V REF LO en el caso que se ejemplifica.
37
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
38
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Este tiempo de establecimiento es lento en comparación con otros posibles DACs del mismo
fabricante, que son de alta velocidad y no de alta precisión. Concretamente, el modelo MDAC7811
presenta un tiempo de establecimiento de 0,2 µs, lo que nos permitirı́a una frecuencia de muestreo
de 50 M Hz, próximo a las frecuencias de muestreo alcanzables en un dispositivo basado en FPGA.
La tecnologı́a basada en FPGA permite desarrollar aplicaciones de alta velocidad que supera
en varios órdenes de magnitud aquellas alcanzables con un microcontrolador, y esto se debe a
que no están optimizados para un bajo consumo y especificaciones de alta precisión, como un
microcontrolador de este tipo.
39
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
instrucción [6]:
P ieCtrlRegs.P IEIER1.bit.IN T x1 = 1;
y, posteriormente, habilitar el IER (escribiendo un 1 lógico en la primera posición de todas ellas con
las que cuenta (una para cada lı́nea de interrupción enmascarable) a través de la palabra reservada
M INT1 y el EINT (interruptor global, en la CPU) [6]:
IER = M IN T 1;
EIN T ;
Además, se requerirá la declaración de la rutina de servicio a la interrupción previo al código main
de la CPU1, y, posteriormente, apuntar el vector de la interrupción ADCA1 INT a la dirección en
memoria donde se encuentra la ISR [6].
40
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Como se puede comprobar, la CPU1 integra el ADCa (cuyo muestreo se dispara por el desbor-
damiento de CpuTimer0), y los DAC para sintetizar las variables de estado; mientras que la CPU2
integra el ADCb (para muestrear la tensión con el fin de establecer el control sobre ella) que está
sincronizado con el módulo ePWM, como se ha comentado anteriormente.
El fabricante indica que para programar sobre la CPU2, habrá que asignar previamente los
recursos que se emplean para su funcionamiento, y debe ser a través de un conjunto de instrucciones
recogidas en el programa main de CPU1.
Es por esto que el programa cargado en la memoria flash de la CPU1 debe ejecutarse previo al
de la CPU2. Si se realiza en orden inverso, la CPU2 cumplirá la función para la que está provista
puesto que no podrá acceder a configurar los periféricos que requiere (ya que no han sido asignados
previamente).
Para asignar los periféricos ePWM1 y ADCb se incluyen las siguientes instrucciones en el código
principal de la CPU1:
EALLOW ;
DevCf gRegs.CP U SEL0.bit.EP W M 1 = 1;
DevCf gRegs.CP U SEL11.bit.ADC B = 1;
EDIS;
El registro CP U SEL0 nos permite asignar los módulos PWM entre las distintas CPUs (si se escribe
el valor 1 se traspasa a la CPU2, mientras que posee el valor 0 por defecto, para CPU1). El registro
CP U SEL11 realiza la misma función pero para los ADC.
2. Sistema de compilación: CCS incluye un sistema de compilación que permite a los desarro-
lladores compilar su código y generar binarios ejecutables para el dispositivo objetivo.
41
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
CCS es especialmente utilizado por desarrolladores que trabajan con productos y dispositivos de
Texas Instruments, ya que está diseñado especı́ficamente para su ecosistema de microcontroladores
y procesadores. Sin embargo, también se puede utilizar en proyectos que no están basados en los
dispositivos de TI, ya que ofrece caracterı́sticas generales de desarrollo y depuración de software.
Para el desarrollo del software que aborda los objetivos del trabajo previamente planteados se
ha hecho uso de la versión CCS v10.4.0., escrito en C con el modelo de programación previamente
descrito.
Para poder compilar un proyecto establecido en dos CPUs, CCS nos ofrece herramientas para
llevarlo a cabo de una forma sencilla y que, al mismo tiempo, nos permite la depuración de ambos
programas (uno para cada CPU) paralelamente. Esto se hace necesario para la segunda parte del
trabajo, en la que se pretende implementar el modelo del convertidor DC-DC reductor en una CPU,
mientras que se implementa el controlador digital en una segunda CPU, CCS ofrece un soporte
para compilar y cargar en su memoria flash correspondiente cada programa.
En la figura 2.23 se muestra una imagen del entorno de programación en CCS.
42
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
(puesto que todas las operaciones matemáticas se realizarán en coma fija, es decir, con IQMATH).
Finalmente, creamos el proyecto vacı́o (con main.c) y completamos este primer proceso, y podremos
acceder al árbol del proyecto (figura 2.24).
En el siguiente paso se persigue incluir todos los archivos que nos facilitan las funciones para pro-
gramar los periféricos de los que haremos uso (los anteriormente descritos). Esto se realiza copiando
los archivos (ubicados en la dirección C:\ti\c2000\C2000Ware 3 04 00 00\device support\f2837xd
\common\source, para los periféricos, y en la dirección C:\ti\c2000\C2000Ware\libraries\math
\IQmath\c28\include para el fichero de cabecera IQMathLib.h, y el fichero IQmath fpu32 coff.lib,
en la carpeta de librerı́as con la dirección C:\ti\c2000\C2000Ware\libraries\math\IQmath\c28\lib.
al árbol del proyecto, ası́ como incluyendo en las propiedades del proyecto la ubicación donde se
encuentran figura 2.25.
Figura 2.25: Propiedades del proyecto. Dirección de ficheros fuente y cabecera en Include options.
Por último, se deben incluir un conjunto de sı́mbolos predefinidos en las propiedades del proyecto
para la correcta compilación del proyecto. Se recogen en la figura 2.26.
43
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Cabe destacar que todas las operaciones matemáticas se han implementado en coma fija, con
las funciones de la librerı́a IQMath, en lugar de coma flotante, para la cual existe un módulo
incorporado (FPU) en el microcontrolador.
Precisión constante: la precisión decimal es constante para todos los números representados.
Esto significa que la precisión es uniforme en todo el rango de valores representables. En
contraste, en los números de coma flotante, la precisión varı́a dependiendo del tamaño del
número, lo que puede llevar a errores de redondeo y pérdida de precisión en operaciones
aritméticas.
Eficiencia en almacenamiento y cálculos: Los números de coma fija suelen requerir menos es-
pacio de almacenamiento en comparación con los números de coma flotante, ya que no es nece-
sario almacenar información adicional como exponentes. Además, las operaciones aritméticas
en coma fija pueden ser más rápidas y eficientes debido a su representación más simple.
Operaciones aritméticas determinı́sticas: En los números de coma fija, las operaciones aritméti-
cas siempre producirán el mismo resultado para los mismos operandos. Esto facilita la repro-
ducibilidad y la previsibilidad en los cálculos, lo cual es importante en aplicaciones donde se
requiere exactitud y consistencia en los resultados.
44
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 2. Materiales y métodos.
Para concluir con una recomendación del fabricante, ante la necesidad de tomar una decisión como
parte del proceso de diseño en nuestro proyecto entre dos opciones: cómputo en coma fija o cómputo
en coma flotante, el fabricante recomienda que, en aquellas aplicaciones en las que se precisa de
una mayor versatilidad, y con la ventaja de una mayor sencillez en su uso, se recomienda emplear
coma flotante; mientras que en casos en los que la versatilidad no sea determinante y a costa de una
mayor complejidad pero resultando en una mayor precisión y velocidad, se recomienda computar
en coma fija [4].
45
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
3. Capı́tulo 3. Resultados.
3.1. Preámbulo.
En este capı́tulo se comentarán los resultados obtenidos tras realizar diversas simulaciones sobre
el sistema objeto de estudio (previamente descrito), realizadas tanto en el microcontrolador como en
software comercial para su validación. Se describirán los parámetros empleados para la realización de
cada una de las simulaciones presentadas, ası́ como un análisis de aquello más reseñable. Finalmente,
se dedica un apartado para el análisis temporal en la ejecución del programa con el fin de extraer
conclusiones que contribuyan a una mejor comprensión del trabajo realizado, ası́ como un conjunto
de medidas de mejora sobre el trabajo existente que están acotadas por las limitaciones fı́sicas
impuestas por el microcontrolador empleado.
El programa del cual se muestran más adelante las emulaciones realizadas en el microncon-
trolador se encuentra en los Anexos del trabajo. Programa para la emulación del conver-
tidor DC-DC reductor, ası́ como de su control en tensión, en el microcontrolador
TMS320F28379D.
A continuación, se muestran los diagramas de flujo correspondientes a los programas realizados
para la emulación del convertidor reductor en el microcontrolador indicado. En la figura 3.1 se
muestra el diagrama de flujo general del programa realizado para la emulación de la planta en la
CPU1.
Para la emulación de la planta del convertidor reductor se deben inicializar todos los periféricos
necesarios para llevar a cabo este propósito (ADCa, CpuTimer0, DACa y DACb), ası́ como confi-
gurar las interrupciones para permitir a la CPU atender las rutinas de interrupción. El programa
47
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
quedará en un bucle infinito a la espera de rutinas de interrupción que atender (provinientes del
ADC).
En la figura 3.2 se puede comprobar el diagrama de flujo para la rutina de interrupción que
debe atender la CPU1 tras producirse el muestreo de la señal PWM (proviniente de la CPU2).
Como se puede comprobar, presenta un funcionamiento genérico y válido para emular cualquier
otro tipo de convertidor, ya sea el convertidor elevador, o reductor-elevador. Únicamente serı́a
necesario sustituir las ecuaciones de evolución de estados discretizadas por aquellas pertenecientes
al convertidor que se desee emular en el microcontrolador.
Para el programa realizado en CPU2, cuya función es la de generar una señal PWM que es
muestreada por la CPU1 para sintetizar las variables de estado, ası́ como la de implementar el
lazo de control de tensión, sincronizando los periféricos que se le asignan por la CPU1 (ADCb y
ePWM1) y que sirven para muestrear la tensión del convertidor (generada por CPU1) y que se
pretende controlar, y actualizar el ciclo de trabajo para sintetizar la señal PWM que muestrea
CPU1, respectivamente.
Los flujogramas se pueden observar en las figuras 3.3 y 3.4.
48
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Con el fin de evitar que el algoritmo de control genere un ciclo de trabajo superior a la unidad,
o negativo, tras haber sido calculado se comprueba si verifica alguna de estas dos condiciones; y, en
caso de ser ası́, se acota entre un rango de valores adecuado para ser implementado en el siguiente
perı́odo PWM.
49
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Figura 3.5: Esquema de conexiones para la emulación y control de tensión del convertidor
reductor en F28379D.
Entrada Valor
R 1Ω
L 200 µH
C 100 µF
Vin 12 V
d 50 %
fP W M 10 kHz
fs 500 kHz
50
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Figura 3.6: Modelo empleado para la emulación (F28379D) y simulación en software comercial del
convertidor reductor.
Figura 3.7: Simulación en lazo abierto. Variables de estado del convertidor. TMS320F28379D.
Visualmente se puede comprobar que la corriente presenta un rizado aproximado de 120 mA,
que coincide con lo esperado teóricamente, a través de la ecuación:
Vin − Vo 1 − 0,5 1
∆I = dTP W M = −6
0,5 · 4 = 125 mA
L 200 · 10 10
Respecto de la tensión en el condensador, se espera un rizado en tensión dado por la ecuación:
∆I · TP W M 0,125 1014
∆V = = = 15,625 mV
8C 8 · 100 · 10−6
y se observa que presenta un rizado aproximado de 18 mV .
Se ha realizado una simulación (Programa para la simulación en lazo abierto del conver-
tidor DC-DC reductor. MATLAB. En los Anexos del trabajo.) bajo las mismas condiciones
y se ha obtenido, en la figura 3.8a la tensión del condensador, y en la figura 3.8b la corriente en el
inductor, con la finalidad de validar el modelo implementado en el microcontrolador. Se ha obtenido
un rizado en tensión de 15,818 mV y en corriente de 126,316 mA.
51
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Figura 3.8: Simulación en lazo abierto. Variables de estado del convertidor. MATLAB.
52
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
53
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Figura 3.11: Respuesta ante perturbación sobre la tensión de alimentación en lazo abierto.
Al igual que en el anterior experimento, se ha realizado una simulación en LTSpice bajo los
mismos parámetros y se ha obtenido el siguiente resultado (figura 3.12):
Figura 3.12: Respuesta ante perturbación sobre la tensión de alimentación en lazo abierto.
Simulación en LTSpice.
Se puede comprobar que alcanza el valor final (correspondiente a un valor medio de tensión apro-
ximado de 150 mV para un ciclo de trabajo del 50 %) en 2 ms aproximadamente y sin sobreimpulso
máximo.
Este resultado se corresponde con la respuesta esperada según el modelo promediado del con-
vertidor, que presenta la siguiente función de transferencia en tiempo continuo:
Vin
LC 5 · 107
G(s) = Vin
=
s2 + 1
RC s + LC
s2 + 10000s + 5 · 107
Expresada según su forma canónica como sistema de segundo orden, se puede identificar su fre-
cuencia natural: √
ωn = 5 · 107 = 7,071 · 103 rad/s
54
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
σ1 = −2052,66 ; σ2 = −77947,33
Entrada Valor
R 1Ω
L 200 µH
C 100 µF
Vin 12 V
fP W M 10 kHz
fs 500 kHz
En la figura 3.13a se puede comprobar la respuesta del controlador ante una variación en la
tensión de consigna, cambiando de 500 mV a 300 mV . La acción del controlador introduce un
máximo sobrepico estimado de 60 mV , y se establece en un tiempo total de 1 ms.
En la figura 3.13b se observa la respuesta del mismo controlador, bajo los mismos parámetros
del convertidor (en modelo promediado), pero simulado en MATLAB, con el fin de validar el resul-
tado obtenido en el microcontrolador. Se puede comprobar que la respuesta presenta un máximo
sobrepico y un tiempo de establecimiento similar.
Se ha obtenido mediante el Programa para la simulación en lazo cerrado del convertidor
DC-DC reductor. MATLAB. En los Anexos del trabajo.
55
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
1
El controlador propuesto se ha diseñado para una frecuencia de corte fc = 20 fP W M = 1 kHz.
Presenta la siguiente función de transferencia para un margen de fase de 52º:
s ωL s 628,32
(1 + ωz ) · (1 + s )
(1 + 2163,5 ) · (1 + s )
Gc (s) = Gcm · s = 0,2719 · s
(1 + ωp ) (1 + 18248 )
d[n] = 1,373 d[n − 1] − 0,3734 d[n − 2] + 1,686 e[n] − 3,147 e[n − 1] + 1,466 e[n − 2]
56
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Se puede comprobar cómo, a partir de ese valor inicial, el control regula el ciclo de trabajo para
que la tensión de salida siga al valor de consigna pese a la variación sobre la alimentación. Siendo
el valor de éste igual a Vo /Vin = 0,25/1,7 = 0,147.
57
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
58
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Se denomina ’P1’ al grupo de instrucciones dedicadas a calcular las variables de estado, ası́ como
cualquier función semejante (cambios de escala, conversión a otros tipos de dato, etc.). Se denomina
’P2’ al conjunto de instrucciones dedicadas a cargar las variables en el conversor digital-analógico,
y se denomina ’P3’ al conjunto de instrucciones que restan, y que tienen como función borrar los
flags de interrupción y como comprobar overflow en el ADC, para ası́ permitir que la rutina de
interrupción pueda volver a ejecutarse.
En la figura 3.16 se muestra el cronograma generado a través de los flancos de un GPIO de
salida para poder comprobar la duración de éstos procesos. La señal superior mide el tiempo total
de la rutina de interrupción, mientras que la inferior, el tiempo dedicado en cada uno de los procesos
descritos.
59
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Se puede comprobar que la rutina de interrupción suma un total de 1.25 µs, compuesto por los
0.5 µs del proceso P1, otros 0.5 µs del proceso P2, y el restante para el proceso P3.
Únicamente se puede optimizar el proceso P1, dedicado a todo lo relacionado con el cálculo de
las variables de estado de la planta, puesto que los procesos de carga en el DAC y los relativos
a la comprobación del overflow en la rutina de interrupción son irreducibles al ser instrucciones
elementales proporcionadas por el fabricante.
La rutina de interrupción se inicia cada 2 µs (igual al perı́odo de muestreo), por lo que única-
mente contamos con 0.75 µs de margen hasta que vuelve a repetirse. Esto indica que, en caso de
contar con un conversor DAC más lento o de realizar más cálculos en la rutina de interrupción (o
de una forma más ineficiente), se podrı́a llegar a sobrepasar el perı́odo de muestreo, y resultarı́a en
no poder emular correctamente la planta.
Además, tal y como se han realizado las operaciones de cálculo en la rutina de interrupción,
si se quisiera reducir el perı́odo de muestreo a 1 µs, es decir, fs = 1 M Hz, no solo se agotarı́a el
margen temporal sino que también llevarı́a a una emulación incorrecta, puesto que se realizarı́a una
muestreo más rápido que la ejeución de la rutina.
Es por esto que conviene optimizar los recursos y las instrucciones al máximo, y que el factor
limitante sea, en el mejor de los casos, el conversor digital-analógico.
A continuación, se muestra en el cuadro 5 a modo de resumen con un desglose de los procesos
previamente indicados.
60
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Reducir cálculos innecesarios: para una simulación en lazo cerrado en la que se pretende
controlar la tensión, calcular el valor de la corriente no aporta valor y consume tiempo. Se
propone eliminar el cálculo de esta variable junto con todos los procesos que le siguen (cambios
de escala y escritura en DACb).
Tras implementar las medidas anteriores se puede observar el siguiente cronograma en el osciloscopio
(figura 3.17).
61
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Capı́tulo 3. Resultados.
Se observa una reducción en el tiempo dedicado a cálculo (proceso P1) de 0.2 µs, traduciéndose
en una mejora del 40 %. También en el proceso de escritura en el DAC (ahora solo DACa), con una
mejora del 50 %. Globalmente, el tiempo total de la rutina de interrupción se ha reducido en 0.5
µs, es decir, en un 40 % aproximadamente.
62
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Conclusiones.
4. Conclusiones.
El objetivo principal del trabajo era el de llevar a cabo un trabajo consistente en la emula-
ción y el control de un convertidor DC-DC en un sistema embedido, como es el microcontrolador
TMS320F28379D. Tras realizar el trabajo, se han logrado los objetivos planteados al inicio de éste:
constituir un soporte en software para la emulación y el control de un convertidor reductor, ex-
tensible para la emulación cualquier otro tipo de convertidor de manera sencilla; ası́ como haber
explorado las limitaciones fı́sicas para la emulación en un microcontrolador de estas caracterı́sticas.
En el primer capı́tulo se ha presentado la teorı́a necesaria para modelar el sistema objeto de
estudio (junto con los otros convertidores básicos) ası́ como su implementación en un sistema digital
y el control digital en tensión para este tipo en concreto.
El segundo capı́tulo se ha reservado para describir todos los aspectos relativos a caracterı́sticas
y prestaciones con las que se cuenta para abordar el objetivo propuesto. Conformando éstos las
limitaciones fı́sicas para realizar la emulación en este dispositivo en particular.
Finalmente, se han expuesto los resultados de las diversas emulaciones realizadas en el tercer
capı́tulo tras una descripción de los programas realizados para llevarlos a cabo. Ası́ como un apar-
tado dedicado a un análisis de éstos e ı́ntimamente ligado a las restricciones temporales de nuestro
sistema.
63
Emulación de convertidores conmutados DC-DC sobre un microcontrolador de la familia C2000.
Conclusiones.
64
Referencias
[1] Hao Bai, Chen Liu, Dusan Majstorovic, and Fei Gao. Real-Time Simulation Technology for
Modern Power Electronics. Elsevier, 2023.
[2] Daniel S Castro, Rafael FQ Magossi, Renan F Bastos, Vilma A Oliveira, and Ricardo Q
Machado. Low-cost hardware in the loop implementation of a boost converter. In 2019 18th
European Control Conference (ECC), pages 423–428. IEEE, 2019.
[3] Robert W Erickson and Dragan Maksimovic. Fundamentals of power electronics. Springer
Science & Business Media, 2007.
[4] Gene Frantz and Ray Simar. Comparing fixed-and floating-point dsps. Texas Instruments,
Dallas, TX, USA, 2004.
[7] Botond Sandor Kirei, Calin-Adrian Farcas, Cosmin Chira, Ionut-Alin Ilie, and Marius Neag.
Hardware emulation of step-down converter power stages for digital control design. Electronics,
12(6):1328, 2023.
[8] V Chetan Raju and Olive Ray. Development of dc-dc power electronics converter emulation
kit for educational use. In 2021 National Power Electronics Conference (NPEC), pages 01–06.
IEEE, 2021.
[9] Paulo Bertoldi Renaux, Robson Ribeiro Linhares, and Douglas Paulo Bertrand Renaux.
Hardware-in-the-loop simulation low-cost platform. In 2017 VII Brazilian Symposium on Com-
puting Systems Engineering (SBESC), pages 173–180. IEEE, 2017.
[10] Arthur HR Rosa, Matheus BE Silva, Marcos FC Campos, Renato AS Santana, Welbert A
Rodrigues, Lenin MF Morais, and Seleme I Seleme Jr. Shil and dhil simulations of nonlinear
control methods applied for power converters using embedded systems. Electronics, 7(10):241,
2018.
[11] Mattia Rossi, Nicola Toscani, Marco Mauri, and Francesco Castelli Dezza. Introduction
to Microcontroller Programming for Power Electronics Control Applications: Coding with
MATLAB® and Simulink®. CRC Press, 2021.
[12] Marina Yushkova, Alberto Sanchez, and Angel de Castro. Oversampling techniques to im-
prove the accuracy of hardware-in-the-loop switching models. IEEE Transactions on Power
Electronics, 2023.
65
Anexos
Programa para la simulación en lazo abierto del convertidor DC-DC reductor.
MATLAB.
clc ;
clear all ;
close all ;
format long
for i = 1: length ( t )
if q ( i ) < 0
q ( i ) = 0;
end
end
67
% Vin = horzcat ( Vin1 , Vin2 , Vin3 ) ;
for n = 1: length ( t )
e ( n ) = 0;
u ( n ) = 0;
if n == 1
if q ( n ) == 1
iL ( n ) = iL_1 + ( Ts / L ) * Vin ( n ) - ( Ts / L ) * vC_1 ;
vC ( n ) = vC_1 + ( Ts / C ) * iL_1 - ( Ts /( R * C ) ) * vC_1 ;
else
iL ( n ) = iL_1 - ( Ts / L ) * vC_1 ;
vC ( n ) = vC_1 + ( Ts / C ) * iL_1 - ( Ts /( R * C ) ) * vC_1 ;
end
else
if q ( n ) == 1
iL ( n ) = iL (n -1) + ( Ts / L ) * Vin ( n ) - ( Ts / L ) * vC (n -1) ;
vC ( n ) = vC (n -1) + ( Ts / C ) * iL (n -1) - ( Ts /( R * C ) ) * vC (n -1) ;
else
iL ( n ) = iL (n -1) - ( Ts / L ) * vC (n -1) ;
vC ( n ) = vC (n -1) + ( Ts / C ) * iL (n -1) - ( Ts /( R * C ) ) * vC (n -1) ;
end
end
end
figure ;
plot (t , vC ) ;
legend ( ' vC ( V ) ') ;
% tiledlayout (2 ,1)
% ax1 = nexttile ;
% plot ( ax1 , q )
% title ( ' Ciclo de trabajo ')
% ylim ( ax1 ,[0 1])
% xlim ( ax1 ,[5.3 e5 5.33 e5 ])
% grid ( ax1 , ' on ')
%
% ax2 = nexttile ;
% plot ( ax2 , vC )
% title ( ' Tensi0n en el condensador ')
68
% ylim ( ax2 ,[0.45 0.55])
% xlim ( ax2 ,[5.3 e5 5.33 e5 ])
% grid ( ax2 , ' on ')
69
Programa para el cálculo del compensador en frecuencia. MATLAB.
T_PWM = 1/ f_PWM ;
D = Vo / Vin ;
H = Vref / Vo ;
f0 = 1/(2* pi * sqrt ( L * C ) ) ;
w0 = 2* pi * f0 ;
Q0 = R * sqrt ( C / L ) ;
70
Gc = Gc0 *(1+ s / wz ) /(1+ s / wp ) ;
Gcm = Gc0 ;
71
Programa para la emulación del convertidor DC-DC reductor en el microncon-
trolador TMS320F28379D.
CPU1. Emulación de la planta.
# define GLOBAL_Q 19
# include " F28x_Project . h "
# include " IQmathLib . h "
int estado ;
int muestra = 0;
int Perturbacion = 0;
int DACNUM = 4096;
_iq temp_V = _IQ (0) ;
_iq temp_A = _IQ (0) ;
72
_iq Vin = _IQ (1) ; //1 V
_iq Linv = _IQ (0.05) ; //1/(0.2 mH )
_iq Cinv = _IQ (1) ; //1/(100 uF )
_iq Rinv = _IQ (1) ; //1/(1 Ohm )
InitEPwm1Gpio () ;
// 2. Deshabilitar interrupciones
DINT ;
InitPieCtrl () ;
IER = 0 x0000 ;
IFR = 0 x0000 ;
// 3. Configurar perifericos
InitPieVectTable () ;
ConfigGPIO () ;
InitCpuTimers () ;
ConfigCpuTimer (& CpuTimer0 ,200 , T ) ;
ConfigCpuTimer (& CpuTimer1 ,200 , T_per ) ;
73
ConfigADC () ;
ConfigDAC () ;
// 4. Habilitar interrupciones
EALLOW ;
PieVectTable . ADCA1_INT = & isrADC ;
PieVectTable . TIMER1_INT = & isrTimer1 ;
EDIS ;
while (1) {
}
}
void ConfigGPIO () {
EALLOW ;
// GPIO0 como PWM1A
GpioCtrlRegs . GPAPUD . bit . GPIO0 = 1; // Deshabilitar Pullup
GpioCtrlRegs . GPAGMUX1 . bit . GPIO0 = 0; // Grupo de perifericos
00
GpioCtrlRegs . GPAMUX1 . bit . GPIO0 = 1; // Funcion tipo PWM ( Pin
40 en la placa )
74
GpioCtrlRegs . GPAGMUX1 . bit . GPIO2 = 0;
GpioCtrlRegs . GPAMUX1 . bit . GPIO2 = 0; // Tipo E / S
GpioCtrlRegs . GPADIR . bit . GPIO2 =1; // Tipo Salida
void ConfigADC () {
EALLOW ;
// Ahora se configura el A / D para que muestree con trigger
del Timer0
AdcaRegs . ADCSOC0CTL . bit . CHSEL = 3; // Configuramos el SOC0
, con el canal ADCINA3 ( Pin 26 en la placa )
AdcaRegs . ADCSOC0CTL . bit . TRIGSEL = 1; // Para que funcione con
el CPU1 Timer0
AdcaRegs . ADCSOC0CTL . bit . ACQPS = 50; // Ventana de
adquisicion de 75 ns + 1 ciclo SYSCLK ( ACQPS para
ADC_RESOLUTION 12 BIT )
// Configuramos las interrupciones del ADC
AdcaRegs . ADCINTSEL1N2 . bit . INT1E = 1; // Habilitamos las
interrupciones
AdcaRegs . ADCINTSEL1N2 . bit . INT1SEL = 0; // Interrupciones por
la linea INT1
AdcaRegs . ADCINTSEL1N2 . bit . INT1CONT = 0; // Clear al flag
despues de cada interrupcion ( enable del modo de muestreo
continuo )
AdcaRegs . ADCCTL1 . bit . INTPULSEPOS = 1; // Manda el pulso de
interrupcion al final de la conversion
void ConfigDAC () {
EALLOW ;
// Configuracion del DAC A ( para iL )
DacaRegs . DACCTL . bit . LOADMODE = 0; // Sincronizado con SYSCLK
, no con PWM
75
DacaRegs . DACCTL . bit . DACREFSEL = 1; // Usar como tensiones de
referencia las del ADC = > VREFHI , VREFLO
DacaRegs . DACOUTEN . bit . DACOUTEN = 1; // Enable del DACOUT
DELAY_US (100) ; // Delay de 0.1 ms para permitir que el DAC
arranque
// Configuracion del DAC B ( para vC )
DacbRegs . DACCTL . bit . LOADMODE = 0; // Sincronizado con SYSCLK
, no con PWM
DacbRegs . DACCTL . bit . DACREFSEL = 1; // Usar como tensiones de
referencia las del ADC = > VREFHI , VREFLO
DacbRegs . DACOUTEN . bit . DACOUTEN = 1; // Enable del DACOUT
DELAY_US (100) ; // Delay de 0.1 ms para permitir que el DAC
arranque
EDIS ;
76
i_L2_A = _IQmpy ( i_L2 , factor ) ; // Resultado en A
v_C2_V = _IQmpy ( v_C2 , factor ) ; // Resultado en V
// GpioDataRegs . GPATOGGLE . bit . GPIO2 = 1;
77
CPU2. Emulación del controlador.
# define GLOBAL_Q 19
# include " F28x_Project . h "
# include " IQmathLib . h "
int LAZO_CERRADO = 0;
Uint16 val_TBPRD = 2500; // Se define por defecto a 2500 para una
f_PWM de 20 kHz en modo de cuenta ascendente - descendente .
Uint16 v_C_int = 0;
Uint16 DACREF = 3;
78
void main ( void )
{
// 1. Inicializar el sistema
InitSysCtrl () ;
// 2. Deshabilitar interrupciones
DINT ;
InitPieCtrl () ;
IER = 0 x000 ;
IFR = 0 x000 ;
// 3. Configurar perifericos
InitPieVectTable () ;
ConfigEPWM1 () ;
ConfigADC () ;
// 4. Habilitar interrupciones
EALLOW ;
PieVectTable . ADCB1_INT = & isrADC ;
EDIS ;
void ConfigEPWM1 () {
79
EPwm1Regs . AQCTLA . bit . CAD = AQ_SET ;
EPwm1Regs . TBCTL . bit . CTRMODE =10;
EPwm1Regs . CMPCTL . bit . LOADAMODE = CC_CTR_ZERO ; // Para que
cargue el valor del nuevo CMPA en el siguiente paso por
cero
EPwm1Regs . CMPCTL . bit . SHDWAMODE = CC_SHADOW ; // Para que pueda
almacenar en buffer el nuevo valor de CMPA a la espera
de ser actualizado en el siguiente paso por cero .
EPwm1Regs . ETSEL . bit . SOCAEN =1; // Habilitamos que el PWM
controle el SOC del ADC
EPwm1Regs . ETSEL . bit . SOCASEL =2; // Lanza el SOC en TBCTR =
CMPA y en TB_COUNT_UP
EPwm1Regs . ETPS . bit . SOCAPRD =1;
EDIS ;
void ConfigADC () {
EALLOW ;
// Ahora se configura el A / D para que muestree con trigger
del EPWM1SOCA
AdcbRegs . ADCSOC0CTL . bit . CHSEL = 3; // Configuramos el
SOC0 , con el canal ADCINB3 ( Pin 25 en la placa )
AdcbRegs . ADCSOC0CTL . bit . TRIGSEL = 5; // Para que funcione
con el SOC del PWM1
AdcbRegs . ADCSOC0CTL . bit . ACQPS = 50; // Ventana de
adquisicion de 75 ns + 1 ciclo SYSCLK ( ACQPS para
ADC_RESOLUTION 12 BIT )
// Configuramos las interrupciones del ADC
AdcbRegs . ADCINTSEL1N2 . bit . INT1E = 1; // Habilitamos las
interrupciones
AdcbRegs . ADCINTSEL1N2 . bit . INT1SEL = 0; // Interrupciones por
la linea INT1
AdcbRegs . ADCINTSEL1N2 . bit . INT1CONT = 0; // Clear al flag
despues de cada interrupcion ( enable del modo de
muestreo continuo )
AdcbRegs . ADCCTL1 . bit . INTPULSEPOS = 1; // Manda el pulso de
interrupcion al final de la conversion
80
DELAY_US (1000) ; // Delay de 1 ms para permitir que el A / D
arranque
EDIS ;
if ( LAZO_CERRADO == 1) {
81
EALLOW ;
EPwm1Regs . CMPA . bit . CMPA = val_CMPA ;
EDIS ;
82
Programa para la simulación en lazo cerrado del convertidor DC-DC reductor. MATLAB.
clear all ;
clc
close all ;
R = 1; %Ohm
L = 20 e -3; %H
C = 1e -06; %F
Vin = 1; %V
f_PWM = 10 e3 ; %Hz
T_PWM = 1/ f_PWM ;
Tf = 3e -3;
Ts = 2e -6;
t = 0 : Ts : Tf ;
%Discretizando la f u n c i n de transferencia
% D i s e o del regulador
s = tf ( 's ') ;
fc = 1/10* f_PWM ;
wc = 2* pi * fc ;
MF = 60;
fz = fc * sqrt ((1 - sin ( MF * pi /180) ) /(1+ sin ( MF * pi /180) ) ) ;
fp = fc * sqrt ((1+ sin ( MF * pi /180) ) /(1 - sin ( MF * pi /180) ) ) ;
wz = 2* pi * fz ;
wp = 2* pi * fp ;
f0 = 1/(2* pi * sqrt ( L * C ) ) ;
fL = 1/10* fc ;
wL = 2* pi * fL ;
83
Gcm = ( fc / f0 ) ^2 * sqrt ( fz / fp ) ;
Gc = Gcm *(1+ s / wz ) *(1+ wL / s ) /(1+ s / wp )
%Condiciones iniciales
y_1 = 0.5; %y [n -1]
y_2 = 0.5; %y [n -2]
u_1 = 0.5; %u [n -1]
u_2 = 0.5; %u [n -2]
e_1 = 0; %e [n -1]
e_2 = 0; %e [n -2]
% T e n s i n de referencia yref
yref1 = 0.5* ones (1 ,( length ( t ) -1) /2 +1) ;
yref2 = 0.3* ones (1 ,( length ( t ) -1) /2) ;
yref = horzcat ( yref1 , yref2 ) ;
for i = 1: length ( t )
if i == 1
e ( i ) = yref ( i ) - y_1 ;
u ( i ) = ( k (1) / m (1) ) * e ( i ) + ( k (2) / m (1) ) * e_1 + ...
( k (3) / m (1) ) * e_2 - ...
( m (2) / m (1) ) * u_1 - ( m (3) / m (1) ) *
u_2 ;
if u ( i ) > 0.999
u ( i ) = 0.999;
elseif u ( i ) < 0.001
u ( i ) = 0.001;
end
y ( i ) = ( a (1) / b (1) ) * u ( i ) + ( a (2) / b (1) ) * u_1 + ...
( a (3) / b (1) ) * u_2 - ...
( b (2) / b (1) ) * y_1 - ( b (3) / b (1) ) *
y_2 ;
elseif i == 2
e ( i ) = yref ( i ) - y (i -1) ;
u ( i ) = ( k (1) / m (1) ) * e ( i ) + ( k (2) / m (1) ) * e (i -1) + ...
( k (3) / m (1) ) * e_1 - ...
( m (2) / m (1) ) * u (i -1) - ( m (3) / m (1)
) * u_1 ;
if u ( i ) > 0.999
u ( i ) = 0.999;
elseif u ( i ) < 0.001
84
u ( i ) = 0.001;
end
y ( i ) = ( a (1) / b (1) ) * u ( i ) + ( a (2) / b (1) ) * u (i -1) + ...
( a (3) / b (1) ) * u_1 - ( b (2) / b (1) ) * y (i -1) - ( b (3) / b (1) ) * y_1 ;
else
e ( i ) = yref ( i ) - y (i -1) ;
u ( i ) = ( k (1) / m (1) ) * e ( i ) + ( k (2) / m (1) ) * e (i -1) + ...
( k (3) / m (1) ) * e (i -2) - ...
( m (2) / m (1) ) * u (i -1) - ( m (3) / m (1) ) * u
(i -2) ;
if u ( i ) > 0.999
u ( i ) = 0.999;
elseif u ( i ) < 0.001
u ( i ) = 0.001;
end
y ( i ) = ( a (1) / b (1) ) * u ( i ) + ( a (2) / b (1) ) * u (i -1) + ...
( a (3) / b (1) ) * u (i -2) - ( b (2) / b (1) ) * y (i -1) - ( b (3) / b (1) ) * y (i
-2) ;
end
end
plot (t , y )
axis ([0 3e -3 0 0.8])
85