Está en la página 1de 18

CENTRO NACIONAL DE INVESTIGACION Y DESARROLLO

TECNOLOGICO

Maestría en ciencias en ingeniería electrónica

Especialidad:
Electrónica de potencia

Materia:
Diseño e implementación de controles digitales

Actividad – Proyecto final:


Implementación en FPGA de una técnica PWM senoidal unipolar
para una topología de inversor trifásico puente completo

Presenta:
Benjamín Chavarría Domínguez
Rodrigo Briones Sánchez
Leonardo Francisco Olan Valdivieso
Saúl Rosas Romero

Cuernavaca Morelos, 14 de junio de 2019


Proyecto final - Diseño e implementación de controles digitales

Contenido
1.- Objetivo del proyecto .................................................................................................... 2
2.- Introducción: Conmutación Bipolar y Unipolar .............................................................. 3
3.- Discretización de la señal senoidal y triangular ............................................................. 5
4.- Descripción del código en Icestudio .............................................................................. 8
5.- Compilación y verificación del código con el osciloscopio ........................................... 12
6.- Pruebas con la etapa de potencia............................................................................... 14
7.- Observaciones y conclusiones del proyecto ............................................................... 16

1
Proyecto final - Diseño e implementación de controles digitales

1.- Objetivo del proyecto


Objetivo: Poner en funcionamiento una técnica PWM senoidal unipolar para una
topología de inversor trifásico puente completo.

Figura 1 – Modulación mediante técnica PWM senoidal unipolar.

La implementación debe tener las siguientes características:


1. Se deberá probar la técnica físicamente con su correspondiente parte de
potencia alimentando a una carga. Si la carga es resistiva se debe diseñar un
filtro de salida (Es obligatorio demostrar su funcionamiento).
2. La técnica PWM senoidal debe ser programada e implementada (hasta los
pulsos de salida que van a los elementos en conmutación) al 100% en un FPGA
y/o tarjeta Nucleo.
3. Los pulsos generados por el FPGA deben de ser reconfigurables, es decir, la
frecuencia de conmutación (frecuencia de la señal triangular) debe ser variable
y la amplitud de la señal senoidal también (índice de modulación).
4. Todas las señales de la electrónica digital deben de estar aisladas.
5. Se debe de mostrar cada una de las etapas que conforman de la técnica PWM
(señales senoidales, señal triangular, pulsos, frecuencias, amplitudes, etc.).
6. Se debe entregar un reporte final que contenga las etapas del diseño y los
resultados obtenidos.
7. Es necesario entregar los programas generados para la implementación de la
técnica PWM.

2
Proyecto final - Diseño e implementación de controles digitales

2.- Introducción: Conmutación Bipolar y Unipolar


En la modulación PWM, la amplitud del voltaje de salida se puede controlar por
medio de las formas de onda moduladoras. Dos ventajas de la modulación PWM
son la reducción de los requerimientos de filtro para reducir los armónicos y el
control de la amplitud de salida. Entre las desventajas se puede citar que los
circuitos de control de los interruptores son más complejos, y que hay mayores
pérdidas debidas a una conmutación más frecuente.

- Conmutación Bipolar
La Figura 2 muestra el principio de la modulación por anchura de impulsos
bipolar sinusoidal. La Figura 2 (a) muestra una señal sinusoidal de referencia y una
señal portadora triangular. Cuando el valor instantáneo de la sinusoide de referencia
es mayor que la portadora triangular, la salida está en + Vcc, y cuando la referencia
es menor que la portadora, la salida está en – Vcc.

Vo = + Vcc para Vseno > Vtri


Vo = –Vcc para Vseno < Vtri

Esta versión de PWM es bipolar, ya que la salida toma valores alternos entre
más y menos la tensión de la fuente de continua. El esquema de conmutación que
permitirá implementar la conmutación se determina comparando las señales
instantáneas de referencia y portadora:

S1 y S2 están conduciendo cuando Vseno > Vtri (Vo= +Vcc)


S3 y S4 están conduciendo cuando Vseno < Vtri (Vo= -Vcc)

Figura 2 – Modulación por anchura de impulsos bipolar. (a) Referencia sinusoidal y


portadora triangular. (b) La salida es + Vcc cuando Vseno >Vtri y es –Vcc cuando Vseno < Vtri.

3
Proyecto final - Diseño e implementación de controles digitales

- Conmutación Unipolar
En un esquema de conmutación unipolar para la modulación por ancho de
pulsos, la salida se conmuta de nivel alto a cero, o de nivel bajo a cero, en lugar de
entre niveles alto y bajo, como en la conmutación bipolar. Un esquema de
conmutación unipolar tiene los siguientes controles de interruptores:

S1 conduce cuando Vseno > Vtri


S2 conduce cuando -Vseno < Vtri
S3 conduce cuando -Vseno > Vtri
S4 conduce cuando Vseno < Vtri

Se puede observar que los interruptores S1 con S4 y S2 con S3 son


complementarios: cuando un interruptor de uno de los pares está cerrado, el otro
está abierto. Los voltajes Va y Vb en la Figura 3 (a) oscilan entre + Vcc y cero. El
voltaje de salida Vo = Vab = Va - Vb es tal y como se muestra en la Figura 3 (b).

Figura 3 – (a) Inversor de onda completa para PWM unipolar. (b) Señales de referencia y portadora.
(c) Voltajes Va y Vb del puente. (d) Voltaje de salida.

4
Proyecto final - Diseño e implementación de controles digitales

3.- Discretización de la señal senoidal y triangular


Para discretizar una señal senoidal y una señal triangular se requiere tomar en
cuenta los siguientes factores

- Elegir correctamente el número muestras.


Se debe procurar tener una relación de valores enteros (sin puntos decimales)
entre el número de muestras de las 2 señales discretizadas, la Ecuación 1 ilustra la
relación existente entre las dos señales discretizadas.

𝑁𝑀𝑆
=𝜂 (1)
𝑁𝑀𝑇

Donde “𝑁𝑀𝑆 ” es el número de muestras de la señal senoidal, “𝑁𝑀𝑇 ” es el número


de muestras de la señal triangular y “𝜂” es la relación entre los números de muestras,
como ya se menciono es importante que “𝜂” sea un número entero para asegurar
una relación ideal entre ambas señales, para el caso de este trabajo se optó por
utilizar 1,200 muestras tanto para las señales senoidales como para la triangular.

- Conservar la simetría de la forma de onda.


Para poder realizar la simetría de nuestra señal senoidal se utilizó una
sintetización de un 1/4 de onda para asegurar un redondeo igual entre los semiciclos
como se muestra en el siguiente Script de Matlab.
clear
MS=1200;
MT=1200;
K1=0:pi/(MS/2):pi/2-(pi/(MS/2)); %Se genera un Vector de datos de 0 a
Pi/2-(MS/2) en pasos de (MS/2)
K2=(pi/(MS/2)):pi/(MS/2):pi/2; %Se genera un Vector de datos de Pi/2-
(MS/2) a Pi/2 en pasos de (MS/2)
S1=round(270*sin(K1)); %Se genera y redondea una forma de onda
senoidal con el vector de datos K1
S2p=round(270*sin(K2)); %Se genera y redondea una forma de onda
senoidal con el vector de datos K2
S2=fliplr(S2p); %Se gira el vector de datos
Sp=[S1 S2]; %Se une los 2 vectores
Sin=-Sp; %Se invierte la unión de los vectores
Seno=[Sp Sin]+300; %Se une los vectores y aplica una
componente de offset
SenoT=Seno.'; %Se realiza una traspuesta

Los pasos se ilustran detalladamente con las Figuras 4, 5 y 6:

5
Proyecto final - Diseño e implementación de controles digitales

(a) (b)

Figura 4 – (a) Primer 1/4 de la onda de senoidal y (b) segundo 1/4 de la señal senoidal.

(a) (b)

Figura 5 – (a) Cresta positiva de la señal senoidal y (b) cresta negativa de la señal senoidal.

Figura 6 – Vectores Sp y Sin unidos con offset (+300) y transpuestos, señal senoidal resultante.

6
Proyecto final - Diseño e implementación de controles digitales

Para conservar la simetría en el proceso de discretización de la señal triangular


se efectuó una sintetización de 1/2 de la onda mediante el siguiente Script de
Matlab.
Clear
T1=0:MT/2-1; %Se genera un Vector de datos de 0 a MT/2-1
T2=fliplr(1:MT/2); %Se genera un Vector de datos de 1 a MT/2 y se gira
T=[T1 T2]; %Se une los 2 vectores
TT1=T.'; %Se realiza una traspuesta

Los pasos se ilustran detalladamente con las Figuras 7 y 8:


(a) (b)

Figura 7 – (a) Primer mitad de la onda de triangular y (b) segunda mitad de la señal triangular.

Figura 8 – Vectores T1 y T2 unidos y transpuestos, señal triangular resultante.

7
Proyecto final - Diseño e implementación de controles digitales

4.- Descripción del código en Icestudio


A continuación, se describen las tareas que realizan los bloques del código
desarrollado en el programa Icestudio. Este código genera la modulación desde el
FPGA Lattice ice40hx8k Breakout Board. En la Figura 9 se presenta una vista
general del código completo.

3 9
5
10
1

6
11

12
7

13
4
2 14

Figura 9 – Código desarrollado en Icestudio para generar la modulación unipolar.

Los bloques “1” y “2” corresponden a los divisores de frecuencia empleados para
ajustar las frecuencias de las señales senoidales y triangular. El bloque “1” consiste
en el divisor empleado para ajustar las ondas senoidales a una frecuencia de 50 Hz,
considerando el número de muestras empleadas (1,200) y la frecuencia del reloj
base (12 MHz) por lo que es necesario dividir al reloj base entre el número 200 (ver
Ecuación 2 y 3):

𝑅𝑒𝑙𝑜𝑗 𝑏𝑎𝑠𝑒 12 𝑀𝐻𝑧


𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 = = = 60 𝑘𝐻𝑧 (2)
𝑁𝑜. 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 200

𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 60 𝑘𝐻𝑧


𝐹𝑟𝑒𝑐. 𝑑𝑒 𝑙𝑎 𝑠𝑒𝑛𝑜𝑖𝑑𝑎𝑙 = = = 50 𝐻𝑧 (3)
𝑁𝑜. 𝑑𝑒 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠 1,200

8
Proyecto final - Diseño e implementación de controles digitales

El bloque “2” contiene al divisor empleado para ajustar la señal triangular a una
frecuencia de 2.5 kHz, considerando las 1,200 muestras empleadas al discretizar la
señal y la frecuencia del reloj base (12 MHz), es necesario dividir al reloj base en 4
para obtener los 2.5 kHz como se muestra en la Ecuación 4 y 5:

𝑅𝑒𝑙𝑜𝑗 𝑏𝑎𝑠𝑒 12 𝑀𝐻𝑧


𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 = = = 3 𝑀𝐻𝑧 (4)
𝑁𝑜. 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 4

𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑑𝑖𝑣𝑖𝑠𝑜𝑟 3 𝑀𝐻𝑧


𝐹𝑟𝑒𝑐. 𝑑𝑒 𝑙𝑎 𝑡𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑎𝑟 = = = 2.5 𝑘𝐻𝑧 (5)
𝑁𝑜. 𝑑𝑒 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠 1,200

La Figura 10 muestra a los bloques “1” y “2” con los divisores de frecuencia
descritos. Para el caso de la Figura 10 (a) corresponde el bloque “1” resultando a
su salida “clk_out” la frecuencia de 60 kHz, mientras que la Figura 10 (b) presenta
al bloque “2” con 2.5 kHz de frecuencia de salida por su respectivo “clk_out”.

(a) (b)

Figura 10 – Divisores de frecuencia (a) para las señales senoidales y (b) para la señal triangular.

Los bloques “3” y “4” corresponden a contadores de 11 bits necesarios para


asignar cada espacio a las 1,200 muestras de cada una de las señales (senoidales
y triangulares), estos contadores se desbordan al llegar al número 1,199 en binario
(ya que el conteo inicia desde el cero), los bloques se presentan en la Figura 11.

(a) (b)

Figura 11 – Contadores (a) para las señales senoidales y (b) para la señal triangular.

9
Proyecto final - Diseño e implementación de controles digitales

Los bloques “5”, “6” y “7” encierran en un ciclo “case” las palabras binarias que
representan a las señales senoidales, cada palabra binaria contiene la información
de una muestra, por lo que la señal senoidal se compone de 1,200 palabras binarias.
Se realiza un desfase de 120° entre cada una de las señales senoidales que
equivale a recorrer 234 palabras binarias entre cada uno de los bloques, de este
modo el bloque “7” empieza su ciclo case con la palabra 66, el bloque “5” se recorre
a la palabra 300 y a su vez el bloque “6” se recorre a la palabra 534, (ver Figura 12).

(a) (b) (c)

Figura 12 – Palabras binarias de las señales senoidales en (a) bloque 7, (b) bloque 5 y (c) bloque 6.

El bloque “8” contiene dentro de un ciclo case las 1,200 palabras binarias que
representan a la señal triangular, este se puede apreciar en la Figura 13.

Figura 13 – Bloque con las palabras binarias de la señal triangular.

Los bloques “9”, “10”, “11”, “12”, “13” y “14” comparan la magnitud de las señales
senoidales y triangular, se emite un estado alto (1 binario) o bajo (0 binario)
dependiendo del criterio de comparación designado por una sentencia “if” y “else”.
Los bloques “9” y “10” reciben la señal senoidal del bloque “5” por “in1” y la señal
triangular del bloque “8” por “in2”. Dentro del bloque “9” se define la condición que
cuando “in1 < in2” se emita un estado alto (1 binario), en caso de que “in1 > in2” se
emita un estado bajo (0 binario). Para el bloque “10” se realiza la función contraria,
es decir, cuando “in1 > in2” se emite un estado alto y en caso de que “in1 < in2” se
emite un estado bajo. Los bloques “9” y “10” se presentan en la Figura 14.

10
Proyecto final - Diseño e implementación de controles digitales

(a) (b)

Figura 14 – (a) Bloque de comparación 9 y (b) bloque de comparación 10.

Los bloques “11” y “12” tienen una configuración muy similar a la anterior, reciben
la señal senoidal del bloque “6” por “in1” y la señal triangular del bloque “8” por “in2”.
El bloque “11” define la condición que cuando “in1 < in2” se emita un estado alto y
en caso que “in1 > in2” se emita un estado bajo. El bloque “12” realiza la función
contraria, cuando “in1 > in2” se emite un estado alto y cuando “in1 < in2” se emite
un estado bajo. Los bloques “11” y “12” se presentan en la Figura 15.

(a) (b)

Figura 15 – (a) Bloque de comparación 11 y (b) bloque de comparación 12.

Para finalizar con los bloques “13” y “14” se vuelve a repetir la configuración vista
previamente, reciben la señal senoidal del bloque “7” por “in1” y la señal triangular
del bloque “8” por “in2”. El bloque “13” define que cuando “in1 < in2” se emita un
estado alto y cuando “in1 > in2” se emita un estado bajo. El bloque “14” realiza la
función contraria, cuando “in1 > in2” se emite un estado alto y cuando “in1 < in2” se
emite un estado bajo. Los bloques “13” y “14” se presentan en la Figura 16.

(a) (b)

Figura 16 – (a) Bloque de comparación 13 y (b) bloque de comparación 14.

11
Proyecto final - Diseño e implementación de controles digitales

5.- Compilación y verificación del código con el osciloscopio


Al ejecutar la verificación y compilación del código se pudo observar la cantidad
de recursos empleados (ver Figura 17) para la implantación en la FPGA Lattice
ice40hx8k Breakout Board, siendo un total de 54 Flip Flops, 5,676 LUTs, 17 PIOs,
773 PLBs y 0 BRAMs.

Figura 17 – Recursos necesarios en el FPGA para la implantación del código.

Una vez cargado el código en el FPGA se censaron las formas de onda senoidal
y triangular digitalizadas en palabras binarias, así como los canales de salida de los
pulsos correspondientes a las modulaciones SPWM unipolares trifásicas.
La Figura 18 muestra el comportamiento de la señal senoidal digitalizada en
palabras binarias de 10 bits y 1,200 muestras, puede corroborarse que su ciclo tiene
una frecuencia de 50 Hz.

Figura 18 – Señal senoidal de 50 Hz digitalizada en 1,200 palabras binarias de 10 bits.

La Figura 19 muestra el comportamiento de la señal triangular digitalizada en


palabras binarias de 10 bits y 1,200 muestras, puede corroborarse que su ciclo tiene
una frecuencia de 2.5 kHz.

12
Proyecto final - Diseño e implementación de controles digitales

Figura 19 – Señal triangular de 2.5 kHz digitalizada en 1,200 palabras binarias de 10 bits.

La Figura 20 muestra las salidas correspondientes a los pulsos de la modulación


SPWM unipolar trifásica, puede corroborarse que su frecuencia es de 50 Hz.

Figura 20 – Señales resultantes de la modulación SPWM unipolar trifásica.

13
Proyecto final - Diseño e implementación de controles digitales

6.- Pruebas con la etapa de potencia


Una vez verificado e implementado el código se montó la etapa de potencia.
Como inversor se empleó un módulo IRAMS10UP60B que cuenta con un arreglo
de IGBTs en medio puente trifásico, la carga que se designó fue un motor de
inducción de 1/3 HP trifásico, mientras que la alimentación del inversor se llevó a
cabo con un bus de CD de 310 volts. La Figura 21 muestra el FPGA conectada al
módulo IRAMS10UP60B.

Figura 21 – FPGA conectada al módulo IRAMS10UP60B

En la parte superior de la Figura 22 se muestra la lectura del osciloscopio


correspondiente a las corrientes del bobinado del motor (3 fases), la medición se
realiza de fase a fase. La parte inferior presenta la salida de voltaje del inversor.

Figura 22 – Corrientes cuasi senoidales en los bobinados del motor y salida del inversor de fase a fase.

14
Proyecto final - Diseño e implementación de controles digitales

En la parte superior de la Figura 23 se muestra la lectura del osciloscopio


correspondiente a las corrientes del bobinado del motor para cada una de sus 3
fases, la medición se realiza de fase a neutro. En la parte inferior se presenta la
salida de voltaje del inversor (módulo IRAMS10UP60B).

Figura 23 – Corrientes cuasi senoidales en los bobinados del motor y salida del inversor de fase a fase.

15
Proyecto final - Diseño e implementación de controles digitales

7.- Observaciones y conclusiones del proyecto


Después de diseñar, programar e implementar la modulación SPWM unipolar
para el comando de un motor de inducción trifásico de 1/3 de hp se llegan a las
siguientes conclusiones:
• El uso de dispositivos embebidos basados en la descripción de hardware como
las FPGA permite agilizar el desarrollo de la etapa de generación de pulsos de
comando de un sistema de control de potencia, sin embargo, se deben
considerar algunos puntos al desarrollar las etapas de programación:

o Para este trabajo se discretizaron dos señales (senoidal y triangular), este


proceso requiere que los valores de muestreo representen lo mas cercano
posible la forma original de la señal, para lo cual es necesario cuidar el
redondeo de valores decimales al discretizar y construir la forma de onda
con secciones que sean simétricas entre sí.

o Al momento de definir las frecuencias de las señales discretizadas dentro


del FPGA se tiene que prever que los valores de división del reloj
fundamental para los sudrelojes de las señales discretizadas sean
submúltiplos del valor del reloj fundamental, un valor de división arbitrario
podría llevar al desarrollo de un subreloj inexacto que presente errores de
acarreo cada vez mayores.

o Es importante considerar la extensión de bits que será asignada a las


palabras binarias donde se guardan las señales discretizadas ya que
impactarán directamente al número de componentes que serán empleados
al implementar el código final dentro del FPGA.

• Las FPGA son dispositivos que permiten el desarrollo de pulsos de conmutación


a frecuencias muy elevadas estas prestaciones vienen acompañadas de costos
relativamente accesibles si son comparadas con otras tecnologías basadas en
microcontroladores o DSPs. Por el lado del desarrollo práctico con la etapa de
potencia se considera importante destacar los siguientes puntos:

o Entre la etapa de potencia y la etapa digital de generación de pulsos de


comando se debe colocar una sección de protección, comúnmente basada
en optoacopladores, es importante que estos dispositivos sean capaces de
seguir los altos rendimientos ofrecidos por la FPGA, para evitar una
distorsión causada por el bajo rendimiento de un optoacoplador (por brindar
un ejemplo).

16
Proyecto final - Diseño e implementación de controles digitales

o El componente empleado como carga fue un motor trifásico de inducción, se


observo que este tipo de cargas no lineales son capaces de distorsionar las
la forma de los pulsos de conmutación del inversor debido a su naturaleza
inductiva, esto crea una diferencia entre el resultado visto en el convertidor
y los pulsos de comando inicialmente entregados por la FPGA.

17

También podría gustarte