Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE – 0502 Proyecto Eléctrico OBTENCIÓN DE LOS PARÁMETROS DE MOTORES DE INDUCCIÓN CON LOS DATOS DE PLACA POR MEDIO DE UN PROGRAMA COMPUTACIONAL Por: ADRIÁN SOLÍS BADILLA Ciudad Universitaria Rodrigo Facio ENERO del 2013 OBTENCIÓN DE LOS PARÁMETROS DE MOTORES DE INDUCCIÓN CON LOS DATOS DE PLACA POR MEDIO DE UN PROGRAMA COMPUTACIONAL Por: ADRIÁN SOLÍS BADILLA Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERÍA ELÉCTRICA Aprobado por el Tribunal: _________________________________ Ing. Gonzalo Mora Jiménez Profesor Guía _________________________________ Ing. Marvin Bustillo Piedra Profesor lector _________________________________ Ing. Tony Delgado Carvajal Profesor lector ii DEDICATORIA Primero que todo quiero dedicarle este trabajo a Dios, a mi familia y sobre todo a mi madre, que me ha apoyado siempre para seguir adelante a pesar de las distintas adversidades que he enfrentado. También a aquellas personas que ya no están hoy aquí, pero que sin embargo han logrado marcarme de forma positiva y que han dejado su huella y me han alentado a ser lo que soy hoy. A todas ellas muchas gracias. iii RECONOCIMIENTOS Primero que todo quiero darle mi reconocimiento al profesor Gonzalo Mora por darme la oportunidad de desarrollar esta investigación, así como a los profesores Marvin Bustillo y Tony Delgado por brindarme su ayuda para el desarrollo de esta investigación. Tambien al compañero Sergio Wong que me ayudó a evacuar dudas sobre la utilización de Matlab. iv ÍNDICE GENERAL 1. CAPÍTULO 1: INTRODUCCIÓN ....................................................... 1 1.1 Objetivos ................................................................................................. 2 1.2 Metodología ............................................................................................ 3 2.1 CAPÍTULO 2: DESARROLLO TEÓRICO ....................................... 4 2.2 Motor de inducción trifásico (MIT) ..................................................... 5 2.3 Circuito equivalente del motor de inducción trifásico ..................... 10 2.4 Obtención de los parámetros del motor de inducción ...................... 13 2.5 Diseños de motores de inducción ........................................................ 15 2.6 Datos de placa de un motor de inducción .......................................... 16 2.7 Resolución de ecuaciones no lineales por medio de Matlab: Optimization ToolboxTM ................................................................................ 20 3 CAPÍTULO 3: DESARROLLO DEL PROGRAMA ...................... 27 4 CAPITULO 4: CONCLUSIONES Y RECOMENDACIONES ...... 40 4.1 Conclusiones ......................................................................................... 40 4.2 Recomendaciones ................................................................................. 40 v 5 BIBLIOGRAFIA ................................................................................. 42 6 APÉNDICES ........................................................................................ 44 6.1 Pruebas de vacío y rotor bloqueado ................................................... 44 6.2 Código del programa en Matlab ........................................................ 50 vi ÍNDICE DE FIGURAS Figura 2.1 Motor de inducción jaula de ardilla[1] .................................................................. 8 Figura 2.2 Circuito inicial del motor de inducción[3] .......................................................... 10 Figura 2.2 Circuito equivalente final [3] .............................................................................. 13 Figura 2.3 Placa típica de un motor de inducción [10] ......................................................... 17 Figura 3.4 Circuito equivalente a obtener [4] ....................................................................... 27 Figura 3.1 Creación del archivo ecuaciones2.m con el conjunto de ecuaciones del motor.. 30 Figura 3.2 Solicitud de datos de placa por medio del programa........................................... 31 Figura 3.3 Implementación de fsolve en el programa ........................................................... 32 Figura 3.4 Interfaz gráfica del programa .............................................................................. 33 Figura 6.1 Potencia en vacío en función de tensión motor 5 ................................................ 47 Figura 6.2 Potencia en vacío en función de tensión motor 6 ................................................ 47 Figura 6.3 Potencia en vacío en función de tensión motor 6 ................................................ 48 vii ÍNDICE DE TABLAS Tabla 2.1 Sintaxis de la rutina fsolve .................................................................................... 25 Tabla 3.1 Datos de placa de motores de inducción............................................................... 34 Tabla 3.2 Datos obtenidos motor 1 ....................................................................................... 35 Tabla 3.3 Datos obtenidos motor 2 ....................................................................................... 35 Tabla 3.4 Datos obtenidos motor 3 ....................................................................................... 36 Tabla 3.5 Datos obtenidos motor 4 ....................................................................................... 36 Tabla 3.6 Datos obtenidos motor 5 ....................................................................................... 37 Tabla 3.7 Datos obtenidos motor 6 ....................................................................................... 37 Tabla 3.7 Datos obtenidos motor 7 ....................................................................................... 38 Tabla 6.1 Datos de prueba en corriente directa .................................................................... 44 Tabla 6.2 Datos de prueba en vacío del motor 5 .................................................................. 45 Tabla 6.3 Datos de prueba en vacío del motor 6 .................................................................. 46 Tabla 6.2 Datos de prueba en vacío del motor 7 .................................................................. 46 Tabla 6.3 Datos de prueba rotor bloqueado .......................................................................... 50 viii NOMENCLATURA GUIDE Generador de Interfaces Gráficas LAB-VOLT Módulo Didáctico Eléctrico MATLAB Software Matemático MIT Motor de Inducción Trifásico ix RESUMEN En esta investigación se desarrolló un programa para la determinación de los parámetros de un MIM: Resistencia de estator, resistencia de rotor, reactancia de estator, reactancia de rotor y reactancia de magnetización por medio del programa computacional Matlab y su rutina de solución de ecuaciones fsolve. Para la creación de dicho programa se generaron dos archivos, uno en el cual se desarrollaban las ecuaciones que describían el circuito equivalente de un MIT en estado estacionario y otro en el cual se desarrollaba el programa principal. En el programa principal se solicitaba al usuario ingresar los datos de placa del motor al cual se deseaba conocer sus parámetros y se hacía el llamado a la función fsolve para que resolviera las ecuaciones en las cuales estaban asociadas los parámetros a encontrar son los valores de placa. Para una mejor presentación se desarrolló una interfaz gráfica para este programa, también por medio de Matlab. Por último, para validar el programa hecho se tomaron valores de placa de motores reales de la Universidad Tecnológica de Pereira dados por el profesor Gonzalo Mora y tres motores trifásicos Jaula de ardilla por medio del Lab-Volt de la Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica a los cuales se les realizaron pruebas de vacío y rotor bloqueado para obtener sus parámetros experimentalmente. Se compararon los resultados obtenidos, los cuales fueron muy cercanos con los obtenidos experimentalmente. Se llegó a la conclusión que el programa Matlab es una herramienta sumamente valiosa e importante para resolver cualquier tipo de problema o fenómeno físico. x 1. CAPÍTULO 1: Introducción Los MIT han sido las máquinas rotativas más utilizadas en la industria en gran medida por la versatilidad que ofrece. La gran utilización de estos motores abre la posibilidad de investigación en áreas como control del par, el control de la velocidad así como la determinación de sus parámetros. Gracias al desarrollo que se da a la electrónica de potencia y a la reducción de los costos es que estas máquinas se utilicen en prácticamente cualquier tipo o condición de operación. Existen una gran cantidad de modelos del motor de inducción, generalmente utilizados para corroborar los métodos de control. El modelo clásico del motor de inducción consta de las resistencias y reactancias del rotor y del estator, así como de la rama de magnetización con su reactancia de magnetización. Este modelo es utilizado en gran medida para la determinación de las características de funcionamiento del motor. En esta investigación se busca determinar los parámetros que conforman el circuito equivalente del motor de inducción, por medio del desarrollo de un programa a través de Matlab que al introducirle los datos de placa o datos del fabricante tales como la potencia nominal, el torque máximo, el torque nominal, la corriente de arranque, la corriente nominal y el factor de potencia, se obtengan los parámetros de dicho motor. 1 1.1 Objetivos 1.1.1 Objetivo general Desarrollar un programa computacional para determinar el circuito equivalente de un MIT conociendo los datos de placa del mismo. 1.1.2 Objetivos específicos Mencionar los principios de funcionamiento de un MIT y sus aplicaciones en la industria. Definir los parámetros de un MIT y su funcionamiento dentro del motor de inducción así como la importancia de conocer dichos parámetros. Señalar los métodos más utilizados para la determinación los parámetros de un MIT. Comparar los resultados obtenidos por medio del programa desarrollado con resultados obtenidos de manera experimental. 2 1.2 Metodología Para el cumplimiento de los objetivos planteados se utilizaron herramientas para programación utilizando el software Matlab® para resolver las ecuaciones que involucran los datos de placa de un motor de inducción con los parámetros del circuito equivalente del motor. Se utilizará para la solución de sistemas no lineales de la forma F(x)=0 la rutina fsolve de Matlab. Se analizó el circuito equivalente por fase de un MIT; este análisis dio como resultado cinco ecuaciones relacionadas con los datos de placa del motor y con los parámetros del circuito equivalente del motor. Se aplicaron las pruebas a 7 motores distintos y luego se compararon los resultados obtenidos con dicho programa con resultados obtenidos de manera experimental en el laboratorio. 3 2. CAPÍTULO 2: Desarrollo teórico En la actualidad los motores eléctricos representan los mayores consumidores de energía eléctrica en plantas industriales. El 60 y 70 por ciento de dicho consumo corresponde a equipos tales como ventiladores, compresores, bombas, bandas de transporte y otros. Estos dispositivos se encuentran conectados a motores eléctricos. La utilización de motores eléctricos se debe principalmente a los siguientes aspectos: • Su variedad de potencias y su versatilidad de utilización. Los motores eléctricos se utilizan en varias aplicaciones en distintas locaciones como hogares, instalaciones industriales, el transporte, en la agricultura y en pequeñas industrias y talleres. • Potencias comprendidas entre los pocos watts hasta motores de alta capacidad. • Su rendimiento es bastante elevado, más alto en comparación con los motores de combustión interna equivalente. • Su larga duración, gracias a los avances en diseño y en la fabricación de los motores lo que brinda una mayor robustez , el mantenimiento es sumamente fácil y una mayor vida útil. 4 Se puede definir un motor eléctrico como aquella máquina de tipo eléctrica cuya finalidad es la de transformar energía eléctrica en energía mecánica, lo que realiza a través de campos magnéticos variables. Dichos motores se utilizan en distintos campos como en el área industrial, en el campo comercial y residencial. Como todas las máquinas eléctricas, un motor eléctrico está constituido por un circuito magnético y dos eléctricos, uno colocado en la parte fija (estator) y otro en la parte móvil (rotor). El circuito magnético de los motores eléctricos de corriente alterna está formado por láminas magnéticas apiladas y aisladas entre sí para eliminar el magnetismo remanente. El cilindro se introduce en el interior del anillo y, para que pueda girar libremente, hay que dotarlo de un entrehierro constante. El anillo se dota de ranuras en su parte interior para colocar el bobinado inductor y se envuelve exteriormente por una pieza metálica con soporte llamada carcasa. El cilindro se adosa al eje del motor y puede estar ranurado en su superficie para colocar el bobinado inducido (motores de rotor bobinado) o bien se le incorporan conductores de gran sección soldados a anillos del mismo material en los extremos del cilindro (motores de rotor en cortocircuito) similar a una jaula de ardilla, de ahí que reciban el nombre de rotor de jaula de ardilla. En este tipo de máquinas eléctricas la tensión que se produce en los devanados o en el conjunto de bobinas se puede deber a tres aspectos: al movimiento de rotación mecánica en un campo magnético de dichas bobinas, al hacer girar de forma mecánica el campo magnético por dichos devanados o al variar la reluctancia con la rotación del rotor. 2.2 Motor de inducción trifásico (MIT) Los MIT son aquellos motores de corriente alterna en los cuales la generación del par electromagnético se lleva a cabo debido a la interacción de los conductores por los cuales circula corriente eléctrica, bajo la acción de un campo magnético rotatorio. El campo magnético variante o giratorio, formado por el devanado del estator, al cortar los conductores del rotor, genera una fuerza electromotriz de inducción. Esta interacción entre las corrientes en dichos conductores y 5 el campo magnético giratorio genera una fuerza electrodinámica en los conductores en el rotor, lo que hace girar el rotor del motor. Es por esta acción que se le llama motor de inducción. Básicamente el motor de inducción se basa en la Ley de Faraday: ߝ = −ܰ ௗథ ௗ௧ (2.2-1) La importancia de análisis de un motor de inducción radica en su gran robustez, su construcción, así como el hecho de obtener un campo magnético giratorio con una velocidad de sincronía determinada por el número de polos y por la frecuencia de alimentación. El MIT se puede clasificar según el tipo de rotor en dos tipos: Motor de inducción de Jaula de Ardilla: Este tipo de motor se caracteriza por no ofrecer ningún tipo de acceso a los parámetros del motor, es decir, está aislado del estator. Este motor cuenta con un devanado compuesto por barras conductoras introducidas en su rotor, en cortocircuito en los extremos por medio de anillos conductores. Gracias a su simplicidad y a su robustez este tipo de motor es el más utilizado.[3] Motor de inducción de anillos deslizantes: Se caracteriza por permitir el acceso a sus parámetros mediante escobillas, lo que hace posible la modificación de sus parámetros, principalmente su resistencia para cambiar la velocidad en la cual se obtiene el par máximo. El rotor es construido con un devanado semejante al del estator con el mismo número de polos en ambos devanados. En el rotor se conectan los anillos colectores que están sobre el eje. Las escobillas de carbón de los anillos posibilitan que las terminales del rotor se encuentren en la parte externa del motor.[5] 6 Por el Teorema de Ferraris, cuando por estas bobinas circula un sistema de corrientes trifásicas equilibradas, se induce un campo magnético giratorio que envuelve al rotor. Este campo magnético variable va a inducir una tensión en el rotor según la Ley de inducción de Faraday. La acción mutua del campo giratorio y las corrientes existentes en los conductores del rotor, originan una fuerza electrodinámica sobre dichos conductores del rotor, las cuales hacen girar el rotor del motor.[1] La parte fija del circuito magnético (estátor) es un anillo cilíndrico de chapa magnética ajustado a la carcasa que lo envuelve. La carcasa tiene una función puramente protectora. En la parte interior del estator van dispuestos unas ranuras donde se coloca el bobinado correspondiente.[1] Dentro del estator se introduce el rotor, el cual consiste de un tipo de chapa magnética fija al eje. Se tienen ranuras alrededor para la colocación del devanado. El entrehierro de estos motores es constante en toda su circunferencia con un valor lo más pequeño posible El punto de partida del estudio de un motor de inducción trifásico en encuentra en la definición de la velocidad síncrona, la cual se define como: ݊௦ = ଵଶ∗ (2.2-2) donde: f = Frecuencia de alimentación. p = Número de polos del motor. Por otro lado el deslizamiento se define como: 7 =ݏ ೞ ିೝ ೞ (2.2-3) donde: ns = Velocidad de sincronía. nr = Velocidad de rotor. Figura 2.1 Motor de inducción jaula de ardilla[1] Como los sistemas eléctricos industriales utilizan fuentes trifásicas de energía, los motores de inducción se fabrican con tres devanados, espaciados 120 grados. Cada bobina o devanado es inyectado con corrientes senoidales desfasadas 120 grados en el tiempo entre cada una; cada una de las bobinas crea un campo magnético estático, cuya amplitud se haya en la dirección del eje magnético del devanado y cambia senoidalmente en el tiempo. Cuando se combinan los campos pulsantes producidos por las tres corrientes, se obtiene un campo magnético distribuido senoidalmente en el espacio, cuya rotación tiene una velocidad igual a las 8 variaciones de las corrientes en el tiempo. Para el MIT la velocidad del campo magnético rotatorio ns varía directamente con la frecuencia eléctrica del sistema, pero inversamente con la cantidad de polos p. Como la cantidad de polos depende exclusivamente del tipo de bobinado que se tiene, entonces la velocidad es una función de la frecuencia. 2.2.1 Par inducido Las corrientes trifásicas producidas por las tensiones aplicadas al MIT producen un campo magnético Bs que gira con dirección contraria a las mancillas del reloj, lo que induce una tensión en las barras del rotor, descrita por la ecuación: ݁ௗ = ሺܤ × ݒሻ ∙ ݈ (2.2-4) con v la velocidad en la barra del rotor con respecto al campo magnético; B es la densidad de flujo magnético que se representa como vector; y l es la longitud del conductor en el campo magnético. Al presentarse un movimiento relatico entre el rotor y el capo magnético del estator Bs se induce una tensión en la barra del rotor. Por otra parte el flujo magnético del rotor produce un campo magnético en el rotor Br. Al interactuar ambos campos magnéticos se obtiene un par inducido dado por la ecuación ߬ௗ = ݇ܤோ × ܤ௦ (2.3-2) 9 Dicho par se dirige en el sentido contrario a las manecillas del reloj. En condiciones nominales los campos magnéticos del estator y del rotor giran a la velocidad sincrónica; el rotor por otro lado tiene una velocidad menor. 2.3 Circuito equivalente del motor de inducción trifásico Como se ha explicado anteriormente, se inducen corrientes en el rotor desde el estator, lo que se puede catalogar como una acción transformadora, por lo que el circuito equivalente de un MIT es muy similar al de un transformador. Existe una cierta resistencia y auto inductancia en los devanados del estator representados en el circuito equivalente de la máquina. En este modelo la resistencia del estator es R1 y la reactancia de dispersión del estator es X1. Al existir un entrehierro en el motor de inducción, existe una relación entre el flujo magnético y la tensión aplicada V. Cuanto mayor sea la reluctancia generada por el entrehierro, se necesitará mayor corriente de magnetización para obtener un flujo determinado. La reactancia de magnetización se modela como Xm. Las pérdidas en el núcleo por otro lado se representa como Rc. Figura 2.2 Circuito inicial del motor de inducción[3] El acople entre la tensión interna E1 y el voltaje secundario Er se realiza por medio de un transformador ideal cuya relación de espiras es denomina aef. El voltaje inducido es directamente 10 proporcional al deslizamiento para cualquier deslizamiento así como la frecuencia: ܧ = ܧݏோ ݂ = ݂ݏ (2.3-1) (2.3-2) donde ER0 es la tensión a rotor bloqueado, s es el deslizamiento y fe es la frecuencia eléctrica de la línea. La reactancia del rotor XR no permanece con un valor constante; depende de la inductancia LR, de la corriente del rotor y de la frecuencia ωR. ܺோ = ߱ோ ܮோ = 2ߨ݂ோ ܮோ (2.3-3) Utilizando la ecuación del deslizamiento se obtiene: ܺோ = 2ߨ݂ ܮோ = ݏሺ2ߨ݂ ܮோ ሻ = ܺݏோ (2.3-4) donde XR0 es la reactancia en condición de rotor bloqueado. La corriente en el rotor se calcula como: ܫோ = ಶೃ ೃೃ శ ೕೃ (2.3-5) ܫோ = ಶೃ ೃೃ శ ೕೞೃబ (2.3-6) 11 ܫோ = ಶೃబ ೃೃ శೕೃబ ೞ (2.3-7) Utilizando la última ecuación es posible obtener la impedancia equivalente del secundario (rotor): ܼோ, = ோೃ ௦ + ݆ܺோ (2.3-8) Ahora, trasladando las tensiones, las corrientes y las impedancias del secundario al primario a través de la relación de espiras del transformador, se obtiene el circuito equivalente del motor de inducción por fase. ܧଵ = ܽ ܧோ ܫଶ = ೃ ೌ ܼଶ = ܽ ଶ ( (2.3-9) (2.3-10) ோೃ ௦ + ݆ܺோ ) (2.4-11) ܴଶ = ܽ ଶ ܴோ (2.3-12) ܺଶ = ܽ ଶ ܺோ (2.4-13) Con estas relaciones se obtiene el circuito equivalente final del MIT. 12 Figura 2.2 Circuito equivalente final [3] 2.4 Obtención de los parámetros del motor de inducción Existen diferentes métodos para la obtención de los parámetros del motor de inducción trifásico, cada uno depende de la información con la que se cuenta del motor a modelar. 2.4.1 Método de los elementos finitos Es uno de los métodos que se ha utilizado con mayor fuerza para el modelado de fenómenos físicos. Se trata de un método asistido por computadora, con el objetivo de encontrar aproximaciones numéricas de soluciones de ecuaciones. En un sentido más matemático, se basa en la transformación de un cuerpo de naturaleza continua en un modelo discreto aproximado. Cualquier fenómeno que cumpla con las siguientes características puede ser modelado por dicho método: • Debe ser un evento que pueda ser modelado por ecuaciones de cálculo, ya sea integral, diferencial, cálculo integrodiferencial. • Propiedades físicas tienen la posibilidad de cambiar en diferentes secciones del sistema. 13 • La región del sistema o fenómeno es capaz de tener cualquier forma geométrica en un número indiferente de dimensiones. • Los problemas a resolver pueden ser tanto de carácter lineal como no lineal. • Los agentes externos pueden ser de distinta forma física aplicables en la frontera o en regiones internas del sistema o al principio del tiempo de estudio, es decir, en las condiciones iniciales. Básicamente lo que se debe de hacer es dividir el sistema en regiones pequeñas llamados elementos. A todo el conjunto de elementos se le conoce con el nombre de malla y para cada elemento se definen ecuaciones que expliquen su comportamiento. El problema o la gran dificultad para aplicar este método en la determinación de los parámetros de un motor, en este caso el motor de inducción trifásico, radica en que debe tener conocimiento sobre las características constructivas físicas del motor, su composición y dimensionamiento, así como contar con un software adecuado y conocimiento especializado para interpretar correctamente los resultados. 2.4.2 Pruebas de vacío y rotor bloqueado Los parámetros de un motor de inducción se pueden obtener mediante pruebas de vacío, pruebas de rotor bloqueado y pruebas de corriente continua a los devanados del rotor. Prueba de vacío: Este tipo de prueba permite conocer datos acerca de la corriente de excitación y de las pérdidas sin carga. Para este tipo de prueba es necesario realizarla a frecuencia nominal y las tensiones deben ser balanceadas en las terminales del estator. Consiste en hacer mediciones de la tensión de línea a neutro, la intensidad de corriente de línea y la potencia de entrada eléctrica total. Con dichos datos y con relaciones entre ellos se puede obtener 14 la reactancia de magnetización. Como en esta prueba el motor está en vacío se asume que el deslizamiento es cero. Prueba de rotor bloqueado: En esta prueba el rotor se bloquea, esto hace que no pueda girar, por lo que el deslizamiento tiene un valor numérico de uno. Con el rotor bloqueado se mide la tensión línea a neutro, la intensidad de corriente de línea y la potencia trifásica. Esta prueba permite determinar la reactancia del estator y la resistencia y reactancia del rotor referida al estator. La prueba de corriente continua consiste en aplicar tensión continua al devanado del rotor y por medio de la Ley de Ohm se obtiene la resistencia de dicho devanado. 2.4.3 Prueba en respuesta de frecuencia e identificación de la respuesta transitoria En estos dos métodos se hace un análisis del motor de inducción en el dominio de la frecuencia. El método frecuencial es más exacto ya que se basa en mediciones en estado estacionario, además que es posible la aplicación de filtros y de valores medios, lo que mejora la toma de datos. Sin embargo este método cuenta con la dificultad de que se necesita equipo complejo y con un alto costo económico, así como de un software especializado. 2.5 Diseños de motores de inducción De acuerdo con la National Electric Manufacturers Association (NEMA) y con la International Electrotechnical Comision (IEC), existe una clasificación para la identificación de los MIT comerciales por medio de letras, tomando en consideración las curvas características par-velocidad. Los motores se dividen en motores clase A, B, C, D, E y F, aunque estos dos últimos son en la actualidad obsoletos.[3] Motores clase A: Este motor es del tipo jaula de ardilla. Se utiliza a velocidades constantes. Se utilizan en aplicaciones tales como sopladores, ventiladores, bombas, tornos, entre otros. Cuenta 15 con una buena capacidad de disipación de calor, alta resistencia y una baja reactancia en el momento del arranque, acelera rápidamente hasta alcanzar la velocidad nominal. Dicho motor cuenta con un par máximo entre 200 y 300 por ciento del par de plena carga y a un bajo deslizamiento. Últimamente han sido reemplazados por motores de clase B. Una desventaja de estos motores es que la corriente de arranque sufre variaciones de entre cinco y siete veces la corriente a plena carga. Aún así tienen la mejor regulación de velocidad (entre 2 y 4 por ciento). Motores clase B: Son conocidos como motores de propósito general. En su mayoría pertenecen a motores de rotor de jaula de ardilla. Su par de arranque es normal, el par máximo tiene un valor igual o mayor al 200 por ciento del par de carga nominal. Cuenta con un deslizamiento bajo, menor al cinco por ciento, al igual que su corriente de arranque, es por este aspecto que se prefiere sobre los motores clase A, pues produce casi el mismo par de arranque pero con menor corriente. Motores clase C: Los motores clase C cuentan con un alto par de arranque con bajas corrientes de arranque; debido su alto par de arranque sufre una aceleración de una forma rápida. Son más costosos ya que son construidos con rotor de doble jaula. Con cargas pesadas este motor experimenta una limitación en la disipación de calor, pues la mayor parte de la intensidad de corriente eléctrica se acumula en el devanado superior. Con arranques frecuentes se sobrecalienta. Su deslizamiento es bajo a plena carga, menos del cinco por ciento. Se utilizan en aplicaciones en la cuales se necesita un alto par de arranque, como en compresores, bombas y transportadores. Motores clase D: Son motores llamados de alto par y alta resistencia, esto debido a que tienen un par de arranque del doscientos setenta y cinco por ciento o más del par nominal, y una corriente de arranque baja. Sufren un alto deslizamiento a plena carga, además de que la alta resistencia del rotor desplaza el par máximo hacia una velocidad muy baja. Son diseñados para los servicios pesados de arranque, en volantes utilizados en troqueladoras o cortadoras. 2.6 Datos de placa de un motor de inducción 16 Los datos de placa en un motor son aquellas características propias del mismo. En la figura se muestra una placa típica de un motor. Las más importantes son: Figura 2.3 Placa típica de un motor de inducción [10] Modelo, serie, número de catálogo, número de parte y número de existencia: Tienen códigos que especifican la fecha de fabricación del motor, la serie y el diseño del motor, la línea de ensamble características como tipo básico, tamaño del bastidor o carcasa. Potencia y el número de polos. Tipo de motor: Especifica la clase de motor. Los tipos más comunes en motores de corriente directa son en serie, en derivación, compuestos y los de imán permanente. Cuando se utilizan los términos estabilizado o compensado, se refieren a motores con un campo débil en serie con un campo principal en derivación. En motores de corriente alterna los más comunes son los motores sincrónicos y los de inducción. Entre estos motores los de arranque por repulsión/inducción, los motores universales y los de corriente alterna-directa son muy comunes. Es importante recalcar el hecho de que los diferentes tipos de motores tienes sus propias características, por lo que un tipo de motor no puede ser reemplazado con otro. Potencia: La potencia nominal se refiere a la potencia que el motor puede ofrecer sin someterse a sobrecalentamiento. Un motor tiene un régimen de trabajo continuo, es decir, pueden 17 proveer de potencia de manera continua, sin sobrecalentarse. Los arranques de manera periódica sobrecalentarán el motor, ya que el frenaje hace que se caliente. Así mismo un motor con sobrecarga se sobrecalentará, lo que tendrá como consecuencia el disparo de disyuntores de protección contra sobrecarga y lo que llevará a que se queme. Velocidad: Se refiere a la velocidad a la cual el motor de inducción produce su potencia nominal., la velocidad nominal de operación de un motor sincrónico y la velocidad de operación base de un motor de corriente directa. Generalmente los motores sufren una disminución en su velocidad conforme se aumenta la carga. En algunos casos la placa indicará la velocidad sin carga aproximada. De acuerdo a la capacidad de enfriarse en un motor, así será su velocidad mínima. Corriente de carga completa (FLA): Se define como la corriente consumida cuando el motor produce la potencia nominal. En la placa se denomina como FLA (Full Load Amperage o Amperaje de Carga Completa). Cuando el motor opera con una carga baja o sin carga, dicho motor consumirá una corriente menor a dicho valor; en contraposición, si el motor está con sobrecarga, aumentará dicho amperaje. Es importante destacar el hecho que el Amperaje de Carga Completa hace referencia a la corriente en cada conductor de fase. Este valor es sumamente esencial a la hora de escoger los alimentadores correctos del circuito derivado, los conductores de dicho circuito, los contactores, el equipo de protección y de control. También los disyuntores de protección contra sobre carga, el equipo para el arranque y para el control del motor dependen de esta corriente; estos disyuntores ofrecen protección al motor por sobrecalentamiento al detectar el calor producido por la corriente en un elemento de calentamiento con poca resistencia, ya que el calor depende de la corriente. Hay que destacar el hecho que cuando se cambia un motor por otro, se debe verificar el Amperaje de Carga Completa, ya que por ejemplo si el motor de repuesto consume más corriente respecto al motor que se reemplazará, se tendrá que calibrar nuevamente los disyuntores de protección contra sobre carga., de tal forma que se disparen cuando detectan una corriente más 18 alta. Si por otro lado el motor nuevo consume menos corriente que el que se tenía, se tendrá el caso contrario por lo tanto se tendrán que recalibrar los disyuntores para que se disparen con una corriente más baja. Código: Dicho dato posibilita el cálculo de la Corriente de Rotor Bloqueado o Enclavado. Dicha corriente se refiere a la corriente presenta cuando se aplica tensión sin que el rotor gire, como por ejemplo en el arranque o cuando el motor tiene una carga tan grande que se ahoga. En muchos motores dicha corriente puede ser de hasta cinco veces el valor del Amperaje de Carga Completa, esto puede causar problemas ya que una corriente alta hace que decaiga la tensión, lo que conlleva a que algunos motores lleguen a atascarse o tengan la dificultad de arrancar. Conocer esta corriente es necesario para dimensionar los disyuntores del circuito. Se multiplica las cifras de la tabla por la potencia nominal del motor y se divide el resultado entre los kilovots aplicados, de esta forma se obtiene la Corriente de Rotor Bloqueado o Enclavado. Tensión: La tensión especificada en la placa de un motor se refiere a la tensión completa que el motor necesita a la frecuencia expresada para producir su salida de potencia nominal en los motores de corriente alterna. Como existen pérdidas en la línea de transmisión, generalmente la tensión con la que realmente se cuenta sea menor en comparación con la tensión nominal, por lo que la tensión de placa es un poco menor a las tensiones nominales de alimentación. La tensión en los motores puede variar dependiendo de la carga total que tiene el sistema, por lo que son fabricados para que operen con tensiones que varíen alrededor de un 10% del dato dado en la placa. Si un motor sufre una mayor variación de tensión, pueden sufrir una disminución en la eficiencia y el factor de potencia, se ahoguen bajo la carga pico o que no arranquen con tensión baja, o que algunos motores consumirán más corriente con tensión baja o consumirán mayor corriente con tensión alta, lo que llevara al motor a sobrecalentarse. Factor de servicio: Hace referencia a la sobrecarga continua que un motor puede soportar sin sufrir daño alguno. Para aquellos motores que serán expuestos a sobrecargas con mucha frecuencia, tendrán que tener un factor de servicio alto. 19 Factor de potencia: Es un valor comprendido entre 0 y 1, y es la medida de la corriente del motor que está en fase con la tensión aplicada. Si el factor de potencia tiene un valor de cero, quiere decir que la tensión y la corriente están a 90 grados desfasados y que se estarán produciendo volts-amperes. Si l factor de potencia tiene un valor de 1, la corriente y la tensión están en fase, lo que significa que se produce potencia activa o calor en el motor. Todos los motores de inducción cuentan con factores de potencia en atraso. Eficiencia: En muchos motores se incluye en los datos del fabricante un régimen de eficiencia en condiciones nominales. Si un motor es operado bajo una carga baja o alta, el motor será menos eficiente que lo especificado. 2.7 Resolución de ecuaciones no lineales por medio de Matlab: Optimization ToolboxTM El programa Matlab ofrece algoritmos para optimización, para la resolución de problemas ya sea con restricciones o sin ellas, de naturaleza discreta o continua. Por medio de la heeramienta “Optimization Toolbox incluye funciones para programación lineal, cuadrática, entera binaria, optimización no lineal, mínimos cuadrados no lineales, sistemas de ecuaciones no lineales y optimización multiobjetivo”[8]. Para la solución de ecuaciones no lineales cuenta con funciones o solvers predeterminadas, las cuales cuentan con opciones de optimización, además utiliza un algoritmo de región de confianza llamada dogleg en aquellos sistemas de ecuaciones no lineales el número de ecuaciones es igual al número de incógnitas, o puede solucionar esta clase de problemas por medio de algoritmos reflexivos de región de confianza y LevenbergMarquardt. 20 2.7.1 Rutina interna fsolve La función interna fsolve permite obtener el conjunto solución de un sistema de ecuaciones no lineales de la forma F(x) = 0, de acuerdo a ciertos parámetros indicados por el usuario. Dicha rutina implementa tres algoritmos para obtener la solución del sistema de ecuaciones no lineales como se mencionó anteriormente: región de confianza dogleg, región de confianza reflexiva y el algoritmo Levenberg-Marquardt. La región de confianza dogleg es el único algoritmo creado para resolver sistemas de ecuaciones no lineales; los otros algoritmos tratan de minimizar la suma de cuadrados. Método de región de confianza dogleg: El método de Newton es considerado el método más común para la obtención de las soluciones de ecuaciones no lineales, que se basa en la búsqueda de direcciones dk tal que: ܬሺݔ ሻ݀ = −ܨሺݔ ሻ ݔାଵ = ݔ + ݀ (2.7-1) (2.7-2) con J(xk) como el Jacobiano de F(x) evaluado en xk ߘ்) ݔ( ܨ ۍଵ ்ې ܬሺݔ ሻ = ܨߘ ێଶ (ݔ ) ۑ ⋮ ێ ۑ ் ܨߘ ۏ (ݔ ) ے௫ (2.7-3) El problema que tiene dicho método es que el Jacobiano puede ser singular, que llevaría a un mal condicionamiento del sistema a resolver, lo que conllevaría a no encontrar la dirección dk y computacionalmente hablando puede llevar un alto costo. Otra desventaja es que si el punto inicial se encuentra muy lejos de la solución, el metódo podría no converger debido a que el método de Newton es de naturaleza de convergencia local. Con la técnica de región de confianza dogleg se experimenta un gran mejoramiento en la robustez en el caso en el que se inicia con un 21 punto lejos de la solución y además se logra un mejor manejo en el caso en el que el jacobiano es singular [9]. Este método construye una trayectoria poligonal en dos tramos, un tramo coincide con la dirección del descenso más pendiente y el otro camino tiende a la dirección de Newton. Se debe tener una función de elección con tal de comparar si xk+1 es mejor o peor que xk, la cual está dada por: minௗ ݂(݀) = ଵ ଶ ܨሺݔ + ݀ሻ் ݔ(ܨ + ݀) (2.7-4) No obstante un mínimo de f(d) no siempre es una raíz de F(x). Si dk es raíz de ܯሺݔ + ݀ሻ = ܨሺݔ ሻ + ܬሺݔ ሻ݀ (2.7-5) es una raíz de m(d) donde minௗ ݉ሺ݀ሻ = ∥ ݔ(ܯ + ݀) ∥ଶଶ = ଵ ଶ = ଵ ଶ ଵ ଶ ∥ ܨሺݔ ሻ + ܬሺݔ ሻ݀ ∥ଶଶ ܨሺݔ ሻ் ܨሺݔ ሻ + ݀ ் ܬሺݔ ሻ் ܨሺݔ ሻ + ଵ ଶ ݀ ் ܬሺݔ ሻ் ܬሺݔ ሻ݀ (2.7-6) (2.7-7) Con todo este desarrollo se tiene que m(d) es una mejor alternativa para ser la función de elección f(d), y el subproblema de región de confianza es minௗ ቂ ܨሺݔ ሻ் ܨሺݔ ሻ + ݀ ் ܬሺݔ ሻ் ܨሺݔ ሻ + ଵ ଶ ଵ ଶ ݀ ் ܬሺݔ ሻ் ܬሺݔ ሻ݀ቃ (2.7-8) Y se tiene que ║D·d║≤ r, donde D es una matriz diagonal escalada y r es un escalar positivo. El algoritmo busca el paso d minimizando la expresión anterior, definido por dos pasos: el paso de Cauchy y el paso de Gauss-Newton para F(x). El paso de Cauchy está definido por ݀ = −ߙܬሺݔ ሻ் ܨሺݔ ሻ (2.7-9) 22 donde α se escoge para minimizar. El paso Gauss-Newton se obtiene al resolver ܬሺݔ ሻ ∙ ݀ீே = − ܨሺݔ ሻ (2.7-10) Con los resultados anteriores se llega a que el paso d se define de la siguiente manera ݀ = ݀ + ߣሺ݀ீே − ݀ ሻ (2.7-11) En la expresión anterior, λ corresponde al valor más grande en el intervalo [0,1] tal que ║d║ ≤ ∆. En el caso en el que Jk sea singular o casi singular, d es la dirección de Cauchy. Método de región de confianza reflectivo: Para este método se considera el problema de minimización sin restricciones, el de minimizar la función f(x), la cual toma vectores como argumentos y devuelve escalares. Se supone que se está en un punto x en el espacio N y se quiere obtener un mejor punto de la función. Básicamente se busca aproximar f por medio de una función simple q, la cual debe ser un reflejo del comportamiento de la función f en una vecindad N alrededor del punto x. Dicha vecindad es la región de confianza. Se obtiene un paso de prueba s por la minimización alrededor de N, lo que se conoce como el subproblema de región de confianza min௦ ሼݍሺݏሻ, ܰ ߳ ݏሽ (2.7-12) El punto actual se convierte en el punto x +s si f(x+s) < f(x), en caso contrario x se mantiene igual y N se reduce, mientras que el paso de prueba se recalcula. La clave para la definición de una región de confianza para minimizar f(x) es la elección y el cálculo de q, así como la elección y la modificación de la región de confianza N y la precisión con la que se resuelve el subproblema de región de confianza. En la forma general, q se define como los dos primeros términos de la aproximación de Taylor de F en x, la vecindad N es esférica o tiene forma elipsoidal, y el subproblema de región de confianza es 23 ݉݅݊ ቄ ݏܪ ் ݏ+ ݃ ் ݏ, ≤∥ ݏܦ ∥ ݁ݑݍ ݈ܽݐΔ ቅ ଵ ଶ (2.7-13) donde g es el gradiente de la función f en x, H es la matriz Hessiana (la matriz simétrica de las segundas derivadas), D es la matriz diagonal escalar y ∆ es un escalar positivo. Con la herramienta de optimización de Matlab se restringe el subproblema a un subespacio bidimensional S, el cual se determina por medio de un gradiente conjugado precondicionado. Se define S como el espacio lineal entre s1 y s2, en el cual s1 es la dirección del gradiente g y s2 la dirección de Newton, es decir, la solución para ݏ ∙ ܪଶ = −݃ (2.7-14) Todo lo anterior se hace para forzar una convergencia global rápida. Método de Levenberg-Marquardt: Este método es una modificación del método de Newton. Se basa en la dirección de búsqueda que es solución del conjunto de ecuaciones lineales ሺܬሺݔ ሻ் ܬሺݔ ሻ + ߣ ܫሻ݀ = −ܬሺݔ ሻ் ܨሺݔ ሻ (2.7-15) donde λk controla la magnitud y la dirección de dk. En el caso de que λk = 0, la dirección de dk es igual a la dirección de Gauss-Newton. Si λk tiende a infinito, dk tiende a la dirección de descenso más pendiente, con magnitud tendiendo a cero, lo que lleva a la afirmación de que para valores muy grandes de λk, se logra que F(xk + dk) < F(xk). Esto garantiza que λk puede ser controlado para lograr su descenso, por lo que este método utiliza la combinación entre la dirección de Gauss-Newton y el descenso más pendiente [9]. La rutina fsolve cuenta con distintas sintaxis dependiendo de los resultados que se esperan y las visualizaciones que se quieran, tal como lo muestra la siguiente tabla. 24 Tabla 2.1 Sintaxis de la rutina fsolve Sintaxis x = fsolve(fun,x0) x = fsolve(fun,x0,options) [x,fval] = fsolve(fun,x0) [x,fval,exitflag] = fsolve(...) [x,fval,exitflag,output]=fsolve( …) [x,fval,exitflag,output,jacobian] =fsolve(...) Resultado obtenido Trata de resolver el sistema no lineal fun(X) partiendo del valor X=x0 Se resuelve el sistema con las opciones seleccionadas con la instrucción optimset Regresa el valor de la función fun en la solución x Retorna la condición que ha motivado la finalización del programa 1:La función converge a la solución 2:El cambio de x fue menor a la tolerancia determinada 3:El cambio del residuo fue menor que la tolerancia especificada 4:La magnitud de la dirección de búsqueda fue menor que la tolerancia 1: El algoritmo fue finalizado por la función salida 2: El algoritmo parece converger a un punto que no es raíz 3: El radio de confianza es demasiado pequeño 4: La dirección de búsqueda no disminuye el valor del residuo Regresa una estructura de salida con información sobre la optimización Regresa el jacobiano de la función en la solución x Las opciones de la rutina fsolve se definen mediante la instrucción optimset y se asocian con el tipo de algoritmo que se utiliza. Es importante señalar el hecho de que el número de ecuaciones debe ser igual o mayor al número de incógnitas. Entre las opciones más comunes están: DerivativeCheck: Esta opción compara las derivadas obtenidas por medio del Jacobiano (dadas por la función) con las obtenidas por diferencias finitas. Dianostics: Despliega información de diagnóstico sobre la función que se quiere resolver. DiffMaxChange: Se refiere al máximo cambio de las variables utilizando diferencias finitas. 25 DiffMinChange: Es el mínimo cambio de las variables cuando se usan diferencias finitas. Display: Se refiere a la cantidad de información desplegada en la pantalla: ‘off’ ninguna; ‘iter’, muestra cada iteración; ‘final’sólo muestra la última. FunValCheck: Verifica la validez de los valores de la función objetivo. Jacobian: Si se pone ‘on’, se utiliza el Jacobiano definido por la función, en otro caso se obtiene el Jacobiano por diferencias finitas. MaxFunEvals: Hace referencia al máximo número de evaluaciones de la función determinadas. MaxIter: Es el número de las máximas iteraciones permitidas determinadas por el usuario. TolFun: Es la tolerancia admisible del valor de la función. TolX: Este parámetro se refiere a la tolerancia permitida de la variación de x. Como esta rutina utiliza la localización de mínimos, es posible que de acuerdo a las condiciones iniciales dadas, se detenga en un mínimo que no es raíz, por lo que se deben cambiar dichas condiciones. Si el tamaño de paso es muy pequeño, la rutina no puede avanzar más por lo que se deben cambiar las condiciones iniciales. El programa también puede dejar de correr si se exceden el número máximo de iteraciones o de evaluaciones de la función, por lo que en estos casos es preciso cambiar dichos parámetros por los que se consideren adecuados. Por otro lado en el caso del método de región de confianza dogleg, es preciso que el sistema de ecuaciones no lineales sea cuadrado, es decir, que el número de ecuaciones sea igual al número de incógnitas; en los demás métodos no es necesario que se cumpla dicha condición, pero sí debe ser el número de ecuaciones mayor o igual que el número de incógnitas. Para el caso de esta investigación se utilizará el método de región de confianza dogleg. 26 3 CAPÍTULO 3: Desarrollo del programa Para realizar el software que obtendrá los parámetros del MIT se tomará como base el circuito de la figura 2. De los datos de placa de motor se utilizará tensión nominal, corriente nominal, corriente de arranque, torque de arranque, torque máximo, potencia nominal, velocidad nominal y factor de potencia. Figura 3.4 Circuito equivalente a obtener [4] El circuito se analiza bajo tres condiciones: Funcionamiento a valores nominales: Bajo estas condiciones los parámetros de la máquina presentados por los fabricantes son: la velocidad en el eje, la potencia de salida, el factor de potencia, la eficiencia. Funcionamiento a torque máximo: En este caso se desconoce el deslizamiento s pero puede escribirse en términos de los parámetros de la máquina. Funcionamiento en el momento del arranque: Para esta condición el deslizamiento es unitario. 27 En las condiciones nominales y conociendo V e I, se puede conocer la impedancia total equivalente de la máquina: ܼ = ∠ ூ∠ఏ = ܴ + ݆ܺ ܼ = ܴ௦ + ݆ܺ௦ + ೃ ( ೝ ା ೝ ) ೞ ೃೝ ା (ೝ ା ) ೞ (3.3-1) (3.1-2) La parte real e imaginaria de esta impedancia permite obtener dos ecuaciones: ܴ = ܴ௦ + ೃ మ ቀ ೝ ቁ ା (ೝ ା )మ ܺ = ܺ௦ + ା ೝ మ ାೝ మ ೞ మ ೃ మ ቀ ೝ ቁ ା ( ା ೝ )మ ೞ ೃೝ మ ೞ (3.1-3) ೞ (3.1-3) Ahora, tomando las pérdidas rotaciones como despreciables en condiciones nominales, se asume que la potencia de salida es aproximadamente igual a la potencia desarrollada. Haciendo un divisor de corriente y sabiendo que la corriente del rotor es función de la corriente del estator se tiene que: 28 ܫ = ܫ௦ ೃೝ ೞ (3.1-4) (3.1-5) ା ሺ ାೝ ሻ Calculando su magnitud se obtiene: |ܫ | = |ܫ௦ | ටቀೃೝ ቁ ା ሺ ାೝ ሻమ మ ೞ Tomando la última expresión y sustituyéndola en la ecuación de la potencia nominal se obtiene la tercera ecuación: ܲ = ଷோೝ (ଵି௦ ) ௦ మ |ூೞ | (3.1-6) మ ೃ ቀ ೝ ቁ ା( ା ೝ )మ ೞ Anteriormente se había mencionado el hecho de que al momento del arranque se sabe el valor del torque y la corriente; con estos dos valores se puede encontrar la impedancia Zeqo en el arranque. Pero de esta impedancia sólo se puede obtener su magnitud, la cual es: ܼ ඨ= ቀܴ௦ + ோೝ మ ோೝ మ ାሺೝ ା ଶ ቁ + ቀܺ௦ + ሻమ (ோೝ మ ାೝ మ ାೝ ) ோೝ మ ା(ೝ ା )మ ቁ (3.1-7) Y con el torque se llega a la ecuación: ܶ௨ = ଷோೝ |ூೞೌೝೝೌೠ |మ మ ఠೞ ோೝ మ ା ( ାೝ )మ (3.1-8) 29 Como se puede notar se obtienen cinco ecuaciones con cinco incógnitas. La dificultad para resolver este sistema de ecuaciones radica en que se tiene un sistema no lineal. Para resolverlo se utiliza la rutina fsolve de matlab. En primer lugar se crea un archivo .m en el cual se escribe el sistema de ecuaciones no lineales conformado por las relaciones antes mostradas que describen el circuito equivalente del motor de inducción trifásico, el cual fue llamado ecuaciones2, tal como lo muestra la siguiente figura: Figura 3.1 Creación del archivo ecuaciones2.m con el conjunto de ecuaciones del motor Luego de crear dicho archivo, se genera otro archivo donde se ubicará el programa principal. En dicho archivo se solicitan los datos de placa del motor al usuario: Tensión nominal, Corriente nominal, potencia nominal, velocidad nominal, torque de arranque, corriente de arranque, torque máximo, factor de potencia, número de polis y la frecuencia. Así mismo se 30 especifican las distintas relaciones entre variables como por ejemplo la relación entre la velocidad síncrona con el número de polos y la frecuencia. Figura 3.2 Solicitud de datos de placa por medio del programa Ahora, por medio de la función fsolve, el programa principal solucionará el sistema de ecuaciones no lineales planteado en el archivo ecuaciones2.m. Para esto, esta función necesita que se le brinden condiciones iniciales cercanas a la solución para una rápida respuesta. En la figura 3.3 se muestra la implementación de fsolve en el programa. 31 Figura 3.3 Implementación de fsolve en el programa De la figura anterior se observa la sintaxis de llamado de esta función. En este caso, x0 representa las condiciones iniciales dadas, options se refiere a los parámetros de solución tales como el número de iteraciones máximas, la tolerancia y la tolerancia de la función deseada. Luego de montar el programa, se dispuso a desarrollar una interfaz gráfica del usuario por medio del entorno visual de Matlab GUIDE para representar dicho programa.[6] 32 Figura 3.4 Interfaz gráfica del programa Para la validación del método se buscó en la literatura pruebas realizadas en motores de inducción trifásico. Los datos de los motores 1, 2, 3 y 4 fueron obtenidos de pruebas que se hicieron en la Universidad tecnológica de Pereira en Colombia para la obtención de los parámetros de su circuito equivalente. Los datos de los motores 5, 6 y 7 fueron obtenidos de pruebas hechas en la Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica. En la siguiente tabla se muestran los datos de placa de los motores de inducción que se sometieron al programa creado por medio de Matlab. 33 Tabla 3.1 Datos de placa de motores de inducción Dato de placa Tensión nominal (V) Corriente nominal (A) Potencia nominal (W) Velocida d nominal (rpm) Torque arranque (Nm) Corriente arranque (A) Torque máximo (Nm) Factor de potencia Número de polos Frecuenc ia Motor 1 Motor 2 Motor 3 Motor 4 Motor 5 Motor 6 Motor 7 220 220 220 220 208 208 208 8.7 2.4 9 3.2 1.2 1.2 1.2 2238 559.5 2238 559.5 176 176 176 3710 3430 3490 3420 1670 1670 1670 2.4 2.7 2.7 2.7 0.24 0.25 0.25 4.9 6 5.7 6 4.2 3.9 4.5 5.1 4.5 3.2 4.7 1.16 1.14 1.18 0.89 0.86 0.88 0.88 0.81 0.80 0.81 2 2 2 2 4 4 4 60 60 60 60 60 60 60 De acuerdo a pruebas realizadas en laboratorios a dichos motores, se tomaron los valores de laboratorio como el valor teórico para medir que tan eficaz es el método aquí explicado. En las siguientes tablas se observan los resultados obtenidos y su respectiva comparación con los resultados obtenidos por medio del programa: 34 Tabla 3.2 Datos obtenidos motor 1 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 1.6018 1.9214 16.63 Resistencia rotor (Ω) 0.8998 1.1500 21.7565 Reactancia rotor (Ω) 4.7779 5.4732 12.7037 2.0187 2.1411 5.7166 13.0912 15.8747 17.5341 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 1.6304 1.9847 17.8515 Resistencia rotor (Ω) 0.91061 1.1574 21.3222 Reactancia rotor (Ω) 2.1058 2.5259 16.6316 2.0513 1.9824 3.4755 14.4436 17.9858 19.6944 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización Tabla 3.3 Datos obtenidos motor 2 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización 35 Tabla 3.4 Datos obtenidos motor 3 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 1.6006 1.8125 11.69 Resistencia rotor (Ω) 0.8994 1.0515 15.41 Reactancia rotor (Ω) 2.0854 2.8752 27.46 1.9918 2.071 3.82 14.4043 15.1247 4.76 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 1.6165 1.8547 12.8430 Resistencia rotor (Ω) 0.90456 1.1747 22.9965 Reactancia rotor (Ω) 2.0996 2.9757 29.44 2.0131 2.241 10.1695 14.4346 16.7898 14.0275 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización Tabla 3.5 Datos obtenidos motor 4 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización 36 Tabla 3.6 Datos obtenidos motor 5 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 12.98 13.42 3.27 Resistencia rotor (Ω) 7.10 6.98 1.71 Reactancia rotor (Ω) 11.68 16.3 28.34 15.09 16.0 5.68 153.83 156.8 1.89 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 12.98 13.01 0.23 Resistencia rotor (Ω) 7.13 6.6 8.03 Reactancia rotor (Ω) 11.69 15.91 26.52 15.09 16.71 9.69 153.82 158.2 2.76 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización Tabla 3.7 Datos obtenidos motor 6 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización 37 Tabla 3.7 Datos obtenidos motor 7 Valor obtenido por el programa Valor obtenido en el laboratorio Error (%) 12.98 13.68 5.12 Resistencia rotor (Ω) 7.08 7.21 1.80 Reactancia rotor (Ω) 11.68 16.7 30.06 15.09 16.2 6.85 153.83 158.74 1.20 Parámetro del circuito Resistencia estator (Ω) Reactancia estator (Ω) Reactancia de magnetización Algunos valores típicos de Rs rondan entre los 0.0535 Ω y los 27,3 Ω, mientras que los valres de Rr pueden estar entre los 0.0685 Ω. En el caso de las reactancias, Xr puede tener valores típicos entre 0.23 Ω y 23.15 Ω al igual que Xs, mientras que Xm tiene valores típicos entre 6.295 y 2532 Ω [7]. Esto hace ver que los valores obtenidos tanto experimentalmente como en el programa son coherentes con datos reales de parámetros. Observando los resultados obtenidos por medio del programa, se nota que los porcentajes de error obtenidos resultan aceptables ya que son bajos. Dichos porcentajes de errores se pueden deber a la forma en el que la rutina fsolve funciona. Como se mencionó en la sección 2.7, esta rutina funciona por medio del método de Newton, el cual se basa en iteraciones, por lo que necesita un punto inicial (condiciones iniciales) para comenzar a iterar. Dicho método utiliza la convergencia global, por lo que es posible que al solucionar el sistema de ecuaciones no lineales, haya convergido a un mínimo que no necesariamente sea una raíz del sistema en mención, que está relacionado con la escogencia de los valores iniciales. Otra posible explicación de los porcentajes de errores es que al realizar el programa no se indicó el Jacobiano del sistema, por lo que fsolve utilizó predeterminadamente un Jacobiano aproximado por medio de diferencias finitas, lo que ya conlleva un cierto grado de error. 38 Con respecto a las pruebas realizadas en motores en la Universidad de Costa Rica, es importante indicar que dichos motores tenían los mismos datos de placa, es decir, teóricamente eran idénticos. Sin embargo, datos tales como la corriente de arranque, factor de potencia, torque máximo y torque nominal se obtuvieron de manera experimental, por lo que tomaron distintos valores entre sí. 39 4 Capitulo 4: Conclusiones y Recomendaciones La anterior investigación ha sido sumamente importante debido a los conocimientos y destrezas que ha permitido obtener. Gracias al desarrollo de la misma, se han llegado a las siguientes conclusiones: 4.1 Conclusiones Los motores de inducción representan una gran parte de los motores que se utilizan hoy en día para el uso industrial, gracias a que ofrece una amplia versatilidad en su aplicación. La máquina de inducción es la más usada gracias a la disminución de los costos y a que se tiene un amplio auge de la electrónica de potencia. Gracias a su sencillez, a su gran grado de confiabilidad y su gran eficiencia son los que se escogen en muchas aplicaciones. Se ha demostrado que el programa Matlab es una herramienta sumamente valiosa para la resolución de cualquier tipo de problema o fenómeno físico. Además que su comprensión no es muy complicada y ofrece gran confiabilidad a la hora de dar resultados. Además cuenta con un entorno para la creación de interfaces, muy simple de implementar. La rutina fsolve resulta una herramienta sumamente poderosa si se comprende exactamente, pues como lo demuestran los resultados se han obtenido valores muy cercanos a los obtenidos en el laboratorio por medio de las pruebas de vacío y rotor bloqueado. Es importante recalcar el hecho de que al utilizar condiciones iniciales, fsolve puede tardar en dar soluciones, puede necesita iterar hasta converger a la solución, o se puede obtener un mínimo local que no necesariamente es una raíz. 4.2 Recomendaciones Como se ha mencionado con anterioridad, la rutina fsolve necesita de condiciones iniciales para solucionar el conjunto de ecuaciones no lineales, por lo que es recomendable conocer de antemano valores conocidos de los distintos parámetros a determinar, de tal forma 40 que el método comience de la forma más exacta posible. Además es importante tomar en cuenta las opciones de optimización de Matlab y manipularlas de tal forma que se obtenga una solución correcta. También se recomienda utilizar técnicas que no hagan uso de modelos para el planteamiento de ecuaciones y el uso de herramientas más potentes, como el desarrollo de los elementos finitos. 41 5 BIBLIOGRAFIA 1 “Tipos de motores eléctricos”. http://www.photomobiware.com/tech/technical16.php 2 “Conceptos básicos sobre el uso de los motores de inducción trifásicos”, http://literature.rockwellautomation.com/idc/groups/literature/documents/wp/icgwp000_-es-p.pdf 3 Cruz, P. y Sampe, J. “Máquinas eléctricas y técnicas modernas de control”, Primera edición, Almaomega, México, 2008. 4 Escobar Mejía, A. “Estimación de los parámetros del motor de inducción a partir de los datos del fabricante”. http://revistas.utp.edu.co/index.php/revistaciencia/article/view/3141. 5 Fitzgerald, A., Kingsley, C. y Umans, S. “Máquinas eléctricas”, Sexta edición, McGraw Hill, México, 2004. 6 Fernández, G. “Creación de interfaces gráficas de usuario (GUI) con MatLab”. http://webpersonal.uma.es/de/gfdc/docencia/GuiSection.pdf 7 Carreño, S. "Estudio de los datos de catálogo en motores de inducción trifásicos”. http://upcommons.upc.edu/pfc/bitstream/2099.1/6749/1/Memoria%20difinitiva.pdf 42 8 “Optimitation Toolbox”. http://www.mathworks.es/es/products/optimization/description1.html 9 Castro, C. “Determinación de distancias entre objetos de una imagen.” http://www.bdigital.unal.edu.co/4204/1/CarlosJavierCastroQuintana.2011.pdf 10 "Control de Motores AC”. http://hl.cenditel.gob.ve/proyectos/inv-motores-deinduccion/ 43 6 APÉNDICES 6.1 Pruebas de vacío y rotor bloqueado Para probar y validar el programa anteriormente desarrollado, se procedieron a realizar pruebas de vacío y rotor bloqueado a 3 motores jaula de ardilla en la Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica. Con estas pruebas se obtuvieron los parámetros de los motores y de esta forma se podía comparar los resultados obtenidos por medio del programa computacional. La primera prueba que se realizó fue la prueba de corriente directa, para obtener la resistencia del estator. Se midió la tensión aplicada al devanado del estator y la corriente, y se obtuvo la resistencia del estator por la Ley de Ohm V = I·R. Dicho valor se multiplicó por el factor 1.1, de tal forma que se tomara en cuenta el efecto piel y así obtener la resistencia en corriente alterna. Se realizaron 15 mediciones. En la siguiente tabla se muestran los resultados promedios obtenidos en esta prueba. Tabla 6.1 Datos de prueba en corriente directa Tensión promedio (V) Intensidad de corriente promedio (A) Resistencia promedio (Ω) Motor 5 5.51 0.452 12.2 Motor 6 5.49 0.464 11.83 Motor 7 5.54 0.445 12.44 Tomando en cuenta el efecto piel para el motor 5, Rs = 12.2·(1.1) = 13.42 Ω. Para el motor 6, Rs = 11.83·(1.1) = 13.01 Ω, y para el motor 7, Rs = 12.44·(1.1) = 13.68 Ω. Luego se realizó la prueba de vacío. En esta prueba se aplicó una tensión entre el 30% hasta el 100% de la tensión nominal. Se midieron la tensión, la corriente y la potencia en vació. 44 En condición de vacío, las pérdidas se dividen en pérdidas en el cobre por el bobinado del estator, pérdidas del núcleo del hierro del estator y pérdidas meánicas por fricción y viento. Para calcular las pérdidas por el cobre del devanado del estator se utilizó la resistencia Rs y la corriente en vacío. Las pérdidas en vacío, Pvacío, se calcularon con la ecuación ܲ௩í = ܲଵథ − ܫ௩í ଶ ܴ௦ (6.1-1) Después de esto se separaron las pérdidas de vacío en pérdidas en el núcleo Pc y pérdidas mecánicas Pm. Se realizó un gráfico con las variables Pvacío en función de la potencia por fase P1ϕ. Con esta curva se realiza una extrapolación para obtener la intersección de dicha curva con el eje vertical, la cual representa las pérdicas mecánicas, ya que las pérdidas en el núcleo son cero cuando la tensión es cero. Los resultados obtenidos en dicha prueba para los motores 5, 6 y 7 se muestran a continuación. Tabla 6.2 Datos de prueba en vacío del motor 5 0,243 Potencia por fase (W) 5,56 Potencia de Vacío (W) 4.7675 45,22 0,286 5,25 4.1523 55.1 0,321 5,66 4.277 64.52 0,3892 6,54 4.5072 74,47 0,48 7,01 3.9180 85,6 0,529 8,55 4.7945 95.78 0.589 9.83 5.1743 104.82 0.625 11.34 6.098 115.1 0.730 13.00 5.848 118.5 0.782 13.9 5.6933 Tensión (V) Corriente (A) 35.34 45 Tabla 6.3 Datos de prueba en vacío del motor 6 0.261 Potencia por fase (W) 5.58 Potencia de Vacío (W) 3.951 45.26 0.290 5.27 4.120 54.89 0.325 5.70 4.200 64.55 0.377 6.27 4.302 74.50 0.425 7.0 4.360 84.3 0,521 8.34 4.8085 95.78 0.589 9.83 5.1743 105.1 0.648 11..02 5.31 116.2 0.746 13.3 5.8643 118.5 0.759 13.51 5.972 Tensión (V) Corriente (A) 35.45 Tabla 6.2 Datos de prueba en vacío del motor 7 0.296 Potencia por fase (W) 5.52 Potencia de Vacío (W) 4.0523 43.78 0.275 5.12 4.0625 61.75 0.346 5.93 4.2923 71.03 0.415 6.89 4.3250 78.74 0.467 7.85 4.6215 85.12 0.528 8.63 4.8274 96.81 0.588 9.75 5.0548 107.09 0.677 10.92 5.7004 115.25 0.735 13.2 5.833 118.2 0.765 13.68 6.01 Tensión (V) Corriente (A) 37.59 46 Potencia en vacío (W) 7 6 5 4 3 2 1 0 0 20 40 60 80 100 120 140 Tensión (V) Figura 6.1 Potencia en vacío en función de tensión motor 5 Potencia en vacío (W) 7 6 5 4 3 2 1 0 0 20 40 60 80 100 120 140 Tensión (V) Figura 6.2 Potencia en vacío en función de tensión motor 6 47 Potencia de vacío (W) 7 6 5 4 3 2 1 0 0 20 40 60 80 100 120 140 Tensión (V) Figura 6.3 Potencia en vacío en función de tensión motor 6 Las pérdidas del núcleo a voltaje nominal pueden obtenerse de la curva, y se puede obtener Xm con la ecuación ܺ = మ ටூ మ ି ቀ ೇ ቁ ೃ (6.1-2) donde ܴ = మ (6.1-3) La potencia del núcleo Pc se obtuvo restando la potencia mecánica con la potencia en vacío a tensión nominal. Al utilizar estas ecuaciones se obtuvo que para el motor 5, Xm = 156.8 Ω; para el motor 6, Xm = 158.2 Ω, y para el motor 7, Xm = 158.74 Ω. 48 En la prueba de rotor bloqueado de procedió a detener o a frenar por un instante el motor, para obtener mediciones de potencia y corriente. En esta prueba se asume que el deslizamiento es unitario. Se tiene que ܴ = ܴ௦ + ܴ = ೞ ூೞ మ (6.1-4) donde Psc y Isc son la potencia y las corriente de rotor bloqueado respectivamente. También se asume que Rs = Rr, pues un buen diseño de la máquina implica minimizar el hierro y el cobre con estas dos resistencias iguales. Con lo que ோೝ ଶ = ோ ସ (6.1-5) También se tiene que ܺ = ටܼ ଶ − ܴ ଶ (6.1-6) ܼ = (6.1-7) ೞ ூೞ donde Vsc es la tensión en rotor bloqueado. En este caso se asume que Xs = Xr con lo que se llega a ೝ ଶ = ସ (6.1-8) En la siguiente tabla se muestran los resultados al aplicar las ecuaciones con los datos obtenidos por esta prueba. 49 Tabla 6.3 Datos de prueba rotor bloqueado Tensión (V) Corriente (A) Potencia (W) Resistencia del rotor (Ω) Reactancia del rotor (Ω) Reactancia del estator (Ω) Motor 5 118.31 5.61 439.41 6.98 16.3 16.0 Motor 6 118.021 5.76 439.27 6.6 15.91 16.71 Motor 7 118.57 5.53 440.81 7.21 16.7 16.2 6.2 Código del programa en Matlab %Programa para la obtención de los parámetros de un motor de inducción %trifásico %Adrián Solís Badilla clear all; clc; global V_nominal I_nominal T_arranque I_arranque P_nominal Fp Tmax Req Xeq ns nnom P fr Sn ws Zo magnitud options % Parametros del fabricante V_nominal=input('Ingrese tension nominal: '); I_nominal=input('Ingrese Corriente nominal: '); T_arranque=input('Ingrese Torque arranque: '); I_arranque=input('Ingrese Corriente arranque: '); P_nominal =input('Ingrese Potencia nominal: '); Tmax=input('Ingrese torque maximo: '); Fp =input('Ingrese Factor potencia: '); P=input('Ingrese numero de polos: '); nnom =input ('Ingrese velocidad nominal: '); fr=input('Ingrese frecuencia: '); ns=((120*fr)/P); ws = ns*((2*3.14)/60); angulo = acosd(Fp); magnitud = V_nominal/I_nominal; Zo=V_nominal/I_arranque; 50 Sn=((ns-nnom)/ns); Req = magnitud* cosd (angulo); Xeq = magnitud* sind (angulo); x=zeros(5); x0=[1.6,0.9,2,14,3]; options=optimset('MaxFunEvals',25000,'MaxIter',25000,'TolX',1e-0,'TolFun',1e-0); [x,feval,flag]=fsolve('ecuaciones2',x0,options); disp(x); function [f]=ecuaciones2(x) %Parametros a obtener: Rs Xs Xr Xm Rr global I_nominal T_arranque I_arranque P_nominal Req Xeq ws Sn Zo Rs = x(1); Xs = x(2); Xr = x(3); Xm = x(4); Rr = x(5); f(1) = -Req + Rs + (((Rr*Xm*Xm)/Sn)/(((Rr*Rr)/Sn) + ((Xr + Xm)*(Xr + Xm)))); f(2) = -Xeq + Xs + ((((Xm*Rr*Rr)/(Sn*Sn)) + (Xm*Xr*Xr) + (Xr*Xm*Xm))/(((Rr/Sn)*(Rr/Sn)) + ((Xr + Xm)*(Xr + Xm)))); f(3) = -P_nominal + (((3*Rr*(1-Sn))/Sn))*((Xm*Xm*(I_nominal))/(((Rr/Sn)*(Rr/Sn)) + ((Xm+Xr)*(Xm+Xr)))); f(4) = -Zo + sqrt(((Rs + (Rr*Xm*Xm)/(Rr*Rr + (Xr+Xm)*(Xr+Xm) ) )*(Rs + (Rr*Xm*Xm)/(Rr*Rr + (Xr+Xm)*(Xr+Xm) ) ) + (Xs + (Xm*(Rr*Rr + Xr*Xr + Xr*Xm)*(Rr*Rr + Xr*Xr + Xr*Xm))/(Rr*Rr + (Xr+Xm)*(Xr+Xm)) ))); f(5)= -T_arranque + (((3*Rr)/(ws))*(((I_arranque)*(I_arranque)*Xm*Xm)/((Rr*Rr) + ((Xm + Xr)*(Xm + Xr))))); end function varargout = GUI_proyecto(varargin) % GUI_PROYECTO MATLAB code for GUI_proyecto.fig % GUI_PROYECTO, by itself, creates a new GUI_PROYECTO or raises the existing % singleton*. % % H = GUI_PROYECTO returns the handle to a new GUI_PROYECTO or the handle to % the existing singleton*. % % GUI_PROYECTO('CALLBACK',hObject,eventData,tension_N,...) calls the local % function named CALLBACK in GUI_PROYECTO.M with the given input arguments. % % GUI_PROYECTO('Property','Value',...) creates a new GUI_PROYECTO or raises % the existing singleton*. Starting from the left, property value pairs are % applied to the GUI before GUI_proyecto_OpeningFcn gets called. An 51 % unrecognized property name or invalid value makes property application % stop. All inputs are passed to GUI_proyecto_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help GUI_proyecto % Last Modified by GUIDE v2.5 03-Dec-2012 02:22:01 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @GUI_proyecto_OpeningFcn, ... 'gui_OutputFcn', @GUI_proyecto_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before GUI_proyecto is made visible. function GUI_proyecto_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % varargin command line arguments to GUI_proyecto (see VARARGIN) % Choose default command line output for GUI_proyecto handles.output = hObject; % Update tension_N structure guidata(hObject, handles); 52 initialize_gui(hObject, handles, false); % UIWAIT makes GUI_proyecto wait for user response (see UIRESUME) % uiwait(tension_N.figure1); % --- Outputs from this function are returned to the command line. function varargout = GUI_proyecto_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Get default command line output from tension_N structure varargout{1} = handles.output; function tension_N_Callback(hObject, eventdata, handles) % hObject handle to tension_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of tension_N as text % str2double(get(hObject,'String')) returns contents of tension_N as a double tension_N = str2double(get(hObject, 'String')); if isnan(tension_N) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new tension_N value handles.parametro.tension_N = tension_N; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function tension_N_CreateFcn(hObject, eventdata, handles) % hObject handle to tension_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 53 set(hObject,'BackgroundColor','white'); end function corriente_N_Callback(hObject, eventdata, handles) % hObject handle to corriente_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of corriente_N as text % str2double(get(hObject,'String')) returns contents of corriente_N as a double corriente_N = str2double(get(hObject, 'String')); if isnan(corriente_N) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.corriente_N = corriente_N; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function corriente_N_CreateFcn(hObject, eventdata, handles) % hObject handle to corriente_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function potencia_N_Callback(hObject, eventdata, handles) % hObject handle to potencia_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of potencia_N as text % str2double(get(hObject,'String')) returns contents of potencia_N as a double 54 potencia_N = str2double(get(hObject, 'String')); if isnan(potencia_N) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.potencia_N = potencia_N; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function potencia_N_CreateFcn(hObject, eventdata, handles) % hObject handle to potencia_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function velocidad_N_Callback(hObject, eventdata, handles) % hObject handle to velocidad_N (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of velocidad_N as text % str2double(get(hObject,'String')) returns contents of velocidad_N as a double velocidad_N = str2double(get(hObject, 'String')); if isnan(velocidad_N) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.velocidad_N = velocidad_N; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function velocidad_N_CreateFcn(hObject, eventdata, handles) % hObject handle to velocidad_N (see GCBO) 55 % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function torque_A_Callback(hObject, eventdata, handles) % hObject handle to torque_A (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of torque_A as text % str2double(get(hObject,'String')) returns contents of torque_A as a double torque_A = str2double(get(hObject, 'String')); if isnan(torque_A) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.torque_A = torque_A; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function torque_A_CreateFcn(hObject, eventdata, handles) % hObject handle to torque_A (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function corriente_A_Callback(hObject, eventdata, handles) % hObject handle to corriente_A (see GCBO) 56 % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of corriente_A as text % str2double(get(hObject,'String')) returns contents of corriente_A as a double corriente_A = str2double(get(hObject, 'String')); if isnan(corriente_A) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.corriente_A = corriente_A; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function corriente_A_CreateFcn(hObject, eventdata, handles) % hObject handle to corriente_A (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function torque_M_Callback(hObject, eventdata, handles) % hObject handle to torque_M (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of torque_M as text % str2double(get(hObject,'String')) returns contents of torque_M as a double torque_M = str2double(get(hObject, 'String')); if isnan(torque_M) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value 57 handles.parametro.torque_M = torque_M; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function torque_M_CreateFcn(hObject, eventdata, handles) % hObject handle to torque_M (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function factor_P_Callback(hObject, eventdata, handles) % hObject handle to factor_P (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of factor_P as text % str2double(get(hObject,'String')) returns contents of factor_P as a double factor_P = str2double(get(hObject, 'String')); if isnan(factor_P) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.factor_P = factor_P; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function factor_P_CreateFcn(hObject, eventdata, handles) % hObject handle to factor_P (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); 58 end function numero_P_Callback(hObject, eventdata, handles) % hObject handle to numero_P (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of numero_P as text % str2double(get(hObject,'String')) returns contents of numero_P as a double numero_P = str2double(get(hObject, 'String')); if isnan(numero_P) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.numero_P = numero_P; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function numero_P_CreateFcn(hObject, eventdata, handles) % hObject handle to numero_P (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function frecuencia_Callback(hObject, eventdata, handles) % hObject handle to frecuencia (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of frecuencia as text % str2double(get(hObject,'String')) returns contents of frecuencia as a double frecuencia = str2double(get(hObject, 'String')); 59 if isnan(frecuencia) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new corriente_N value handles.parametro.frecuencia = frecuencia; guidata(hObject,handles) % --- Executes during object creation, after setting all properties. function frecuencia_CreateFcn(hObject, eventdata, handles) % hObject handle to frecuencia (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N empty - tension_N not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in calculate. function calculate_Callback(hObject, eventdata, handles) % hObject handle to calculate (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) % set(handles.text36, 'String', 'PROCESANDO...'); % guidata(handles.figure1, handles); clc; error = false; global V_nominal I_nominal T_arranque I_arranque P_nominal Fp Tmax Req Xeq ns nnom P fr Sn ws Zo magnitud options angulo % Parametros del fabricante if (isnan(handles.parametro.tension_N)) errordlg('Valor de Tensión Nominal Invalido','Error'); error = true; end if (isnan(handles.parametro.corriente_N)) errordlg('Valor de Corriente Nominal Invalido','Error'); error = true; end if (isnan(handles.parametro.torque_A)) errordlg('Valor de Potencia Nominal Invalido','Error'); 60 error = true; end if (isnan(handles.parametro.corriente_A)) errordlg('Valor de Velocidad Nominal Invalido','Error'); error = true; end if (isnan(handles.parametro.potencia_N)) errordlg('Valor de Torque Arranque Invalido','Error'); error = true; end if (isnan(handles.parametro.torque_M)) errordlg('Valor de Corriente Arranque Invalido','Error'); error = true; end if (isnan(handles.parametro.factor_P)) errordlg('Valor de Torque Maximo Invalido','Error'); error = true; end if (isnan(handles.parametro.numero_P)) errordlg('Valor de Factor de Pontencia Invalido','Error'); error = true; end if (isnan(handles.parametro.velocidad_N)) errordlg('Valor de Número de Polos Invalido','Error'); error = true; end if (isnan(handles.parametro.frecuencia)) errordlg('Valor de Frecuencia Invalido','Error'); error = true; end if (error == false) V_nominal = handles.parametro.tension_N; I_nominal = handles.parametro.corriente_N; T_arranque = handles.parametro.torque_A; I_arranque = handles.parametro.corriente_A; P_nominal = handles.parametro.potencia_N; Tmax = handles.parametro.torque_M; Fp = handles.parametro.factor_P; P = handles.parametro.numero_P; nnom = handles.parametro.velocidad_N; fr = handles.parametro.frecuencia; ns=((120*fr)/P); ws = ns*((2*3.14)/60); angulo = acosd(Fp); 61 magnitud = V_nominal/I_nominal; Zo = V_nominal/I_arranque; Sn = ((ns-nnom)/ns); Req = magnitud* cosd (angulo); Xeq = magnitud* sind (angulo); x = zeros(5); x0 = [1.6,0.9,2,14,3]; options = optimset('MaxFunEvals',50000,'MaxIter',50000,'TolX',1e-0,'TolFun',1e-0); [x,feval,flag] = fsolve('ecuaciones2',x0,options); set(handles.text16, 'String', num2str(x(1))); set(handles.text18, 'String', num2str(x(2))); set(handles.text20, 'String', num2str(x(3))); set(handles.text22, 'String', num2str(x(4))); set(handles.text24, 'String', num2str(x(5))); set(handles.text36, 'String', 'FINALIZADO'); end % --- Executes on button press in reset. function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % tension_N structure with tension_N and user data (see GUIDATA) initialize_gui(gcbf, handles, true); % -------------------------------------------------------------------function initialize_gui(fig_handle, handles, isreset) % If the metricdata field is present and the reset flag is false, it means % we are we are just re-initializing a GUI by calling it from the cmd line % while it is up. So, bail out as we dont want to reset the data. if isfield(handles, 'parametro') && ~isreset return; end handles.parametro.tension_N = NaN; handles.parametro.corriente_N = NaN; handles.parametro.potencia_N = NaN; handles.parametro.velocidad_N = NaN; handles.parametro.torque_A = NaN; handles.parametro.corriente_A = NaN; handles.parametro.torque_M = NaN; handles.parametro.factor_P = NaN; handles.parametro.numero_P = NaN; handles.parametro.frecuencia = NaN; 62 set(handles.tension_N, 'String', ''); set(handles.corriente_N, 'String', ''); set(handles.potencia_N, 'String', ''); set(handles.velocidad_N, 'String', ''); set(handles.torque_A, 'String', ''); set(handles.corriente_A, 'String', ''); set(handles.torque_M, 'String', ''); set(handles.factor_P, 'String', ''); set(handles.numero_P, 'String', ''); set(handles.frecuencia, 'String', ''); set(handles.text16, 'String', 0); set(handles.text18, 'String', 0); set(handles.text20, 'String', 0); set(handles.text22, 'String', 0); set(handles.text24, 'String', 0); set(handles.text36, 'String', 'INGRESAR PARAMETROS!'); % Update tension_N structure guidata(handles.figure1, handles); 63