Tesis Final Josue Jimenez

68

description

Tesis Electronica

Transcript of Tesis Final Josue Jimenez

  • UNIVERSIDAD LA SALLE Escuela de Ingeniera

    CON RECONOCIMIENTO DE VALIDEZ OFICIAL DE ESTUDIOS No. 952015 DE FECHA 13 DE FEBRERO DE 1995

    Control de velocidad de motores de CD sin escobillas implementado en

    FPGA

    T E S I S P R O F E S I O N A L QUE PARA OBTENER EL TITULO DE

    LICENCIADO EN INGENIERA ELCTRICA

    Y EN SISTEMAS ELECTRNICOS

    P R E S E N T A JOSU JOAQUIN JIMNEZ RODRGUEZ

    A S E S O R D E T E S I S M. en C. LUIS FERNANDO LUPIN SNCHEZ

    MXICO, D.F. 2010

  • Contenido

    Introduccin 1

    1 Motores de CD con escobillas y sin escobillas 31.1 Motores elctricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Principio del motor elctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Motores de CD con escobillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.3.1 Excitacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.2 Velocidad del motor de corriente continua. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.4 Motores de CD sin escobillas (Brushless) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4.1 Tpicas especificaciones tcnicas del motor BLDC . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.2 Ventajas y desventajas de los motores BLDC contra los de CD . . . . . . . . . . . . . . . . . . 12

    2 Control de motores de CD sin escobillas 152.1 Tcnicas de control para motores Brushless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Control basado en conmutacin trapezoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Control basado en conmutacin senoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4 Control vectorial (Field Oriented Control) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2.4.1 Transformacin de Clarke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.4.2 Transformacin de Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3 Circuitos lgicos programables 233.1 Breve historia de la lgica programable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.1.1 Dispositivos lgicos programables complejos (CPLDs) . . . . . . . . . . . . . . . . . . . . . . . 243.2 Arquitectura del FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 Diseo y programacin en FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    3.3.1 Lenguaje de descripcin de hardware (Hardware description language HDL) . . . . . . . . . . . 273.3.2 Diseo usando HDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.3 Verilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.4 VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4 Implementacin del controlador de velocidad en FPGA 33

    Conclusiones 55

  • ii CONTENIDO

  • ndice de Tablas

    1.1 Parmetros elctricos de un motor BLDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2 Parmetros mecnicos de un motor BLDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Comparacin entre motor BLDC y motor con escobillas . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    4.1 Clculos de transformada de Clarke en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Resultados de transformada de Clarke en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.3 Porcentaje de error en transformada de Clarke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.4 Intervalos para clculo de sin y cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.5 Tabla de verdad para intervalos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 Tabla de memoria de valores de sin en el intervalo [0 , /2] . . . . . . . . . . . . . . . . . . . . . . . . 434.7 Clculos de sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.8 Clculos de cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.9 Clculos de transformada de Park en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.10 Clculos de transformada de Park en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.11 Porcentaje de error en transformada de Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.12 Clculos de transformada inversa de Park en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.13 Clculos de transformada inversa de Clarke en FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

  • iv NDICE DE TABLAS

  • Lista de Figuras

    1.1 Motor elctrico DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Motor DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Estator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Rotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Colector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6 Motor brushless comercial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7 Estator de un motor BLDC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.8 Fuerza contraelectromotriz en forma trapezoidal y senoidal . . . . . . . . . . . . . . . . . . . . . . . . 101.9 Rotor de imanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.10 Caractersticas de velocidad y torque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.1 Resultado de conmutacin trapezoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Esquema de un controlador con conmutacin trapezoidal . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 Esquema de un controlador con conmutacin senoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 Par motor en funcin de la velocidad de rotacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5 Comparativa entre el espacio esttico de devanados y el espacio rotacional D-Q . . . . . . . . . . . . . 202.6 Transformada de Clarke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7 Transformada de Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.8 Esquema de controlador con control vectorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3.1 Programmable Logic Arrays (PLAs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.2 Complex Programmable Logic Devices (CPLDs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3 Tpico bloque lgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4 Localizacin de los pines en un bloque lgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.5 Topologa de caja de conmutadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.6 Vista de diseo y sus correspondientes niveles de abstraccin . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1 Transformada de Clarke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2 Relacin entre grados y radianes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Funcin sin en intervalos utilizados en el diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.4 Funcin cos en intervalos utilizados en el diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.5 Funcin sin en el intervalo de [0 a /2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 Circuito combinatorio para intervalo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.7 Multiplexores para intervalos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.8 Bloque de intervalos para funciones sin y cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.9 Diagrama del buffer de flip flops para la biseccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.10 Diagrama para encontrar los valores de X para interpolar . . . . . . . . . . . . . . . . . . . . . . . . . 424.11 Diagrama del interpolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.12 Diagrama de interpretacin de signo para sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444.13 Construccin interna del bloque seno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

  • vi LISTA DE FIGURAS

    4.14 Bloque seno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.15 Diagrama de interpretacin de signo para cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.16 Construccin interna del bloque coseno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.17 Bloque coseno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.18 Diagrama de funciones trigonomtricas sin y cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.19 Bloque funciones trigonomtricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.20 Bloque de transformada de Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.21 Bloque de transformada inversa de Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.22 Bloque de transformada inversa de Clarke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

  • Introduccin

    Hoy en da existen numerosos sistemas autnomos; dichos mtodos se han desarrollado de manera increble,especialmente en la robtica. Una de las principales motivaciones para realizar esta investigacin es la importanciade la precisin que se requiere en estos sitemas compactos, que a dems de ser tiles son muy eficientes.

    El objetivo principal de este trabajo es buscar controlar la velocidad de los motores de corriente directa sinescobillas. Esto se ralizar con la implementacin de un algoritmo de control vectorial colocado sobre una plataformade FPGA (en ingls: Field Programmable Gate Array). Esta clase de dispositivos han sido utilizados en variasinvestigaciones tanto de control, como de procesamiento digital, y los resultados han sido satisfactorios.

    Los alcances de esta investigacin son los siguientes: primeramente montar un controlador vectorial, conocidocomo FOC (en ingls Field Oriented Control), sobre la plataforma FPGA; y posteriormente realizar las pruebas decontrol en un motor de corriente directa sin escobillas, tambin conocido como motor brushless.

    El objetivo de esta tesis es desarrollar los mdulos necesarios para la implementacin de este controlador sobrela plataforma de FPGA con aritmtica de punto flotante para motores de CD sin escobillas.

    En el capitulo nmero 1, se habla sobre los motores de corriente directa con y sin escobillas, se explica elfuncionamiento de los mismos, y las caractersticas principales que presentan. Esta seccin es respaldada por textosde: Chapman [2], Liwschitz [3] y Richardson [5].

    En el segundo captulo se observan las diferentes tcnicas que se pueden utilizar para controlar esta clasede motores, en donde se puede comprobar la gran precisin del control vectorial. Respaldan este captulo lasinvestigaciones realizadas por Axsys Technologies [1] y Torn [6].

    El captulo 3 aborda la historia de la lgica programable, as como los leguajes existentes para describir diseos dehardware en la plataforma FPGA. Para este apartado se utiliz un artculo de Larson [7] en el se habla principalmentede la implementacin de control de lazo cerrado en la robtica; as como tambin un texto de Xilinx [4], uno de losfabricantes de FPGAs.

    Para finalizar, en el cuarto captulo se analiza la metodologa empleada para la creacin de cada bloque delcontrolador desarrollado en este trabajo. Es importante destacar en relacin a la obtencin de las funciones desin y cos, que se obtuvieron por medio de un sistema de interpolacin. Cabe mencionar que sta no es la nicamanera de obtener estas funciones ya que existe el mtodo de CORDIC. Este algoritmo es el que utilizan muchascalculadoras de bolsillo; tambin se puede disear un sistema embebido dedicado a la obtencin de estas funcionestrigonomtricas pero esta solucin resultara sobrada para el problema de control vectorial que se propone resolveren este trabajo.

  • 2 Introduccin

  • Captulo 1

    Motores de CD con escobillas y sinescobillas

    1.1 Motores elctricos

    El motor elctrico es una mquina que convierte la energa elctrica en mecnica, principalmente medianteel movimiento rotatorio; la gran mayora de estos motores son mquinas reversibles que pueden operar comogeneradores, realizando el trabajo inverso es decir transformar energa mecnica en elctrica. En la Fig. 1.1 semuestra la estructura de un motor elctrico tpico.

    Figura 1.1: Motor elctrico DC

    1.2 Principio del motor elctrico

    La induccin electromagntica es el fenmeno que origina la produccin de una fuerza electromotriz en un medio ocuerpo expuesto a un campo magntico variable, o bien en un medio mvil respecto a un campo magntico esttico.Es as que, cuando dicho cuerpo es un conductor, se produce una corriente inducida. Este fenmeno fue descubiertopor Michael Faraday quin lo expres indicando que la magnitud del voltaje inducido es proporcional a la variacindel flujo magntico lo que se conoce como Ley de Faraday (Eq. 1.1).

  • 4 Motores de CD con escobillas y sin escobillas

    = t

    (1.1)

    donde es fuerza electromotriz (FEM), es flujo magntico y t es el tiempo.

    1.3 Motores de CD con escobillas

    El movimiento giratorio de los motores de CD se basa en el empuje derivado de la repulsin y atraccin entre polosmagnticos. Creando campos constantes convenientemente orientados en estator y rotor, se origina un par de fuerzasque obliga a que la armadura (tambin se le llama as al rotor) gire buscando la posicin de equilibrio; en la Fig.1.2se ejemplifica el movimiento previamente descrito.

    Figura 1.2: Motor DC

    Gracias a un juego de conexiones entre unos conductores estticos, llamados escobillas, y las bobinas que llevael rotor, los campos magnticos que produce la armadura cambian a medida que sta gira, para que el par de fuerzasque la mueve se mantenga siempre vivo.

    Las partes fundamentales de un motor de corriente continua son:

    1. Estator (Fig.1.3). Es el que crea el campo magntico fijo, al que se le llama excitacin. En los motores pequeosse consigue con imanes permanentes. Cada vez se construyen imanes ms potentes, y como consecuenciaaparecen en el mercado motores de excitacin permanente, mayores.

    2. Rotor(Fig.1.4) Tambin llamado armadura. Lleva las bobinas cuyo campo crea, junto al del estator, el par defuerzas que le hace girar.

  • 1.3 Motores de CD con escobillas 5

    A = Polo de conmutacin F = Conductores de inducido

    B = Devanado de conmutacin G = Carcasa

    C = Bobina de inductor H = Colector de laminas

    D = Ncleo polar I = Escobilla y portaescobilla

    E = Zapato polar L = Conductores de compensacin

    Figura 1.3: Estator

    Figura 1.4: Rotor

  • 6 Motores de CD con escobillas y sin escobillas

    3. Escobillas. Normalmente son dos cilindros de grafito que hacen contacto con las bobinas del rotor. A medidaque ste gira, la conexin se conmuta entre unas y otras bobinas, y debido a ello se producen chispas quegeneran calor. Las escobillas se fabrican normalmente de grafito, y su nombre se debe a que los primerosmotores llevaban en su lugar unos paquetes hechos con alambres de cobre dispuestos de manera que al girarel rotor barran, como pequeas escobas, la superficie sobre la que tenan que hacer contacto.

    4. Colector.(Fig.1.5) Los contactos entre escobillas y bobinas del rotor se llevan a cabo intercalando una coronade cobre partida en sectores. El colector consta a su vez de dos partes bsicas:

    (a) Delgas. Son los sectores circulares, aislados entre s, que tocan con las escobillas y a su vez estnsoldados a los extremos de los conductores que conforman las bobinas del rotor.

    (b) Micas. Son lminas delgadas del mismo material, intercaladas entre las delgas de manera que el conjuntoforma una masa compacta y mecnicamente robusta.

    Figura 1.5: Colector

    Visto el fundamento por el que se mueven los motores DC, es fcil intuir que la velocidad que alcanzan stosdepende en gran medida del equilibrio entre el par motor en el rotor y el par antagonista que presenta la resistenciamecnica en el eje.

    1.3.1 Excitacin

    La forma de conectar las bobinas del estator es lo que se define como tipo de excitacin. Se puede distinguir entre:

    1. Excitacin independiente. Son aquellos que obtienen la alimentacin del rotor y del estator de dos fuentes detensin independientes. Con ello, el campo del estator es constante al no depender de la carga del motor, yel par de fuerza es entonces prcticamente constante. Las variaciones de velocidad al aumentar la carga se

  • 1.3 Motores de CD con escobillas 7

    debern slo a la disminucin de la fuerza electromotriz por aumentar la cada de tensin en el rotor. Estesistema de excitacin no se suele utilizar debido al inconveniente que presenta el tener que utilizar una fuenteexterior de corriente.

    2. Excitacin en derivacin. Los devanados inducido e inductor estn conectados en paralelo y alimentados poruna fuente comn. Tambin se denominan mquinas shunt, y en ellas un aumento de la tensin en el inducidohace aumentar la velocidad de la mquina.

    3. Excitacin en serie. Los devanados de inducido y el inductor estn colocados en serie y alimentados por unamisma fuente de tensin. En este tipo de motores existe dependencia entre el par y la velocidad; son motoresen los que, al aumentar la corriente de excitacin, se hace disminuir la velocidad, con un aumento del par.

    4. Excitacin compuesta. Tambin llamados compound, en este caso el devanado de excitacin tiene una parte del en serie con el inducido y otra parte en paralelo. El arrollamiento en serie con el inducido est constituido porpocas espiras de gran seccin, mientras que el otro est formado por un gran nmero de espiras de pequeaseccin. Permite obtener por tanto un motor con las ventajas del motor serie, pero sin sus inconvenientes.Sus curvas caractersticas sern intermedias entre las que se obtienen con excitacin serie y con excitacin enderivacin.

    Existen dos tipos de excitacin compuesta. En la llamada compuesta adicional el sentido de la corriente querecorre los arrollamientos serie y paralelo es el mismo, por lo que sus efectos se suman, a diferencia de lacompuesta diferencial, donde el sentido de la corriente que recorre los arrollamientos tiene sentido contrario ypor lo tanto los efectos de ambos devanados se restan.

    1.3.2 Velocidad del motor de corriente continua.

    En el colector el nmero de delgas que se observan hacen suponer que su inducido posee una gran cantidad debobinas, lo que implica un empuje muy constante.

    Como ya hemos dicho, la configuracin ms popular es la de excitacin independiente, y a ella se refieren las dosexpresiones que vienen a continuacin:

    1. La velocidad es proporcional al valor de la tensin media de CD esto es vlido siempre que se mantenganconstantes, las condiciones de excitacin y el par mecnico resistente.

    2. El valor de la tensin media aplicada a las conexiones de la armadura del motor se distribuye fundamentalmentecomo se muestra en la ecuacin 1.2

    U = RI + E (1.2)

    En la cual U es tensin media aplicada, (RI) es la cada de tensin debida a la corriente que circula por elinducido y E es la Fuerza contraelectromotriz inducida (velocidad).

    Segn el punto (1), la velocidad se puede variar empleando rectificadores controlados para proporcionarle entodo momento la tensin media adecuada. Para medir su velocidad se puede emplear, segn el punto (2), un mtodoalternativo a la dinamo tacomtrica y que consiste en restar a la ecuacin 1.2 la cada de tensin (R I) en laresistencia de las bobinas de armadura, quedando solo con el valor correspondiente a la fuerza contraelectromotriz(E), muestra directa de la velocidad. En este entorno, se tiende a pensar que all donde se encuentran motores decorriente continua es muy posible que sea debido a la necesidad de tener que poder variar la velocidad de forma

  • 8 Motores de CD con escobillas y sin escobillas

    sencilla y con gran flexibilidad.

    1.4 Motores de CD sin escobillas (Brushless)

    Hoy en da los motores de corriente directa sin escobillas (BLDC por sus siglas en ingls Brushless Direct Current) hanganado mucha popularidad rpidamente en industrias de electrodomsticos, automotriz, aeroespacial, de consumo,mdicos, sistemas de automatizacin industrial. En la Fig.1.6 se muestra un motor CD sin escobillas, el cual es mascomn encontrar en tiendas de aeromodelismo.

    Figura 1.6: Motor brushless comercial

    Como lo indica su nombre los motores BLDC no usan escobillas para conmutar ya que conmutan de maneraelectrnica; adems la proporcin de torque entregado al tamao del motor es mayor, por lo que es til en aplicacionesdonde el espacio y el peso son factores a considerar.

    La construccin y el principio de operacin de los motores BLDC son similares a un tipo de motor sncrono. Estosignifica que el campo magntico generado por el estator y el campo magntico generado por el rotor, giren a lamisma frecuencia.

    El estator (Fig. 1.7) de un motor BLDC es de laminaciones de acero apiladas con devanados colocados en lasranuras que estn cortadas axialmente a lo largo de la periferia interna. Tradicionalmente, el estator se asemeja alde un motor de induccin, sin embargo, la distribucin de los devanados de una manera diferente, ya que muchosBLDC tienen tres devanados del estator conectados en estrella. Cada uno de estos devanados se construyen connumerosas bobinas interconectadas para formar un devanado. Una o ms bobinas son colocadas en las ranuras yse interconectan para que formar un devanado. Cada uno de estos devanados estn distribuidos en la periferia delestator para formar un nmero par de polos.

    Hay dos variantes de los devanados del estator:

    Motores trapezoidales y senoidales. Esta diferenciacin se hace sobre la base de la interconexin de las bobinasen los devanados del estator para dar los diferentes tipos de fuerza contraelectromotriz. Como sus nombres indican,el motor trapezoidal entrega una fuerza contraelectromotriz en forma trapezoidal y el senoidal entrega una senoide,

  • 1.4 Motores de CD sin escobillas (Brushless) 9

    Figura 1.7: Estator de un motor BLDC

    como se muestra en la Fig.1.8.

    Adems de la fuerza contraelectromotriz, la fase actual muestra variaciones trapezoidales y senoidales en losrespectivos tipos de motor. Esto hace que el torque de salida de un motor senoidal sea ms suave que el deun motor de forma trapezoidal. Sin embargo, ste viene con un costo extra, como los motores senoidales tieneninterconexiones de devanados extra; debido a la distribucin de las bobinas en la periferia del estator, lo que aumentael cobre, por la ingesta de los devanados del estator. Dependiendo de la capacidad del suministro de energa delcontrol, se puede elegir el motor con el voltaje correcto del estator.

    La fuerza contraelectromotriz se define como el voltaje generado por cada devanado producido cuando un motorBLDC gira,dicho voltaje se opone al voltaje suministrado a los devanados, de acuerdo a la Ley de Lenz. La polaridadde esta fuerza contraelectromotriz es en la direccin opuesta del voltaje aplicado. La fuerza contraelectromotrizdepende principalmente de tres factores:

    1. La velocidad angular del rotor

    2. Campo magntico generado por los imanes del rotor

    3. El nmero de vueltas en los bobinados del estator

    El rotor es de imn permanente y puede variar de dos a ocho pares de polos con el norte (N) y sur (S) alternando.Basado en la densidad de campo magntico requerido en el rotor, se elige el material magntico adecuado para hacerel rotor. Imanes de ferrita son utilizados tradicionalmente para hacer imanes permanentes. Los imanes de ferrita sonmenos costosos pero tienen la desventaja de la densidad de flujo bajo para un volumen dado.Adems, estos imanesde aleacin mejoran la relacin de tamao-a-peso y dan mayor torque para motores del mismo tamao con imanesde ferrita. En la Fig.1.9 se muestra las diferentes formas en que puede ser construido un rotor de imanes.

    La teora de operacin dice que cada secuencia de conmutacin tiene uno de los devanados energizadospositivamente (La corriente entra en el devanado), el segundo devanado es negativo (la corriente sale del devanado)y el tercero se encuentra en un estado no-energizado. El torque se produce debido a la interaccin entre el campomagntico generado por las bobinas del estator y los imanes permanentes. Idealmente, el torque mximo se producecuando estos dos campos son de 90 a cada uno de otros y se cae a medida que los campos se mueven juntos.Con el fin de para mantener el motor en marcha, el campo magntico producido por los devanados deben cambiarde posicin, como el rotor se mueve para alinearse con el campo del estator. Lo que define la secuencia de energizarlos devanados es conocido como Conmutacin de 6 pasos (Six-Step Commutation).

  • 10 Motores de CD con escobillas y sin escobillas

    Figura 1.8: Fuerza contraelectromotriz en forma trapezoidal y senoidal

    Figura 1.9: Rotor de imanes

  • 1.4 Motores de CD sin escobillas (Brushless) 11

    De acuerdo a las caractersticas de torque y velocidad hay dos parmetros utilizados para definir el torque deun motor BLDC, el torque mximo (TP) y el torque nominal (TR). Durante operacin continua, el motor puede tenercarga para valores nominales. Como se seal anteriormente, en un BLDC, el torque es constante para un rango develocidad hasta la velocidad nominal. El motor puede ser ejecutado hasta la velocidad mxima, que puede ser dehasta el 150% de la velocidad nominal pero el torque empieza a caer.

    Hay aplicaciones que tienen arranques, paradas frecuentes y reversiones frecuentes de rotacin con la carga enel motor, por lo que demandan ms torque que el nominal. Este requisito viene por un breve perodo, especialmentecuando el motor arranca de un punto muerto y durante la aceleracin. Durante este perodo, el torque adicional esnecesario para superar la inercia de la carga y el rotor en s. El motor puede entregar un mayor torque, limitado hastael torque mximo, mientras se sigue la curva de torque de alta velocidad.En la Fig.1.10 se observa grficamente lascaractersticas de velocidad y torque.

    Figura 1.10: Caractersticas de velocidad y torque

    1.4.1 Tpicas especificaciones tcnicas del motor BLDC

    La Tabla 1.1 muestra algunos de los parmetros elctricos que se puede encontrar en la especificacin tcnica de unmotor y explica cmo cada parmetro es til para la aplicacin.

    Tabla 1.1: Parmetros elctricos de un motor BLDC

    Parmetros elctricos Smbolo UnidadVoltaje de Referencia V V olts

    Corriente Nominal Ir AmperesCorriente mxima Ipk AmperesCorriente sin carga INL Amperes

    Fuerza contraelectromotriz KE V/RPM V/rad/sResistencia R OhmsInductancia L mH

    Constante de motor KM Oz in/W NM/

    W

    Constante de tiempo elctrica tE ms

    Ahora en la Tabla 1.2 se mencionan los parmetros mecnicos.

  • 12 Motores de CD con escobillas y sin escobillas

    Tabla 1.2: Parmetros mecnicos de un motor BLDC

    Parmetros mecnicos Smbolo UnidadVelocidad N RPM rad/s

    Torque continuo TC Oz in N MTorque mximo Tpk Oz in N M

    Constante de Torque Kt Oz in/A N M/ATorque de friccin TF Oz in N M

    Inercia de rotor JM Oz in s2/N M s2Amortiguamiento viscoso D Oz in/RPM N M s

    Amortiguamiento constante KD Oz in/RPM N M sTemperatura T F C

    Temperatura mxima de devanado max F CImpedancia trmica RTH F/W C/W

    Constante trmica de tiempo tTH min

    1.4.2 Ventajas y desventajas de los motores BLDC contra los de CD

    Los motores BLDC tienen muchas ventajas frente a los motores de CD con escobillas y frente a los motores deinduccin. Algunas de estas ventajas son:

    1. Mejor relacin velocidad-par motor.

    2. Mayor respuesta dinmica.

    3. Mayor eficiencia.

    4. Mayor vida til.

    5. Menor ruido.

    6. Mayor rango de velocidad.

    Adems, la relacin par motor-tamao es mucho mayor, lo que implica que se puedan emplear en aplicacionesdonde se trabaje con un espacio reducido. Entre sus aplicaciones tpicas estn: aeromodelismo, discos duros,ventiladores de PC, etc.

    Por otra parte, los motores BLDC tienen dos desventajas, que son las siguientes:

    1. Tienen un mayor costo

    2. Requieren un control bastante ms complejo

    La Tabla 1.3 muestra una comparacin entre ambos motores.

  • 1.4 Motores de CD sin escobillas (Brushless) 13

    Tabla 1.3: Comparacin entre motor BLDC y motor con escobillas

    Motor BLDC Motor con escobillasConmutacin Conmutacin electrnica basada en

    sensores de posicin de efecto HallConmutacin por escobillas

    Mantenimiento Mnimo PeridicoDurabilidad Mayor Menor

    Curva Velocidad / Torque Plana. Operacin a todas lasvelocidades con la carga definida

    Moderada. A altas velocidadesla friccin de las escobillas seincrementa, reduciendo el par.

    Eficiencia Alta. Sin cada de tensin por lasescobillas

    Moderada

    Potencia de salida / Tamao Alta. Menor tamao debido amejores caractersticas trmicasporque los bobinados estn en elestator, que al estar en la carcasatiene una mejor disipacin de calor.

    Baja. El calor producido en laarmadura es disipado en el interioraumentando la temperatura y limi-tando las caractersticas.

    Inercia del rotor Baja. Debido a los imanes perma-nentes en el rotor

    Alta. Limita las caractersticasdinmicas.

    Rango de velocidad Alto. Sin limitaciones mecnicas im-puestas por escobillas/conmutador.

    Bajo. El lmite lo imponen principal-mente las escobillas.

    Costo de construccin Alto. Debido a los imanes perma-nentes

    Bajo

    Control Complejo y caro Simple y baratoRequisitos de control Un controlador es requerido siem-

    pre para mantener el motor funcio-nando. El mismo puede usarsepara variar la velocidad.

    No se requiere control si no serequiere una variacin de velocidad.

  • 14 Motores de CD con escobillas y sin escobillas

  • Captulo 2

    Control de motores de CD sin escobillas

    2.1 Tcnicas de control para motores Brushless

    Los devanados de un motor brushless estn distribuidos a lo largo del estator en mltiples fases. Dichos motoresconstan normalmente de tres fases con una separacin de 120 entre ellas.

    A diferencia de los motores de CD con escobillas donde la conmutacin entre sus fases se realiza internamentede forma mecnica, en los motores brushless las corrientes y voltajes aplicados a cada uno de los devanados delmotor deben ser controlados independientemente mediante una conmutacin electrnica. El dispositivo encargadode realizar esta tarea se denomina controlador de motor.

    Para generar par motor el controlador debe excitar continuamente los devanados adecuados de forma quegeneren un campo magntico perpendicular a la direccin del rotor.

    Existen dos grandes familias de controladores de motor diferenciadas principalmente en la utilizacin (sensored)o no (sensorless) de algn sensor para determinar la posicin del rotor.

    Las tcnicas de control para motores brushless se pueden clasificar segn el algoritmo de conmutacinimplementado. Las ms utilizadas actualmente son:

    1. Conmutacin trapezoidal (tambin llamada 6- steps mode o basada en sensores Hall).

    2. Conmutacin sinusoidal

    3. Control vectorial Control de Campo Orientado por sus siglas en ingls FOC(Field Oriented Control).

    Estas tcnicas tienen bsicamente como objetivo estimar la excitacin ptima de cada una de las fases delmotor y se diferencian principalmente por su complejidad de implementacin, que se traduce en un incremento deprestaciones.

    2.2 Control basado en conmutacin trapezoidal

    Uno de los mtodos ms simples de control para motores de corriente continua sin escobillas es el denominadoConmutacin trapezoidal. En la Figura 2.1, la corriente se controla a travs de las terminales del motor un par ala vez, con la tercera terminal del motor siempre desconectada de la fuente de poder. Tres dispositivos de efectoHall incrustados en el motor se usan normalmente para proporcionar seales digitales que la posicin del rotor

  • 16 Control de motores de CD sin escobillas

    medida dentro de los sectores de 60 y proporcionar esta informacin al controlador del motor. Porque en cualquiermomento, las corrientes en dos de los devanados son iguales en magnitud y en el tercero es cero, este mtodo slopuede producir vectores de corriente en el espacio, con una de las seis direcciones diferentes. Cuando el motor gira,la corriente en las terminales de ste, son elctricamente conmutadas cada 60 de rotacin para que el vector decorriente en el espacio est siempre cercano a 30 de la direccin de cuadratura. Esto produce un vector de corrienteen el espacio que se aproxima a una rotacin suave, ya que entre los seis pasos diferentes de direcciones es comoel rotor gira.

    Figura 2.1: Resultado de conmutacin trapezoidal

    Un diagrama de bloques de un controlador trapezoidal tpico con lazo cerrado de corriente para un motor sinescobillas trapezoidal se muestra en la Figura 2.2. Un controlador PI es usado para el control de la corrienteque circula. El torque deseado se compara con la corriente medida para producir una seal de error. El erroractual se integra (I) y amplifica (P) para producir una correccin a la salida, que tiende a reducir el error. La salidadel controlador PI es posteriormente modulada por medio de PWM (Pulse-Width Modulation). Esto funciona paramantener una corriente constante en cualquier devanado que actualmente est siendo impulsado.

    La conmutacin se realiza de forma independiente a la del control de corriente. Las seales de posicin delos dispositivos de Hall en el motor se utilizan para seleccionar el par adecuado de terminales del motor para serimpulsadas por el puente de salida. La terminal restante se deja desconectada.

    El circuito de deteccin de corriente est diseado para que la corriente sea siempre medida en el par dedevanados activos y retroalimentar al lazo de control de corriente.

    La conmutacin trapezoidal se realiza de manera adecuada para muchas aplicaciones, pero tiene sus deficien-cias. Debido a que el vector espacial de corriente slo puede apuntar en seis direcciones discretas, por lo que quedadesalineada respecto la direccin ptima en cualquier lugar de 0 a 30. Esto causa una deondulacin de torque del15% (1 cos(30)) a una frecuencia de seis veces la velocidad elctrica de rotacin del motor.

    El desajuste del vector espacial de corriente tambin representa una prdida de eficiencia, ya que alguna corrienteen el devanado no produce ningn torque. Adems, el cambio de terminales activas introduce un transitorio al lazode control de corriente de seis veces por revolucin elctrica del motor. Esto provoca un click audible y puede hacerque el motor sea difcil de controlar con precisin a velocidades lentas.

    Adems puede ocasionar desgaste mecnico,vibraciones o ruido audible reduciendo las prestaciones y el tiempo

  • 2.3 Control basado en conmutacin senoidal 17

    Figura 2.2: Esquema de un controlador con conmutacin trapezoidal

    de vida del motor. No obstante gracias a su fcil implementacin, esta tcnica de conmutacin viene siendo muyutilizada desde el inicio de los motores brushless especialmente en aplicaciones de bajo costo.

    2.3 Control basado en conmutacin senoidal

    La conmutacin trapezoidal es insuficiente para proporcionar un control de motor suave y preciso de motoresde corriente continua sin escobillas, especialmente a bajas velocidades. La conmutacin senoidal resuelve esteproblema, ya que intenta controlar la posicin del rotor continuamente.

    Esta continuidad se consigue aplicando simultneamente tres corrientes senoidales desfasadas 120 a los tresdevanados del motor. La fase de estas corrientes se escoge de forma que el vector de corrientes resultante siempreest en cuadratura con la orientacin del rotor y tenga un valor constante.

    Como consecuencia de este procedimiento se obtiene un par ms preciso y sin el rizado tpico de la conmutacintrapezoidal. No obstante, para poder generar dicha modulacin senoidal es necesaria una medida precisa de laposicin del rotor.

    Debido a que los sensores de efecto Hall slo proporcionan una posicin aproximada es necesario el uso de otrodispositivo que aporte mayor precisin angular como puede ser un encoder.

    La Figura 2.3 muestra el diagrama de bloques tpico de un controlador con conmutacin sinusoidal.

    Segn la ley de Kirchhoff la suma de dos de las tres corrientes entrantes a un nodo es igual al valor negativo dela tercera ia + ib = ic . Por tanto, controlando dos de las corrientes aplicadas al motor se controla implcitamentela tercera o lo que es lo mismo la tercera corriente no puede ser controlada de forma independiente.

    Gracias a la informacin de la posicin del rotor proporcionada por el encoder se sintetizan las dos senoidesdeseadas, normalmente mediante el uso de una LUT (Look-up Table). stas son comparadas con las medidas de

  • 18 Control de motores de CD sin escobillas

    Figura 2.3: Esquema de un controlador con conmutacin senoidal

  • 2.4 Control vectorial (Field Oriented Control) 19

    las corrientes que circulan por el motor y el error resultante aplicado a dos controladores PI que intentan corregir lasdesviaciones.

    La salida de los filtros es utilizada como entrada del generador de excitacin que en la mayora de los casosincorpora un modulador PWM.

    La conmutacin senoidal soluciona los problemas de eficiencia que presenta la conmutacin trapezoidal. Sinembargo, presenta problemas a altas velocidades de rotacin del motor debido a la limitacin frecuencial del buclede corriente en el controlador PI.

    A mayor velocidad de rotacin, mayor error y por tanto mayor desalineacin entre el vector de corrientes y ladireccin de cuadratura del rotor. Este hecho provoca una progresiva disminucin del par motor a medida queaumenta la velocidad como lo apreciamos en la Figura 2.4

    Figura 2.4: Par motor en funcin de la velocidad de rotacin

    Para mantener el par constante se necesita aumentar la corriente que circula por el motor provocando unadisminucin de la eficiencia.

    Este deterioro de la eficiencia aumenta al incrementarse la velocidad hasta llegar a un punto en el que el desfaseentre el vector de corrientes y la direccin de cuadratura puede llegar a 90 produciendo un par motor completamentenulo.

    2.4 Control vectorial (Field Oriented Control)

    El problema principal que presenta la conmutacin senoidal es que intenta controlar directamente las corrientes quecirculan por el motor, las cuales son intrnsecamente variantes en el tiempo. Al aumentar la velocidad del motor, y portanto la frecuencia de las corrientes, empiezan a aparecer problemas.

    El control vectorial o Field Oriented Control (FOC) soluciona el problema controlando el vector de corrientesdirectamente en un espacio de referencia ortogonal y rotacional, llamado espacio D-Q (Direct- Quadrature).

  • 20 Control de motores de CD sin escobillas

    Dicho espacio de referencia est normalmente alineado con en el rotor de forma que permite que el control delflujo y del par del motor se realice de forma independiente. La componente directa permite controlar el flujo y lacomponente en cuadratura el par.

    Debido a que el vector de corrientes en el espacio de referencia D-Q es esttico los controladores PI trabajan encontinua y se eliminan por tanto los problemas frecuenciales de la conmutacin sinusoidal (ver Figura 2.5).

    Figura 2.5: Comparativa entre el espacio esttico de devanados y el espacio rotacional D-Q

    Para poder realizar este control es necesario transformar matemticamente las medidas de las tres corrientesreferidas al espacio esttico de las bobinas del motor al espacio rotacional D-Q.

    Aunque esta transformacin puede implementarse en un nico paso, didcticamente se divide en dos transfor-maciones: Transformacin de Clarke y Transformacin de Park.

    2.4.1 Transformacin de Clarke

    Transformacin de un sistema de 3-fases equiespaciados (a, b, c) a uno de 2-fases ortognales (, ). Podemos veresa relacin en la Figura 2.6

    Para lograr esta transformacion hay que hacer la siguiente operacin matricial mostrada en la ecuacin 2.1

    [isis

    ]=

    23

    [1 cos cos 20 sin sin 2

    ] iaibic

    (2.1)2.4.2 Transformacin de Park

    Trasformacin de un sistema ortogonal estacionario (, ) a uno rotacional (d, q).En la Figura 2.7 podemos apreciar dicha rotacin.

    Y ahora realizamos la operacin matricial de la ecuacin 2.2[isdisq

    ]=[

    cos sin sin cos

    ][isis

    ](2.2)

  • 2.4 Control vectorial (Field Oriented Control) 21

    Figura 2.6: Transformada de Clarke

    Figura 2.7: Transformada de Park

  • 22 Control de motores de CD sin escobillas

    Al igual que en la conmutacin senoidal es importante conocer la posicin del rotor con exactitud. Un erroren la estimacin de sta provocar que la componente directa y la componente cuadratura no estn totalmentedesacopladas. Una vez aplicadas las dos transformaciones el control del motor se simplifica considerablemente. Doscontroladores PI son utilizados para controlar la componente directa y la cuadratura de forma independiente.

    La componente en cuadratura es la nica que proporciona par til, por tanto, la referencia de la componente directasuele fijarse a cero. De esta forma se fuerza al vector de corrientes a situarse en la direccin de la componente decuadratura maximizando la eficiencia del sistema.

    Posteriormente se realizan las transformaciones inversas para regresar al espacio estacionario de las bobinas yse aplica la excitacin correspondiente a cada una de las fases mediante modulacin.

    El diagrama de bloques del control vectorial se muestra en la Figura 2.8.

    Figura 2.8: Esquema de controlador con control vectorial

    Este tipo de control mantiene las mismas caractersticas de par que la conmutacin sinusoidal pero eliminando lalimitacin frecuencial.

    El Control vectorial proporciona el movimiento suave a baja velocidad, as como el eficiente funcionamientoa altas velocidades. La conmutacin senoidal produce un movimiento a velocidades bajas, pero es ineficaz aaltas velocidades. La conmutacin trapezoidal puede ser relativamente eficiente a altas velocidades, pero causaondulacin de torque a bajas velocidades. Por lo que el control vectorial ofrece lo mejor de ambos mundos.

  • Captulo 3

    Circuitos lgicos programables

    3.1 Breve historia de la lgica programable

    Antes de la invencin de los sistemas electrnicos de lgica programable, los diseadores tuvieron que utilizarcircuitos integrados especializados, cada uno de los cuales contena slo pocas compuertas. Tales chips fueronllamados de lgica discreta. Con el fin de crear incluso un dispositivo moderadamente complejo se tenan que montarunas pocas decenas de chips en un tablero. Esto condujo al diseo de tabletas ms complejas a costos menores.

    El primer tipo de dispositivos de lgica programable (Programmable Logic Array PLA) se introdujo a principios delos 70s. Los PLAs fueron chips programables de una sola vez con compuertas AND y OR y capaz de implementaruna funcin lgica simple representada como una forma normal disyuntiva. Un dispositivo de PLA puede ser definidopor tres parmetros:

    1. Nmero de entradas

    2. Nmero de compuertas AND (trminos)

    3. Nmero de compuertas OR (= nmero de salidas)

    Un diagrama simplificado del dispositivo de PLA con 4 entradas, 4 trminos y 3 salidas es el mostrado en la Figura3.1.

    Figura 3.1: Programmable Logic Arrays (PLAs)

  • 24 Circuitos lgicos programables

    Hay que tener en cuenta que las compuertas lgicas son fijas y slo las matrices de conmutacin sonprogramables. La matriz de conmutacin se basa en que los fusibles se programan cuando se queman.

    Tambin hay una variacin de esta arquitectura en el que slo la primera matriz de conmutacin (antes delas compuertas AND) era programable, y la segunda era cableada. A estos dispositivos se les denomina PAL(Programmable Array Logic).

    3.1.1 Dispositivos lgicos programables complejos (CPLDs)

    Dispositivos lgicos programables complejos (CPLDs) puede ser vistos como una continuacin de la arquitectura delos PLA. El CPLD incluye bloques lgicos (macroclulas) en los bordes del chip, y una matriz de conexin situada enla parte central. En la Figura 3.2 se muestra el diagrama de un CPLD.

    Figura 3.2: Complex Programmable Logic Devices (CPLDs)

    Cada macroclula tiene una estructura similar a la del PLA. Por lo que un dispositivo CPLD tambin puede servisto como un conjunto de PLAs en un chip con interconexiones programables.

    Los CPLDs estan generalmente basados en memoria tipo flash, es decir, la configuracin de macroclulas y lamatriz de interconexin se define por el contenido de la de memoria flash del chip. Esto significa que el CPLD norequiere configurarse despus de cada encendido, a diferencia de los FPGAs basados en SRAM .

    Cabe sealar que hay tambin FPGAs basados en Flash. La principal diferencia entre CPLD y FPGA no est enla configuracin de la memoria, sino en la arquitectura subyacente.

  • 3.2 Arquitectura del FPGA 25

    3.2 Arquitectura del FPGA

    La arquitectura ms comn de la FPGA consiste en una serie de bloques lgicos configurables (CLBs), terminalesI/O (entrada/salida), y los canales de enrutamiento. En general, todos los canales de envo tienen el mismo ancho(nmero de cables). Mltiples terminales I/O pueden encajar en la altura de una fila o la anchura de una columna delarreglo.

    Un circuito de aplicacin debe ser asignada a un FPGA con recursos suficientes. Aunque el nmero de CLBs yde I/O requeridos son fciles de determinar desde el diseo, el nmero de pistas de enrutamiento necesarias puedenvariar considerablemente, incluso entre los diseos con la misma cantidad de la lgica. Por ejemplo, un interruptor deconmutacin de enrutamiento requiere mucho ms que un conjunto sistlico con el mismo nmero de compuertas.Dado que el enrutamiento no utilizados pistas incrementa el costo (y disminuye el rendimiento) sin aportar ningnbeneficio, los fabricantes de FPGA tratan de proveer las suficientes pistas para que la mayora de los diseos seajustaran en trminos de LUT e I/Os pueden ser direccionados. Esto es determinado por estimaciones, tales comolos derivados de la regla de Rent o por experimentos con los diseos existentes.

    Un clsico bloque lgico de FPGA consiste en una LUT de 4 entradas, y un flip-flop, como se muestra en laFigura 3.3. En los ltimos aos, los fabricantes han empezado a pasar a LUTs de 6 entradas en sus partes de altorendimiento por lo que demandan una mayor eficiencia.

    Figura 3.3: Tpico bloque lgico

    Slo hay una salida, que puede ser la salida registrada o no registrada del LUT. El bloque lgico tiene cuatroentradas del LUT y una entrada de reloj. Dado que las seales de reloj (con frecuencia las seales de expansin)son normalmente enviados a travs de redes de propsito especial en FPGAs comerciales, y otras seales sonadministradas por separado. Para esta arquitectura, las ubicaciones de los pines del bloque lgico del FPGA semuestran en la Figura 3.4.

    Cada entrada es accesible desde un lado del bloque lgico, mientras que el pin de salida se puede conectar alcable de direccionamiento, tanto al canal de la derecha y el canal debajo del bloque lgico.

    Cada pin de salida del bloque lgico se puede conectar a cualquiera de los segmentos de cableado en los canalesadyacentes. Del mismo modo, una terminal I/O se puede conectar a cualquiera de los segmentos de cableado en elcanal adyacente a l. Por ejemplo, una terminal I/O en la parte superior del chip se puede conectar a cualquiera delos cables W (donde W es la anchura del cauce) en el canal horizontal inmediatamente debajo de ella.

    En general, el direccionamiento en el FPGA no est segmentado. Es decir, cada segmento de cableado seextiende a slo un bloque lgico antes de llegar a una caja de conmutadores. Mediante la activacin de algunos delos interruptores programables dentro de una caja de conmutadores, ms rutas de acceso pueden ser construidas.Para una mayor velocidad de interconexin, algunas arquitecturas FPGA abarcan ms lneas para direccionar queabarcan varios bloques lgicos.

    Cada vez que un canal vertical y un canal horizontal se intersectan, se forma una caja de conmutadores. Enesta arquitectura, cuando un cable entra en una caja de conmutadores, hay tres interruptores programables quele permiten conectarse a otros tres cables en los segmentos del canal adyacente. El patrn, o la topologa, deconmutadores utilizados en esta arquitectura est basado el plano o dominio de la topologa de caja del interruptor.En esta topologa de caja de conmutadores un cable en la pista numero 1 se conecta solo a cables de la misma pista

  • 26 Circuitos lgicos programables

    Figura 3.4: Localizacin de los pines en un bloque lgico

    en segmentos adyacentes del canal, los cables de la segunda pista solo se conectan a cables de la misma pista y asisucesivamente. La Figura 3.5 ilustra las conexiones en una caja de conmutadores.

    Figura 3.5: Topologa de caja de conmutadores

    Las familias de FPGAs modernos, amplan las capacidades antes mencionadas para incluir la funcionalidad dealto nivel fijo en el silicio. Tener estas funciones comunes incrustadas en el silicio reduce la superficie necesaria yle da las funciones de mayor velocidad en comparacin a la construccin de los primeros dispositivos. Ejemplos destos son los multiplicadores, bloques genricos de DSP, procesadores integrados, la lgica de I/O de alta velocidady las memorias incrustadas. Los FPGAs son tambin ampliamente usados en sistemas de validacin, incluyendopre-validacin de silicio, post- validacin de silicio, y el desarrollo de firmware. Esto permite a las empresas de chipsvalidar su diseo antes de que el chip sea producido en la fbrica, reduciendo el tiempo de comercializacin.

  • 3.3 Diseo y programacin en FPGAs 27

    3.3 Diseo y programacin en FPGAs

    Para definir el comportamiento del FPGA, el usuario tiene que proporcionar un diseo basado en un lenguaje dedescripcin de hardware HDL (Hardware Description Language); o de un diseo esquemtico. Para el diseo deestructuras muy complejas es ms recomendable utilizar un lenguaje HDL, ya que es posible especificar de formanumrica los requerimientos, que tener que elaborar cada pieza a mano por medio de un mtodo grfico; por otrolado, la introduccin de un esquemtico puede permitir una fcil visualizacin de un diseo.

    Utilizando herramientas de automatizacin de diseo electrnico, se genera un mapeado del diseo. El resultadode este mapeo (netlist) puede ser instalado en la arquitectura de la tarjeta experimental del FPGA utilizando unproceso llamado place-and-route el cual se compone de dos pasos, el primero es la colocacin la cual consisteen decidir dnde colocar todos los componentes electrnicos, circuitos, y elementos lgicos en el modelo final,generalmente limitado por la capacidad del FPGA a utilizar. Esto es seguido por el direccionamiento, que decideel diseo exacto de todos los cables necesarios para conectar los componentes colocados. Este paso debe aplicartodas las conexiones que requiere el siseo, siempre y cuando cumpla con las normas y limitaciones del proceso defabricacin. El usuario deber validar el mapa, colocar y direccionar los resultados a travs de un anlisis de tiempo,de simulacin, y metodologas de verificacin. Una vez que el diseo y el proceso de validacin se ha completado, elarchivo binario generado, se utiliza para configurar la FPGA y realizar las pruebas pertinentes.

    Pasar de archivos esquemticos a archivos de cdigo fuente en HDL de la configuracin implementada: Lafuente de los archivos se transfiere a un software que este dependera del fabricante del FPGA CPLD; que a travsde diferentes etapas producir un archivo. Este archivo ser transferido a la FPGA CPLD a travs de una interfazde serie (JTAG) o en un dispositivo de memoria externa como un EEPROM.

    Los lenguajes HDL ms comunes son VHDL y Verilog, aunque en un intento de reducir la complejidad del diseoen HDL, que se han comparado con el equivalente de los lenguajes ensambladores, hay iniciativas para elevar elnivel de abstraccin a travs de la introduccin de lenguajes alternativos.

    Para simplificar el diseo de sistemas complejos en FPGAs, existen bibliotecas predefinidas de funcionescomplejas y circuitos que se han probado y optimizado para acelerar el proceso de diseo. Estos circuitospredefinidos son comnmente llamados ncleos de propiedad intelectual, y estn disponibles en software dedistribuidores de FPGA y de terceros proveedores de propiedad intelectual que son rara vez libres, y normalmentedistribuidos bajo licencias. Otros circuitos predefinidos estn disponibles en las comunidades de desarrolladorescomo OpenCores y otras fuentes.

    Inicialmente, la descripcin RTL en VHDL o Verilog se simula mediante la creacin de bancos de pruebas parasimular el sistema y observar los resultados. Luego, despus de que el motor de sntesis ha trazado el diseo aun mapeo, este mapeo se traduce a una descripcin del nivel de compuertas donde la simulacin se repite paraconfirmar que la sntesis se completo sin errores. Por ltimo, el diseo se presenta en el FPGA en donde se puedenagregar y ejecutar simulaciones de nuevo con estos valores.

    3.3.1 Lenguaje de descripcin de hardware (Hardware description language HDL)

    Las metodologas tradicionales de diseo se han estructurado alrededor de una jerarqua de las representacionesdel sistema a disear. Distintas representaciones en diferentes niveles de detalle son necesarias para las diferentestareas encontradas durante el diseo. Una de las ms conocidas representaciones de las diferentes vistas y nivelesde abstraccin en un sistema digital es un diagrama en Y mostrado en la Figura 3.6.

    En electrnica, un lenguaje de descripcin de hardware o HDL es una clase de lenguaje de programacin parala descripcin formal de circuitos electrnicos, y ms especficamente para lgica digital. Se puede describir el

  • 28 Circuitos lgicos programables

    Figura 3.6: Vista de diseo y sus correspondientes niveles de abstraccin

    funcionamiento del circuito, su diseo y organizacin, y pruebas para comprobar su funcionamiento por medio de lasimulacin.

    HDL maneja expresiones de texto estndar basado en las de la estructura espacial, temporal y el comportamientode los sistemas electrnicos. Al igual que los lenguajes de programacin concurrentes, la sintaxis y la semntica deHDL incluye anotaciones explcitas para expresar la concurrencia. Sin embargo, a diferencia de otros lenguajes, HDLtambin incluyen una nocin explcita de tiempo, que es un atributo primario de hardware.

    El HDL se usa para escribir las especificaciones ejecutables de alguna pieza de hardware. Un programa desimulacin, diseado para la aplicacin de semntica subyacente de las instrucciones del lenguaje, junto con lasimulacin de la evolucin del tiempo, proporciona al diseador de hardware la capacidad de modelar una pieza dehardware antes de que ser creada fsicamente. Simuladores capaces de soportar modelos de evento discreto (digital)y de tiempo continuo (analgico). Ciertamente, es posible representar la semntica de hardware utilizando lenguajesde programacin tradicionales, tales como C++, aunque en funcin de tales programas deben ser aumentadas con lasbibliotecas que sabemos son extensas y difciles de manejar. Hay que considerar que los lenguajes de programacinde software no incluye ninguna capacidad de expresar de manera explcita el tiempo, y es por eso que no funcionancomo un lenguaje de descripcin de hardware. Antes de la reciente introduccin del sistema Verilog, la integracinde C++ con un simulador lgico fue una de las pocas maneras de utilizar programacin orientada a objetos en laverificacin de hardware. El Sistema Verilog es el primer gran HDL que se nos presenta para programacin orientadaa objetos.

    Usando el subconjunto propio de cualquier lenguaje (hardware o software de programacin), un programa desoftware llamado sintetizador (o un instrumento de sntesis) podemos inferir las operaciones lgicas de hardware delas declaraciones del lenguaje y producir un mapeo equivalente de hardware genrico para aplicar el comportamientoespecificado. Los sintetizadores generalmente pasa por alto las expresiones de cualquier tiempo de construccin enel texto. Por ejemplo, los sintetizadores de lgica digital suelen utilizar los lmites de reloj como la forma de tiempo delcircuito, ignorando cualquier tiempo de construccin. La capacidad de tener un subconjunto sintetizable de lenguajeen s no hacen un lenguaje de descripcin de hardware.

    Para un algoritmo dado, aprovechando el paralelismo de hardware que generalmente supera al software en el

  • 3.3 Diseo y programacin en FPGAs 29

    costo de un presupuesto de desarrollo; el diseo de un sistema en HDL es generalmente mucho ms difcil y consumems tiempo que escribir un programa de software para hacer la misma cosa. En consecuencia, ha habido muchotrabajo realizado sobre la conversin automtica de cdigo C en el HDL, pero esto no ha alcanzado un alto nivel dexito comercial.

    3.3.2 Diseo usando HDL

    La gran mayora de diseos de circuitos digitales modernos gira en torno a una descripcin de HDL del circuito,dispositivo o subsistema deseado.

    La mayora de los diseos empiezan como un conjunto de requisitos por escrito o de un diagrama de alto nivelarquitectnico. El proceso de escribir la descripcin de HDL depende en gran medida del diseador y la naturalezadel circuito. El HDL solamente es un lenguaje de captura y a menudo comienzan con una descripcin de altonivel algortmico como un modelo matemtico en MATLAB o C++. El control y la decisin de las estructuras amenudo son un prototipo en aplicaciones de diagrama de flujo, o ha entrado en un estado-editor de diagramas.Algunos diseadores incluso utilizan lenguajes de scripting (como Perl) para generar automticamente las estructurasrepetitivas en el circuito del lenguaje de HDL. Algunos editores de texto avanzados (como Emacs) ofrecen plantillaspara coloracin de sintaxis-dependiente, y expansin de entidades, arquitectura y declaracin de seal.

    Cuando la implementacin del diseo se concreta, el cdigo HDL, invariablemente debe someterse a la revisindel cdigo. En preparacin para la sntesis, la descripcin HDL est sujeta a una serie de fichas automatizadas.Los inspectores hacer cumplir las directrices de cdigo estndar, identificando construcciones de cdigo ambiguoantes de que puedan causar una mala interpretacin por sntesis posteriores, y comprobar si hay errores comunesde codificacin lgica, como colocando puertos o salidas en cortocircuito.

    En la industria, el diseo de HDL generalmente termina en la fase de sntesis. Una vez que la herramienta desntesis ha trazado la descripcin de HDL en una compuerta mapeada, este mapeo se pasa hacia la fase final.Dependiendo de la tecnologa fsica (FPGA, arreglo de compuertas ASIC, clula estndar ASIC), HDL puede o nopuede desempear un papel importante en la parte posterior del flujo final. En general, como el caudal de diseoavanza hacia una forma de realizacin fsica, la base de datos de diseo se vuelve cada vez ms compleja coninformacin especfica, que no puede ser almacenada en un HDL de descripcin genrico.

    3.3.3 Verilog

    En la industria de los semiconductores y de diseo electrnico, Verilog es un lenguaje de descripcin de hardware(HDL) utilizado para modelar los sistemas electrnicos. Verilog HDL, no debe confundirse con VHDL, es mscomnmente utilizado en el diseo, verificacin y aplicacin de chips de lgica digital en el nivel de transferenciade registro (RTL) en nivel de abstraccin. Tambin se utiliza en la verificacin de circuitos de seales analgicas ymixtas.

    Los lenguajes de descripcin de hardware, como Verilog, difieren de los lenguajes de programacin de software,ya que incluyen formas de describir la propagacin de tiempo y de las dependencias de la seal (sensibilidad). Haydos operadores de asignacin, una asignacin de bloqueo (=), y un no-bloqueo (

  • 30 Circuitos lgicos programables

    de captura, y especialmente los programas de software escrito para documentar y simular circuitos electrnicos.

    Los diseadores de Verilog queran un lenguaje con una sintaxis similar al lenguaje de programacin C, que yaera ampliamente utilizado en el desarrollo de ingeniera de software. Verilog tiene un preprocesador de base (aunquemenos sofisticado que el ANSI C y C++), tambin cuenta con el equivalente de las palabras clave de flujo de control(if / else, for, while, de caso, etc), y operadores compatibles de lenguaje. Algunas diferencias sintcticas incluyenla declaracin de variables, la demarcacin de los bloques de procedimiento y muchas otras diferencias de menorimportancia.

    Un diseo Verilog consiste en una jerarqua de mdulos. Estos mdulos encapsulan la jerarqua de diseo,y comunicarse con otros mdulos a travs de un conjunto de entradas y salidas declaradas, y de puertosbidireccionales. Internamente, un mdulo puede contener cualquier combinacin de lo siguiente: declaraciones devariables, bloques de instrucciones simultneas y secuenciales y los casos de otros mdulos (sub-jerarquas). Lasdeclaraciones secuenciales se colocan dentro de un bloque de inicio y final; y ejecutado en orden secuencial dentrodel bloque. Sin embargo, los mismos bloques se ejecutan al mismo tiempo, calificando a Verilog como un lenguajede flujo de datos.

    En Verilog el concepto de wire (alambre) se compone de dos valores de seal (4-Estados: 1, 0, flotante, nodefinido), y la intensidad (fuerte, dbil, etc). Este sistema permite a los modelados abstractos de lneas de sealcompartidas, donde mltiples fuentes conducen una red comn. Cuando un alambre tiene varios controladores, elvalor legible del alambre se resuelve en funcin de los controladores de origen y sus puntos fuertes.

    Un subconjunto de declaraciones en el lenguaje Verilog es sintetizable. Mdulos de Verilog que se ajustan a uncdigo sintetizable, conocido como nivel de transferencia de registros (RTL por sus siglas en ingls Register TransferLevel), se puede realizar fsicamente por el software de sntesis. El software de sntesis algortmicamente transformala fuente de Verilog en un mapeo, una descripcin lgicamente equivalente consistente nicamente en elementoslgicos primitivos (AND, OR, NOT, flipflops, etc) que estn disponibles en una tecnologa VLSI especficas. Ademsde la manipulacin del mapeo en ltima instancia conducir a un proyecto de fabricacin de circuitos (como un flujode bits de archivo de una FPGA).

    3.3.4 VHDL

    VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde VHSIC es el acrnimo de Very HighSpeed Integrated Circuit y HDL es a su vez el acrnimo de Hardware Description Language.

    Es un lenguaje usado por ingenieros definido por el IEEE (Institute of Electrical and Electronics Engineers)(ANSI/IEEE 1076-1993) que se usa para disear circuitos digitales. Otros mtodos para disear circuitos son lacaptura de esquemas (con herramientas CAD) y los diagramas de bloques, pero stos no son prcticos en diseoscomplejos. Otros lenguajes para el mismo propsito son Verilog y ABEL.

    Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para programarPLD (Programmable Logic Device - Dispositivo Lgico Programable), FPGA (Field Programmable Gate Array), ASICy similares.

    El VHDL es un lenguaje de propsito general, y no requiere de un simulador en el cual ejecutar el cdigo. Existenmuchos compiladores de VHDL, que construyen binarios ejecutables. Puede leer y escribir archivos en el equipo host,por lo que un programa de VHDL se puede escribir de forma que genera otro programa VHDL para ser incorporadoen el diseo que se esta desarrollando. Debido a esta naturaleza de propsito general, es posible utilizar VHDL paraescribir un banco de pruebas para verificar la funcionalidad del diseo utilizando los archivos de la computadora paradefinir los estmulos, la interactividad con el usuario, y comparar los resultados con los previstos.

  • 3.3 Diseo y programacin en FPGAs 31

    Es relativamente fcil para un programador sin experiencia producir un cdigo que simula con xito, pero que nopueden ser sintetizados en un dispositivo real, o es demasiado grande para ser prctico. Un error en particular es laproduccin accidental de latches en lugar de flip-flops tipo D como elementos de almacenamiento.

    Se puede disear hardware en un VHDL IDE (Integrated Development Enviroment) para producir el esquemticoRTL del circuito deseado. Despus de eso, el esquema generado puede ser verificado usando el software desimulacin (como ModelSim), que muestra las formas de onda de las entradas y salidas del circuito despus degenerar el banco de pruebas apropiado. Para generar un banco de pruebas adecuado para un circuito en particular ocdigo VHDL, las entradas tienen que ser definidas correctamente. Por ejemplo, para la entrada de reloj, un procesoo una declaracin iterativa es necesaria.

    La ventaja clave de VHDL es que se utilizan para el diseo de sistemas el cual nos permite ver el comportamientodel sistema que debe describir (modelado) y verificado (simulado), antes de traducir las herramientas de sntesis dediseo en hardware real (compuertas y cables). Otra ventaja es que VHDL permite la descripcin de un sistemaconcurrente (muchas partes, cada una con su propio sub-comportamiento, trabajando juntos, al mismo tiempo).VHDL es un lenguaje de flujo de datos, a diferencia de los lenguajes de computacin de procedimiento, como BASIC,C y ensamblador, que todos funcionan de forma secuencial, ejecutando una instruccin a la vez.

    Un ltimo punto es que cuando un modelo VHDL se traduce en las compuertas y los cables que se asignan aun dispositivo de lgica programable, como un CPLD o FPGA, es el hardware real que se est configurado, el cdigoVHDL es ejecutado como si de alguna forma corriera en algn circuito integrado.

  • 32 Circuitos lgicos programables

  • Captulo 4

    Implementacin del controlador develocidad en FPGA

    Para comenzar la implementacin del control vectorial (Field Oriented Control) en el FPGA, se debe especificar quese trabajar sobre una FPGA Cyclone II y el software en el cual se diseara ser el Quartus II de la familia Altera.

    Una de las principales aplicaciones de la electrnica digital es el diseo de dispositivos capaces de efectuarclculos aritmticos, ya sea como principal objetivo (calculadoras, computadoras, mquinas registradoras, etc.) obien, como una subfuncin que les permita realizar su cometido principal (medidores, controladores, registradores,etc.) Por ello, y dado que los sistemas digitales slo pueden manejar informacin binaria, es necesario entender lasoperaciones aritmticas fundamentales en trminos del sistema de numeracin binario. Un tratamiento ms generaldebe contener un tratamiento de nmeros fraccionarios, es decir, la aritmtica de punto fijo y la de punto flotante. Laprimera de estas dos es una extensin casi inmediata del la aritmtica entera.

    Los sistemas digitales, tales como el FPGA, deben ser capaces de manejar nmeros positivos y negativos. Unnmero binario con signo queda determinado por su magnitud y su signo. El signo indica si un nmero es positivo onegativo, y la magnitud es el valor del nmero. Existen 3 formatos binarios para representar los nmeros enteros consigno:

    1. Signo-magnitud: El bit ms a la izquierda en un nmero binario con signo es el bit de signo, que indica si elnmero es positivo o negativo; se utiliza un 0 para el signo positivo y un 1 para el signo negativo. Cuando unnmero binario con signo se representa en formato signo-magnitud, el bit ms a la izquierda es el bit de signo ylos bits restantes son los bits de magnitud. Los bits de magnitud son el nmero binario real(no complementado)tanto para los nmeros positivos como para los negativos.

    2. Complemento a 1: El complemento a 1 de un nmero binario se obtine cambiando todos los 1s por 0s, y todoslos 0s por 1s. Los nmeros positivos en el sistema de complemento a 1 se representan de la misma forma quelos nmeros positivos en el formato signo-magnitud. Sin embargo, los nmeros negativos son el complementoa 1 del correspondiente nmero positivo.

    3. Complemento a 2: El complemento a 2 de un nmero binario se obtiene sumando 1 al LSB del complementoa 1. Los nmeros positivos en el sistema de complemento a 2 se representan de la misma forma que enlos sistemas de complemento a 1 y de signo-magnitud. Los nmeros negativos son el complemento a 2 delcorrespondiente nmero positivo.

    El rango de representacin de los nmeros con signo, para 8 bits, se pueden representar 256 nmeros diferentes.Combinando 2 bytes se obtienen 16 bits, y se pueden representar 65,536 nmeros diferentes. Combinando 4 bytesse obtienen 32 bits, y se pueden representar 4, 295 109 nmeros diferentes, y as sucesivamente. La ecuacin es

  • 34 Implementacin del controlador de velocidad en FPGA

    para calcular el nmero de combinaciones diferentes de n bits.

    x = 2n (4.1)

    Para los nmeros con signo en complemento a 2, el rango de valores para nmeros de n bits est dado por laecuacin habiendo en cada caso un bit de signo y n 1 bits de magnitud.

    (2n1)a+ (2n1 1) (4.2)

    Los nmeros no enteros y muy grandes o muy pequeos pueden expresarse en formato de punto flotante.

    La arquitectura de Punto Flotante es ms moderna y resulta suficientemente exacta y rpida para la mayorade las aplicaciones. Es muy frecuentemente utilizada para lograr una buena aproximacin del nmero que se desearepresentar, pero a menudo requiere de un redondeo, debido a su limitada precisin. Su representacin involucra unnmero entero (la mantisa) multiplicado por una base (en nuestro caso la base siempre es 2) elevado a un exponente,de tal forma que cualquier nmero de punto flotante puede ser representado como en la ecuacin 4.3.

    a = m be (4.3)

    La gran ventaja de esta arquitectura reside en que permite la representacin de un rango de magnitudes muchoms amplio que el de la arquitectura de punto fijo. De acuerdo a la cantidad de bits utilizados para almacenar undeterminado nmero de punto flotante, decimos que ste es de precisin simple (32 bits) o precisin doble (64 bits).En el caso de precisin simple, tpicamente se le asignan a la mantissa los 23 bits menos significativos (bit 0 a bit22), luego el exponente ocupa los siguientes 8 bits (bit 23 a bit 30) y el bit 31 est destinado a indicar el signo (0 =positivo, 1= negativo). Existen implementaciones de software que emplean hasta 128 bits de punto flotante.

    Una vez que elegimos la arquitectura de punto flotante, tenemos que comenzar el diseo del controlador vectorial(Field oriented control) del motor Brushless, y probar de forma independiente cada uno de los bloques que loconforman, para eso tenemos en primera instancia el bloque que corresponde a la transformada de Clarke el cualvemos como quedo en las pruebas finales en la Figura 4.1

    Figura 4.1: Transformada de Clarke

    Este bloque estar recibiendo 3 seales del motor, una seal de reloj y un reset, dichas seales de motor soncorrientes ia. ib e ic, estas corrientes entrarn al bloque etiquetado como Clarke el cual realizara las operacionesde la ecuacin 2.1

    Este es el proceso para pasar de 3-fases equiespaciadas (a; b; c) a 2-fases ortogonales (; ). En la matriz, nosseala un ngulo , el cual siempre sern 120, por lo cual en nuestra implementacin dejaremos como constantes

  • 35

    los valores de sin y cos para dicho valor, expresado en radianes.

    Para poder realizar el procesamiento de esta transformada, el bloque se construy a base de operadores de puntoflotante, con 7 multiplicadores y 3 sumadores se logr realizar las ecuaciones 4.4 y 4.5 que seran la representacinen ecuaciones lineales de la forma matricial expuesta anteriormente.

    is =23

    (ia + ib cos+ ic cos 2) (4.4)

    is =23

    (ib sin+ ic sin 2) (4.5)

    En la Tabla 4.1 se muestran los resultados obtenidos en Matlab con diferentes corrientes, las cuales elegimosvalores arbitrarios expresados en constantes para la prueba en el FPGA; dichos valores tienen que respetar la ley deKirchhoff (ecuacin 4.6) en la implementacin final estos valores vendrn directamente del motor brushless de CD.

    ia + ib + ic = 0 (4.6)

    Tabla 4.1: Clculos de transformada de Clarke en Matlab

    ia ib ic is is2 4 -6 2.00000002210739 5.7735026855144

    30 103 5 -5.03 0.0300000208085851 5.790823195935421.5 103 0.5 104 2 103 0.0015000000062177 0.001443375670182

    5 7 -12 5.00000004283308 10.969655101041412 300 -312 12.000001276702 353.3383644855865.6 7 -12.6 5.60000004449113 11.31606526159791.6 9.9 -11.5 1.60000004545833 12.35529575020774 8.5 -12.5 4.00000004628736 12.1243556398196

    150 103 2 -2.15 0.150000008704786 2.39600361530216100 103 300 103 -0.4 0.100000001519883 0.404145188033872

    4 0.2 -4.2 4.00000001188272 2.540341177892955.55 2.86 -8.415 5.55500002720591 6.50962427396871

    Una vez precargados esos valores de i en el formato IEEE 754 de punto flotante sobre la plataforma de FPGA;se obtuvieron los resultados de la Tabla 4.2.

    Ahora con los resultados obtenidos de las tablas anteriores obtenemos el porcentaje de error para cada una delas pruebas realizadas y as tener un aproximado del error mximo y mnimo para dicho bloque, en la Tabla 4.3 semuestran dichos porcentajes.

    Teniendo nuestras seales de salida I e I comienzan los problemas ya que el software entregado por elfabricante del FPGA no tiene mdulos que nos resuelvan sin y cos, ya que ahora s, el ngulo va a estar variandode acuerdo a la posicin en nuestro motor por lo cual es necesario estar calculando dichos valores de sin y cos; dichaseal de ngulo la va a proporcionar el encoder del motor y es fundamental para realizar los clculos correspondientesa la transformada de Park, la cual recordamos de la ecuacin 2.2.

    Antes de realizar estos clculos, hay que resolver el problema del clculo de las funciones trigonomtricas que eselemental para sacar la transformada de Park: obteniendo valores de sin y cos para el ngulo por lo cual se diseel siguiente bloque el cual es el ms complejo.

  • 36 Implementacin del controlador de velocidad en FPGA

    Tabla 4.2: Resultados de transformada de Clarke en FPGA

    ia IEEE 754 ib IEEE 754 ic IEEE 754 is IEEE 754 is IEEE 754

    2 40000000 4 40800000 -6 C0C00000 2.0000472 400000C6 5.7734823 40B8C05E

    30 103 3CF5C28F 5 40A00000 -5.03 C0A0F5C3 0.030044198 3CF61F40 5.7908063 40B94E49

    1.5 103 3AC49BA6 0.5 103 3A03126F 2 103 BB03126F 0.0015000133 3AC49C18 0.0014433691 3ABD2F6E

    5 40A00000 7 40E00000 -12 C1400000 5.000091 40A000BF 10.969614 412F838A

    12 41400000 300 43960000 -312 C39C0000 12.002716 41400B20 353.3373 43B0AB2D

    5.6 40B33333 7 40E00000 -12.6 C149999A 5.600095 40B333FA 11.316023 41350E6E

    1.6 3FCCCCCD 9.9 411E6666 -11.5 C1380000 1.6000972 3FCCCFFC 12.355257 4145AF22

    4 40800000 8.5 41080000 -12.5 C1480000 4.0000987 408000CF 12.124313 4141FD30

    150 103 3E19999A 2 40000000 -2.15 C009999A 0.15001857 3E199E78 2.3959963 40195801

    100 103 3DCCCCCD 300 103 3E99999A -0.4 BECCCCCD 0.100003235 3DCCCE7F 0.40414387 3ECEEBF2

    4 40800000 0.2 3E4CCCCD -4.2 C0866666 4.0000253 40800035 2.540327 402294B8

    5.55 40B1C28F 2.86 40370A3D -8.415 C106A3D7 5.5550585 40B1C30A 6.509596 40D04E9C

    Tabla 4.3: Porcentaje de error en transformada de Clarke

    I IMatlab FPGA % Matlab FPGA %

    2.00000002210739 2.0000472 -0.00235 5.7735026855144 5.7734823 3.53087 104

    0.0300000208085851 0.030044198 -0.14725 5.79082319593542 5.7908063 2.91770 104

    0.0015000000062177 0.0015000133 8.86252 104 0.001443375670182 0.0014433691 4.55195 104

    5.00000004283308 5.000091 -0.00181 10.9696551010414 10.969614 3.74679 104

    12.000001276702 12.002716 -0.02262 353.338364485586 353.3373 3.01265 104

    5.60000004449113 5.600095 -0.00169 11.3160652615979 11.316023 3.73465 104

    1.60000004545833 1.6000972 -0.00607 12.3552957502077 12.355257 0.00031

    4.00000004628736 4.0000987 -0.00246 12.1243556398196 12.124313 3.51687 104

    0.150000008704786 0.15001857 -0.01237 2.39600361530216 2.3959963 3.05312 104

    0.100000001519883 0.100003235 -0.00323 0.404145188033872 0.40414387 3.26128 104

    4.00000001188272 4.0000253 6.32202 104 2.54034117789295 2.540327 5.58109 104

    5.55500002720591 5.5550585 -0.00105 6.50962427396871 6.509596 4.34341 104

    Para comenzar el diseo hay que analizar la funcin sin y cos en el intervalo de 0 a 2 en radianes que sera elequivalente a analizar de 0 a 360 dicha relacin la vemos en la Figura 4.2.

    En las Figuras 4.3 y 4.4 vemos la grfica de sin y cos en el intervalo mencionado anteriormente, primero hay quedividir el intervalo en 4 pequeos intervalos que van de 0 a /2 , de /2 a , de a 3/2 y de 3/2 a 2; y podemosanalizar que todos los valores se pueden obtener del intervalo de 0 a /2 (Figura 4.5), dichos valores se almacenarnen una memoria (look-up table) que guarda valores de x y su respectivo valor de sin, en la Tabla 4.4 se muestra laconfiguracin que se debe tener para obtener cualquier valor de sin y cos dentro del intervalo final de 0 a 2.

    Pasar esta configuracin a un diseo para el cual nuestro FPGA pueda realizar el procesamiento adecuado, esnecesario que primeramente se evale el intervalo en el cual se encuentra nuestro ngulo por lo cual entrara a unaserie de comparadores que nos generarn un estado de alto o bajo para as generar un circuito combinatorio que nosdir en cul de los 4 intervalos cae nuestro ngulo; la tabla de verdad para construir dicho circuito combinatorio es laTabla 4.5.

  • 37

    Figura 4.2: Relacin entre grados y radianes

    Figura 4.3: Funcin sin en intervalos utilizados en el diseo

    Figura 4.4: Funcin cos en intervalos utilizados en el diseo

  • 38 Implementacin del controlador de velocidad en FPGA

    Figura 4.5: Funcin sin en el intervalo de [0 a /2]

    Tabla 4.4: Intervalos para clculo de sin y cos

    Intervalo Para valores de sin Para valores de cos1 (0 , /2) X /2-X2 (/2 , ) -X X-/23 ( , 3/2) X- 3/2-X4 (3/2 , 2) 2-X X-3/2

    Tabla 4.5: Tabla de verdad para intervalos

    A B C i1 i00 0 0 0 0 intervalo 10 0 1 X X0 1 0 X X0 1 1 X X1 0 0 0 1 intervalo 21 0 1 X X1 1 0 1 0 intervalo 31 1 1 1 1 intervalo 4

    Por algebra booleana tenemos las ecuaciones 4.7 y 4.8

    i0 = AB (4.7)

    i1 = AB +AC (4.8)

    Con estas ecuaciones armamos nuestro circuito el cual vemos en la Figura 4.6.

    Una vez evaluado el intervalo se procede a realizar la configuracin para encontrar el valor de sin y cos el cual selogra a partir de un par de multiplexores que realizarn las operaciones de acuerdo al intevalo en que se encuentrenuestro ngulo, y as traducir el intervalo real al intervalo (0, /2), ver Figura 4.7

  • 39

    Figura 4.6: Circuito combinatorio para intervalo

    Una vez integrado todo, armamos el bloque conocido como Intervalsincos el cual es mostrado en la Figura4.8 el cual recibir las seales de reloj, reset y el ngulo a evaluar, y a la salida tendremos el ngulo evaluado,una seal que nos indica que ya termin de convertir el valor entero a punto flotante (xready), 2 seales de X unapara evaluar sin y otra para evaluar cos; y la seal que nos indica el intervalo en que se encuentra el ngulo a evaluar.

    Una vez que tenemos limitado el ngulo en el primer intervalo, la forma en que va a evaluar la funcintrigonomtrica, es encontrando otro intervalo dentro de una memoria que contiene casos especficos de X y sucorrespondiente valor de sin, estos valores son los expuestos en la Tabla 4.6, en dicha tabla los valores en larepresentacin IEEE 754, son hexadecimales de 32 bits por lo tanto se expondrn tal y como los entender la tablade verilog en el FPGA; de esta forma se obtienen los parmetros para realizar la interpolacin para el valor de Xingresado.

    Para que nuestra X encuentre los valores entre los que se encuentra es necesario generar un buffer por mediode Flip Flops, para que este almacene su equivalente en la memoria y vaya cambiando cada que se va biseccionandoel valor de nuestra X y as encontrar X1 y X2 con sus respectivos valores de sin, este valor guardado en los flipsflops ser un nmero de 5 bits, el cual tendremos una replica retrasada 5 ciclos de reloj, y una vez que sta sea igualdejar de hacer la comparacin, y as inhabilitar la seal que le indica a la biseccin que siga evaluando el intervalodentro de la memoria y as entregarnos el valor inmediato inferior y superior de X en dicha memoria y as proceder ala interpolacin: dicho proceso de biseccin con el arreglo de Flip Flops lo vemos en la Figura 4.9.

    En el diagrama de la Figura 4.10 vemos el diseo para este proceso en donde la seal de enable es la sealque nos dice que termin el proceso de conversin de X a punto flotante por lo cual esta siempre estar en altoes por eso que tiene que pasar por una compuerta AND con una seal llamada miready la cual nos indica, que lacomparacin de la X de la tabla es menor o igual a la X que estamos alimentando ha sido terminada de procesar,y esa es la condicin de menor o igual se estar guardando en el modulo de biseccin, este mdulo nos entregala seal de i[4..0] con lo cual se estar realizando una nueva biseccin y as hasta que esta sea igual a la rplicaretrasada 5 ciclos de reloj, para que mande un -mireset y el valor de miready sea un 0 y al entrar a la compuertaAND deje de habilitar el Enable de la biseccin as tendremos nuestros valores de X1, Y1 para obtener X2 y Y2 dela memoria solo hay que sumar un 1 para obtener el inmediato superior ya con eso podemos hacer la interpolaciny obtener el valor de sin para el valor de X ingresado.

    Ahora bien, la interpolacin casi siempre nos dar un pequeo error respecto al valor de la funcin verdadero,pero siempre ser menor que tomar el valor ms prximo de los que figuran en la Tabla 4.6, veamos como se calculaal valor de la funcin por interpolacin lineal (ecuacin 4.9).

  • 40 Implementacin del controlador de velocidad en FPGA

    Figura 4.7: Multiplexores para intervalos

    Figura 4.8: Bloque de intervalos para funciones sin y cos

  • 41

    Figura 4.9: Diagrama del buffer de flip flops para la biseccin

  • 42 Implementacin del controlador de velocidad en FPGA

    Figura 4.10: Diagrama para encontrar los valores de X para interpolar

  • 43

    Tabla 4.6: Tabla de memoria de valores de sin en el intervalo [0 , /2]

    Caso X sinIEEE 754 Decimal IEEE 754 Decimal

    5h00 32h00000000 0 32h00000000 05h01 32h3D4F8C3D 0.0506708 32h3D4F7581 0.05064915h02 32h3DCF8C3C 0.1013417 32h3DCF3156 0.101168325h03 32h3E1BA92D 0.15201254 32h3E1B0FE2 0.151427785h04 32h3E4F8C3D 0.2026834 32h3E4E2133 0.201298525h05 32h3E805587 0.25335425 32h3E805587 0.250652525h06 32h3E9BA92D 0.30402508 32h3E994620 0.299363145h07 32h3EB59AB5 0.35469595 32h3EB1D1FE 0.347305245h08 32h3ECF8C3D 0.4053668 32h3EC9E903 0.394355865h09 32h3EE97DC4 0.45603764 32h3EE17B58 0.440394165h0a 32h3F01B7A6 0.5067085 32h3EF87980 0.485301975h0b 32h3F0EB06A 0.55737936 32h3F076A2F 0.5289645h0c 32h3F1BA92D 0.60805017 32h3F123EA2 0.57126825h0d 32h3F28A1F1 0.658721 32h3F1CB2FA 0.612105975h0f 32h3F359AB5 0.7093919 32h3F26C059 0.65137255h10 32h3F4F8C3D 0.8107336 32h3F398C05 0.72479285h11 32h3F5C8500 0.8614044 32h3F423DF9 0.75875815h12 32h3F697DC4 0.9120753 32h3F4A7047 0.79077575h13 32h3F767688 0.96274614 32h3F521D8E 0.8207634415h14 32h3F81B7A6 1.013417 32h3F5940C0 0.848644265h15 32h3F883408 1.0640879 32h3F5FD52E 0.87434665h16 32h3F8EB06A 1.1147587 32h3F65D685 0.897804565h17 32h3F952CCC 1.1654296 32h3F6B40D2 0.91895785h18 32h3F9BA92D 1.2161003 32h3F701086 0.93775215h19 32h3FA2258F 1.2667712 32h3F744278 0.954139235h1a 32h3FA8A1F1 1.317442 32h3F77D3E7 0.96807715h1b 32h3FAF1E53 1.3681129 32h3F7AC279 0.97952995h1c 32h3FB59AB5 1.4187838 32h3F7D0C43 0.988468355h1d 32h3FBC1717 1.4694546 32h3F7EAFC2 0.994869355h1e 32h3FC29379 1.5201255 32h3F7FABE3 0.998716535h1f 32h3FC90FDB 1.5707964 32h3F800000 1

    y =(x x1)(x2 x1)

    (y2 y1) + y1 (4.9)

    De nueva cuenta hay que hacer que dicha frmula la procese el FGPA, por lo cual por medio de las sealesentregadas en el mdulo anterior donde se evalua el intervalo en el cual se encuentra nuestro ngulo representadopor X tenemos X1, Y1, X2 y Y2 a la entrada y para hacer el procesamiento adecuado para obtener a la salida elvalor Y el cual sera el valor de sin, armamos nuesto interpolador con 3 bloques de sustraccin, 1 de divisin, 1de multiplicacin y finalmente uno de suma, todos estos funcionando con su respectiva seal de reloj (clk) para asformar el diagrama de la Figura 4.11.

    Para tener una correcta interpretacin del valor de sin para cualquier ngulo entre 0 y 2, hay que evaluar el signoel cual para la funcin de sin slo va a cambiar el signo si el intervalo en el que se encuentra son los ltimos 2, por

  • 44 Implementacin del controlador de velocidad en FPGA

    Figura 4.11: Diagrama del interpolador

    lo tanto, se cambia el bit ms significativo, ese cambio de signo lo apreciamos en el esquema de la Figura 4.12

    Figura 4.12: Diagrama de interpretacin de signo para sin

    Finalmente conformamos estos 3 bloques y tenemos terminado el bloque que nos va a evaluar la funcion sin, enla Figura 4.13 vemos como se conforma internamente este bloque y en la Figura 4.14 tenemos el diseo final.

    En el caso de la funcin cos, prcticamente se repite todo el proceso, con la X arrojada en el bloque que evalael intervalo de sin y cos, realizar los clculos para esta funcin de forma idntica a la del sin hasta el punto deinterpretar el signo el cual va a estar cambiando en los intervalos 2 y 3, por lo cual el bit ms significativo estara dadopor una compuerta XOR y tenemos el diagrama de la Figura 4.15

    Al igual que con el sin, se conforman los 3 bloques; de encuentra intervalo, el interpolador y el signo y as tenemosterminado el bloque que nos va a evaluar la funcion cos, en la Figura 4.13 vemos como se conforma internamenteeste bloque y en la Figura 4.14 tenemos el diseo final.

    Ahora bien para ir optimizando el esquemtico, se juntan en un solo bloque el seno y coseno junto con elbloque que encuentra el intervalo en el cual se encuentra el ngulo a evaluar para obtener el diagrama de la Figura4.18 y finalmente el bloque de la Figura 4.19

    Una vez conformado el bloque de funciones trigonomtricas procedemos a hacer pruebas para calcular sin ycos de ngulos aleatorios, la prueba nos arrojar el intervalo en el cual se encuentra dicho ngulo y sus respectivosvalores de sin y cos, en la Tabla 4.7 vemos los resultados obtenidos para el sin y en la Tabla 4.8 los de cos; cadatabla tiene su respectivo % de error, el cual apreciamos no exede el 0.0345% en ninguna de las 2 tablas.

  • 45

    Figura 4.13: Construccin interna del bloque seno

    Figura 4.14: Bloque seno

    Figura 4.15: Diagrama de interpretacin de signo para cos

  • 46 Implementacin del controlador de velocidad en FPGA

    Figura 4.16: Construccin interna del bloque coseno

    Figura 4.17: Bloque coseno

  • 47

    Figura 4.18: Diagrama de funciones trigonomtri