DISEÑO E IMPLEMENTACIÓN DE UN CONVERTIDOR DC/DC ELEVADOR DE
VOLTAJE A PARTIR DE UNA BATERÍA DE 12 VOLTIOS
CARLOS ARTURO SILVA OVIEDO
UNIVERSIDAD SANTO TOMÁS FACULTAD DE INGENIERÍA ELECTRÓNICA
BOGOTÁ D.C. 2019
DISEÑO E IMPLEMENTACIÓN DE UN CONVERTIDOR DC/DC ELEVADOR DE
VOLTAJE A PARTIR DE UNA BATERÍA DE 12 VOLTIOS
CARLOS ARTURO SILVA OVIEDO
TRABAJO DE GRADO
Ing. CARLOS JAVIER MOJICA CASALLAS, MSc
Ing. JHON ERIK NAVARRETE GOMEZ
UNIVERSIDAD SANTO TOMÁS FACULTAD DE INGENIERÍA ELECTRÓNICA
BOGOTÁ D.C. 2019
CONTENIDOS
1. Introducción 5
2. Planteamiento del problema 6
3. Estado del arte 8
4. Justificación 13
5. Objetivos 15
5.1. Objetivo general 15
5.2. Objetivos específicos 15
6. Convertidores conmutados: Conceptos básicos. 16
6.1. Modulación por ancho de pulso (PWM) 16
6.2. Valor medio 17
6.3. Valor RMS 18
6.4. IGBT 18
6.5. Diodo schottky 19
6.6. Convertidor DC/DC 19
8.1.1. Buck 20
8.1.2. Boost 21
6.7. Sample and hold (S/H) 21
7. Diseño y ejecución del proyecto 22
7.1 Elevador (boost) cuadrático ideal 23
7.1.1 Diseño estático 23
7.1.2 Valores en estado estacionario 26
7.1.3 Cálculo de los elementos 29
7.1.4 Simulación del circuito elevador (boost) cuadrático ideal 31
7.1.5 Dimensionamiento de dispositivos 36
7.1.6 Elección de semiconductores de potencia 38
7.2. Modelado y funciones de transferencia del convertidor elevador (boost) cuadrático 49
7.2.1. Modelo de gran señal 51
7.2.2. Modelo de pequeña señal 52
7.3. Diseño y simulación del controlador 53
7.3.1. Periodo de muestreo 53
7.4. Montaje y programación 60
7.4.1. TMS320F28335 Experimenter Kit 60
7.4.2. GPIO 61
7.4.3. PWM 62
7.4.4. ADC 63
7.4.5. Driver para conmutación del transistor 63
7.4.6. Etapa de sensado de voltaje 66
7.4.7. AMC1200 66
7.4.8. 66
7.4.9. Algoritmo implementado en DSP 68
8. Resultados del proyecto 68
8.1. Pruebas en lazo abierto 68
8.1.1. Resultados primera prueba: 69
8.1.2. Resultados segunda prueba: 71
8.2. Implementación en lazo cerrado 72
9. Impacto social 76
10. Conclusiones 77
11. Recomendaciones 78
12. Bibliografía 80
13. Anexos 82
1. INTRODUCCIÓN
Debido a la crisis ambiental presentada actualmente, se ha evidenciado que seguir
dependiendo de recursos no renovables como el carbón, gas natural o petróleo para
la generación de energía no resulta ser la forma más segura de afrontar la demanda
energética en un futuro próximo. A partir de esta problemática se han buscado
diferentes formas de generación partiendo de recursos renovables tales como el
agua, el viento o el sol.
Con la aparición de paneles solares y generadores eólicos se desarrollan diversas
formas de tratamiento de la energía para el consumo del usuario final, esto, gracias
a los avances en electrónica de potencia y convertidores conmutados, los cuales
tienen como finalidad la transformación de energía con la menor cantidad de
pérdidas posibles, lo cual contribuye al uso responsable de la energía generada
para llevar la mayor cantidad posible de la misma al consumidor.
Es en este punto donde aparecen sistemas completos de generación a partir del sol
o del viento, los cuales constan en algunos casos en el almacenamiento de la
energía generada en baterías, seguido a un tratamiento de esta energía, la cual
puede tratarse de transformación de DC/DC (corriente directa a corriente directa)
para cargas que requieran un bus de continua para su operación.
A lo largo de este trabajo de grado se documentará el proceso de diseño e
implementación de un convertidor DC/DC (corriente directa a corriente directa)
conmutado tipo elevador (boost) cuadrático. Esta tiene como finalidad usar la
energía almacenada en arreglos de baterías usadas en sistemas de generación
limpia, sea esta eólica o solar.
2. PLANTEAMIENTO DEL PROBLEMA
La explotación de recursos naturales no renovables y su uso para la obtención de
energía eléctrica, en la mayoría de las ocasiones, causa un daño irreparable y
cuando no es así, dicha recuperación ambiental es costosa y de lenta respuesta en
el tiempo.
No solo la extracción de recursos como el carbón, el gas o el petróleo y sus
derivados hace que seguir dependiendo de éstos sea riesgoso en un futuro no
lejano, ante la posibilidad de que puedan no ser suficientes para continuar
abasteciendo la demanda energética, además, se debe tener en cuenta que el
proceso de extracción y de transformación tiene un impacto altamente negativo para
el planeta.
Es aquí donde otros recursos como el agua, el sol o el viento aparecen como formas
alternativas para la generación de energía, mitigando algunos impactos que dañan
gravemente al planeta y que son ocasionados en la explotación ambiental. La
generación de energía eléctrica a partir de estos recursos mencionados es más
amigable con el planeta, aunque hay que observar la sostenibilidad de dichos
recursos.
En Colombia, según cifras de la UPME, a fecha de agosto de 2018, el agua es el
principal recurso con mayor capacidad instalada para proporcionar energía eléctrica
con un porcentaje del 69.18%, seguido por el gas, carbón y ACPM que de manera
conjunta proporcionan un 26.36% de la capacidad instalada para suplir las
demandas energéticas del país. Tomado de:
http://www.siel.gov.co/portals/0/generacion/2018/Informe_de_variables_Feb_2018.
En cuanto a la generación con medios alternativos, aparece en un pequeño
porcentaje el uso del viento con un porcentaje de 0.10% y el sol con un 0.06% de la
capacidad instalada para suplir la demanda energética del país, cifra que no resulta
bastante significativa respecto al uso de hidroeléctricas y combustibles fósiles.
Debido a esta problemática ambiental y gracias a la aparición de medios de
generación alternativos, se requiere la implementación de reguladores que
acondicionen la energía de acuerdo a las necesidades del consumidor presentando
la menor cantidad de pérdidas durante el proceso, por ello, se recurre al uso de un
convertidor conmutado DC/DC (corriente directa a corriente directa), el cual, por
medio del uso de elementos de almacenamiento de energía (bobinas y
condensadores) presenta una eficiencia más alta que los reguladores lineales
comúnmente usados.
3. ESTADO DEL ARTE
Se pueden encontrar diversas topologías de circuitos de elevación de voltaje, las
cuales proponen el uso de más de dos elementos de almacenamiento de energía,
esto, con el fin de mejorar la ganancia del elevador respecto al boost tradicional,
permitiendo partir de valores de voltaje en la entrada de 24 voltios para ser elevados
a buses DC de entre 300 a 350 voltios [1].
Ilustración 1 – Configuración elevadora de voltaje. Fuente: [1]
Sin embargo, esta configuración cuenta con una gran desventaja debido a la
cantidad de dispositivos semiconductores y la cantidad de elementos de
almacenamiento de energía, lo cual aumenta el costo en función de la potencia de
salida a la que se quiera diseñar.
Con la finalidad de disminuir costos, se encuentra un artículo donde se plantea una
modificación al boost tradicional [2], en la cual se tienen un total de 4 elementos de
almacenamiento de energía y tres dispositivos semiconductores, lo cual resulta
siendo una cantidad menor de elementos al caso anterior.
Ilustración 2 – Topología tipo elevador (boost) cuadrático para elevación de voltaje DC/DC. Fuente: [2]
Como problema, se encuentra que a medida que se empieza a aumentar la potencia
de salida, para una entrada de 24 voltios, la eficiencia de esta topología cae al 77%
para una potencia de salida de 200W, esto, empieza a perder el enfoque de dar uso
responsable a la energía generada.
Ilustración 3 – Eficiencia en función de la potencia de salida. Fuente: [2]
Aunque no se da información del comportamiento de la eficiencia para valores
mayores de potencia, el llegar a caer 14% en un rango de 260 W hace que no sea
del todo adecuado elegir esta configuración para dar solución al proyecto.
Para solventar esto, se proponen una serie de comparaciones entre el boost
tradicional y dos de ellos en cascada [3], artículo en el que se da información de la
eficiencia para diferentes voltajes de entrada, la mayoría, valores resultantes de
baterías en serie. Según el artículo, el usar dos etapas de boost tradicional presenta
una eficiencia mucho mayor a configuraciones como el elevador (boost) cuadrático.
Ilustración 4 – Comparación eficiencia boost en cascada, elevador (boost) cuadrático, boost convencional. Fuente: [3]
Aunque también cuenta con una cantidad reducida de componentes, no se tiene
conocimiento de la potencia exacta a la que fueron tomados estos datos, a esto se
le suma el hecho de tener un MOSFET para cada etapa de convertidor boost, puede
hacer que la complejidad del control y el montaje pueda aumentar.
En vista de que se buscan configuraciones cuya eficiencia sea elevada, utilizar dos
topologías para la elevación del voltaje en cascada puede ser una buena opción [4],
a esto se le ha denominado el “quadratic boost zeta converter”.
Ilustración 5 - A. Mostaan, A. Abdelhakim, M. Soltani and F. Blaabjerg, "Single-phase transformer-less buck-boost
inverter with zero leakage current for PV systems" [4]
Esta topología según el artículo resulta en una alta eficiencia para una potencia de
diseño de 250 W, de nuevo el problema recae en la cantidad de componentes
necesarios para la implementación de esta topología.
Después de la evaluación de las etapas anteriormente descartadas, se debe tomar
en cuenta que no solo será necesario conocer que topología se usará, también se
debe tener en cuenta como se realizará el proceso de modelado matemático y que
tipo de control se diseñará e implementará, para esto, se encuentran algunos
artículos que describen el proceso de modelado y diseño del controlador a una
planta relacionada con los fines del proyecto.
Uno de los artículos expuestos, realiza el proceso de modelado y diseño de control
anteriormente mencionado siendo la topología del elevador (boost) cuadrático la
planta a controlar [7]. Se puede evidenciar en el artículo como se realiza el
modelado por variables de estado de la planta y a partir de las matrices de estado
obtenidas por este proceso, se procede a diseñar un controlador llamado “fractional
order PID” o FOPID el cual es comparado con el PID convencional. El problema de
este artículo reside principalmente en que estas comparativas son realizadas
mediante simulación, no se tiene una muestra de su funcionalidad implementado en
la realidad.
Usando como planta el elevador (boost) cuadrático de nuevo, se encuentra un
artículo el cual expone el diseño de un controlador a partir del modelo promediado
del elevador (boost) cuadrático[8], en este artículo se describe todo el proceso de
diseño del controlador y las respuestas del mismo, pero al igual que el caso anterior
estos resultados son obtenidos por medio de la simulación, y ninguno presenta
alguna implementación de la cual se pueda tener referencia de su funcionamiento
al incrementar la potencia más allá de los 100 W.
A partir de los casos anteriores, es posible encontrar diversos artículos que realizan
diversos controladores para el elevador (boost) cuadrático, por ejemplo, se tiene
uno donde se destina a la elevación de voltaje a partir de una pila de combustible
[9] en el cual se expone el diseño del controlador para esta planta a partir de su
modelo en variables de estado, de nuevo se presenta el mismo problema que los
anteriores dos casos, resultado en simulación.
Se encuentra también un artículo aplicando control de voltaje y corriente para otra
topología diferente de elevador [10], en este caso se evidencia nuevamente el
modelado por variables de estado y proceso de diseño y respuestas del controlador,
pero en este caso el problema recae en la planta, la cual tiene una cantidad de
componentes elevados para su implementación.
4. JUSTIFICACIÓN
La generación de energía que se ha usado hasta el momento hace uso del carbón,
gas natural y petróleo, donde es necesario excavar y perforar el ecosistema donde
se encuentren estos recursos, además de generar gases de efecto invernadero en
el proceso de transformación de estos en electricidad. Este proceso requiere pasos
de extracción y transformación donde se ve fuertemente afectado el planeta, por lo
cual se busca a futuro dejar de lado este tipo de generación.
Otra forma de generación de energía eléctrica consiste en aprovechar el poder del
agua en centrales hidroeléctricas, en las cuales no se generan gases de efecto
invernadero, sin embargo, durante la construcción de la central hidroeléctrica se
realizan modificaciones y daños al ecosistema donde entra a operar, lo cual también
tiene repercusiones medioambientales, por lo cual se buscan medios diferentes de
generación de energía.
Ante las problemáticas planteadas, la implementación de arreglos de paneles
solares y generadores eólicos resulta ser una de las alternativas que ayudaran a
sustentar la demanda energética, ya que estas permiten almacenar la energía
generada y acondicionarla para el consumo, además de no tener las mismas
repercusiones de la quema de combustibles fósiles o la implementación de una
hidroeléctrica.
Partiendo de las opciones disponibles en generación y almacenamiento alternativo
se deben encontrar maneras de tratar la energía generada de la forma más eficiente
posible. Para esto la electrónica de potencia utiliza los convertidores conmutados,
permitiendo elevar, mantener o bajar los valores de entrada en DC, así como
permite realizar el cambio de DC a AC para el consumo tradicional.
Sin embargo, para que la energía generada pueda ser aprovechada en su mayoría
las etapas encargadas del acondicionamiento deben tener la mayor eficiencia
posible, para lo cual se requiere realizar el análisis de diversas configuraciones de
circuitos de electrónica de potencia buscando presentar cada vez más alternativas
que contribuyan al cambio de la generación energética alternativa.
5. OBJETIVOS
5.1. Objetivo general
Diseñar, simular e implementar un convertidor DC/DC elevador cuadrático de voltaje
enfocado a sistemas de generación alternativos.
5.2. Objetivos específicos
Encontrar y analizar el modelo matemático que describe el convertidor
elevador (boost) cuadrático.
Simular el modelo obtenido y evaluar la respuesta para cargas de corriente
continua que disipen hasta 300W
Diseñar el control digital que logre mantener la tensión de salida ante
variaciones de carga.
Realizar la implementación del convertidor y el controlador respectivo para
validar los resultados obtenidos en simulación.
6. CONVERTIDORES CONMUTADOS: CONCEPTOS
BÁSICOS.
Con el fin de contextualizar al lector del documento se dan algunos de los conceptos
básicos necesarios para el entendimiento del contenido a tratar a lo largo de este
trabajo, para ello se empieza por aclarar que para formas de onda de tensión o
corriente las cuales presentan variaciones a lo largo del tiempo con una forma de
onda de periodo fijo, se deben tener claros los siguientes conceptos:
6.1. Modulación por ancho de pulso (PWM)
La modulación por ancho de pulso es la generación de una señal cuadrada cuya
frecuencia es constante, a esta señal, se le varía el tiempo en alto, esto, permite
realizar encendidos y apagados constantes a altas velocidades con el fin de variar
velocidad de motores de corriente continua, controlar posición de servomotores,
variar la intensidad de iluminación de una fuente lumínica, reconstruir señales
análogas, entre otras. Para este caso, la modulación por ancho de pulso es usada
para controlar el voltaje de salida de los convertidores conmutados, de los cuales
se hablará de forma muy general más adelante.
Ilustración 6 - PWM funcionamiento. Fuente: Wikipedia.
6.2. Valor medio
Este hace referencia a la amplitud promedio a lo largo del tiempo de la señal vista
desde el lado de la carga, para voltaje, corriente o potencia promedio la expresión
general que ayuda a calcularlo es la siguiente:
𝑥𝑝𝑟𝑜𝑚 =
1
𝑇∫
𝑇
0
𝑥(𝑡)𝑑𝑥 (1)
Donde 𝑥(𝑡) es la función que representa la forma de onda periódica de la señal.
6.3. Valor RMS
Este corresponde al valor equivalente en DC proporcionado por una señal de
corriente alterna, es decir que el valor RMS de una señal alterna equivale al valor
en corriente continua de una señal que varía a lo largo del tiempo. La expresión
matemática que define el valor medio es la siguiente:
𝑥𝑟𝑚𝑠 = √1
𝑇∫
𝑇
0
𝑥(𝑡)2𝑑𝑥 (2)
Donde 𝑥(𝑡) es la función que representa la forma de onda periódica de la señal.
6.4. IGBT
Este, es una unión de dos tipos de transistor, el MOSFET y el BJT, teniendo como
ventaja unas frecuencias de conmutación más elevadas a las del BJT, pero menores
a las de un MOSFET, ganando una mayor resistencia a tensiones elevadas con
menores caídas de tensión que en algunos casos de transistores MOSFET.
Ilustración 7 - Simbología y modelo equivalente IGBT. Fuente:
https://upload.wikimedia.org/wikipedia/commons/a/ac/IGBT_equivalent_circuit_fr.gif
6.5. Diodo schottky
Este, es un diodo cuya unión se da entre una unión tipo p y un metal, reduciendo la
caída de tensión de conducción del mismo, a costo de reducir la tensión en inverso
máxima soportada por el dispositivo, de igual forma, los tiempos de conmutación
pueden llegar al orden de los nanos segundos, lo cual lo hace ideal en aplicaciones
de alta frecuencia.
6.6. Convertidor DC/DC
Partiendo de elementos de almacenamiento de energía, en conjunto con
semiconductores de potencia, pueden obtenerse diversas aplicaciones en la
conversión DC/DC (corriente directa a corriente directa), lo cual permite el obtener
una tensión menor o mayor a la de la fuente de entrada, según la topología que se
use.
A diferencia de reguladores lineales presentan mucha mayor eficiencia en el
proceso de transformación, a la vez que permite tener una tensión variable regulada
a partir de una tensión continua no necesariamente regulada. Cada una de estas
etapas se denomina convertidor conmutado, y en su configuración más básica está
compuesta por un inductor, una capacitancia, un diodo de conmutación rápida y un
transistor.
Las configuraciones más básicas son:
8.1.1. Buck
Ilustración 8 - Esquemático base convertidor buck. Fuente: [7]
Este convertidor permite reducir la tensión de entrada en función del ciclo útil de
trabajo del transistor, la función del voltaje del convertidor en función del ciclo útil es
la siguiente:
𝑉𝑜 = 𝑉𝑖𝐷 (3)
8.1.2. Boost
Ilustración 9 - Esquemático convertidor boost. Fuente [7]
Esta topología permite incrementar la tensión de entrada, esto, lo logra a partir de
la carga del inductor de entrada, la función de la tensión de salida en función del
ciclo útil y son las siguientes:
𝑉𝑜 =
𝑉𝑖
(1 − 𝐷) (4)
Estos convertidores son los básicos, a partir de ellos nacen más topologías
encaminadas al mismo fin, con consideraciones, cantidad de elementos y
funcionalidades diferentes.
6.7. Sample and hold (S/H)
El circuito muestreador y retenedor es el encargado de mantener por un tiempo muy
pequeño el valor adquirido de la señal análoga a medir. Es acompañado además
de una serie de amplificadores operacionales: el amplificador seguidor de entrada,
el cual tiene una gran impedancia de entrada con el fin de afectar el mínimo posible
la señal a medir, seguido a esta, se encuentra un capacitor de alta calidad
encargado de retener la señal medida por un pequeño tiempo antes de ser captada
por el convertidor analógico-digital
Ilustración 10 - Modelo simplificado muestreador. Fuente: [14]
7. DISEÑO Y EJECUCIÓN DEL PROYECTO
Para empezar, se realiza el análisis estático del elevador (boost) cuadrático, el cual
consiste en encontrar los valores en estado estacionario para las corrientes en los
inductores y las tensiones en las capacitancias, a partir de esto, eligiendo valores
de rizado se pueden obtener los valores de los elementos además de dimensionar
los diodos y el transistor necesarios. Seguido a esto, se realiza el análisis de la
dinámica del sistema, en el cual se busca encontrar el modelo matemático que
describe al sistema y con ello la función de transferencia con la cual se procede a
diseñar el controlador necesario.
7.1 Elevador (boost) cuadrático ideal
El primer paso, es realizar el análisis del modelo ideal para esta topología, esto con
el fin de calcular los valores de inductancia y capacitancia requeridos, además de
ayudar a dimensionar las características para los diodos y el transistor a usar para
la implementación. Seguido a esto, se realizará la inclusión de pérdidas en los
dispositivos con el fin de verificar que la ganancia que se requiere para los fines del
proyecto es posible de lograr y que factores hay que tener en cuenta a la hora de
implementar el convertidor.
7.1.1 Diseño estático
Partiendo de la siguiente topología del convertidor DC/DC sin inclusión de las
pérdidas asociadas a los dispositivos, se hallan las ecuaciones para los diferentes
tiempos del circuito:
Ilustración 11 - Elevador (boost) cuadrático ideal. Fuente: Autor.
En el tiempo 1, cuando el transistor conduce, el circuito resultante sería el siguiente:
Ilustración 12 - Elevador (boost) cuadrático tiempo 1. Fuente: Autor.
Como breve descripción de qué ocurre en este tiempo, al entrar el transistor en
conducción, el diodo 2 y 3 se abren al tener una tensión ánodo cátodo negativa,
mientras que el diodo 1 al quedar el cátodo referenciado a tierra entra en
conducción, por lo tanto, la bobina 1 es cargada por medio de la fuente, la
inductancia 2 se carga por efecto de la capacitancia 1 y la capacitancia 2 suministra
energía a la carga.
Dicho esto, se plantean las siguientes ecuaciones de malla con el fin de obtener el
voltaje en los dos inductores, a su vez se plantean las ecuaciones de nodo con el
fin de hallar las corrientes de los condensadores.
𝑉𝑖 − 𝑉𝐿1 = 0 → 𝑉𝐿1𝑜𝑛 = 𝑉𝑖 (5)
𝑉𝐶1 − 𝑉𝐿2 = 0 → 𝑉𝐿2𝑜𝑛 = 𝑉𝐶1 (6)
𝑖𝐶1 + 𝑖𝐿2 = 0 → 𝑖𝐶1𝑜𝑛 = −𝑖𝐿2 (7)
𝑖𝐶2 + 𝑖𝑅 = 0 → 𝑖𝐶2𝑜𝑛 = −
𝑉𝐶2
𝑅 (8)
En el tiempo 2, cuando el transistor no conduce, se tiene el siguiente circuito
resultante:
Ilustración 13 - Elevador (boost) cuadrático tiempo 2. Fuente: Autor.
En este tiempo el diodo 2 y el transistor no conducen, a su vez que los diodos 1 y 3
hacen que la fuente en serie con la inductancia 1 cargue el capacitor 1 a la vez que
la inductancia 2 suministra energía a la capacitancia 2 y a la carga. Las ecuaciones
de malla y nodos obtenidas para tener los voltajes en las bobinas y las corrientes
en los condensadores son las siguientes:
𝑉𝑖 = 𝑉𝐿1 + 𝑉𝐶1 → 𝑉𝐿1𝑜𝑓𝑓 = 𝑉𝑖 − 𝑉𝐶1 (9)
𝑉𝐶1 = 𝑉𝐿2 + 𝑉𝐶2 → 𝑉𝐿2𝑜𝑓𝑓 = 𝑉𝐶1 − 𝑉𝐶2 (10)
𝑖𝐿1 = 𝑖𝐶1 + 𝑖𝐿2 → 𝑖𝐶1𝑜𝑓𝑓 = 𝑖𝐿1 − 𝑖𝐿2 (11)
𝑖𝐿2 = 𝑖𝐶2 − 𝑖𝑅 → 𝑖𝐶2𝑜𝑓𝑓 = 𝑖𝐿2 −
𝑉𝐶2
𝑅 (12)
Una vez se tienen las ecuaciones que definen el comportamiento del circuito para
cada tiempo, se debe obtener las ecuaciones del modelo conmutado, las cuales nos
servirán para hallar los valores en estado estacionario de voltaje y corriente en los
elementos de almacenamiento de energía. Además, permite calcular el valor de los
elementos en función de la potencia, voltaje de entrada, voltaje de salida, frecuencia
de conmutación y el delta de voltaje/corriente deseado.
7.1.2 Valores en estado estacionario
Para hallar los valores en estado estacionario de corriente/voltaje en los elementos del
circuito, es necesario partir de la siguiente integral:
𝑥(𝑡) =
1
𝑇𝑠∫
𝐷∗𝑇𝑠
0
𝑥(𝑡)𝑜𝑛 𝑑𝑡 + 1
𝑇𝑠∫
𝑇𝑠
𝐷∗𝑇𝑠
𝑥(𝑡)𝑜𝑓𝑓 𝑑𝑡 (13)
Se tiene entonces que las ecuaciones halladas para cada tiempo (𝑥(𝑡)𝑜𝑛 y 𝑥(𝑡)𝑜𝑓𝑓)
evaluadas entre los límites propuestos resultan de la siguiente forma:
𝑉𝐿1(𝑡) =
1
𝑇𝑠∫
𝐷∗𝑇𝑠
0
(𝑉𝑖) 𝑑𝑡 + 1
𝑇𝑠∫
𝑇𝑠
𝐷∗𝑇𝑠
(𝑉𝑖 − 𝑉𝐶1) 𝑑𝑡 (14)
𝑉𝐿2(𝑡) =
1
𝑇𝑠∫
𝐷∗𝑇𝑠
0
(𝑉𝐶1) 𝑑𝑡 + 1
𝑇𝑠∫
𝑇𝑠
𝐷∗𝑇𝑠
(𝑉𝐶1 − 𝑉𝐶2) 𝑑𝑡 (15)
𝑖𝐶1(𝑡) =
1
𝑇𝑠∫
𝐷∗𝑇𝑠
0
(−𝑖𝐿2) 𝑑𝑡 + 1
𝑇𝑠∫
𝑇𝑠
𝐷∗𝑇𝑠
(𝑖𝐿1 − 𝑖𝐿2) 𝑑𝑡 (16)
𝑖𝑐2(𝑡) =
1
𝑇𝑠∫
𝐷∗𝑇𝑠
0
(−𝑉𝐶2
𝑅) 𝑑𝑡 +
1
𝑇𝑠∫
𝑇𝑠
𝐷∗𝑇𝑠
(𝑖𝐿2 −𝑉𝐶2
𝑅) 𝑑𝑡 (17)
Una vez evaluadas las integrales y realizada la simplificación de términos se tiene
que la solución obtenida para las cuatro variables de estado es:
𝑉𝐿1 = 𝑉𝑖 − 𝑉𝐶1(1 − 𝐷) (18)
𝑉𝐿2 = 𝑉𝐶1 − 𝑉𝐶2(1 − 𝐷) (19)
𝑖𝐶1 = 𝑖𝐿1(1 − 𝐷) − 𝑖𝐿2 (20)
𝑖𝐶2 = 𝑖𝐿2(1 − 𝐷) −
𝑉𝐶2
𝑅 (21)
Para obtener el valor en estado estacionario de voltaje/corriente, se debe tener en
cuenta que la dinámica del sistema es nula, ya que se encuentra en estado estable,
por lo tanto, se puede decir que 𝑑𝑖𝐿1(𝑡) = 𝑑𝑖𝐿2(𝑡) = 𝑑𝑉𝐶1(𝑡) = 𝑑𝑉𝐶2(𝑡) = 0, de esta
forma se pueden despejar las incógnitas 𝐼𝐿1, 𝐼𝐿2, 𝑉𝐶1, 𝑉𝐶2 las cuáles serán notadas
con mayúscula, indicando que se refiere al valor en estado estable de las variables
de estado:
𝑉𝐿1 = 0 = 𝑉𝑖 − 𝑉𝐶1(1 − 𝐷) → 𝑉𝐶1 =
𝑉𝑖
(1 − 𝐷) (22)
𝑉𝐿2 = 0 = 𝑉𝐶1 − 𝑉𝐶2(1 − 𝐷) → 𝑉𝐶2 =
𝑉𝐶1
(1 − 𝐷) (23)
𝐼𝐶1 = 0 = 𝐼𝐿1(1 − 𝐷) − 𝐼𝐿2 → 𝐼𝐿1 =
𝐼𝐿2
(1 − 𝐷) (24)
𝐼𝐶2 = 0 = 𝐼𝐿2(1 − 𝐷) −
𝑉𝐶2
𝑅→ 𝐼𝐿2 =
𝑉𝐶2
𝑅 (1 − 𝐷) (25)
A partir de las ecuaciones anteriores, se puede hallar los valores en estado
estacionario para el elevador (boost) cuadrático en términos conocidos, realizando
los despejes pertinentes se tiene que las ecuaciones definitivas para los valores
promedio de voltaje y corriente en los elementos son las siguientes:
𝑉𝐶1 =
𝑉𝑖
(1 − 𝐷) (26)
𝑉𝐶2 =
𝑉𝑖
(1 − 𝐷)2 (27)
𝐼𝐿1 =
𝑉𝑖
𝑅 (1 − 𝐷)4 (28)
𝐼𝐿2 =
𝑉𝑖
𝑅 (1 − 𝐷)3 (29)
Con esto, es posible realizar el dimensionamiento de dispositivos como el diodo, el
transistor y el calibre de cable pertinente para cada uno de los inductores que serán
usados en el proyecto.
7.1.3 Cálculo de los elementos
Para el cálculo del valor de la capacitancia e inductancia necesaria para los objetivos del
proyecto, se parte del análisis de la siguiente gráfica, siendo 𝑥(𝑡) el valor en amplitud de
cualquiera de las variables de estado en función del tiempo:
Ilustración 14 - Rizado en tiempos de conmutación. Fuente: Autor.
Se puede observar que de 0 a 𝐷 ∗ 𝑇𝑠 la amplitud aumenta debido a que se presenta la carga
del elemento, caso contrario, de 𝐷 ∗ 𝑇𝑠 a 𝑇𝑠 se ve reflejado el momento en que el elemento
en cuestión está entregando la energía almacenada en el tiempo anterior.
Por lo tanto, se puede concluir que de las ecuaciones obtenidas en el tiempo 1 se puede
hallar el valor de los elementos, debido a que de 0 a 𝑇𝑠 se tiene una variación 𝑑𝑥(𝑡), por lo
tanto, se puede decir que para expresar la ecuación en términos conocidos se realiza la
siguiente igualación:
𝑑𝑥(𝑡) = 2 ∗ ∆𝑥 ( 1)
𝑑𝑡 = ∆𝑡 = 𝐷 ∗ 𝑇𝑠
( 2)
Cabe aclarar que para la ecuación (22), el motivo para decir que se tiene 2 veces en valor
de rizado del elemento, deriva de graficar el valor medio respecto al rizado donde se puede
ver que tomando como punto de partida el valor medio, se tiene rizado por encima y por
debajo del valor medio, por lo tanto, se tendría 2 veces el valor de rizado como se muestra
en la siguiente imagen:
Ilustración 15 - Explicación rizado en los elementos. Fuente: Autor.
Aclarado eso, se reemplazan las equivalencias propuestas en las ecuaciones (22) y (23) en
las ecuaciones obtenidas para cualquiera de los dos tiempos del circuito para hallar los
valores de capacitancia o inductancia, de la siguiente forma:
𝑑𝑥
𝑑𝑡= 𝑥(𝑡)𝑜𝑛 →
2 ∆𝑥
∆𝑡= 𝑥(𝑡)𝑜𝑛 →
2 ∆𝑥
𝐷𝑇𝑠= 𝑥(𝑡)𝑜𝑛 (30)
De esta forma, reemplazando en las ecuaciones halladas anteriormente teniendo valores
conocidos o que pueden establecerse como criterio del diseño para hallar los valores de L
y C se llega a lo siguiente:
𝐿1 =
𝑉𝑖 𝐷
(2 ∗ ∆𝑖𝐿1 ∗ 𝐹𝑠) (31)
𝐿2 =
𝑉𝑖 𝐷
[2 ∗ ∆𝑖𝐿2 ∗ 𝐹𝑠 ∗ (1 − 𝐷)] (32)
𝐶1 =
𝑉𝑜 𝐷
[2 ∗ 𝑅 ∗ ∆𝑣𝑐1 ∗ 𝐹𝑠 ∗ (1 − 𝐷)] (33)
𝐶2 =
𝑉𝑜 𝐷
(2 ∗ 𝑅 ∗ ∆𝑣𝑐2 ∗ 𝐹𝑠) (34)
7.1.4 Simulación del circuito elevador (boost) cuadrático ideal
Teniendo los datos suministrados en la Tabla 1 para el diseño del convertidor se realiza la
comprobación de los elementos. Los rizados en los elementos se eligen a partir de los
valores en estado estacionario de salida, debido a que representan un pequeño porcentaje
de las variables de salida, de forma más puntual, para el caso de los voltajes se tiene que
para un rizado de 2𝑉 representa una variación del 2% en el capacitor 1 y una variación del
0.5% para el capacitor 2. En el caso de las corrientes en los inductores representan un valor
del 0.6% en el inductor 1 y 1.6% en el inductor 2. Asumiendo estos valores, se encuentra
que:
PARÁMETRO VALOR
𝑉𝑖 24 𝑉
𝑉𝑜 380 𝑉
𝑃𝑜 300 𝑊
𝑅𝐿 481.33 Ω
𝐹𝑠 30 𝑘𝐻𝑧
𝑖𝑜 789.5𝑚𝐴
∆𝑖𝐿1 100 𝑚𝐴
∆𝑖𝐿2 50 𝑚𝐴
∆𝑣𝑐1 2 𝑉
∆𝑣𝑐2 2 𝑉
D 74.87%
L1 3 𝑚𝐻
L2 23.8 𝑚𝐻
C1 19.599 µ𝐹
C2 4.925 µ𝐹
Tabla 1. Parámetros de diseño. Fuente: Autor.
Una vez calculado los valores necesarios para el diseño estático se procede a realizar la
simulación del circuito en Simulink, con el fin de verificar que los valores hallados para el
diseño correspondan a la simulación, esto verificando los valores en estado estacionario,
los rizados en los elementos y la potencia de salida.
Ilustración 16 - Simulación elevador (boost) cuadrático ideal SIMULINK. Fuente: Autor.
La verificación de los valores en estado estacionario obtenidos de forma teórica respecto a
los simulados da como resultado lo siguiente:
Se puede observar que los valores en estado estacionario coinciden tanto en cálculos como
en simulación, teniendo esto, el siguiente paso es verificar el rizado en cada uno de los
Ilustración SEQ Ilustración \* ARABIC 17 - Valores en estado estacionario SIMULINK. Fuente: Autor.
elementos, el cual debe corresponder con el puesto en la Tabla 1, para lo cual se tuvo lo
siguiente:
Ilustración SEQ Ilustración \* ARABIC 18 - Rizado corriente del inductor 1. Fuente:
Autor.
Ilustración SEQ Ilustración \* ARABIC 19 - Rizado de corriente del inductor 2. Fuente: Autor.
Se puede observar que el valor de los rizados en los elementos es igual a los establecidos
en el diseño, por lo tanto, se procede a realizar la última verificación, la cual, se realiza para
corroborar la potencia de salida, la cual debe corresponder de nuevo con el diseño
realizado, volviendo a la simulación, el valor de potencia de salida obtenido es el siguiente:
Ilustración SEQ Ilustración \* ARABIC 20 - Rizado en el capacitor 1. Fuente: Autor.
Ilustración SEQ Ilustración \* ARABIC 21 - Rizado de voltaje en el capacitor 2. Fuente:
Autor.
Ilustración 22 - Potencia de salida resultante. Fuente: Autor.
En conclusión, se puede observar que la potencia de salida es igual al valor teórico, por lo
tanto, se puede dar por terminado el análisis del convertidor ideal.
7.1.5 Dimensionamiento de dispositivos
Una vez se tienen las expresiones para los valores en estado estacionario, se pueden
dimensionar los dispositivos semiconductores necesarios para la implementación, este
proceso se realiza a partir de los valores RMS de las señales de voltaje y corriente
respectivas para cada elemento. En este orden de ideas, se procede a plantear para cada
tiempo los valores de corriente y voltaje para cada dispositivo semiconductor.
7.1.5.1 Corriente RMS
Según la simulación del circuito realizada, se debe revisar las señales
correspondientes a cada uno de los diodos con el fin de determinar el valor RMS de
la corriente en cada uno de los dispositivos. Debe tenerse en cuenta que cada
elemento entra a operar en tiempos diferentes, por lo cual, el valor total calculado
para las corrientes en los inductores no será el mismo de los elementos
semiconductores.
El valor RMS para cada elemento, sería el siguiente:
Ilustración 23 - Valores RMS semiconductores. Fuente: Autor.
7.1.5.2 Voltaje pico
Para este paso, con el fin de dimensionar la tensión que deben soportar los
dispositivos se debe evaluar el valor máximo alcanzado durante la simulación, es
decir, la máxima tensión pico colector emisor para el transistor y la tensión en
inverso para los diodos, para ello se analiza la gráfica de voltaje. Basados en la
simulación las gráficas y los valores obtenidos son los siguientes:
𝑉𝐷1 = 355.6 𝑉 (35)
𝑉𝐷2 = 122.2𝑉 (36)
𝑉𝐷3 = 454 𝑉 (37)
𝑉𝑀1 = 455.46 𝑉 (38)
Una vez realizado este proceso, se procede a elegir los diodos y el transistor
necesarios para la implementación del circuito, para lo cual se tomará un factor de
seguridad de mínimo el 30% respecto a los valores de corriente RMS y voltaje pico
arrojados por la simulación. Cabe aclarar que se usarán los valores de la simulación
debido a que esta detalla de forma más fiel el comportamiento del circuito a lo largo
del tiempo.
7.1.6 Elección de semiconductores de potencia
Partiendo de la practicidad en la implementación, el material necesario para la
implementación es suministrado por el semillero MEM de la universidad Santo
Tomás, los dispositivos que cumplían los requisitos anteriores se muestran a
continuación:
7.1.6.1. FMCA-22065
Ilustración 24 - Diodo FMCA-22065. Fuente: Hoja de datos.
Este es un diodo de carburo de silicio 𝑆𝑖𝐶 el cual cuenta con una tensión en inverso
máxima de 650V y una corriente continua de 20 A, se elige este para el diodo 2
debido a que puede soportar la corriente que circula por este, además de superar
por un margen de seguridad de 31.48% para el diodo indicado.
7.1.6.2. SCS304AM
Ilustración 25 - Diodo SCS304AM. Fuente: Hoja de datos.
Es un diodo de recuperación rápida con una tensión en inverso de 650V y una
corriente continua de 4 amperios, este es usado para el diodo 3, y cuenta con un
factor de seguridad de 39.72% respecto a la corriente dimensionada.
7.1.6.3. APT80GA60LD40
Ilustración 26 - Transistor APT80GA60LD40. Fuente: Hoja de datos.
Este IGBT tiene como características una tensión colector-emisor de 600𝑉 y una
corriente continua por colector de 143 𝐴. Es un dispositivo que cumple muy por
encima las especificaciones de corriente y voltaje máximas para esta aplicación,
pero al tenerlo a disposición, se realizará la implementación del convertidor
haciendo uso del mismo. Para el diodo 1 se utiliza el diodo interno de este transistor,
el cual soporta una corriente continua de 40 amperios, esto da un factor de
seguridad para este diodo de 26.95%.
7.1.6.4. Inclusión de pérdidas en los dispositivos
Una vez realizado el proceso de diseño estático a partir del modelo ideal del
convertidor, se debe tener en cuenta que al momento de implementarlo se tendrán
pérdidas asociadas a los dispositivos semiconductores y resistencias internas de
los inductores y capacitores, por lo tanto, se requiere hacer un estudio del
comportamiento de la ganancia del convertidor para diferentes valores de ciclo útil
teniendo en cuenta las pérdidas en el circuito.
Para este proceso, se tendrán en cuenta las pérdidas en los diodos, el transistor y
las resistencias internas de los inductores, cabe aclarar que la resistencia interna
de los capacitores ESR (resistencia efectiva serie) no será tenida en cuenta debido
a que complica el proceso de cálculo y no aporta demasiado al resultado obtenido.
7.1.6.5. Pérdidas en el diodo
A la hora de hablar del diodo real, se debe tener en cuenta una caída de tensión
asociada al mismo, además de ello, se tendrá una pequeña resistencia interna en
conducción, estos factores deberán establecerse a partir de las hojas de datos de
los dispositivos seleccionados en el numeral anterior.
El diodo resultante para este trabajo, consta de una fuente de tensión en serie con
una resistencia.
7.1.6.6. Pérdidas en el transistor
Idealmente, el transistor MOSFET se comporta como un interruptor controlado por
voltaje, en el cual se tiene la característica que al conducir la corriente que circula
por el mismo tiende al infinito, debido a que la resistencia para este caso es nula,
caso contrario, al cerrarse, la corriente que circula por el transistor es cero, debido
a que la impedancia es infinita entre sus terminales.
Dado que el caso real no tiene nada que ver, se presentan cambios en el proceso
descrito anteriormente, primero que todo, al momento de activación por GATE del
transistor entre los terminales DRAIN y SOURCE del mismo se presenta una
pequeña resistencia, conocida como resistencia de encendido, esta tiene un valor
muy pequeño, generalmente en el orden de los 𝑚Ω.
Esta resistencia de encendido, hace que la tensión en los terminales aumente en
función de la corriente que circule, por lo tanto, se tendrá una disipación de potencia
en el dispositivo. Al momento de desactivar el transistor, entre los terminales del
transistor DRAIN y SOURCE se tendrá una muy alta impedancia, la cual, a grandes
niveles de tensión podría generar un paso de corriente en el orden de los µ𝐴. Esta
última es tan pequeña, que no se tendrá en cuenta en el proceso de inclusión de
pérdidas.
El equivalente resultante consiste en una resistencia de encendido en el momento
en que el transistor conduce, y un circuito abierto en caso contrario.
7.1.6.7. Pérdidas en los inductores
En el caso de los inductores ideales, según la ley de Faraday, la tensión entre los
terminales de un inductor es igual a cero. Esto, de forma teórica, debido a que, en
la práctica, la construcción de un inductor requiere un bobinado de cobre alrededor
de un núcleo el cual varia su material en función de la frecuencia de conmutación y
corriente a la que trabaje el inductor.
El material conductor el cual es usado para este proceso cuenta con una muy
pequeña resistencia la cual depende principalmente del material y la cantidad del
mismo que sea usado. En consecuencia, al presentarse dicha oposición al paso de
corriente existirá una pequeña de caída de tensión en el inductor la cual varía en
función de la corriente que circule en ese momento por el material conductor.
Es por ello, que el equivalente usado para este trabajo consiste en una resistencia
la cual modela la resistencia generada por el material y en serie a esta un inductor
ideal.
7.1.6.8. Simulación con pérdidas
Una vez se tienen en cuenta las pérdidas de los dispositivos, se procede a hallar la
gráfica que define la ganancia del convertidor en función del ciclo útil, esto con el fin
de verificar si en la práctica sería posible realizar la elevación de voltaje deseada
teniendo en cuenta las pérdidas asociadas a los dispositivos. Para realizar dicha
verificación, se deben plantear de nuevo las ecuaciones que definen el circuito y se
debe llegar a la siguiente expresión:
𝑀(𝐷) =
𝑉𝑜
𝑉𝑖 (39)
El circuito con pérdidas planteado es el siguiente:
Ilustración 27 - Elevador (boost) cuadrático con pérdidas. Fuente: Autor.
Se plantea el circuito para el tiempo 1, en el cual el transistor conduce:
Ilustración 28 - Elevador (boost) cuadrático con pérdidas tiempo 1. Fuente: Autor.
Las ecuaciones de malla y de nodo obtenidas son las siguientes:
𝑉𝐿1𝑂𝑁 = 𝑉𝑖 − 𝑉𝑑1 − 𝑖𝐿1(𝑟𝐿1 + 𝑟𝑜𝑛) + 𝑖𝐿2 𝑟𝑟𝑜𝑛 (40)
𝑉𝐿2𝑂𝑁 = 𝑉𝐶1 − 𝑖𝐿1 𝑟𝑟𝑜𝑛 − 𝑖𝐿2(𝑟𝐿2 + 𝑟𝑜𝑛) (41)
𝑖𝐶1𝑂𝑁 = − 𝑖𝐿2 (42)
𝑖𝐶2𝑂𝑁 = −
𝑉𝑜
𝑅 (43)
Para el tiempo 2, en que el transistor se encuentra abierto, incluyendo pérdidas de
los elementos el circuito resultante es el siguiente.
Ilustración 29 - Elevador (boost) cuadrático con pérdidas tiempo 2. Fuente: Autor.
Las ecuaciones de malla y de nodo obtenidas para este tiempo son las siguientes:
𝑉𝐿1𝑂𝐹𝐹 = 𝑉𝑖 − 𝑉𝐶1 − 𝑉𝑑2 − 𝑖𝐿1(𝑟𝐿1 + 𝑟𝑑2) (44)
𝑉𝐿2𝑂𝐹𝐹 = 𝑉𝐶1 − 𝑉𝐶2 − 𝑉𝑑3 − 𝑖𝐿2(𝑟𝐿2 + 𝑟𝑑3) (45)
𝑖𝐶1𝑂𝐹𝐹 = 𝑖𝐿1(1 − 𝐷) − 𝑖𝐿2 (46)
𝑖𝐶2𝑂𝐹𝐹 = 𝑖𝐿2(1 − 𝐷) −
𝑉𝑜
𝑅 (47)
Con estas ecuaciones, se halla el modelo conmutado del convertidor, el cual consta
del siguiente proceso:
𝑥(𝑡) = 𝑥𝑂𝑁 ∗ 𝐷 + 𝑥𝑂𝐹𝐹 ∗ (1 − 𝐷) (48)
Aplicando esta fórmula a todas las variables de estado del convertidor, se llega al
siguiente grupo de ecuaciones:
𝑉𝐿1 = 𝑉𝑖 − 𝑉𝐶1(1 − 𝐷) − 𝑉𝑑2(1 − 𝐷) − 𝑉𝑑1𝐷 − 𝑖𝐿1[𝐷𝑟𝑜𝑛 + 𝑟𝐿1 + 𝑟𝑑2(1 − 𝐷)] + 𝑖𝐿2 𝐷 𝑟𝑜𝑛 (49)
𝑉𝐿2 = 𝑉𝐶1 − 𝑉𝐶2(1 − 𝐷) − 𝑉𝑑3(1 − 𝐷) − 𝑖𝐿1 𝐷 𝑟𝑜𝑛 − 𝑖𝐿2[𝐷𝑟𝑜𝑛 + 𝑟𝐿1 + 𝑟𝑑2(1 − 𝐷)] (50)
𝑖𝐶1 = 𝑖𝐿1(1 − 𝐷) − 𝑖𝐿2 (51)
𝑖𝐶2 = 𝑖𝐿2(1 − 𝐷) −
𝑉𝑜
𝑅 (52)
Una vez se tiene este grupo de ecuaciones, se debe tener en cuenta que el análisis
a realizar tendrá lugar en los valores de estado estacionario, por lo tanto, se debe
tener en cuenta que las variables que definen la dinámica de cada variable de
estado, es decir 𝑉𝐿1, 𝑉𝐿2, 𝑖𝐶1, 𝑖𝐶2 serán igualadas a cero. Realizado este
procedimiento, se llega a que la función 𝑀(𝐷) =𝑉𝑜
𝑉𝑖 resultante, es la siguiente:
𝑀(𝐷) =
1 − (𝑉𝑑3(1 − 𝐷)2 + 𝑉𝑑2(1 − 𝐷) + 𝑉𝑑1
𝑉𝑖)
[((1 − 𝐷)2 +𝐷𝑟𝑜𝑛
𝑅(1 − 𝐷)+
𝐷𝑟𝑜𝑛 + 𝑟𝐿2 + 𝑟𝑑3(1 − 𝐷)𝑅
) +𝐷𝑟𝑜𝑛 + 𝑟𝐿1 + 𝑟𝑑2(1 − 𝐷)
𝑅(1 − 𝐷)2 −𝐷𝑟𝑜𝑛
𝑅(1 − 𝐷)]
(53)
A partir de la función anterior, se debe realizar un barrido del ciclo útil 0 ≤ 𝐷 < 1,
para ello, se realizó una función en MATLAB, la cual está dentro de los anexos del
proyecto, esta se encarga de realizar el barrido y la gráfica de ganancia resultante.
Este proceso se hará para diferentes valores de resistencia en los inductores, esto
debido a que las pérdidas asociadas a los dispositivos semiconductores son
constantes.
Nombre Valor
𝑟𝑜𝑛 53.2 𝑚Ω
𝑟𝐷1 70 𝑚Ω
𝑉𝐷1 1.4 𝑉
𝑟𝐷2 75 𝑚Ω
𝑉𝐷2 1.5 𝑉
𝑟𝐷3 600 𝑚Ω
𝑉𝐷3 1.2 𝑉
La tabla anterior define las pérdidas de cada dispositivo, en esta se encuentran
valores aproximados tomados de las hojas de datos de cada dispositivo. Ahora, se
varían los valores de la resistencia de los devanados de los inductores, con el fin de
definir un criterio de resistencia máximo, el cual permitiría que se lograra la ganancia
deseada. Los valores elegidos fueron:
𝑟𝑙1 = 𝑟𝑙2 = (0.0001% , 0.001% , 0.01% , 0.1%) ∗ 𝑅 (54)
Teniendo en cuenta estos valores, al ejecutar el script, se obtiene la siguiente gráfica
de salida:
Ilustración 30 - Grafica de ganancia para diferentes valores de resistencias en los inductores. Fuente: Autor.
Se puede observar que la ganancia tiene grandes variaciones en función de las
resistencias de los inductores elegidas, por lo tanto, se llega a la conclusión de que
para llegar a la ganancia la resistencia de los inductores el devanado no debe
superar idealmente los 480𝑚Ω. Los inductores usados para este proyecto, arrojaron
los siguientes valores de resistencia interna:
𝑟𝑙1 = 0.4 Ω (55)
𝑟𝑙2 = 0.2 Ω (56)
Realizando la gráfica con los valores anteriores de resistencia, se tiene la siguiente
gráfica:
Ilustración 31 - Grafica ganancia para pérdidas del proyecto. Fuente: Autor.
Se selecciona el valor de ciclo útil con pérdidas para corroborar que el valor de la
ganancia corresponde al necesario para alcanzar los 380 𝑉𝑑𝑐, por lo cual, se utiliza
la siguiente expresión y se reemplazan los valores:
𝑀(𝐷) =
𝑉𝑜
𝑉𝑖→ 𝑉𝑜 = 𝑉𝑖 ∗ 𝑀(𝐷) (57)
𝑉𝑜 = 𝑉𝑖 ∗ 𝑀(0.787) (58)
𝑉𝑜 = 24 𝑉 ∗ 15.87 (59)
𝑉𝑜 = 380.16 𝑉 (60)
Cumpliendo estos requerimientos de diseño, se puede concluir que para los
elementos usados (transistor y diodos) se podrá obtener la ganancia necesaria de
salida para cumplir con las finalidades del proyecto, un bus DC de 380 𝑉𝑑𝑐 a una
potencia de 300 𝑊.
7.2. Modelado y funciones de transferencia del convertidor elevador
(boost) cuadrático
En este apartado se realiza el análisis dinámico del convertidor, para empezar, se
definen de las ecuaciones del modelo conmutado del convertidor las matrices de
estado, partiendo de la representación general de variables de estado dada por:
(𝑡) = 𝐴 𝑥(𝑡) + 𝐵 𝑢(𝑡) (61)
𝑦(𝑡) = 𝐶 𝑥(𝑡) + 𝐷 𝑢(𝑡) (62)
Donde A es la matriz de estados, B es la matriz de entradas, C es la matriz de salida
y D es la matriz de transmisión directa. Partiendo de las ecuaciones diferenciales
que definen el convertidor ideal, las matrices de estado que definen el convertidor
son las siguientes:
(𝑡) = [0 0 −
(1 − 𝑑)
𝐿1 0 0 0
1
𝐿2 −
(1 − 𝑑)
𝐿2 (1 − 𝑑)
𝐶1
−1
𝐶1 0 0 0
(1 − 𝑑)
𝐶2 0 −
1
𝑅𝐶2 ] [𝑖𝐿1 𝑖𝐿2 𝑣𝐶1 𝑣𝐶2 ]
+ [𝑉𝑖
𝐿1 0 0 0 ] 𝑢(𝑡)
(63)
𝑦(𝑡) = [0 0 0 1 ] 𝑥(𝑡) + [0] 𝑢(𝑡) (64)
Estas matrices, sin embargo, son de naturaleza no lineal, lo cual, no permitiría
realizar el control a menos que se tengan conocimientos avanzados para control de
sistemas no lineales. Para este caso, se realizará un proceso de linealización por
excitación de variables, con el fin de fijar un punto de operación para la tensión de
salida. Lo que se busca, es poder tener como señal de control el ciclo útil del
convertidor, es decir, se busca llegar a la siguiente función de transferencia:
𝐺(𝑠) =
𝑣𝑐2
(65)
Para ello, se dirá que cada variable de estado en las que se presentarían
perturbaciones, por lo cual, se proponen las siguientes igualdades:
𝑖𝐿1 = 𝐼𝐿1 + 𝑖𝐿1 (66)
𝑖𝐿2 = 𝐼𝐿2 + 𝑖𝐿2 (67)
𝑣𝐶1 = 𝑉𝐶1 + 𝐶1 (68)
𝑣𝐶2 = 𝑉𝐶2 + 𝐶2 (69)
𝑑 = 𝐷 + (70)
Donde las variables notadas en mayúscula, corresponden al valor estacionario de
cada una de las variables de estado y el ciclo útil, y las variables notadas en
minúscula con el símbolo (~), serán tomadas como perturbaciones a las variables
de estado, por ello, el objetivo es llegar a las perturbaciones causadas en la tensión
de salida influenciadas por el ciclo útil, es decir lo mostrado en la ecuación (65).
Por lo tanto, reemplazando en las ecuaciones (18), (19), (20) y (21); las igualdades
dadas anteriormente:
𝐿1𝑑(𝐼𝐿1 + 𝑖 𝐿1)
𝑑𝑡= 𝑉𝑖 − (𝑉𝐶1 + 𝐶1) (1 − ( 𝐷 + )) (71)
𝐿2𝑑(𝐼𝐿2 + 𝑖 𝐿2)
𝑑𝑡= (𝑉𝐶1 + 𝐶1) − (𝑉𝐶2 + 𝐶2) (1 − ( 𝐷 + )) (72)
𝐶1𝑑(𝑉𝐶1 + 𝐶1)
𝑑𝑡= (𝐼𝐿1 + 𝑖 𝐿1) (1 − ( 𝐷 + )) − (𝐼𝐿2 + 𝑖 𝐿2) (73)
𝐶2𝑑(𝑉𝐶2 + 𝐶2)
𝑑𝑡= (𝐼𝐿2 + 𝑖 𝐿2) (1 − ( 𝐷 + )) −
(𝑉𝐶2 + 𝐶2)
𝑅 (74)
Realizando el despeje de cada una de las ecuaciones y realizando separación de
variables, se pueden despejar los modelos de gran señal o estado estacionario, las
cuales están notados con letras mayúsculas, y el modelo de pequeña señal o
dinámico. Los resultados para cada uno de los modelos, se muestra a continuación:
7.2.1. Modelo de gran señal
𝑑𝑖𝐿1
𝑑𝑡= 0 = 𝑉𝑖 − 𝑉𝐶1(1 − 𝐷) → 𝑉𝐶1 =
𝑉𝑖
(1 − 𝐷) (75)
𝑑𝑖𝐿2
𝑑𝑡= 0 = 𝑉𝐶1 − 𝑉𝐶2(1 − 𝐷) → 𝑉𝐶2 =
𝑉𝑖
(1 − 𝐷)2 (76)
𝑑𝑣𝐶1
𝑑𝑡= 0 = 𝐼𝐿1(1 − 𝐷) − 𝐼𝐿2 → 𝐼𝐿1 =
𝑉𝑖
(1 − 𝐷)4𝑅 (77)
𝑑𝑣𝐶2
𝑑𝑡= 0 = 𝐼𝐿2(1 − 𝐷) −
𝑉𝐶2
𝑅→ 𝐼𝐿2 =
𝑉𝑖
(1 − 𝐷)3𝑅 (78)
7.2.2. Modelo de pequeña señal
𝑑𝑖𝐿1
𝑑𝑡= −𝐶1(1 − 𝐷) + 𝑉𝐶1 (79)
𝑑𝑖𝐿2
𝑑𝑡= 𝐶1 − 𝐶2(1 − 𝐷) − 𝑉𝐶2 (80)
𝑑𝐶1
𝑑𝑡= −𝑖𝐿1(1 − 𝐷) − 𝑖 𝐿2 − 𝐼𝐿1 (81)
𝑑𝐶2
𝑑𝑡= 𝑖 𝐿2(1 − 𝐷) −
𝐶2
𝑅− 𝐼𝐿2 (82)
Partiendo de las ecuaciones de pequeña señal, se plantea el siguiente conjunto de
matrices, las cuales permitirán hallar la función de transferencia de cualquiera de
las variables de estado en función de la variación del ciclo útil:
(𝑡) = [0 0 −(1 − 𝐷)
𝐿1
0 0 0 1
𝐿2
−(1 − 𝐷)
𝐿2
(1 − 𝐷)
𝐶1
−1
𝐶1
0 0 0 (1 − 𝐷)
𝐶2
0
−1
𝑅𝐶2
] 𝑥(𝑡)
+ [𝑉𝑖
(1 − 𝐷)𝐿1
𝑉𝑖
(1 − 𝐷)2𝐿2
−𝑉𝑖
(1 − 𝐷)4𝑅𝐶1
−𝑉𝑖
(1 − 𝐷)3𝑅𝐶2
] 𝑢(𝑡)
(83)
𝑦(𝑡) = [0 0 0 1 ] 𝑥(𝑡) + [0] 𝑢(𝑡) (84)
Estas matrices, corresponden a la linealización de variables del convertidor, por ello,
se procede a realizar una función en MATLAB donde se cargan y a partir del
comando 𝑠𝑠2𝑡𝑓 se obtiene la función de transferencia del convertidor:
Ilustración 32 - Función de transferencia linealizada boost cuadrática. Fuente: Autor.
7.3. Diseño y simulación del controlador
Una vez obtenida la función de transferencia del convertidor, se procede a diseñar
un controlador, con el fin de mantener los 380𝑉𝐷𝐶 constantes ante cambios de carga.
Debido a que se realizará el control digital, se deberá discretizar la función de
trasferencia hallada en el numeral anterior, para ello, se propone el siguiente lazo
de control, el cual muestra cuáles serán los modelos adicionales asociados a tener
en cuenta.
Ilustración 33 - Diagrama de bloques del sistema. Fuente: Autor.
7.3.1. Periodo de muestreo
Para este caso, el periodo de muestreo, corresponderá al mismo valor de la
frecuencia de conmutación, quiere decir que será de:
𝐹𝑠 = 30𝑘𝐻𝑧 (85)
𝑇𝑠 =
1
𝐹𝑠=
1
30𝑘𝐻𝑧= 33.33𝜇𝑠 (86)
Una vez se tienen identificados estos elementos y que es cada uno, por medio de
una función en MATLAB, se realiza la discretización de la función de transferencia,
la cual arroja el siguiente resultado:
Ilustración 34 - Función de transferencia discretizada. Fuente: Autor.
Con esto, se procede a Simulink para finalizar el diseño del controlador, el cual, será
un PID discreto, el cual, será sintonizado con uno de los bloques disponibles en el
mismo programa. Para iniciar, se propone en bloques todo el diseño del lazo de
control a implementar, el cual será:
Ilustración 35 - Diagrama simulado en SIMULINK- Fuente: Autor.
Cabe aclarar que, para este modelo, no se incluye retenedor de orden cero ni delay
unitario, debido a que se realizó por código anteriormente, por lo cual, se procede a
configurar el bloque PID(z) de Simulink:
Ilustración 36 - Panel de configuración PID discreto SIMULINK. Fuente: Autor.
Se procede a establecer el tiempo de muestreo y se desactiva el filtro derivativo,
seguido a esto, se selecciona la opción Apply para guardar cambios y se procede a
darle a la opción Tune, el cual, despliega la siguiente ventana:
Ilustración 37 - Respuesta del control sintonizado. Fuente: Autor.
Con las opciones del lado superior podemos evaluar la respuesta al escalón en lazo
cerrado, se busca entonces que la respuesta del controlador sea lo más rápida
posible, sin que se presenten sobre pasos muy altos, por lo cual se obtiene que el
valor de las ganancias es de:
𝑘𝑝 = 9.82599398950361𝑒 − 06 (87)
𝑘𝑖 = 0.0127574072131441 (88)
𝑘𝑑 = 1.89204115437896𝑒 − 09 (89)
Con estos valores, se procede a evaluar directamente con la simulación del
convertidor el comportamiento ante cambios de carga, para lo cual se tiene el
siguiente esquema:
Ilustración 38 - Elevador (boost) cuadrático con control digital en SIMULINK. Fuente: Autor.
En el esquema anterior se realiza un cambio de carga al convertidor pasados 0.4s,
el cambio realizado pasa de exigir a la salida del convertidor 20𝑊 a 300𝑊. La razón
de empezar con un mínimo de 20W radica en que, a potencias de salida menores,
las corrientes de los inductores son discontinuas, modo de operación el cual no se
contempla en el proyecto. La respuesta dada por el controlador fue la siguiente:
Ilustración 39 - Respuesta voltaje de salida ante cambios de carga. Fuente: Autor.
Se puede evidenciar que ante un cambio fuerte en la potencia de salida el
controlador se estabiliza en poco tiempo y sin sobrepasos en la tensión de salida.
Ilustración 40 - Simulación del controlador digital en código. Fuente: Autor.
Ahora, con el bloque “function” de MATLAB se procede a simular la implementación
en una DSP por medio de código, para la cual se realiza el esquema mostrado
anteriormente. El proceso a realizar es tomar la función en el dominio de Z dada por
MATLAB y pasarla a una ecuación en diferencias. Luego de esto, se procede a
programar la ecuación en diferencias hallada anteriormente, teniendo así:
Ilustración 41 - Código implementado en SIMULINK. Fuente: Autor.
La respuesta obtenida con el código anterior es:
Ilustración 42 - Corroboración respuesta de voltaje. Fuente: Autor.
Se puede ver que la respuesta de la ecuación en diferencias corresponde con la
función del controlador proporcionada por MATLAB, por lo cual se puede proceder
a implementar el código anterior con sus respectivos ajustes y configuraciones en
la DSP.
7.4. Montaje y programación
A la hora de implementar el convertidor, se realizaron varias pruebas, las cuales
serán expuestas a detalle más adelante. Además de los elementos
semiconductores, los demás elementos usados para la construcción del convertidor,
etapa de sensado y acondicionamiento de la señal de disparo, se describen a
continuación:
7.4.1. TMS320F28335 Experimenter Kit
Esta tarjeta de control basada en el TMS320F28335 es un conjunto integrado de
desarrollo, el cual integra una serie de módulos de control con un ambiente de
desarrollo gratuito para la creación y prueba de diversos proyectos. Cuenta además
con la opción de depuración en tiempo real, con el cual se puede llevar observar
paso a paso el funcionamiento del desarrollo implementado.
Algunos de los módulos con los que cuenta y serán utilizados para este proyecto
son los siguientes:
7.4.2. GPIO
La unidad digital de entrada/salida de la DSP cuenta con una totalidad de 88 pines
destinados a este propósito los cuales se dividen en 3 puertos, llamados GPIO-A, B
y C. Este módulo cuenta con algunas configuraciones tales como la acción que se
desea (entrada o salida), calificador de entrada y resistencia de pull-up.
Ilustración 43 - Diagrama de bloques GPIO. Fuente: Documentación Texas Instruments
Para el proyecto, el uso de este puerto permitirá la activación de LEDS indicadores
del estado actual de la máquina, además de permitir la lectura de los pines de
seguridad del driver y los pulsadores de encendido y de apagado.
7.4.3. PWM
Este módulo, cuenta con la opción de generar tres tipos de contador para generar
una rampa de comparación (ascendente, descendente y simétrica). Esta señal junto
a dos comparadores permite generar una señal de frecuencia fija a la cual puede
modularse el ancho de pulso.
Ilustración 44 - Diagrama de bloques módulo PWM. Fuente: Documentación Texas Instruments.
Para el proyecto, el uso de este módulo tiene dos fines: El control del ancho de pulso
para el disparo del convertidor y usar una señal con la que pueda fijarse una
frecuencia de muestreo para el ADC.
7.4.4. ADC
Ilustración 45 - Descripción de ADC. Fuente: Documentación Texas Instruments.
Para este procesador, tiene una resolución de 12 bits con un rango de 0 a 3V, con
la opción de toma de muestras a partir de 4 fuentes. Para este caso, se utilizará una
sola entrada analógica la cual tendrá una frecuencia de muestreo fijada por el
periférico de PWM.
7.4.5. Driver para conmutación del transistor
El driver usado para este proyecto, es el ISO5451, el cual es elegido debido a que
puede operar a partir de los 3.3V de la DSP en su parte de control, además, brinda
protección a la misma al ser aislada de la etapa de potencia.
Ilustración 46 - Diagrama interno simplificado Driver. Fuente: Hoja de datos.
Este driver incluye algunas protecciones diseñadas para la protección del transistor,
además de realizar verificación en la operación de las 2 fuentes del driver.
Ilustración 47 - Configuración etapa de control Driver. Fuente: Hoja de datos.
Del lado de control, se tienen los pines Vcc1 y GND1, los cuales corresponden a la
fuente de alimentación proporcionada por la DSP, es decir 3.3V. El pin RDY indica
si las dos fuentes de alimentación están operando, su estado es 1 lógico cuando
todo es correcto. El pin FLT indica si hubo una detección por DESAT. El pin RST es
una entrada del driver, el cual es encargado de llevar una señal de RESET.
Ilustración 48 - Configuración etapa de potencia Driver. Fuente: Hoja de datos.
Del lado de potencia se tiene una alimentación de disparo dada por Vcc2, GND2 y
Vee2 lo cual permite que sea usada una fuente dual para el disparo y apagado del
transistor. El pin DESAT, se encarga de monitorear la tensión del DRAIN o colector
del transistor. El pin OUT es la salida a GATE de disparo del IGBT o MOSFET, esta
salida puede entregar hasta 2.5 A pico. Por último, el pin CLAMP, es usado para la
protección contra estática del transistor.
Ilustración 49 - Esquemático del driver implementado. Fuente: Hoja de datos.
Para la implementación, se usará una tarjeta la cual usa la polarización dual para el
disparo del transistor, esta además cuenta con reguladores para tomar la
alimentación directo de los 24V usados en el convertidor.
7.4.6. Etapa de sensado de voltaje
Para esta etapa se utilizará un amplificador diferencial aislado, el cual permite
mantener separada la etapa de control de la etapa de potencia. Este integrado
permite medir sobre elementos no referenciados a tierra. Los integrados usados
para la implementación de esta etapa son:
7.4.7. AMC1200
Ilustración 50 - Diagrama interno AMC1200. Fuente: Hoja de datos.
Este es un amplificador operacional diferencial, con doble fuente de alimentación el
cual cuenta con una barrera aislante la cual permite la protección del dispositivo de
control, a la vez que se realiza la medida con gran precisión, la ganancia por cada
250mV es de 2V con un nivel DC de 1.29V, dando un total de 8V/V.
7.4.8. THS4521
Ilustración 51 - Montaje amplificador operacional rail to rail THS4521. Fuente: Hoja de datos.
Este, es un amplificador diferencial de bajo consumo tipo “rail to rail” el cual es usado
para acondicionar la señal obtenida del AMC1200 para lograr abarcar el rango del
ADC de la DSP, que, como ya se ha detallado, es de 0V a 3V.
Ilustración 52 - Modelo simplificado para la etapa de censado. Fuente: Autor.
En la Ilustración 52 puede verse de forma simplificada la construcción del circuito de
censado completo con los dos amplificadores. Este plano, puede dividirse en tres
etapas: Divisor de tensión medida, ganancia del operacional aislado y ganancia de
acondicionamiento de la señal para lectura con ADC.
La primera etapa, busca reducir la tensión medida en un rango donde el máximo
corresponda a una tensión de 250𝑚𝑉, debido que, a esa tensión, la salida del AMC
corresponde al máximo valor de salida, es decir 3 𝑉. La tensión que se estableció
como máximo para lograr la tensión máxima del AMC es de 600 𝑉 a la salida del
convertidor.
La etapa con el AMC, como se había descrito anteriormente, da una ganancia de
8𝑉/𝑉 a la tensión de entrada. Por último, el THS4521 con las resistencias de 3𝑘Ω
y 2𝑘Ω, toma la tensión dada por la etapa anterior y le da una ganancia de 1.5, con
el fin de que a 600𝑉 la tensión resultante del sensor sea de 3𝑉, por lo cual, se tiene
un amplio rango de 0 a 600𝑉 para aprovechar el rango de lectura en el ADC.
7.4.9. Algoritmo implementado en DSP
A modo general, el sistema cuenta con dos pulsadores: arranque y parada, además,
se tienen dos pines destinados a la lectura de los indicadores FAULT y RDY del
driver. Estas 4 entradas, se toman por medio de interrupciones por hardware, lo cual
facilita tener el control del convertidor ante parada dada por el usuario o alguno de
los indicadores del driver, haciendo que ante fallos haya un apagado rápido del
convertidor y puedan evitarse daños o minimizarlos.
El módulo PWM se utiliza para el disparo del transistor y para fijar la frecuencia de
muestreo del convertidor, en conjunto con el módulo ADC. Los puertos de propósito
general se utilizan para la lectura de los pulsadores y driver además del encendido
de leds indicadores del estado del convertidor.
8. RESULTADOS DEL PROYECTO
8.1. Pruebas en lazo abierto
El primer prototipo en váquela universal, contaba con conectores para cada uno de
los elementos. Se realizó una prueba a plena carga (300𝑊), teniendo a la salida el
siguiente resultado:
Ilustración 53 - Tensión y corriente de salida a plena carga en lazo abierto. Fuente: Autor.
8.1.1. Resultados primera prueba:
- Los conectores de entrada a la fuente y del primer inductor no realizan un buen
contacto, por lo cual, el montaje presentó fallos de forma esporádica.
- La temperatura subió de forma muy abrupta, lo cual no permitió que la prueba a
plena carga durara más de 10 minutos. Del mismo modo, el diodo tres se rompió
debido a la falta de disipación de calor.
- Al estar sujetos por conectores algunos de los elementos, se llegaron a presentar
vibraciones en algunos de los componentes.
- Fue necesario subir la frecuencia del PWM de disparo, debido a que por el ruido
presente la protección de DESAT del driver no permitía pasar del nivel de
tensión, una vez se conmutaba a 50𝑘𝐻𝑧, se pudo llegar a la tensión
disminuyendo el ruido del circuito.
De este primer prototipo, se llega a la conclusión de que es necesario soldar las
capacitancias directamente a la placa, además de realizar modificaciones a los
conectores de entrada y la primera inductancia, debido a que los usados
anteriormente no permitían un buen contacto, lo cual introducía ruidos al montaje y
hacía que algunos de los elementos empezaran a vibrar.
Debido al aumento descontrolado de la temperatura, se agregó para la segunda
prueba un ventilador del lado de los componentes, además de agregar un disipador
al tercer diodo.
La frecuencia de conmutación aumenta para el segundo prototipo, debido a que por
ruido la señal de DESAT actúa al llegar a cierto nivel de tensión, sin embargo, el
disparo no representa un verdadero peligro para el transistor, esto se debe al ruido
presente en el convertidor, el cual puede deberse a la fuente de entrada.
Una vez realizados los cambios, se realizaron pruebas a plena carga de nuevo, esta
vez, incluyendo la etapa de sensado, los resultados, fueron los siguientes:
Ilustración SEQ Ilustración \* ARABIC 54 - Tensión y corriente de salida a plena carga segunda prueba. Fuente: Autor.
8.1.2. Resultados segunda prueba:
- La temperatura se mantuvo mucho más estable, sin embargo, es necesario
agregar algún ventilador más para mejorar el flujo de aire. Del mismo modo, es
necesario cambiar el disipador del tercer diodo, con esto se espera poder
mantener el montaje a plena carga con buena temperatura en los componentes,
ayudando a mantener una larga duración de los mismos.
- Al cambiar los terminales de la fuente de alimentación y la primera inductancia,
se mejora el contacto de los mismos con el montaje. Del mismo modo, el soldar
los capacitores directamente a la placa ayudó a reducir el ruido.
- La fuente usada presenta comportamientos bruscos en los transitorios de la
corriente, por lo cual, la corriente de los dos inductores, así como la de salida,
presentan formas diferentes de lo esperado.
- La salida del sensor presenta algunos picos de tensión los cuales pueden
terminar siendo perjudiciales para el ADC, por lo tanto, se optará por
implementar alguna etapa posterior para filtrar o limitar esos picos.
Ilustración SEQ Ilustración \* ARABIC 55 - Salida del sensor. Fuente: Autor.
8.2. Implementación en lazo cerrado
Una vez se tenía certeza del funcionamiento del convertidor a 300𝑊, se agrega
a la etapa de sensado a la salida un capacitor de 2.2𝜇𝐹 para reducir el ruido de
la señal dada por el sensor. Teniendo los cambios pertinentes en el montaje se
implementó la ecuación en diferencias del controlador PID proporcionado por
MATLAB, agregando todas las correcciones anteriores, se utilizó una etapa de
contactores a 120𝑉 para realizar el cambio de cargas, esto debido al nivel de
tensión manejado.
Ilustración 56 - Esquemático general de lógica cableada. Fuente: Autor.
Estos, a su vez, fueron controlados con un relé, para el cual fue implementada
una etapa de transistor y diodo en inverso, el transistor fue disparado con un
IR2110 y la señal generada para la conmutación del driver fue dada por un
generador.
Ilustración 57 - Circuito de cambio de cargas. Fuente: Autor.
Los cambios de carga se realizaban cada 2 segundos. Los resultados obtenidos
a la salida del convertidor fueron los siguientes:
Ilustración 58 - Tensión y corriente de salida con perturbaciones. Fuente: Autor.
Nota:
𝐸𝑙 𝑐𝑎𝑛𝑎𝑙 𝐴 =
200 𝑉
𝐷𝑖𝑣 (90)
𝐶𝑎𝑛𝑎𝑙 𝐵 =
1 𝐴
𝐷𝑖𝑣 (91)
Se puede observar cómo la tensión de salida se mantiene ante cambios en la
carga, de mismo modo, se puede ver como se tiene una tensión de salida cuyo
valor medio a lo largo del tiempo se mantiene en 370𝑉𝐷𝐶 y la corriente oscila
entre los cambios de mínima y máxima carga del convertidor de modo que, se
puede evidenciar que el control implementado mantiene la tensión del bus de
salida ante grandes cambios de carga.
Ilustración 59 - Tensión de salida y corriente de entrada ante cambios de carga. Fuente: Autor.
𝐸𝑙 𝑐𝑎𝑛𝑎𝑙 𝐴 =
200 𝑉
𝐷𝑖𝑣 (92)
𝐶𝑎𝑛𝑎𝑙 𝐵 =
10 𝐴
𝐷𝑖𝑣 (93)
Se puede apreciar también cómo se comporta la corriente de entrada cambiando
entre la mínima y la máxima carga, del mismo modo se puede evidenciar como
el control mantiene la tensión del bus DC ante grandes cambios de carga.
Ilustración 60 - Voltaje y corriente de salida a plena carga. Fuente: Autor.
𝐸𝑙 𝑐𝑎𝑛𝑎𝑙 𝐴 =
200𝑉
𝐷𝑖𝑣 (94)
𝐶𝑎𝑛𝑎𝑙 𝐵 =
500𝑚𝐴
𝐷𝑖𝑣 (95)
En conclusión, se logra una potencia de salida de 300𝑊, basado en la figura (carga
total del sistema), se puede realizar el cálculo experimental de la potencia, la cual
da como resultado:
𝑃𝑜 = 𝑉𝑜𝐼𝑜 (95)
𝑃𝑜 = (370𝑉𝑑𝑐)(818𝑚𝐴) (96)
𝑃𝑜 = 302.66 𝑊 (97)
Con esto, se verifica que el proceso de diseño y simulación realizados logran dar la
ganancia de salida deseada a partir de una tensión de 24𝑉.
9. IMPACTO SOCIAL
En los últimos años el uso de medios de generación de energía alternativa ha venido
creciendo debido a que el costo de fabricación de paneles solares ha ido
disminuyendo a la vez que ha aumentado su eficiencia.
Además, tener la opción de almacenar la energía generada, hace que la
implementación de sistemas de generación alternativa sea más factible, sin
embargo, el proceso de transformación y adecuación de la energía para el consumo
del usuario final sigue requiriendo topologías cuya eficiencia sea elevada, por lo
cual, tener las consideraciones necesarias para la construcción más óptima de un
convertidor conmutado permite abrir puertas a la investigación en pro de disminuir
el desperdicio de energía y con ello, cuidar al planeta.
Aunque existen productos destinados a este fin en el mercado, se deja todo el
proceso de diseño y consideraciones a tener en cuenta con el fin de diseñar una
solución más robusta y eficiente en un futuro. Esto, ayuda a generar nuevas
alternativas, las cuales puedan desarrollarse en masa y soportar las soluciones
existentes en el mercado.
10. CONCLUSIONES
Es posible implementar un elevador DC/DC con una salida superior a 350𝑉𝐷𝐶 a partir
de una tensión de 24𝑉, sin embargo, hay que tener en cuenta las pérdidas
asociadas a cada elemento de la topología usada (elevador (boost) cuadrático), ya
que si se llegan a usar elementos semiconductores de muy baja calidad o inductores
con una resistencia interna muy alta la ganancia se verá seriamente afectada en
conjunto con la eficiencia.
Del mismo modo, se tiene que ante grandes cambios de carga el controlador
implementado es capaz de mantener el bus de salida, sin embargo, se tienen fuertes
caídas y picos altos de tensión durante pequeños instantes de tiempo. Esto en la
práctica podría desencadenar en un daño a los componentes posteriores que
busquen alimentarse con este convertidor.
Sin embargo, esto se debe a que el controlador diseñado solo actúa en función de
una sola de las cuatro variables posibles a controlar en el convertidor, razón por la
cual puede concluirse que un control que tenga en cuenta alguna de las corrientes
en los inductores o la tensión en el primer capacitor, tendrá como resultado una
respuesta con variaciones mucho menores en amplitud ante grandes cambios de
carga.
Esta topología logra tener una gran ganancia, sin embargo, esto trae como
consecuencia el ruido generado por la conmutación del convertidor, ya que a mayor
tensión del bus DC las variaciones generadas en alta frecuencia por el transistor
generan gran ruido en el sistema, esto trae consigo problemas de conexión de la
tarjeta y afectación en la señal medida por el sensor, motivo por el cual es necesaria
la implementación de un filtro pasa bajos a la salida de la etapa de sensado de
voltaje.
11. RECOMENDACIONES
Se debe evitar tocar directamente la salida del convertidor, son más de 350𝑉𝐷𝐶, por
lo cual puede generar descargas, las cuales pueden ser peligrosas. Los disipadores
deben estar aislados de los componentes, con el fin de evitar corto circuito o causar
algún daño al tocarlos.
Se debe crear un circuito impreso pensado en acomodar los componentes de
potencia (diodos y transistor) en el espacio más reducido posible, teniendo mucho
cuidado con el ancho de las pistas, ya que la corriente que circula por ellas alcanza
casi a los 20𝐴𝐷𝐶.
La creación del circuito impreso puede disminuir considerablemente el ruido, esto,
ayudaría a hacer mucho más eficiente el sistema. En el diseño de la tarjeta se debe
presentar una buena separación entre la etapa de control y la etapa de potencia,
esto, hace referencia a las tierras del circuito, ya que la razón principal de usar un
driver y un sensor aislado, es proteger al máximo la tarjeta de control y aislarla de
los ruidos generados por el convertidor conmutado.
En el caso del driver, se debe entrar a estudiar al detalle los elementos de protección
del circuito, ya que ante ciertas situaciones se presentan falsos disparos en la
condición de DESAT. En el caso del sensor, fue necesario usar un capacitor de
2,2𝑢𝐹 para el filtro de salida con el fin de atenuar al máximo las altas frecuencias,
ya que debido a las conmutaciones se pudo evidenciar la desconexión de la DSP
del computador.
Al momento de realizar la depuración del programa con Code Composer Studio se
recomienda el uso de un cable USB lo más robusto posible, ya que el ruido generado
por el convertidor hace que se pierda el conocimiento de los valores actuales del
ADC y del ciclo útil, sin embargo, no altera en lo absoluto el funcionamiento de la
tarjeta, ya que mantiene la tensión del bus DC ante perturbaciones sin
sobrecalentarse o dañarse.
Para un trabajo futuro, se proponer hallar y comparar el costo de producción y
beneficios de este diseño con algunas de las ofertas presentadas en el mercado:
rendimiento y eficiencia, con el fin de determinar si esta solución puede llegar a ser
comercializada en serie y entrar a competir contra las soluciones presentes
actualmente en el mercado.
12. BIBLIOGRAFÍA
[1] M. K. Sahu, S. B. Santra and S. Mohapatra, "Closed loop control of a new non-
isolated quadratic boost converter," 2017 International Conference on
Communication and Signal Processing (ICCSP), Chennai, 2017, pp. 0024-0029.
[2] J. D. Navamani, J. M. Raj, K. Vijayakumar and A. Lavanya, "Analysis of modified
quadratic DC-DC boost converter," 2017 International Conference on Inventive
Systems and Control (ICISC), Coimbatore, 2017, pp. 1-5.
[3] N. Boujelben, F. Masmoudi, M. Djemel and N. Derbel, "Design and comparison
of quadratic boost and double cascade boost converters with boost
converter," 2017 14th International Multi-Conference on Systems, Signals &
Devices (SSD), Marrakech, 2017, pp. 245-252.
[4] A. M. S. S. Andrade and M. L. d. S. Martins, "Quadratic-Boost With Stacked
Zeta Converter for High Voltage Gain Applications," in IEEE Journal of Emerging
and Selected Topics in Power Electronics, vol. 5, no. 4, pp. 1787-1796, Dec. 2017.
[5] A. Mostaan, A. Abdelhakim, M. Soltani and F. Blaabjerg, "Single-phase
transformer-less buck-boost inverter with zero leakage current for PV
systems," IECON 2017 - 43rd Annual Conference of the IEEE Industrial Electronics
Society, Beijing, 2017, pp. 1536-1543.
[6] P. Apoorva and N. Amuthan, "LVRT of an two-stage photo voltaic inverter with
ZVT boost converter using adaptive DC link voltage control," 2017 International
Conference on Intelligent Computing and Control (I2C2), Coimbatore, 2017, pp. 1-
5.
[7] D. Sivaraj and M. Arounassalame, "Control of quadratic boost converter using
fractional order PID controller," 2017 Innovations in Power and Advanced
Computing Technologies (i-PACT), Vellore, 2017, pp. 1-6.
[8] A. B. K. Mukkapati, R. Kaur, K. Vijayakumar and S. Neeli, "Voltage regulation
of quadratic boost converter with fixed frequency sliding mode controller," 2017
IEEE International Conference on Electrical, Instrumentation and Communication
Engineering (ICEICE), Karur, 2017, pp. 1-6.
[9] O. P. Jaga, A. Tiwari and S. S. Soni, "Robust quadratic boost converter for fuel
cell application," 2017 3rd International Conference on Condition Assessment
Techniques in Electrical Systems (CATCON), Rupnagar, 2017, pp. 177-182.
[10] M. K. Sahu, S. B. Santra and S. Mohapatra, "Closed loop control of a new non-
isolated quadratic boost converter," 2017 International Conference on
Communication and Signal Processing (ICCSP), Chennai, 2017, pp. 0024-0029.
[11] MOJICA CASALLAS, Carlos Javier. M. Bogotá, 2017, pág. 40,43-46,50,75-
80. Diseño e implementación del control de velocidad para un motor de inducción
trifásico. Universidad Javeriana. Facultad de ingeniería electrónica.
[12] Rashid, Muhammad. Electrónica de potencia: Circuitos, dispositivos y
aplicaciones. Segunda Edición. Pensacola, Florida: Academic Press, 2001. Pag:
101-115, 211-224.
[13] Robert, Erickson. Maksimovic, Dragan. Fundamental of power electronics.
Segunda Edición. Boulder, Colorado: Kluwer Academic Publishers, 2004. Pag: 13-
22, 185-244.
[14] Katsuhiko, Ogata. Discrete Time Control Systems. Segunda Edición.
Minnesota: Pretice Hall, 1986. Pag: 13-14.
[15] Mohan, Ned. Undeland, Tore. Robbins, William. Power Electronics.
Converters, applications and desing. Second Edition. Minnesota: John Wiley &
Sons, 1986. Pag: 27-28.
13. ANEXOS
Funciones y código implementado en MATLAB para el diseño del convertidor:
function [R,Vc1,Vc2,IL1,IL2,L1,L2,C1,C2,D] =
ModeloIdeal(Fs,Vi,Vo,P,dvc1,dvc2,dil1,dil2)
R = (Vo)^2/P;
D = 1-sqrt(Vi/Vo);
%disp('---------------------------------')
%disp(' Valores en estado estacionario:')
IL1 = Vo/(R*((1-D)^2));
IL2 = Vo/(R*(1-D));
Vc1 = Vi/(1-D);
Vc2 = Vi/((1-D)^2);
L1 = (Vi*D)/(2*dil1*Fs);
L2 = (Vi*D)/(2*dil2*Fs*(1-D));
C1 = (Vo*D)/(2*R*dvc1*Fs*(1-D));
C2 = (Vo*D)/(2*R*dvc2*Fs);
end
function delta =
despejeDelta(Vi,Vo,R,ron,rl1,rl2,rd1,rd2,rd3,Vd1,Vd2,Vd3)
syms D il1 il2 Vc1 Vc2
Ic1 = il2*(1-D)-Vo/R;
Ic2 = il1*(1-D)-il2;
Vl1 = Vi-(Vc1*(1-D))-(Vd2*(1-D))-Vd1-(il1*(D*ron+rl1+(rd2*(1-
D))))+(il2*D*ron);
Vl2 = Vc1-(Vo*(1-D))-(Vd3*(1-D))-(il1*D*ron)-(il2*(D*ron+rl2+(rd3*(1-
D))));
IL2 = solve(Ic1==0,il2);
Il1 = solve(Ic2==0,il1);
IL1 = subs(Il1,il2,IL2);
Vc1_temp= solve(Vl2==0,Vc1);
VC1 = subs(Vc1_temp,[il1 il2],[IL1 IL2]);
vl1_temp = subs(Vl1,[il1 il2 Vc1],[IL1 IL2 VC1]);
delta = solve(vl1_temp==0,D);
delta = real(single(delta(1)));
end
function [MD,delta] =
Grafica_ganancia(prc,muestras,R,ron,rl1,rl2,rd1,rd2,rd3,Vd1,Vd2,Vd3,ind)
syms D
prc = prc/100;
[m n] = size(prc);
delta = 0:1/muestras:1;
aux = 1;
if ind == 0
MD = zeros(muestras+1,n);
else
MD = zeros(muestras+1,1);
n = 1;
end
for p = 1:n
if ind == 0
rl1 = prc(p)*R;
rl2 = prc(p)*R;
else
rl1 = rl1;
rl2 = rl2;
end
a = (((1-D)^2) + ((D*ron)/(R*(1-D))) + (D*ron+rl2+(rd3*(1-D)))/R);
b = (D*ron+rl1+(rd2*(1-D)))/(((1-D)^2)*R);
c = (D*ron)/((1-D)*R);
de = Vd3*((1 -D)^2);
e = Vd2*(1-D);
M = (1 - ((de + e + Vd1)/24))/(( a + b - c));
i = 1;
for d = 0 : (1/muestras) : 0.9999
Gain = double(subs(M,D,d));
MD(i,aux) = Gain;
i = i+1;
end
aux = aux + 1;
end
end
function [Gvc2d] = TF_Linealizadas(Vi,Vo,R,D,L1,L2,C1,C2)
%syms Vi C1 C2 L1 L2 D R
% Fila uno
a11 = 0;
a12 = 0;
a13 = -(1-D)/L1;
a14 = 0;
%fila dos
a15 = 0;
a16 = 0;
a17 = 1/L2;
a18 = -(1-D)/L2;
%fila tres
a19 = (1-D)/C1;
a110 = -1/C1;
a111 = 0;
a112 = 0;
%fila 4
a113 = 0;
a114 = ((1-D)/C2);
a115 = 0;
a116 = -(1/(R*C2));
% Matriz A
A = [a11 a12 a13 a14;a15 a16 a17 a18;a19 a110 a111 a112;a113 a114 a115
a116]
eig(A);
% Sin perdidas
b1 = (Vi/((1-D)*L1));
b2 = (Vi/(((1-D)^2)*L2));
b3 = -Vi/(((1-D)^4)*R*C1);
b4 = -Vi/(((1-D)^3)*R*C2);
B = [b1;b2;b3;b4]
C = [0 0 0 1]
D = 0
[num,den] = ss2tf(A,B,C,D)
Gvc2d = tf(num,den);
end
% ----- Codigo principal ------
clc
close all
clear all
% 12603
Fs = 30e3;
Ts = 1/Fs;
Vi = 24;
Vo = 380;
P = 300;
dvc1 = 2;
dvc2 = 2;
dil1 = 0.1;
dil2 = 0.05;
t = 0.6;
[R,Vc1,Vc2,IL1,IL2,L1,L2,C1,C2,D] =
ModeloIdeal(Fs,Vi,Vo,P,dvc1,dvc2,dil1,dil2);
ron = 2.5/47;
rd1 = 1.4/20;
rd2 = 1.5/20;
rd3 = 1.2/2;
rl1 = 0.2;
rl2 = 0.4;
Vd1 = 1.4;
Vd2 = 1.5;
Vd3 = 1.2;
delta = despejeDelta(Vi,Vo,R,ron,rl1,rl2,rd1,rd2,rd3,Vd1,Vd2,Vd3);
deseado = delta;
prc = [1 0.5 0.1 0.005 0.001 0.0005 0.0001];
muestras = 1000;
D = deseado;
a11 = -(((ron*D)+(rd2*(1-D))+rl1))/L1;
a12 = (D*ron)/L1;
a13 = -(1-D)/L1;
a14 = 0;
%fila dos
a15 = -(D*ron)/L2;
a16 = -((ron*D)+rl2+(rd3*(1-D)))/L2;
a17 = 1/L2;
a18 = -(1-D)/L2;
%fila tres
a19 = (1-D)/C1;
a110 = -1/C1;
a111 = 0;
a112 = 0;
%fila 4
a113 = 0;
a114 = ((1-D)/C2);
a115 = 0;
a116 = -(1/(R*C2));
A = [a11 a12 a13 a14;a15 a16 a17 a18;a19 a110 a111 a112;a113 a114 a115
a116]
b1 = (Vi-(Vd2*(1-D))-Vd1)/L1;
b2 = -(Vd3*(1-D))/L2;
b3 = 0;
b4 = 0;
MD = 0;
delta = 0;
[MD,delta] =
Grafica_ganancia(prc,muestras,R,ron,rl1,rl2,rd1,rd2,rd3,Vd1,Vd2,Vd3,1);
figure
hold on
plot(delta',MD), grid;
title('Ganancia del convertidor para valores medidos de rl1 y rl2');
xlabel('Ciclo útil [ D ]');
ylabel('Ganancia [ Vo/Vi ]');
Fs = 60e3;
Ts = 1/Fs;
G1c = TF_Linealizadas(Vi,Vo,R,D,L1,L2,C1,C2)
G1d_temp = c2d(G1c,Ts,'zoh')
Gd = series(G1d_temp,tf([1],[1 0],Ts))
Código implementado en DSP (Code Composer Studio):
/*
* Programa principal: main.c
*
* Created on: 7/05/2019
* Author: Carlos Arturo Silva
*/
#include "DSP28x_Project.h"
// ---------------------------- Variables globales ----------------------------
#define CONV_ON 0x01
#define CONV_OFF 0x08
#define RDY_FLT 0x0A
#define DESAT_FLT 0x0C
#define T 1/30000
Uint16 i = 0;
Uint32 tbprd = 0;
Uint16 freq_pwm = 60000;
static float Datos[7] = 4166,2,2,0,0,0,0;
float duty = 0;
float SP = 373;
double volt = 0;
Uint16 Voltage_VR1;
int estado = 0;
char stat = 0;
int habilitador = 0;
float delta1 = 1, delta2 = 0.1,delta3 = 0.01;
int delay1 = 20, delay2 = 15, delay3 = 15;
double const_sensor = 757.5;
int control = 0;
double kp = 0.00025;
double ki = 0.035;
double kd = 6.4e-7;
double a_1 = 0,b = 0,c = 0,u = 0;
// ---------------------------- Funciones locales -----------------------------
interrupt void adc_isr();
interrupt void Pulsador_ON(void);
interrupt void Pulsador_OFF(void);
interrupt void Lect_RDY(void);
interrupt void Lect_FLT(void);
void init_convert(void);
// ---------------------------- Funciones externas ----------------------------
extern void ConfigPin(void);
extern void ConfigInterPin(void);
extern void delay_ms(Uint16);
extern void Status(char);
extern Uint32 Init_PWM(Uint16 freq);
extern void Set_Pulse_Width(float duty, Uint32 TBPRD);
extern void Conf_Adc(void);
extern void PWM_Config(float *Datos);
extern void Fs_Calc(float *Datos);
extern void Clear_driver(void);
// ---------------------------- Programa principal ----------------------------
void main(void)
habilitador = 0;
InitSysCtrl();
ConfigPin();
tbprd = Init_PWM(freq_pwm);
// Funcion de configuracion de PWM
InitPieCtrl();
InitAdc();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable(); // default ISR's in PIE
EALLOW;
PieVectTable.ADCINT = &adc_isr;
PieVectTable.XINT1 = &Lect_RDY;
PieVectTable.XINT2 = &Lect_FLT;
PieVectTable.XINT3 = &Pulsador_ON;
PieVectTable.XINT4 = &Pulsador_OFF;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER12.bit.INTx1 = 1;
PieCtrlRegs.PIEIER12.bit.INTx2 = 1;
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
PieCtrlRegs.PIEIER1.bit.INTx5 = 1;
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1;
IER |= M_INT12;
ConfigInterPin();
Conf_Adc();
PWM_Config(Datos);
EINT;
ERTM;
EALLOW;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;
EDIS;
while(1)
switch(estado)
case 1: // Apagado del convertidor
duty = 0;
habilitador = 0;
control = 0;
Status(stat);
Set_Pulse_Width( duty , tbprd);
delay_ms(100);
estado = 0;
break;
case 2: // Inicia secuencia de arranque
//estado = 3;
init_convert();
break;
case 3: // Inicia secuencia de arranque
control = 1;
break;
default:
break;
// ------------------------------ Cuerpo de la interrupcion -----------------------------
interrupt void adc_isr(void)
static double uk_1 = 0,ek_1 = 0,ek_2 = 0;
Voltage_VR1 = AdcMirror.ADCRESULT0; // store results global
volt = ( ((double)Voltage_VR1) / 4095.00) * const_sensor;
//GpioDataRegs.GPATOGGLE.bit.GPIO6 = 1;
switch(control)
case 0:
uk_1 = (duty/100);
break;
case 1:
double e = SP - volt;
a_1 = (kp+(ki*(T/2))+(kd/T));
b = -kp + ((ki*T)/2) - (2*kd/T);
c = kd / T;
u = uk_1 + (a_1*e) + (b*ek_1) + (c*ek_2);
uk_1 = u;
duty = u * 100;
Set_Pulse_Width( duty , tbprd );
ek_2 = ek_1;
ek_1 = e;
break;
// Reinitialize for next ADC sequence
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
// Funciones de inicializacion del convertidor
void init_convert()
if(habilitador == 0)
Status(stat);
habilitador = 1;
else
if( duty < 62 )
duty += delta1;
delay_ms(delay1);
if( duty >= 62 && duty < 71)
duty += delta2;
delay_ms(delay2);
if( duty >= 71 )
duty += delta3;
delay_ms(delay3);
if(volt >= 320)
estado = 3;
delay_ms(1000);
Set_Pulse_Width( duty , tbprd );
interrupt void Pulsador_ON()
//GpioDataRegs.GPATOGGLE.bit.GPIO10 = 1;
estado = 2;
stat = CONV_ON;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
interrupt void Pulsador_OFF()
//GpioDataRegs.GPATOGGLE.bit.GPIO15 = 1;
estado = 1;
stat = CONV_OFF;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
interrupt void Lect_RDY()
//GpioDataRegs.GPATOGGLE.bit.GPIO11 = 1;
estado = 1;
stat = RDY_FLT;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
interrupt void Lect_FLT()
//GpioDataRegs.GPATOGGLE.bit.GPIO12 = 1;
estado = 1;
//Clear_driver();
stat = DESAT_FLT;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
/*
* Config_GPIO_bc.c
* Archivo de configuracion de los pines de proposito general de la DSP
* Created on: 6/07/2019
* Author: Carlos Arturo Silva
*/
#include "DSP28x_Project.h"
#include "Config_GPIO_bc.h"
//------------------------------------------------------------------
//-------------- Declcaracion de las funciones usadas---------------
//------------------------------------------------------------------
interrupt void Pulsador_ON(void);
interrupt void Pulsador_OFF(void);
interrupt void Lect_RDY(void);
interrupt void Lect_FLT(void);
void Init_ON_Interrupt(void);
void Init_OFF_Interrupt(void);
void Init_RDY_Interrupt(void);
void Init_FLT_Interrupt(void);
void delay_ms(Uint16);
void Config_Like_Input(void);
void Status(char);
void Clear_driver(void);
// ----------------------------------------------------------------
// ---------- Funciones de cada entrada en interrupcion -----------
// ----------------------------------------------------------------
// ----------------------------------------------------------------
// ------- Inicializacion de los pines para interrupcion ----------
// ----------------------------------------------------------------
void Init_ON_Interrupt()
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0;
GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = SIX_SAMPLES;
GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = M526SYSCLOCK;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 0;
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 32;
EDIS;
//Hablilita interrupcion
XIntruptRegs.XINT3CR.bit.ENABLE = 1;
// Activacion por flaco (1 subida, 0 bajada)
XIntruptRegs.XINT3CR.bit.POLARITY = 0;
void Init_OFF_Interrupt()
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0;
GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 0xFF;
GpioCtrlRegs.GPBQSEL1.bit.GPIO33 = 2;
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 0;
GpioIntRegs.GPIOXINT4SEL.bit.GPIOSEL = 33;
EDIS;
//Hablilita interrupcion
XIntruptRegs.XINT4CR.bit.ENABLE = 1;
// Activacion por flaco (1 subida, 0 bajada)
XIntruptRegs.XINT4CR.bit.POLARITY = 0;
void Init_RDY_Interrupt()
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;
GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 0xFF;
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 2;
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 13;
EDIS;
//Hablilita interrupcion
XIntruptRegs.XINT1CR.bit.ENABLE = 1;
// Activacion por flaco (1 subida, 0 bajada)
XIntruptRegs.XINT1CR.bit.POLARITY = 0;
void Init_FLT_Interrupt()
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 2;
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO14 = 0;
GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 14;
EDIS;
// Habilita interrupcion
XIntruptRegs.XINT2CR.bit.ENABLE = 1;
// Activacion por flanco (1 subida, 0 bajada)
XIntruptRegs.XINT2CR.bit.POLARITY = 0;
// ----------------------------------------------------------------
// -------- Funciones de inicialización de los puertos ------------
// ----------------------------------------------------------------
void Status(char Dat)
// GPIO10 -> Encendido
// GPIO11 -> FLT
// GPIO12 -> DESAT
// GPIO15 -> Apagado
GpioDataRegs.GPACLEAR.bit.GPIO10 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO12 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO15 = 1;
if(Dat & 0x01)
GpioDataRegs.GPASET.bit.GPIO10 = 1;
else
GpioDataRegs.GPACLEAR.bit.GPIO10 = 1;
if(Dat & 0x02)
GpioDataRegs.GPASET.bit.GPIO11 = 1;
else
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
if(Dat & 0x04)
GpioDataRegs.GPASET.bit.GPIO12 = 1;
else
GpioDataRegs.GPACLEAR.bit.GPIO12 = 1;
if(Dat & 0x08)
GpioDataRegs.GPASET.bit.GPIO15 = 1;
if(Dat == 0)
GpioDataRegs.GPACLEAR.bit.GPIO10 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO12 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO15 = 1;
void ConfigPin()
Config_Like_Input();
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Pin de PWM
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0; // Pin de RDY
GpioCtrlRegs.GPADIR.bit.GPIO14 = 0; // Pin de FLT
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // Pin de RST
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1; // LED de encendido
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1; // LED de RDY
GpioCtrlRegs.GPADIR.bit.GPIO12 = 1; // LED de FLT
GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; // LED de apagado
EDIS;
void ConfigInterPin()
Init_ON_Interrupt();
Init_OFF_Interrupt();
Init_RDY_Interrupt();
Init_FLT_Interrupt();
Clear_driver();
Status(CONV_OFF);
void Clear_driver()
//GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;
GpioDataRegs.GPASET.bit.GPIO6 = 1;
DELAY_US(1000);
GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;
DELAY_US(1000);
GpioDataRegs.GPASET.bit.GPIO6 = 1;
void delay_ms(Uint16 t)
DELAY_US(t*1000);
// ----------------------------------------------------------------
// Función realizada para dejar todos los pines no usados como entrada
// ----------------------------------------------------------------
void Config_Like_Input()
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0; // GPIO15 ... GPIO0 = General Puropse I/O
//GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // ePWM1A active
GpioCtrlRegs.GPAMUX2.all = 0; // GPIO31 ... GPIO16 = General Purpose I/O
GpioCtrlRegs.GPBMUX1.all = 0; // GPIO47 ... GPIO32 = General Purpose I/O
GpioCtrlRegs.GPBMUX2.all = 0; // GPIO63 ... GPIO48 = General Purpose I/O
GpioCtrlRegs.GPCMUX1.all = 0; // GPIO79 ... GPIO64 = General Purpose I/O
GpioCtrlRegs.GPCMUX2.all = 0; // GPIO87 ... GPIO80 = General Purpose I/O
GpioCtrlRegs.GPADIR.all = 0;
GpioCtrlRegs.GPBDIR.all = 0; // GPIO63-32 as inputs
GpioCtrlRegs.GPCDIR.all = 0; // GPIO87-64 as inputs
EDIS;
/*
* Tomado de: ADC_Functions.c
* Created on: 4/05/2017
* Author: Carlos Arturo Silva Oviedo
*
* Modificación: Config_ADC.c
* Created on: 31/07/2019
* Configuracion para la frecuencia de muestreo del ADC, se toman algunas funciones
* del codigo realizado para el espacio academico "Procesamiento digital de señales"
* Author: CarlosSilva
*/
#include "DSP28x_Project.h"
#include "Config_ADC.h"
//*********************** Variables ***********************************
Uint32 a;
Uint16 N = 2;
Uint16 TBPRD = 0;
Uint32 fmaq = 75000000,fs,ind1=0,ind2=0;
Uint32 temp = 0;
Uint16 Div1[8]=1,2,4,8,16,32,64,128;
Uint16 Div2[8]=1,2,4,6,8,10,12,14;
float *p;
static float TBPRD_big;
//*********************** Funciones ************************************
void Conf_Adc(void);
void PWM_Config(float *Datos);
void Fs_Calc(float *Datos);
void DAC_Gpio_init();
//**********************************************************************
void DAC_Gpio_init()
EALLOW;
//PWM out
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;
EDIS;
void Fs_Calc(float *Datos)
static float old_m = 0,m_n;
static Uint16 x = FALSE;
p = Datos;
m_n = p[4];
if(old_m != m_n)
while(x == FALSE)
old_m = m_n;
fs = m_n*p[5];
//*****************************************************************************
TBPRD_big = fmaq/(fs*Div1[ind1]*Div2[ind2]);
if(TBPRD_big<=65535)
x = TRUE;
p[0] = TBPRD_big;
p[1] = ind1;
p[2] = ind2;
p[3] = FALSE;
p[4] = m_n;
p[6] = fs;
//RETORNAR TBPRD
else
ind2++;
//*****************************************************************************
if(ind2 < 7)
ind2++;
if(ind2 == 7 && ind1 < 7)
ind2 = 0;
ind1 ++;
if(ind1 == 7 && ind2 == 7 )
x = TRUE;
p[0] = 1530;
p[1] = ind1;
p[2] = ind2;
p[3] = TRUE;
p[4] = m_n;
p[6] = fs;
ind1 = 0;
ind2 = 0;
x = FALSE;
//**********************************************************************
void PWM_Config(float *Datos)
EPwm2Regs.TBCTL.all = 0xC030; // Configure timer control register
/*
bit 15-14 11: FREE/SOFT, 11 = ignore emulation suspend
bit 13 0: PHSDIR, 0 = count down after sync event
bit 12-10 000: CLKDIV, 000 => TBCLK = HSPCLK/1
bit 9-7 000: HSPCLKDIV, 000 => HSPCLK = SYSCLKOUT/1
bit 6 0: SWFSYNC, 0 = no software sync produced
bit 5-4 11: SYNCOSEL, 11 = sync-out disabled
bit 3 0: PRDLD, 0 = reload PRD on counter=0
bit 2 0: PHSEN, 0 = phase control disabled
bit 1-0 00: CTRMODE, 00 = count up mode
*/
EPwm2Regs.TBPRD = 2500;
//EPwm2Regs.TBPRD = 2999; // TPPRD +1 = TPWM / (HSPCLKDIV * CLKDIV * TSYSCLK)
// = 20 s / 6.667 ns
EPwm2Regs.ETPS.all = 0x0100; // Configure ADC start by ePWM2
/*
bit 15-14 00: EPWMxSOCB, read-only
bit 13-12 00: SOCBPRD, don't care
bit 11-10 00: EPWMxSOCA, read-only
bit 9-8 01: SOCAPRD, 01 = generate SOCA on first event
bit 7-4 0000: reserved
bit 3-2 00: INTCNT, don't care
bit 1-0 00: INTPRD, don't care
*/
EPwm2Regs.ETSEL.all = 0x0A00; // Enable SOCA to ADC
/*
bit 15 0: SOCBEN, 0 = disable SOCB
bit 14-12 000: SOCBSEL, don't care
bit 11 1: SOCAEN, 1 = enable SOCA
bit 10-8 010: SOCASEL, 010 = SOCA on PRD event
bit 7-4 0000: reserved
bit 3 0: INTEN, 0 = disable interrupt
bit 2-0 000: INTSEL, don't care
*/
//**********************************************************************
void Conf_Adc()
AdcRegs.ADCTRL1.all = 0;
AdcRegs.ADCTRL1.bit.ACQ_PS = 7; // 7 = 8 x ADCCLK
AdcRegs.ADCTRL1.bit.SEQ_CASC =1; // 1=cascaded sequencer
AdcRegs.ADCTRL1.bit.CPS = 0; // divide by 1
AdcRegs.ADCTRL1.bit.CONT_RUN = 0; // single run mode
AdcRegs.ADCTRL2.all = 0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 1=enable SEQ1 interrupt
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 =1; // 1=SEQ1 start from ePWM_SOCA trigger
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0; // 0= interrupt after every end of sequence
AdcRegs.ADCTRL3.bit.ADCCLKPS = 3; // ADC clock: FCLK = HSPCLK / 2 * ADCCLKPS
// HSPCLK = 75MHz (see DSP2833x_SysCtrl.c)
// FCLK = 12.5 MHz
AdcRegs.ADCMAXCONV.all = 0x0001; // 2 conversions from Sequencer 1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // Setup ADCINA0 as 1st SEQ1 conv.
/*
* Config_PWM.c
*
* Configuracion para PWM con el que será disparado el transistor del convertidor
* Created on: 31/07/2019
* Author: Carlos Arturo Silva
*/
#include "DSP28x_Project.h"
#include "Config_PWM.h"
// ------------------------------------------------------------------
// -------------- Definiciones de las funciones ---------------------
// ------------------------------------------------------------------
Uint32 Init_PWM(Uint16 freq);
void Set_Pulse_Width(float duty, Uint32 TBPRD);
Uint16 freq2TBPRD(Uint16,int,int);
void Setup_ePWM1A(Uint32);
// ------------------------------------------------------------------
// ------------------ Cuerpo de las funciones -----------------------
// ------------------------------------------------------------------
Uint32 Init_PWM(Uint16 freq)
Uint32 TBPRD = freq2TBPRD(freq,1,2);
Setup_ePWM1A(TBPRD);
Set_Pulse_Width(0,TBPRD);
return TBPRD;
void Set_Pulse_Width(float duty, Uint32 TBPRD)
float div = 0.0;
float adjust = 0.0;
div = duty/100.0;
adjust = (Uint32)(div * (float)TBPRD);
EPwm1Regs.CMPA.half.CMPA = adjust;
Uint16 freq2TBPRD(Uint16 fpwm,int CLKDIV,int HSPCLKDIV)
Uint16 TBPRD_f = 0;
Uint32 fsysclkout = 150000000;
TBPRD_f = (Uint16)((float)fsysclkout/(2*(float)fpwm*(float)CLKDIV*(float)HSPCLKDIV));
return TBPRD_f;
void Setup_ePWM1A(Uint32 TBPRD)
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // ePWM1A active
EDIS;
EPwm1Regs.TBCTL.bit.CLKDIV = 0; // CLKDIV = 1
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1; // HSPCLKDIV = 2
EPwm1Regs.TBCTL.bit.CTRMODE = 2; // up - down mode
EPwm1Regs.AQCTLA.bit.CBD = NOTHING;
EPwm1Regs.AQCTLA.bit.CBU = NOTHING;
EPwm1Regs.AQCTLA.bit.CAD = 2;
EPwm1Regs.AQCTLA.bit.CAU = CLEAR;
EPwm1Regs.AQCTLA.bit.PRD = NOTHING;
EPwm1Regs.AQCTLA.bit.ZRO = NOTHING;
EPwm1Regs.TBPRD = TBPRD;
EPwm1Regs.CMPA.half.CMPA = 0;