Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ingeniería en Automatización                         y Control Industrial                Departamento de Ciencia y Tecnolo...
Proyecto Final de Materia                                  Sistemas Digitales                                  Programació...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                   Sistemas Digitales                                   Programac...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                   Sistemas Digitales                                   Programac...
Proyecto Final de Materia                                   Sistemas Digitales                                   Programac...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                   Sistemas Digitales                                   Programac...
Proyecto Final de Materia                                            Sistemas Digitales                                   ...
Proyecto Final de Materia                                     Sistemas Digitales                                     Progr...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                            Sistemas Digitales                                   ...
Proyecto Final de Materia                                              Sistemas Digitales                                 ...
Proyecto Final de Materia                                         Sistemas Digitales                                      ...
Proyecto Final de Materia                                    Sistemas Digitales                                    Program...
Proyecto Final de Materia                                   Sistemas Digitales                                   Programac...
Upcoming SlideShare
Loading in …5
×

Control de motor (eje flexible)

1,172 views

Published on

  • Be the first to comment

Control de motor (eje flexible)

  1. 1. Ingeniería en Automatización y Control Industrial Departamento de Ciencia y Tecnología S I S T E M A S D I G I T A L E S Proyecto Final de MateriaPROGRAMACIÓN EN C DE UN MICROCONTROLADOR MOTOROLA JK3OBJETIVO: CONTROL DE UN MOTOR DE CC CON EJE FLEXIBLEAlumno: Leandro Martín PagnaniniLegajo: 6558Año 2005
  2. 2. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3INDICE 1. Objetivo 2. Requerimientos 3. Datos Técnicos 4. Desarrollo 4.1 Programación del microcontrolador 4.2 Realización del Kit Motor-Encoder 4.3 Detalles del programa 5. Temas que abarca el proyecto 6. Archivos adjuntos 7. Conclusión 2
  3. 3. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK31- OBJETIVO: Aprender a programar microcontroladores Motorola jk3 en C e interactuar con componentes electrónicos asociados al microcontrolador. Con la finalidad de realizar un Driver con un microcontrolador Motorola MC68HC908JK3CP programado en C, para controlar un motor de CC (corriente continua) con un algoritmo de control, que pueda comunicarse con una PC por RS-232 para modificar dinámicamente los set point y las constantes del control de manera interactiva. Detallado: Se realizara un control de posición y velocidad a lazo cerrado de un motor unido a través de un eje flexible a una masa que reporta su posición por medio de un encoder incremental. El algoritmo de control esta programado en C en un microcontrolador MC68HC908JK3CP de Motorola que lee los pulsos y sentido de giro del encoder y actúa sobre el PWM y el sentido de giro del motor para posicionar la masa donde lo indique el set point. Los parámetros de control Kp, Ki, Kd para el control PID (control proporcional integral y derivativo) y el set point deseado es transmitido al microcontrolador por RS-232 por un programa realizado exclusivamente para este proyecto en Visual Basic 6.0. El microcontrolador es el encargado de obtener el error, la derivada del error y la integral del error que combinados a los parámetros antes mencionados obtendrá la actuación necesaria para llegar al set point deseado. El microcontrolador transmite a la PC la posición real cada 1 segundo para realizar un grafico que representa la evolución de la posición en el tiempo.2 - REQUERIMIENTOS Microcontrolador MC68HC908JK3CP Placa de programación Software de programación en C y C++: CodeWarrior Manuales del microcontrolador Motor y encoder Visual Studio 6.0 para realizar el soft de monitoreo3 – DATOS TECNICOS Microcontrolador MC68HC908JK3CP de Motorola Internal RAM 128 bytes Internal Flash 4096 bytes 1 Timer con 2 canales Max Bus Frequency 8 MHz A/D Converter 10 canales de 8 bits Pulse Width Modulators 16 bits Input Output Pins 15 3
  4. 4. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Motor Alimentación 24 V de corriente continua corriente nominal 1.4 Amper Encoder Alimentación 5-24 V de corriente continua Corriente nominal 0.7 mA 2500 pulsos por vuelta canales A, B y Z.4 - DESARROLLO 4.1 Programación del microcontrolador Se comenzó realizando la placa programadora para los microcontroladores MotorolaJK3. Desde un comienzo se diseño el grabador propuesto en el Technical Data delmicrocontrolador. Este circuito fue util para transitar los primeros pasos en la programaciónde este tipo de microcontroladores, sin embargo se opto por realizar un programador encircuito impreso y mas completo para poder sacar el mayor provecho posible almicrocontrolador.Esquemáticos: estos son lo circuitos utilizados para realizar la placa programadora utilizadapara programar el microcontrolador. Esta familia de micros tiene un modulo (MON) que es el llamado modo monitor utilizadopara programarlos y debagear los programas. Este modo permite la programación de lamemoria Flash y además permite correr el programa y debagear paso a paso la aplicaciónen circuito. 4
  5. 5. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3La conexión a la pc se realiza por el puerto serie a través del protocolo RS232 y lasconexiones de los pines se realizan de la siguiente manera.Una de los requerimientos para ingresar al modo monitor es alimentar el micro con Vdd = 5Vy aplicar en la pata 1 correspondiente a IRQ una tensión mayor de 1.5*Vdd, que en estecaso usamos 8.2V. En el siguiente esquemático se muestra el circuito para obtener estasdos tensiones usando un transformador de 10 a 24 V de corriente continua. 5
  6. 6. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Circuito impreso: Este es el circuito impreso que se utilizó para realizar la placaprogramadora utilizada durante el proyecto. Posee jumpers que permiten se programar yutilizar el microcontrolador sin sacarlo del socket, además posee un potenciómetroconectado a la patita PTB7 del micro que es la usada por el ADC7 (conversor analógicodigital), y otros jumpers que simulan entradas binarias.La técnica utilizada para la transferencia fue imprimir la imagen anterior sobre una hora parafotografías (las que son mas brillantes de un lado) con una impresora láser. Luego el ladoimpreso de esta hoja se apoya sobre el lado cobreado de una placa de pertinax previamentepulida con birulna para retirar suciedades y oxido indeseados. Con una plancha para ropa seplancha la hoja de 3 a 4 minutos y el calor mas la presión transfiere el toner que seencuentra sobre la hora a la placa de cobre. Luego sumergir la placa y el papel que quedanpegados en agua para ablandar el papel y lograr que se desarme al raspar con los dedos.Una vez que las pistas queden dibujadas sobre la placa de cobre, hay que sumergirla encloruro férrico por unos 10 o 15 minutos, esta solución disuelve el cobre con el que tomacontacto y solo queda el cobre que esta oculto por el toner. Ahora solo queda retirar el tonercon una birulana y agujerear para colocar los componentes.Una vez listo el circuito impreso se deben colocar los componentes que figuran en la lista decomponentes de la forma indicada en el esquemático. El cable usado para unir la placaprogramadora a la PC tendrá una ficha RJ11 en el extremo de la placa programadora y unaficha DB9 en el extremo que ira conectada a la PC. Este mismo cable será usado másadelante para comunicar la placa en la que se aloja el microcontrolador que es usada paracontrolar el motor DC. 6
  7. 7. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Lista de Materiales para la placa programadora. 7
  8. 8. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Una vez terminada la placa programadora tiene este aspecto:Software de programación: El soft utilizado para programar en C estos microcontroladoreses el CodeWarrior 3.1, es un programa proporcionado por Motorola que permite realizaraplicaciones hasta de 4kb en forma libre, y si se requiere programar aplicaciones mayoreshay que adquirir una licencia, como en nuestro caso el micro que usamos tiene 4kbyte dememoria nos es suficiente la versión libre.El programa puede bajarse de la web desde la siguiente dirección:http://www.metrowerks.com/MW/download/default.aspUna vez instalado, siga los siguientes pasos para crear un nuevo proyecto:(a) Abra el CodeWarrior 3.1(c) Seleccione HC(s)08 New Project Wizard y escriba el nombre de su proyecto.(d) El dispositivo de trabajo, p.e. MC68HC908JL3.(e) El código de trabajo, p.e. C solamente.(f) No utilizar Processor Expert.(g) No incluir un proyecto con PC-lint.(h) El formato a utilizar sobre el tipo de punto flotante, p.e. None.(i) El modelo de tipo de memoria a utilizar, p.e. Small.(j) El tipo de conexiones, p.e. P&E Full Chip Simulation. 8
  9. 9. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Finalmente se abre una ventana con el proyecto, de todos los archivos vinculados alproyecto los mas importantes son:main.c y P&E_FCS_Linker.prm.(b) main.c contiene el código de nuestro programa.(c) P&E_FCS_Linker.prm contiene la información de áreas como FLASH, ROM y Vectoresde Interrupción.Una vez agregado el código necesario para que el micro realice las operaciones requeridasse deben seguir los siguientes pasos para grabar el programa en la memoria flash.En la opción de Debug, el CodeWarrior nos deriva a la aplicación True Time Simulator &Real Time Debuger. Esta aplicación tiene tres modos de funcionamiento:1º modo Full Chip Simulator, simula el micro por software, sin conexion.2º modo In Circuit Simulator, sin grabar el código en la memoria flash es posible debaguear yver los cambios en el circuito.3º modo In Circuit Debug/Programming, graba el programa en la memoria flash del micro ypermite el debugeo real tieme de la aplicación. 9
  10. 10. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Al intentar comunicarse con el micro que ya debe estar en modo monitor. En la pantallade parámetros de conexión se debe elegir clase 3, que es la clase de programador quedetallamos arriba.Esta es una captura de pantalla del entorno de programación CodeWarrior 3.1 en elmomento en que estaba programando el micro para controlar el motor de cc. 10
  11. 11. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK34.2 Realización del Kit Motor-Encoder En conjunto con Mauricio Chaparro (encargado del pañol de la universidad), se realizóun kit compuesto por un motor de CC acoplado por un eje flexible a una masa y un encoderde alta resolución como un aporte a la carrera de Ingeniería en Automatización y Control.Este es un modelo teórico típico de control, que puede usarse en otras materias paramodelarlo, identificarlo y probar distintas técnicas de control. En este informe sólo usaremosun control PID que como veremos nos otorga una respuesta muy deficiente ya que es unsistema relativamente complejo para este tipo de control.Un modelo de este sistema es el siguiente:X 1 = ϕ 1− ϕ 2X 2 = ω 1/ω 0X 3 = ω 2 /ω 0 k ( j1 + j 2)ω 0 = j1. j 2  0 1 1  0 0 X . = ω 0 . α − 1 − β 1  . X +  γ  .u +  δ  . v β 1       0  β 2 − β 2  0   0   Y = [0 0 ω 0]X . j1α = j1 + j 2 dβ 1 = j 1 .ω 0 d Factor de amortiguamiento viscoso d k1 Constante de corriente del motorβ 2 = j1 Momento de inercia 1 j 2 .ω 0 j2 Momento de inercia 2 k1γ = v Torque de perturbación en j1 j 1 .ω 0 1δ = j 1 .ω 0 11
  12. 12. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Esta es una imagen de la planta terminada:En la imagen se aprecian las 3 placas que componen el control.La primer placa es la que recibe la señal del encoder y obtiene el sentido de giro al pasar porun 74LS175 (Hex-Quad D Flip-Flops with Clear) y por tres 74LS161 (DECADE COUNTER 4-BIT BINARY COUNTER) para disminuir la frecuencia de pulsos.La segunda placa es la etapa de potencia, el ella se encuentra un L298 (Puente H) quepermite al microcontrolador indicar el sentido de giro del motor. Este es un diagrama de laconexión del puente H.La tercer placa es en la que se aloja el microcontrolador y en donde se encuentra el controldel sistema. Esta placa tiene un terminal RJ11 que permite la conexión a la PC por medio deluna conexión RS232. 12
  13. 13. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3El programa que se comunica con el microcontrolador es el de la siguiente figura:Con este programa se le puede indicar al microcontrolador que tipo de control se deseahacer: posición o velocidad. Además se puede seleccionar 5 set point predefinidos yobservar la evaluación del sistema en una pantalla grafica que grafica los últimos 60segundos de la posición real de la masa M2. Se observa en la parte inferior de la pantallagrafica unos valores relevantes de la evolución, como ser el promedio, máximo, mínimo yexcursión de la señal. Otra de las opciones es poder modificar las constantes Kp, Ki, Kd delcontrol PID. 13
  14. 14. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK34.3 Detalles del programaUna de las primeras llamadas que hacemos es a la librería <MC68HC908JK3.h>, en estalibrerías se encuentran definidos los registros y las direcciones del microcontrolador, así enla siguiente programación solo se llamara al PTD como Puerto D, al ADR como registro delanalógico digital, y así con los demás registros.Estas son las patas del microcontrolador que usamos para interactuar con la planta, leer laposición de la masa M1 y controlar el PWM. // IRQ1 entrada cuenta los pulsos del encoder // PTB4 entrada indica el sentido de giro // PTB5 entrada set_point 1 // PTB6 entrada set_point 2 // PTB7 entrada potenciometro indica máximo TON del PWM // PTD2 salida sentido de giro y stop PWM // PTD3 salida sentido de giro y stop PWM // PTD4 salida PWM // PTD6 TX RS-232 // PTD7 RX RS-232Como resumen de las funcionalidades que utilizamos en el proyecto podemos mencionar: • Interrupciones por hardware • Interrupciones por software • Entradas digitales • Salidas digitales • Entradas analógicas (conversor Analógico digital) • Comunicación RS-232 con la PC • Manejo del TIM (timer interface module) • Generación de PWM El tren de pulsos generados por el encoder se debe convertir a un numero querepresente el desplazamiento de la masa desde el origen. Se considera origen a la posicióncero que es en la que se encuentra el sistema en el momento en que energizamos elmicrocontrolador o presionamos Reset. El mejor método es usar un acumulador de pulsos,pero como este microcontrolador no dispone de un acumulador de pulsos o external clocksource tenemos que recurrir a las interrupciones, por eso entramos con el canal A delencoder en la pata IRQ y de esta manera contamos los pulsos que indican la posición de lamasa M1.El siguiente es el código utilizado para atender la interrupción por hardware generada por elflanco desendente del pin asociado a IRQ, vemos que después de indicarle al micro queaceptamos la interrupción se modifica el valor de una variable dependiendo de el sentido degiro del motor que esta indicado en el pin 4 del puerto B. 14
  15. 15. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3#pragma TRAP_PROCvoid IRQ_Interrupcion(void){ INTSCR_ACK1=1; // ACK interrupción if(PTB_PTB4){ if(pos_encoder<32000) pos_encoder++; }else{ if(pos_encoder>-32000) pos_encoder--; }}La interrupción por software siguiente nos indica que el conversor analógico digital aterminado de convertir la señal proveniente desde el potenciómetro conectado al pin PTB7.Con esta entrada definimos la saturación de la señal de actuación, que traducido al tipo deactuador que tenemos en este proyecto representa el máximo Ton (tiempo activo) de laseñal PWM.#pragma TRAP_PROCvoid ADC_Fin_Conversion(void){ pote_ADC7=ADR; if(ipass<10000) ipass++;}Ahora veremos las funciones utilizadas en este proyecto con una breve descripción de sufuncionalidad.void delay(unsigned int ms) Es un retardo utilizado para formar la trama en la transmisión RS-232void set_TON_PWM(int TON) Configura los parámetros del PWMvoid set_Sentido(int Sentido) Configura las salidas 2 y 3 del Puerto D que definen el sentido de girovoid send_byte(char byte) Envía un byte a la PC por Puerto seriechar rec_byte(void) Recibe un byte de la PCvoid itochar(int inum,unsigned char cadena[5]) Convierte un entero en stringvoid send_pos(void) Envía la posición actual de la masa M1 a la PC cada 1 segundo.void analizar_entrada(unsigned char br) Actualiza los parámetros del control respecto a lo que llega desde la PCSin embargo el corazón del programa se encuentra en la función <void main(void)> en la quese encuentra el control propiamente dicho, en este caso en forma de PID (controlproporcional integral y derivativo). El programa contiene la inicialización de los módulos y unif que selecciona el tipo de lógica para obtener la actuación según si estamos controlandoposición o velocidad. 15
  16. 16. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Lo primero que se debe hacer al empezar el programa es configurar los registros delmicrocontrolador para que funcionen los módulos que luego utilizaremos. CONFIG1_COPD=1; // Deshabilitamos el monitor Wathdog ADSCR = 0x67; // habilito ADC7 en modo ciclico con interrupciones ADICLK = 0x80; // divido por 16 internal ADC clock CONFIG2_IRQPUD=1; // disable pull-up en IRQ TSC = 0x33; // limpio TIM y divido por 8 el clock TMODH = 0x00; // periodo inicial del PWM TMODL = 0xFF; TCH0H = 0x00; // TON inicial del PWM TCH0L = 0x80; TSC0 = 0x1A; // selecciono PWM en canal 0 TSC_TSTOP = 0; // prendo el modulo TIM DDRD = 0x8C; // configuro algunos pin como salidaLuego el if que define el tipo de control se administra así:if(control_pos){ // CONTROL DE POSICIÓN error = set_point - pos_encoder; integral_error = integral_error + error; // integral derivada_error = error - error_anterior; // derivada if(integral_error>4000) integral_error=4000; // anti-windup if(integral_error<-4000) integral_error=-4000; actuacion = (int)( Kp*error // PID + Ki*integral_error/100 + Kd*derivada_error ); error_anterior=error; }else{ // CONTROL DE VELOCIDAD if(pos_encoder<set_point/10){ if(actuacion<30000) actuacion++; }else{ if(actuacion>-30000) actuacion--; } if(set_point==0) actuacion=0; pos_encoder=0; for(i=0;i<1000;i++){ br=rec_byte(); if(br>0) analizar_entrada(br); } }Como vemos en la aplicación es necesario comunicarse con la PC por puerto serie, peroeste microcontrolador no tiene modulo SCI que es el que administra este tipo de conexiones.Por lo tanto fue necesario manipular una entrada y una salida estándar del microcontroladorpara comunicarse con la PC. Para eso fue necesario para realizar una Interfase SerieAsincrónica capaz de funcionar sobre cualquier pin I/O. Los requerimientos para que lasrutinas funcionen correctamente son mínimos, el problema es que poseen pequeños erroresde Timming (sincronismo) que fueron solucionados utilizando eco, esto significa que elmicrocontrolador le envía a la PC lo que el entendió, entonces la PC decide si es necesarioreenviar el dato o no. 16
  17. 17. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3Los cálculos están basados en un cristal de 9.8304MHz lo que proporciona unT=0.406901useg de bus y en base a esto debemos calcular el tiempo de bit utilizado en latransmisión.Tiempos de bit en RS-232/****************************************************************************************************** Baudios Ancho_de_Bit (useg) Error de encuadre (X*T/Br) 57600 17.36 2.12 38400 26.04 1.56 19200 52.08 1.15 9600 104.2 1.05 4800 208.3 0.62 2400 416.7 0.46******************************************************************************************************/Se desarrollaron 3 funciones principales: send_byte, rec_byte y delayTransmisión: se realiza con la función send_byte, es la mas simple puesto a que una vezque comienza la transmisión con el bit de start solo se trata de cambiar el estado lógico delbit TXD configurado como salida hasta contar los 8 bits del byte y al final concluir con un bitde stop. El formato de transmisión estándar NRZ n,8,1 y el orden de los bits es el siguiente:bit START – bit 0 – bit 1 – bit 2 – bit 3 – bit 4 – bit 5 – bit 6 – bit 7 – bit STOPRecepcion: es la más difícil de programar, ya que en la recepción es donde se debeconsiderar el ruido debido a la línea de transmisión y al sincronismo. La función rec_byteverifica el estado de la entrada RXD, si la entrada esta en uno la función devuelve un cero,pero si la entrada esta en cero indica que estamos en el bit de start y que la PC estatransmitiendo un byte por eso en este caso se debe prestar absoluta atención a esta entraday evaluar en intervalos correspondientes al tiempo de bit el valor de la entrada querepresenta el byte correspondiente.Para convertir la señal TTL del microcontrolador en niveles de tensión CMOScorrespondientes a la norma RS-232 usamos un MAX232. Del cual solo nos sirve un canalde salida y un canal de entrada. 17
  18. 18. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK35– TEMAS QUE ABARCA EL PROYECTO Programación en lenguaje de alto nivel en el software de control (Visual Basic). Programación en lenguaje de bajo nivel en el microcontrolador (C). Redes y Protocolos. Diseño de circuitos electrónicos. Desarrollo de hardware. Fundamentos de control.6– ARCHIVOS ADJUNTOS Se entrega el informe adjunto a los códigos fuente utilizados en la programación delmicrocontrolador y el programa con el que se cambian los parámetros desde la pc. También están incluidos en los datos adjuntos los datasheet de los componentesutilizados en las placas de electrónica asociada al microcontrolador. 18
  19. 19. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK37 - CONCLUSIÓN En esta colusión evaluaremos dos aspectos principales. El primero es la programación del microcontrolador, esta familia de microcontroladoresposee un entorno de desarrollo (CodeWarrior) muy bien logrado. Al momento de escribir elprograma resulta muy sencillo utilizar los módulos y registros del micro ya que se muestrancomo objetos desplegables de amplia versatilidad. También provee herramientas de testeopor soft y en circuito que aceleran notablemente la detección de errores. Con respecto al microcontrolador elegido, nos encontramos con muchas limitaciones a lahora de pretender un uso intensivo. La falta de un acumulador de pulsos y un modulo SCI decomunicación serie nos limitó en la optimización del control. Para lograr un control delsistema con una fluida comunicación con la PC es imprescindible usar un microcontroladorque disponga de estos módulos. Aunque en el transcurso de este proyecto se emularonestos módulos, nos vimos desbordado de interrupciones y eso repercutía en la perdida dereferencia (posición cero) que obligaron a usar divisores de frecuencia y baja tasa detransmisión de datos. 19

×