Proyecto Control de Motor DC
Proyecto Control de Motor DC
Proyecto Control de Motor DC
B. A. Adquisicin de datos
Para la adquisicin de datos se utilizan tres canales analgicos del microcontrolador: AN0, AN1 y AN2. Las seales obtenidas en cada canal son las siguientes: AN0: Realimentacin de Posicin (-180/180) AN1: Realimentacin de Velocidad (-120/120rpm) AN2: Referencia desde potencimetro (-180/180) En todos los casos las seales provienen del mdulo UMF y oscilan entre -10 y 10V. Es por ello que se utiliza una etapa de acondicionamiento previo que convierte estos valores a un rango de 05V, que pueden ser ingresados al microcontrolador sin problema. Para la adquisicin de datos se utiliza el mdulo de conversin A/D del PIC, el cual trabaja con 10 bits, dando una resolucin de 4.89mV/bit en el rango de 05V. Esto dignifica que para la realimentacin de posicin se tiene una resolucin de 0.352/bit y para realimentacin de velocidad 0.235rpm/bit. La referencia obtenida desde potencimetro tiene la misma resolucin que la realimentacin de posicin, es decir 0.352u/bit. La referencia puede estar dada en grados () o rpm. Para la configuracin del mdulo de conversin A/D del PIC16F917 se puede proceder de dos formas. Configurar directamente los registros ADCON0 y ADCON1, o utilizar instrucciones propias del lenguaje C para PIC. En ambos casos se tendr presente las siguientes caractersticas: Configurar pines correspondientes como entradas analgicas Definir referencias o rangos de voltaje para la adquisicin Seleccionar reloj de la conversin Habilitar mdulo de conversin A/D Cabe indicarse que no se utilizarn interrupciones cuando termina la conversin A/D. 1) Configuracin de ADCON0 y ADCON1 En el PIC16F917, el registro ADCON1 permite seleccionar el reloj de la conversin. Para un tiempo de conversin por bit TAD=4us, trabajando con el cristal interno del PIC en 8MHz, se debe escoger la opcin de TAD=32*TOSC, la cual se configura como sigue. ADCON1 = 0x20; El registro ADCON0 permite configurar todos los dems parmetros citados anteriormente. El cdigo a utilizarse sera el siguiente. ADCON0 = 0x081;
Un sistema de control no solo est formado por las leyes que gobiernan el control, sino tambin por la parte fsica que permite la ejecucin de estas leyes. En el presente proyecto, el control se implementa mediante un microcontrolador que ejecuta el cdigo correspondiente al control deseado y adems permite realizar adquisicin de datos y generacin de seales de control, en este caso PWM. Como primer punto, se abordar brevemente el tema del hardware necesario para la implementacin de este control.
A. Placa de control
El diseo del hardware utilizado considera las siguientes etapas: Acondicionamiento de seales para la adquisicin de datos en base a amplificadores de instrumentacin implementados mediante TL084, comunicacin serial RS232 mediante un MAX232, visualizacin en LCD, indicadores de modo de control mediante LEDs, interfaz de programacin mediante RJ-11. El diseo esquemtico de los circuitos mencionados fue elaborado en ISIS Proteus, y el diseo del circuito impreso en ARES. II. MDULOS DEL MICROCONTROLADOR USADOS EN EL SOFTWARE DE CONTROL
Para la explicacin de los mdulos utilizados en el software de control, se dividir al mismo en sus respectivas funciones que se
Con esta instruccin se habilita el mdulo de conversin A/D, se rechazan los 6 bits ms significativos del registro ADRES y se selecciona por defecto el canal AN0 para la conversin. Los bits ADCON <4-2> permiten seleccionar el canal con el que se desea trabajar, y el bit ADCON,1 (GO/~DONE), permite iniciar la conversin A/D. Los pasos para realizar una adquisicin de datos analgica en un canal especfico seran los siguientes: Escoger canal mediante ADCON<4-2>. ADCON,1 = 1. (GO/~DONE), y esperar hasta que se realice la conversin. Leer resultado almacenado en ADRES. 2) Configuracin mediante instrucciones en C para PIC Existe un set de instrucciones especficas que permite realizar la misma configuracin descrita anteriormente, de una forma ms sencilla y rpida. Las instrucciones presentadas a continuacin configura el mdulo A/D para trabajar con un TAD=4us, AN0, AN1, AN2 habilitados. setup_adc_ports (SAN0|SAN1|SAN2|VSS_VDD); setup_adc(ADC_CLOCK_DIV_32); Finalmente, para la utilizacin del mdulo A/D se procede de forma similar a la descrita en II.B.1., es decir, primero seleccionar el canal deseado y luego iniciar una conversin A/D, esperar por su resultado y luego guardarlo en una variable. Este es el mtodo utilizado en el cdigo de control diseado. set_adc_channel(n); resultado = read_adc( );
1)
Se utilizar la salida PMW del mdulo CCP1, por lo que se procede a configurar el registro CCP1CON, el cual permite seleccionar el modo de trabajo del mdulo CCP1. CCP1CON = 0x0F; Con ello se configura el mdulo CCP1 en modo PWM. Ahora para la configuracin del periodo de la seal, se configura el TIMER2 mediante el registro T2CON, y el registro asociado PR2. T2CON = 0x07; PR2 = 249; Esto permite encender el TMR2, configurar un prescaler de 16, postscaler de 1, y cumplir con la frecuencia deseada (500Hz). La seal generada surge de un registro de 10bits formados por el registro CCPR1L (8bits), y los bits CCP1CON<5-4>. Al tener 10 bits para generar la seal, se tiene una resolucin de 4.89mV/bit. 2) PWM mediante instrucciones en C para PIC
Al igual que para el caso de la configuracin del mdulo para conversin A/D, es ms sencillo y rpido configurar el mdulo CPP1 en modo PWM mediante instrucciones en C para PIC, cuya secuencia sera como sigue. setup_ccp1(CCP,PWM); setup_timer_2(T2_DIV_BY_16,249,1); Mediante esta sencilla secuencia de instrucciones se ha configurado el mdulo CCP1 en modo PWM para generar una seal con frecuencia de 500Hz. La instruccin para variar la relacin de trabajo de la seal es la siguiente. set_pwm1_duty(dutyk); Donde dutyk, representa un valor entre 0 1023 (10bits), que corresponden linealmente a 0 100% de relacin de trabajo.
La seal PWM a generarse tendr una frecuencia de 500Hz, la cual est dentro del lmite definido por el mdulo UMF, adicionalmente, la frecuencia del cristal es de 8MHz, con lo cual la expresin se reduce a lo siguiente. ( ) (2)
Asignando un valor de 16 al prescaler de TMR2, el registro PR2 tendr un valor de 249. Se pueden usar dos formas para configurar la salida PWM: configurar los registros internos del PIC o usar instrucciones en C para el PIC.
1)
Se iniciar con la configuracin del temporizador. Para ello, se usa la expresin presentada a continuacin. ( ) (3)
Reemplazando los valores conocidos, y usando un prescaler de 256, el resultado es TMR0 = 99.75. Debido a que no se puede asignar un valor decimal al registro TMR0 de 8bits, se asignar TMR0 = 100. El registro OPTION_REG permite asignar el prescaler al TMR0 en lugar del WDT, seleccionar el valor del prescaler, y adems configurar el flanco deseado para el cambio en RB0. Dando el valor mostrado a continuacin a OPTION_REG, se asigna el prescaler al TMR0 con un valor de 256 y adems se escoge flanco descendente para la deteccin de cambio de estado en RB0. OPTION_REG = 0x87; Finalmente para la configuracin de las interrupciones, se deben poner en 1 algunos bits especficos del registro INTCON, que son: GIE (Global interrupt nable), T0IE (TMR0 overflow interrupt enable), e INTE (external interrup enable). Para llevar a cabo esta configuracin, se escribe lo siguiente en INTCON. INTCON = 0xB0; El registro INTCON tiene tambin bits que sirven de aviso <<flag>> e indican qu interrupcin tuvo lugar. En cdigo ensamblador, es necesario determinar que interrupcin se ha generado al verificar que <<flag>> est activada, y luego se debe borrar este bit de flag para que la interrupcin no sea recurrente sin razn. Sin embargo, al estar trabajando mediante un compilador de cdigo en C, ya no es necesario desactivar las banderas que indican la interrupcin que ha tenido lugar, puesto que el compilador se encarga de ello. Cabe anotarse que en el caso de la interrupcin por desbordamiento del TMR0, se debe volver a escribir el valor de TRM0 = 100 para que vuelva a contar desde ese valor, caso contrario, el TMR0 tomar el valor de cero (0) y el tiempo de 20ms no se cumplir sino que ser mayor. 2) Interrupciones mediante funciones en C para PIC
estado en que se encuentra el motor; y recibir los comandos que ingrese el usuario para seleccionar los diferentes modos de control. Estos comandos son cdigos que representan un modo de control determinado, as por ejemplo el comando DEF, indica que se carguen los valores por defecto en los vectores _a[N] y _b[N] utilizados para el clculo de la ley de control. Los modos existentes en el programa desarrollado se presentan a continuacin. Control de posicin con referencia desde potencimetro, POS=POT. Control de posicin con referencia por teclado (RS232), POS=NUM, donde NUM es directamente el valor numrico deseado, por ejemplo POS=90. Control de velocidad con referencia desde potencimetro, VEL=POT Control de velocidad con referencia por teclado (RS232), VEL=NUM. Apagar Motor, PARAR. Arrancar Motor, ARRANCAR. Cambio de la ley de control, que pide el ingreso de _a[N], _b[N]; RZ=[b0 b1 .. bm]/[1 a1 an]. Para validar el modo escogido se debe presionar el pulsador de RB0. Con ello, el microcontrolador procesa el contenido del comando recibido en una rutina implementada como parte de la interrupcin externa. Ms adelante se abordar el tema del procesamiento de la cadena de caracteres recibida, por ahora se describir la configuracin del mdulo de comunicacin serial AUSART, que permite la transmisin / recepcin de datos bajo el estndar RS232 con formato NRZ. Para que la comunicacin pueda ser realizada con xito se deben definir parmetros como velocidad, nmero de bits por dato y bits de parada. Para este caso se han escogido los siguientes parmetros. Velocidad: 9600 bps Nmero de bits: 8 bits por dato Bits de Parada: 1 Paridad: Ninguna Esta configuracin aplica tanto para la transmisin como para la recepcin. Al igual que en los casos anteriores, existen dos modos de configurar el mdulo AUSART: mediante sus registros de configuracin o mediante instrucciones en C desarrolladas para el PIC. 1) Configuracin de registros TXSTA, RCSTA, SPBRG
A diferencia de la configuracin mediante registros, la configuracin en base a instrucciones en C para el PIC, habilita cada interrupcin por separado, tal como se muestra en el siguiente cdigo que permite configurar temporizador e interrupcin por desbordamiento del TIMER0 y luego la interrupcin externa con flanco descendente. Este es el cdigo utilizado en el programa. setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); set_timer0(100); enable_interrupts(GLOBAL); enable_interrupts(INT_RTCC); //TMR0 enable_interrupts(INT_EXT); //Externa ext_int_edge(H_TO_L); //flanco //descendente Debe tenerse en cuenta que el pin RB0 debe estar declarado como entrada para poder llevar a cabo la interrupcin configurada.
Para configurar al mdulo AUSART de la forma antes descrita, se deben asignar valores especficos a los registros de control y estado para transmisin y recepcin TXSTA y RCST respectivamente, y al registro SPBRG, que permite configurar el baud rate o velocidad de comunicacin. En primer lugar se define la velocidad de 9600bps. Para ello hay que escribir un valor en el registro SPBRG segn la siguiente frmula, considerando alta velocidad de comunicacin (BRGH=1), y un cristal de 8MHz.
( )
(4)
Por lo tanto se escribe SPBRG = 51. Con esta configuracin se tiene un error de 0.16% en el valor real de velocidad de comunicacin, lo cual es perfectamente asumible. Lo siguiente es configurar los registros TXSTA y RCSTA como sigue. RCSTA = 0x90; TXSTA = 0x04; RCSTA: Puerto serial habilitado, recepcin con 8bits de datos, recepcin continua habilitada. TXSTA: Transmisin con 8 bits de datos, transmisin deshabilitada, AUSART en modo asincrnico, comunicacin en alta velocidad (BRGH=1). Dado que la recepcin puede ocurrir en cualquier momento, la opcin de recepcin continua debe estar habilitada, mientras que la transmisin al ser realizada en un momento determinado por el programa, no necesita estar habilitada en todo momento sino nicamente cuando se requiere transmitir los datos, es por ello que se deshabilita la transmisin en la configuracin inicial. No se utilizar interrupcin por recepcin, ya que la rutina para recibir datos y leerlos est dentro del main en un lazo <<while>>, con lo cual en todo momento el microcontrolador est listo para recibir datos y guardarlos de forma inmediata. Los datos recibidos se almacenan en el registro RCREG, el cual debe ser ledo luego de la recepcin. El registro RCREG debe ser ledo para poder borrarlo y permitir la recepcin de los siguientes datos. RCREG puede almacenar hasta dos datos sin ocasionar error por sobre escritura. Para la transmisin de datos, en primer lugar se debe habilitar la misma mediante TXSTA,TXEN=1, y luego se copia el dato a enviar en el registro TXREG, esperar hasta que se transmita el dato y luego escribir el TXREG el siguiente dato. 2) Configuracin de comunicacin instrucciones en C para el PIC serial mediante
deseados. Al hacer esto se reduce significativamente el tiempo de necesario para la escritura, en comparacin con la escritura en coma flotante. La instruccin utilizada para la escritura en LCD, es la siguiente. printf(lcd_putc,Datos a mostrar); Los LEDs utilizados son 4 e indican: referencia desde potencimetro, referencia por teclado, modo de control de posicin, modo de control de velocidad. Se encendern en funcin del modo de control en el que se encuentre el sistema. Para encenderlos, nicamente basta con modificar el valor enviado a los pines PORTB <4-1>. III. SOFTWARE DE CONTROL En este aparatado se abordarn las funciones utilizadas para definir la lgica de control implementada en el microcontrolador, incluyendo el procesamiento de los comandos enviados por el usuario desde teclado.
A. Rutina de control
La rutina de control se ejecuta cada 20ms, definidos por la interrupcin por desbordamiento del TMR0; es decir que la rutina de control se ejecuta dentro la rutina de la interrupcin del TMR0. Cabe anotarse que todos los clculos y operaciones realizadas se realizan en coma fija con variables tipo <<signed long long>>. De forma general los pasos a seguir para aplicar el control, se muestran el diagrama de flujo mostrado en la Figura 1. En primer lugar se verifica cual es la procedencia de la referencia para el control, potencimetro o desde teclado. En el caso de potencimetro, se adquieren datos desde el canal AN2, luego se los acondiciona linealmente para tenerlos entre los rangos de -180/180. Luego se verifica si el motor est encendido; es decir, que el usuario puede cambiar la referencia cuando el motor est apagado y cuando se encienda cumplir con la nueva referencia. En el caso de motor encendido, se verifica en qu modo de control est: posicin o velocidad. En cualquiera de estos modos se realiza primero la adquisicin de datos, luego el respectivo acondicionamiento lineal: AN0/-180/180 para posicin; AN1/-120/120rpm para velocidad. Luego, se rota el vector de errores. Posteriormente se calcula el error actual restando la referencia menos el valor de realimentacin. Para el caso de control de posicin, se aplica un lmite al error para que que identifique el camino ms corto para cumplir con la referencia de posicin. El lmite consiste en restar 360 si el error es mayor de 180, y sumar 360 si el error es menor que -180. A continuacin se rota el vector de seales de control, y se calcula la seal de control actual mediante el algoritmo de control PID mostrado. [ ] [] [] [] [] (5)
La configuracin de la comunicacin serial mediante instrucciones en C para el PIC es mucho ms sencilla y rpida. Todos los parmetros de la configuracin pueden ser definidos en una sola instruccin. Este el mtodo usado en el programa de control. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) De esta forma queda configurada la recepcin continua y para leer los datos se usa la instruccin <<gets>>, que permite recibir una cadena de caracteres. gets(cmd); //cmd: variable para cadena de caracteres Para enviar datos, se procede al igual que en ANSI C++ mediante la instruccin <<printf>>. printf(Motor encendido);
F. Manejo de Puertos
Adicionalmente a los pines especficos utilizados para los mdulos anteriormente descritos, se ha utilizado el puerto D para controlar la escritura en el LCD y los pines PORTB <4-1> para controlar LEDs indicadores del modo de control. Para la escritura en el LCD, se ha utilizado el fichero de configuracin LCD_mecatr.c, y se realiza escritura en coma fija, obteniendo primero el valor real, luego escribiendo uno a uno los decimales
En el control de posicin, n=m=1; mientras que en el control de velocidad n=m=2. Luego de calcular la nueva seal de control, se la aplica mediante PWM. Para ello se realiza un acondicionamiento lineal y posterior conversin de coma fija a coma flotante para que la relacin de trabajo de la seal a generar tenga un rango entre 0/1023 (10bits), que representan 0/100%, 0/5V. Finalmente, se escribe en el LCD los datos correspondientes a los valores de referencia y salida.
El tiempo que tarda todo el control en ser procesado es de 13ms, para el caso de control de posicin, y 16ms para control de velocidad, que es menor al periodo de muestreo, con lo que se evita prdida de datos para los clculos. Si se trabajara en coma flotante en lugar de coma fija, el tiempo de clculo sera mayor al actual, es por ello que es recomendable trabajar en coma fija, tal como se ha hecho para el caso de este programa.
INICIO RS232 REF? DATO TECLADO POT
LEER POT.
De forma general, la rutina realiza en primer lugar la eliminacin de los espacios existentes en la parte inicial del comando; luego identifica el tipo de comando en funcin de las letras correspondientes a cada modo de control. Luego de reconocer el modo de control, se actualiza una variable que almacena el estado del control actual, y se cambian de estado los LEDs conectados en PORTB<4-1> para mostrar el modo de control actual.
INICIO Remover espacios SI ARRANCAR? Aplicar control NO Leer valor ingresado Guardar modo de control PARAR? Detener motor NO Cambiar LEDs Cambiar LEDs POT POT? SI VEL? RS232 NO A
ON ON?
OFF
POS POS/VEL?
VEL
SI
LEER POS
LEER VEL
SI DEF? SI POS? POT POT? RS232 NO
NO
Calcular error
Seal de control = 0
Cambiar LEDs
SI
En el caso que el usuario introduzca el comando AARRANCAR, se habilita el control que haya estado en funcionamiento, o bien el modo de control por defecto que es control de posicin con referencia desde potencimetro. Si el comando es PARAR, se aplica un PWM con relacin de trabajo de 50% para detener el motor. En el caso que el comando introducido sea DEF, indica al controlador que use los valores por defecto para su ley de control, por lo que primero se debe identificar en qu modo de control est, y luego aplica los respectivos coeficientes por defecto. Si el comando ingresado es RZ, indica
que se desea cambiar la ley de control, con lo que el programa evala la sintaxis ingresada para RZ y verifica su validez. En caso de ser vlido el comando, lee los coeficientes ingresados, caso contrario indica al usuario del error cometido. Finalmente, si el comando es POS, indica que se desea modo de control de posicin, pero falta evaluar si se desea referencia desde potencimetro o desde teclado. En el caso de potencimetro, no es necesario procesamiento adicional, por lo que nicamente actualiza la variable que guarda el estado de los modos de control, y luego cambia el estado de los LEDs del puerto B. Para el caso de referencia desde teclado, lee el valor de la referencia desde el comando ingresado, por ejemplo si se escribi POS=90, la referencia es 90, luego actualiza la variable que guarda el estado del control actual y cambia el estado de los LEDs del puerto B. Para el caso ingresar el comando VEL, se procede al igual que para el caso de POS; es decir, se evala si se desea referencia desde potencimetro o desde teclado, y luego se actualiza la variable que guarda el estado actual del control y se cambia el estado de los LEDs del puerto B. Si el comando no es reconocido dentro de ninguno de los casos, se indica al usuario que los datos ingresados son incorrectos. La ejecucin de la rutina para procesar el comando ingresado tarda un tiempo mximo de 8.2ms.
dos cadenas y devuelve un resultado booleano. A continuacin se presenta el cdigo usado en C y luego el usado en el PIC. strncmp(pt,PARAR,5); strncmp(pt,_cmstart,strlen(_cmstart)); //_cmstart[]=PARAR Se guardan los comandos de referencia para la comparacin como constantes string, y luego para determinar el nmero de caracteres a comparar se obtiene la longitud de la cadena de referencia mediante strlen.
D. Acondicionamiento de seales
Existe la posibilidad de que los circuitos de acondicionamiento de seal no proporcionen resultados exactos en su operacin, tal como es el caso de este proyecto y por lo tanto se reducir el rango de voltaje a obtener. Por ejemplo para el potencimetro que vara entre -180/180u, se deberan tener voltajes entre 0/5V, pero en la realidad se tienen voltajes de 0/4.1V.
C. Funcin main
Dentro de la rutina principal del programa se encuentra nicamente la recepcin serial para asignar el comando recibido a una variable que guarda la cadena de caracteres. Las dems operaciones se realizan desde las interrupciones de TMR0 y externa. IV. CONSIDERACIONES ESPECIALES Al momento de pasar el cdigo diseado en ANSI C++ al PIC, se deben tener en cuenta algunas consideraciones especiales que se irn detallando en este apartado. De igual forma se tratarn asuntos relacionados con los rangos de adquisicin de datos de las seales proporcionadas por el UMF.
A. Tipo de datos
Para realizar las operaciones en coma fija, se debe sustituir la variable int32 del C a signed long long, y verificar que todas las variables que intervengan en alguna operacin matemtica, tengan el mismo tipo de dato para evitar prdida de datos. En este punto vale la pena mencionar que al usar macros para operaciones en coma fija que desplacen un registro hacia la derecha, como por ejemplo el producto en coma fija; el PIC no ejecuta adecuadamente estas operaciones y altera el resultado. Por ende, hay que realizar modificaciones pertinentes para obtener los resultados correctos. A continuacin se presenta el macro usado en C y luego el usado en el PIC. prod_comaf (X,Y) ((X)*(Y)>>Q) Q: #bits decimales (10) prod_comaf (X,Y) ((X)*(Y)/R) R: 2Q = (1024)
Esta prdida de voltaje en el lmite superior ocasiona que se modifique la curva de acondicionamiento lineal definida en el PIC, sin embargo se pueden realizar las respectivas correcciones, tal como se muestra en la figura 3. Cabe anotarse que estas correcciones deben hacerse para cada mdulo UMF y determinar el valor adecuado de la correccin, ya que si bien se supone son modelos iguales de UMF, pero su desempeo puede variar. V. CONCLUSIONES
cual fue coautor de una publicacin de diseo y construccin de prototipos de robots industriales. Adicionalmente ha dictado varios seminarios de visin artificial e instrumentacin virtual en base a LabVIEW. Actualmente cursa el programa de Master in Mechatronics and Micro-mechatronics EU4M en Europa.
Un microcontrolador PIC de gama media como el usado en este proyecto, permite realizar operaciones de control gracias a los mdulos con los que cuenta, pues permite implementar desde adquisicin de datos y generacin de seales de control, hasta procesamiento de datos tipo string y la realizacin de operaciones matemticas con lgica discreta, como el algoritmo de control implementado. Sin embargo, es necesario optimizar el cdigo y tratar de usar el menor nmero posible de variables, y a ms de ello se deben verificar las funciones utilizadas ya que es posible que el compilador utilizado no reconozca la funcin en cuestin o trabaje con una versin modificada de la misma. Adicionalmente, se deben tener en cuenta los tiempos de ejecucin, es decir, se debe verificar que la rutina de control utilizada no se demore un tiempo mayor al tiempo de muestreo para no perder datos. Para agilitar las operaciones realizadas, se recomienda trabajar en coma fija, incluso para la escritura en LCD, teniendo en cuenta que se debe escoger un nmero de bits adecuado para la parte decimal que permita expresar las cantidades con las que se quiere trabajar. Es probable que existan problemas de adquisicin de datos debido a prdidas en la etapa de acondicionamiento, sin embargo estos errores se pueden corregir por software definiendo los lmites de la adquisicin y modificando la ecuacin de acondicionamiento lineal implementada en el PIC. VI. REFERENCIAS [1] Presentaciones del curso [3] Datasheet PIC16F917, Microchip [2] Ogata K, Sistemas de control en tiempo discreto, Prentice Hall. VII. BIOGRAFA DE AUTOR Pedro J. Arvalo Molina Naci en Cuenca-Ecuador en 1986. Realiz sus estudios universitarios en la Escuela Politcnica Nacional en QuitoEcuador, donde obtuvo el ttulo de Ingeniero en Electrnica y Control con reconocimiento SUMMA CUM LAUDE, adems de distinguirse como el mejor graduado. Posteriormente realiz estudios en el rea de instrumentacin y control aplicados a la industria petrolera mediante Schlumberger en Houston, TX-USA, donde obtuvo el grado de Ingeniero LWD, distinguindose como el mejor graduado. Ha desarrollado varios proyectos basados en instrumentacin virtual y robtica conjuntamente con National Instruments-Ecuador, con el