SlideShare una empresa de Scribd logo
1 de 19
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 Materia




PROGRAMACIÓN EN C DE UN MICROCONTROLADOR MOTOROLA JK3
OBJETIVO: CONTROL DE UN MOTOR DE CC CON EJE FLEXIBLE




Alumno: Leandro Martín Pagnanini
Legajo: 6558
Año 2005
Proyecto Final de Materia
                                  Sistemas Digitales
                                  Programación en C de un microcontrolador Motorola JK3




INDICE


  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
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




1- 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 monitoreo


3 – 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
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 Motorola
JK3. Desde un comienzo se diseño el grabador propuesto en el Technical Data del
microcontrolador. Este circuito fue util para transitar los primeros pasos en la programación
de este tipo de microcontroladores, sin embargo se opto por realizar un programador en
circuito impreso y mas completo para poder sacar el mayor provecho posible al
microcontrolador.

Esquemáticos: estos son lo circuitos utilizados para realizar la placa programadora utilizada
para programar el microcontrolador.
    Esta familia de micros tiene un modulo (MON) que es el llamado modo monitor utilizado
para programarlos y debagear los programas. Este modo permite la programación de la
memoria Flash y además permite correr el programa y debagear paso a paso la aplicación
en circuito.




                                                                                            4
Proyecto Final de Materia
                                   Sistemas Digitales
                                   Programación en C de un microcontrolador Motorola JK3




La conexión a la pc se realiza por el puerto serie a través del protocolo RS232 y las
conexiones de los pines se realizan de la siguiente manera.




Una de los requerimientos para ingresar al modo monitor es alimentar el micro con Vdd = 5V
y aplicar en la pata 1 correspondiente a IRQ una tensión mayor de 1.5*Vdd, que en este
caso usamos 8.2V. En el siguiente esquemático se muestra el circuito para obtener estas
dos tensiones usando un transformador de 10 a 24 V de corriente continua.




                                                                                           5
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




Circuito impreso: Este es el circuito impreso que se utilizó para realizar la placa
programadora utilizada durante el proyecto. Posee jumpers que permiten se programar y
utilizar el microcontrolador sin sacarlo del socket, además posee un potenciómetro
conectado a la patita PTB7 del micro que es la usada por el ADC7 (conversor analógico
digital), y otros jumpers que simulan entradas binarias.




La técnica utilizada para la transferencia fue imprimir la imagen anterior sobre una hora para
fotografías (las que son mas brillantes de un lado) con una impresora láser. Luego el lado
impreso de esta hoja se apoya sobre el lado cobreado de una placa de pertinax previamente
pulida con birulna para retirar suciedades y oxido indeseados. Con una plancha para ropa se
plancha la hoja de 3 a 4 minutos y el calor mas la presión transfiere el toner que se
encuentra sobre la hora a la placa de cobre. Luego sumergir la placa y el papel que quedan
pegados 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 en
cloruro férrico por unos 10 o 15 minutos, esta solución disuelve el cobre con el que toma
contacto y solo queda el cobre que esta oculto por el toner. Ahora solo queda retirar el toner
con una birulana y agujerear para colocar los componentes.

Una vez listo el circuito impreso se deben colocar los componentes que figuran en la lista de
componentes de la forma indicada en el esquemático. El cable usado para unir la placa
programadora a la PC tendrá una ficha RJ11 en el extremo de la placa programadora y una
ficha DB9 en el extremo que ira conectada a la PC. Este mismo cable será usado más
adelante para comunicar la placa en la que se aloja el microcontrolador que es usada para
controlar el motor DC.




                                                                                             6
Proyecto Final de Materia
                                   Sistemas Digitales
                                   Programación en C de un microcontrolador Motorola JK3




Lista de Materiales para la placa programadora.




                                                                                           7
Proyecto Final de Materia
                                   Sistemas Digitales
                                   Programación en C de un microcontrolador Motorola JK3




Una vez terminada la placa programadora tiene este aspecto:




Software de programación: El soft utilizado para programar en C estos microcontroladores
es el CodeWarrior 3.1, es un programa proporcionado por Motorola que permite realizar
aplicaciones hasta de 4kb en forma libre, y si se requiere programar aplicaciones mayores
hay que adquirir una licencia, como en nuestro caso el micro que usamos tiene 4kbyte de
memoria 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.asp

Una 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
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




Finalmente se abre una ventana con el proyecto, de todos los archivos vinculados al
proyecto 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 Vectores
de Interrupción.




Una vez agregado el código necesario para que el micro realice las operaciones requeridas
se 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 y
ver los cambios en el circuito.
3º modo In Circuit Debug/Programming, graba el programa en la memoria flash del micro y
permite el debugeo real tieme de la aplicación.
                                                                                            9
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 pantalla
de parámetros de conexión se debe elegir clase 3, que es la clase de programador que
detallamos arriba.




Esta es una captura de pantalla del entorno de programación CodeWarrior 3.1 en el
momento en que estaba programando el micro para controlar el motor de cc.




                                                                                           10
Proyecto Final de Materia
                                            Sistemas Digitales
                                            Programación en C de un microcontrolador Motorola JK3




4.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 encoder
de 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 para
modelarlo, identificarlo y probar distintas técnicas de control. En este informe sólo usaremos
un control PID que como veremos nos otorga una respuesta muy deficiente ya que es un
sistema relativamente complejo para este tipo de control.




Un modelo de este sistema es el siguiente:
X 1 = ϕ 1− ϕ 2
X 2 = ω 1/ω 0
X 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
Proyecto Final de Materia
                                     Sistemas Digitales
                                     Programación en C de un microcontrolador Motorola JK3




Esta 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 por
un 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) que
permite al microcontrolador indicar el sentido de giro del motor. Este es un diagrama de la
conexión del puente H.




La tercer placa es en la que se aloja el microcontrolador y en donde se encuentra el control
del sistema. Esta placa tiene un terminal RJ11 que permite la conexión a la PC por medio del
una conexión RS232.




                                                                                             12
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




El 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 desea
hacer: posición o velocidad. Además se puede seleccionar 5 set point predefinidos y
observar la evaluación del sistema en una pantalla grafica que grafica los últimos 60
segundos de la posición real de la masa M2. Se observa en la parte inferior de la pantalla
grafica unos valores relevantes de la evolución, como ser el promedio, máximo, mínimo y
excursión de la señal. Otra de las opciones es poder modificar las constantes Kp, Ki, Kd del
control PID.




                                                                                            13
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




4.3 Detalles del programa

Una de las primeras llamadas que hacemos es a la librería <MC68HC908JK3.h>, en esta
librerías se encuentran definidos los registros y las direcciones del microcontrolador, así en
la siguiente programación solo se llamara al PTD como Puerto D, al ADR como registro del
analógico digital, y así con los demás registros.

Estas son las patas del microcontrolador que usamos para interactuar con la planta, leer la
posició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-232

Como 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 que
represente el desplazamiento de la masa desde el origen. Se considera origen a la posición
cero que es en la que se encuentra el sistema en el momento en que energizamos el
microcontrolador 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 clock
source tenemos que recurrir a las interrupciones, por eso entramos con el canal A del
encoder en la pata IRQ y de esta manera contamos los pulsos que indican la posición de la
masa M1.

El siguiente es el código utilizado para atender la interrupción por hardware generada por el
flanco desendente del pin asociado a IRQ, vemos que después de indicarle al micro que
aceptamos la interrupción se modifica el valor de una variable dependiendo de el sentido de
giro del motor que esta indicado en el pin 4 del puerto B.


                                                                                            14
Proyecto Final de Materia
                                            Sistemas Digitales
                                            Programación en C de un microcontrolador Motorola JK3




#pragma TRAP_PROC
void 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 a
terminado 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 de
actuador que tenemos en este proyecto representa el máximo Ton (tiempo activo) de la
señal PWM.

#pragma TRAP_PROC
void 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 su
funcionalidad.

void delay(unsigned int ms)                         Es un retardo utilizado para formar la trama en la
                                                    transmisión RS-232
void set_TON_PWM(int TON)                           Configura los parámetros del PWM
void set_Sentido(int Sentido)                       Configura las salidas 2 y 3 del Puerto D que
                                                    definen el sentido de giro
void send_byte(char byte)                           Envía un byte a la PC por Puerto serie
char rec_byte(void)                                 Recibe un byte de la PC
void itochar(int inum,unsigned char cadena[5])      Convierte un entero en string
void 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 PC


Sin embargo el corazón del programa se encuentra en la función <void main(void)> en la que
se encuentra el control propiamente dicho, en este caso en forma de PID (control
proporcional integral y derivativo). El programa contiene la inicialización de los módulos y un
if que selecciona el tipo de lógica para obtener la actuación según si estamos controlando
posición o velocidad.




                                                                                                    15
Proyecto Final de Materia
                                              Sistemas Digitales
                                              Programación en C de un microcontrolador Motorola JK3




Lo primero que se debe hacer al empezar el programa es configurar los registros del
microcontrolador 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 salida



Luego 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, pero
este 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 microcontrolador
para comunicarse con la PC. Para eso fue necesario para realizar una Interfase Serie
Asincrónica capaz de funcionar sobre cualquier pin I/O. Los requerimientos para que las
rutinas funcionen correctamente son mínimos, el problema es que poseen pequeños errores
de Timming (sincronismo) que fueron solucionados utilizando eco, esto significa que el
microcontrolador le envía a la PC lo que el entendió, entonces la PC decide si es necesario
reenviar el dato o no.



                                                                                                      16
Proyecto Final de Materia
                                         Sistemas Digitales
                                         Programación en C de un microcontrolador Motorola JK3




Los cálculos están basados en un cristal de 9.8304MHz lo que proporciona un
T=0.406901useg de bus y en base a esto debemos calcular el tiempo de bit utilizado en la
transmisió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 delay
Transmisión: se realiza con la función send_byte, es la mas simple puesto a que una vez
que comienza la transmisión con el bit de start solo se trata de cambiar el estado lógico del
bit TXD configurado como salida hasta contar los 8 bits del byte y al final concluir con un bit
de 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 STOP

Recepcion: es la más difícil de programar, ya que en la recepción es donde se debe
considerar el ruido debido a la línea de transmisión y al sincronismo. La función rec_byte
verifica 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 esta
transmitiendo un byte por eso en este caso se debe prestar absoluta atención a esta entrada
y evaluar en intervalos correspondientes al tiempo de bit el valor de la entrada que
representa el byte correspondiente.

Para convertir la señal TTL del microcontrolador en niveles de tensión CMOS
correspondientes a la norma RS-232 usamos un MAX232. Del cual solo nos sirve un canal
de salida y un canal de entrada.




                                                                                                          17
Proyecto Final de Materia
                                    Sistemas Digitales
                                    Programación en C de un microcontrolador Motorola JK3




5– 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 del
microcontrolador 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 componentes
utilizados en las placas de electrónica asociada al microcontrolador.




                                                                                            18
Proyecto Final de Materia
                                   Sistemas Digitales
                                   Programación en C de un microcontrolador Motorola JK3




7 - CONCLUSIÓN


     En esta colusión evaluaremos dos aspectos principales.
     El primero es la programación del microcontrolador, esta familia de microcontroladores
posee un entorno de desarrollo (CodeWarrior) muy bien logrado. Al momento de escribir el
programa resulta muy sencillo utilizar los módulos y registros del micro ya que se muestran
como objetos desplegables de amplia versatilidad. También provee herramientas de testeo
por soft y en circuito que aceleran notablemente la detección de errores.
     Con respecto al microcontrolador elegido, nos encontramos con muchas limitaciones a la
hora de pretender un uso intensivo. La falta de un acumulador de pulsos y un modulo SCI de
comunicación serie nos limitó en la optimización del control. Para lograr un control del
sistema con una fluida comunicación con la PC es imprescindible usar un microcontrolador
que disponga de estos módulos. Aunque en el transcurso de este proyecto se emularon
estos módulos, nos vimos desbordado de interrupciones y eso repercutía en la perdida de
referencia (posición cero) que obligaron a usar divisores de frecuencia y baja tasa de
transmisión de datos.




                                                                                           19

Más contenido relacionado

La actualidad más candente

Programacion de microcontroladores
Programacion de microcontroladoresProgramacion de microcontroladores
Programacion de microcontroladoresayreonmx
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladoresXavier Solis
 
40 preguntas de mantenimiento
40 preguntas de mantenimiento40 preguntas de mantenimiento
40 preguntas de mantenimientoYanori Perez
 
Microcontroladores
MicrocontroladoresMicrocontroladores
MicrocontroladoresJaque Beciez
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)Victor Asanza
 
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)Victor Asanza
 
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOFernando Marcos Marcos
 
40 preguntas de mantenimiento
40 preguntas de mantenimiento40 preguntas de mantenimiento
40 preguntas de mantenimientoalexisrm11
 

La actualidad más candente (10)

Programacion de microcontroladores
Programacion de microcontroladoresProgramacion de microcontroladores
Programacion de microcontroladores
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladores
 
Microcontroladores PIC USS
Microcontroladores PIC  USSMicrocontroladores PIC  USS
Microcontroladores PIC USS
 
40 preguntas de mantenimiento
40 preguntas de mantenimiento40 preguntas de mantenimiento
40 preguntas de mantenimiento
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, PROYECTOS PROPUESTOS (2019 2do Término)
 
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2020 1er Término)
 
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
 
40 preguntas de mantenimiento
40 preguntas de mantenimiento40 preguntas de mantenimiento
40 preguntas de mantenimiento
 

Destacado

Brasil - Introduçao, Localizaçao e Limites
Brasil - Introduçao, Localizaçao e LimitesBrasil - Introduçao, Localizaçao e Limites
Brasil - Introduçao, Localizaçao e Limitesguestbb4169
 
Escandalosamente Verdadeiro
Escandalosamente VerdadeiroEscandalosamente Verdadeiro
Escandalosamente Verdadeirogueste4224f
 
Entorno escorial plandesarrollosostenible
Entorno escorial plandesarrollosostenibleEntorno escorial plandesarrollosostenible
Entorno escorial plandesarrollosostenibleMichael Harris
 
Prumos Interativa - Cases 2009
Prumos Interativa - Cases 2009Prumos Interativa - Cases 2009
Prumos Interativa - Cases 2009guest93091e7
 
Planej 2 ano
Planej 2 anoPlanej 2 ano
Planej 2 anoa1980
 
Principios de electrotecnia_-_zeveke_ionkin
Principios de electrotecnia_-_zeveke_ionkinPrincipios de electrotecnia_-_zeveke_ionkin
Principios de electrotecnia_-_zeveke_ionkinOmar Corazza
 
CERTIFICADOS A GRADOS EN EDUCACION 2014-I
CERTIFICADOS A GRADOS EN EDUCACION 2014-ICERTIFICADOS A GRADOS EN EDUCACION 2014-I
CERTIFICADOS A GRADOS EN EDUCACION 2014-IDavid Leon Sicilia
 
Mulheres e mudanças climáticas
Mulheres e mudanças climáticas Mulheres e mudanças climáticas
Mulheres e mudanças climáticas Deborah Munhoz
 
Formação e desenvolvimento dos EUA (PDF)
Formação e desenvolvimento dos EUA (PDF)Formação e desenvolvimento dos EUA (PDF)
Formação e desenvolvimento dos EUA (PDF)Paulo Alexandre
 
Guia de ordenamiento para la firma del libro de acta 2013 II PFG EDUCACION y...
Guia de ordenamiento para la firma del libro de acta  2013 II PFG EDUCACION y...Guia de ordenamiento para la firma del libro de acta  2013 II PFG EDUCACION y...
Guia de ordenamiento para la firma del libro de acta 2013 II PFG EDUCACION y...David Leon Sicilia
 
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...Diógenes de Oliveira
 
DJ. PELÉ InfoProdutos
DJ. PELÉ InfoProdutosDJ. PELÉ InfoProdutos
DJ. PELÉ InfoProdutosdjpele12
 
Aproximación al movimiento
Aproximación al movimientoAproximación al movimiento
Aproximación al movimientomary-calderon
 
Homenagem Do Supermarkus
Homenagem Do SupermarkusHomenagem Do Supermarkus
Homenagem Do Supermarkusgddaniel
 

Destacado (20)

Brasil - Introduçao, Localizaçao e Limites
Brasil - Introduçao, Localizaçao e LimitesBrasil - Introduçao, Localizaçao e Limites
Brasil - Introduçao, Localizaçao e Limites
 
Proclamando el Reino de Dios
Proclamando el Reino de DiosProclamando el Reino de Dios
Proclamando el Reino de Dios
 
Escandalosamente Verdadeiro
Escandalosamente VerdadeiroEscandalosamente Verdadeiro
Escandalosamente Verdadeiro
 
Entorno escorial plandesarrollosostenible
Entorno escorial plandesarrollosostenibleEntorno escorial plandesarrollosostenible
Entorno escorial plandesarrollosostenible
 
Prumos Interativa - Cases 2009
Prumos Interativa - Cases 2009Prumos Interativa - Cases 2009
Prumos Interativa - Cases 2009
 
Planej 2 ano
Planej 2 anoPlanej 2 ano
Planej 2 ano
 
Knovio
KnovioKnovio
Knovio
 
Novas_Tecnologias
Novas_TecnologiasNovas_Tecnologias
Novas_Tecnologias
 
Principios de electrotecnia_-_zeveke_ionkin
Principios de electrotecnia_-_zeveke_ionkinPrincipios de electrotecnia_-_zeveke_ionkin
Principios de electrotecnia_-_zeveke_ionkin
 
CERTIFICADOS A GRADOS EN EDUCACION 2014-I
CERTIFICADOS A GRADOS EN EDUCACION 2014-ICERTIFICADOS A GRADOS EN EDUCACION 2014-I
CERTIFICADOS A GRADOS EN EDUCACION 2014-I
 
Mulheres e mudanças climáticas
Mulheres e mudanças climáticas Mulheres e mudanças climáticas
Mulheres e mudanças climáticas
 
Formação e desenvolvimento dos EUA (PDF)
Formação e desenvolvimento dos EUA (PDF)Formação e desenvolvimento dos EUA (PDF)
Formação e desenvolvimento dos EUA (PDF)
 
Guia de ordenamiento para la firma del libro de acta 2013 II PFG EDUCACION y...
Guia de ordenamiento para la firma del libro de acta  2013 II PFG EDUCACION y...Guia de ordenamiento para la firma del libro de acta  2013 II PFG EDUCACION y...
Guia de ordenamiento para la firma del libro de acta 2013 II PFG EDUCACION y...
 
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...
A simetria de reflexão elementos de concepções mobilizadas por alunos do ensi...
 
DJ. PELÉ InfoProdutos
DJ. PELÉ InfoProdutosDJ. PELÉ InfoProdutos
DJ. PELÉ InfoProdutos
 
Persuasion
PersuasionPersuasion
Persuasion
 
Aproximación al movimiento
Aproximación al movimientoAproximación al movimiento
Aproximación al movimiento
 
Homenagem Do Supermarkus
Homenagem Do SupermarkusHomenagem Do Supermarkus
Homenagem Do Supermarkus
 
Definición de evaluación
Definición de evaluaciónDefinición de evaluación
Definición de evaluación
 
Hdt fundamentacion
Hdt fundamentacionHdt fundamentacion
Hdt fundamentacion
 

Similar a Control de motor (eje flexible)

Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)Cristina Urdiales
 
Sistema microcontrolado para la toma de medida de altura locativas
Sistema microcontrolado para la toma de medida de altura locativasSistema microcontrolado para la toma de medida de altura locativas
Sistema microcontrolado para la toma de medida de altura locativasTerry Mena
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con ArduinoJomicast
 
Programa Técnicas Digitales II 2012
Programa Técnicas Digitales II 2012Programa Técnicas Digitales II 2012
Programa Técnicas Digitales II 2012Daniel Remondegui
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLDAdan Aguirre
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)edwin andres
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxALEJANDRALUCEROCHAMB
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.pptFreddyEspejo3
 
Automatizacion de luces de una casa
Automatizacion de luces de una casaAutomatizacion de luces de una casa
Automatizacion de luces de una casaLuis Sanchez
 
Programación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraProgramación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraLenin Jiménez
 
Evolucion De Los Microprocesadores
Evolucion De Los MicroprocesadoresEvolucion De Los Microprocesadores
Evolucion De Los Microprocesadoresguesta60221
 
Sesion 1
Sesion 1Sesion 1
Sesion 11130490
 
Sesion 1 atmega8
Sesion 1 atmega8Sesion 1 atmega8
Sesion 1 atmega8davidepn2
 
AUTOMATIZACION DE LAMPARAS DE UNA CASA
AUTOMATIZACION DE LAMPARAS DE UNA CASAAUTOMATIZACION DE LAMPARAS DE UNA CASA
AUTOMATIZACION DE LAMPARAS DE UNA CASALuis Sanchez
 
Sistema de control de intensidad luminica
Sistema de control de intensidad luminicaSistema de control de intensidad luminica
Sistema de control de intensidad luminicagilber255
 
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcAutomatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcRobertoH1234
 

Similar a Control de motor (eje flexible) (20)

Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
Enlace radio bidireccional PC-MICROBOT (E. Rodriguez Regidor)
 
Sistema microcontrolado para la toma de medida de altura locativas
Sistema microcontrolado para la toma de medida de altura locativasSistema microcontrolado para la toma de medida de altura locativas
Sistema microcontrolado para la toma de medida de altura locativas
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con Arduino
 
Programa Técnicas Digitales II 2012
Programa Técnicas Digitales II 2012Programa Técnicas Digitales II 2012
Programa Técnicas Digitales II 2012
 
Construcciondeun pl cconpic
Construcciondeun pl cconpicConstrucciondeun pl cconpic
Construcciondeun pl cconpic
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.ppt
 
Automatizacion de luces de una casa
Automatizacion de luces de una casaAutomatizacion de luces de una casa
Automatizacion de luces de una casa
 
Programación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadoraProgramación en PLC Xinje - banda transportadora
Programación en PLC Xinje - banda transportadora
 
Brazo Robótico
Brazo RobóticoBrazo Robótico
Brazo Robótico
 
Brazo
BrazoBrazo
Brazo
 
Evolucion De Los Microprocesadores
Evolucion De Los MicroprocesadoresEvolucion De Los Microprocesadores
Evolucion De Los Microprocesadores
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 
Sesion 1 atmega8
Sesion 1 atmega8Sesion 1 atmega8
Sesion 1 atmega8
 
AUTOMATIZACION DE LAMPARAS DE UNA CASA
AUTOMATIZACION DE LAMPARAS DE UNA CASAAUTOMATIZACION DE LAMPARAS DE UNA CASA
AUTOMATIZACION DE LAMPARAS DE UNA CASA
 
Sistema de control de intensidad luminica
Sistema de control de intensidad luminicaSistema de control de intensidad luminica
Sistema de control de intensidad luminica
 
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcAutomatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
 
Micro1.ppt
Micro1.pptMicro1.ppt
Micro1.ppt
 

Más de Maury Johe Castillo Melgarejo (8)

Redes informe pizarrasinteractivas_250506
Redes informe pizarrasinteractivas_250506Redes informe pizarrasinteractivas_250506
Redes informe pizarrasinteractivas_250506
 
Matematica basica
Matematica basicaMatematica basica
Matematica basica
 
Control de motor (eje flexible)
Control de motor (eje flexible)Control de motor (eje flexible)
Control de motor (eje flexible)
 
Circuitos
CircuitosCircuitos
Circuitos
 
Circuitos
CircuitosCircuitos
Circuitos
 
Rectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-uRectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-u
 
Rectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-uRectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-u
 
Rectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-uRectas y-planos-en-el-espacio-u
Rectas y-planos-en-el-espacio-u
 

Control de motor (eje flexible)

  • 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 Materia PROGRAMACIÓN EN C DE UN MICROCONTROLADOR MOTOROLA JK3 OBJETIVO: CONTROL DE UN MOTOR DE CC CON EJE FLEXIBLE Alumno: Leandro Martín Pagnanini Legajo: 6558 Año 2005
  • 2. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 INDICE 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. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 1- 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 monitoreo 3 – 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. 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 Motorola JK3. Desde un comienzo se diseño el grabador propuesto en el Technical Data del microcontrolador. Este circuito fue util para transitar los primeros pasos en la programación de este tipo de microcontroladores, sin embargo se opto por realizar un programador en circuito impreso y mas completo para poder sacar el mayor provecho posible al microcontrolador. Esquemáticos: estos son lo circuitos utilizados para realizar la placa programadora utilizada para programar el microcontrolador. Esta familia de micros tiene un modulo (MON) que es el llamado modo monitor utilizado para programarlos y debagear los programas. Este modo permite la programación de la memoria Flash y además permite correr el programa y debagear paso a paso la aplicación en circuito. 4
  • 5. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 La conexión a la pc se realiza por el puerto serie a través del protocolo RS232 y las conexiones de los pines se realizan de la siguiente manera. Una de los requerimientos para ingresar al modo monitor es alimentar el micro con Vdd = 5V y aplicar en la pata 1 correspondiente a IRQ una tensión mayor de 1.5*Vdd, que en este caso usamos 8.2V. En el siguiente esquemático se muestra el circuito para obtener estas dos tensiones usando un transformador de 10 a 24 V de corriente continua. 5
  • 6. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Circuito impreso: Este es el circuito impreso que se utilizó para realizar la placa programadora utilizada durante el proyecto. Posee jumpers que permiten se programar y utilizar el microcontrolador sin sacarlo del socket, además posee un potenciómetro conectado a la patita PTB7 del micro que es la usada por el ADC7 (conversor analógico digital), y otros jumpers que simulan entradas binarias. La técnica utilizada para la transferencia fue imprimir la imagen anterior sobre una hora para fotografías (las que son mas brillantes de un lado) con una impresora láser. Luego el lado impreso de esta hoja se apoya sobre el lado cobreado de una placa de pertinax previamente pulida con birulna para retirar suciedades y oxido indeseados. Con una plancha para ropa se plancha la hoja de 3 a 4 minutos y el calor mas la presión transfiere el toner que se encuentra sobre la hora a la placa de cobre. Luego sumergir la placa y el papel que quedan pegados 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 en cloruro férrico por unos 10 o 15 minutos, esta solución disuelve el cobre con el que toma contacto y solo queda el cobre que esta oculto por el toner. Ahora solo queda retirar el toner con una birulana y agujerear para colocar los componentes. Una vez listo el circuito impreso se deben colocar los componentes que figuran en la lista de componentes de la forma indicada en el esquemático. El cable usado para unir la placa programadora a la PC tendrá una ficha RJ11 en el extremo de la placa programadora y una ficha DB9 en el extremo que ira conectada a la PC. Este mismo cable será usado más adelante para comunicar la placa en la que se aloja el microcontrolador que es usada para controlar el motor DC. 6
  • 7. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Lista de Materiales para la placa programadora. 7
  • 8. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Una vez terminada la placa programadora tiene este aspecto: Software de programación: El soft utilizado para programar en C estos microcontroladores es el CodeWarrior 3.1, es un programa proporcionado por Motorola que permite realizar aplicaciones hasta de 4kb en forma libre, y si se requiere programar aplicaciones mayores hay que adquirir una licencia, como en nuestro caso el micro que usamos tiene 4kbyte de memoria 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.asp Una 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. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Finalmente se abre una ventana con el proyecto, de todos los archivos vinculados al proyecto 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 Vectores de Interrupción. Una vez agregado el código necesario para que el micro realice las operaciones requeridas se 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 y ver los cambios en el circuito. 3º modo In Circuit Debug/Programming, graba el programa en la memoria flash del micro y permite el debugeo real tieme de la aplicación. 9
  • 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 pantalla de parámetros de conexión se debe elegir clase 3, que es la clase de programador que detallamos arriba. Esta es una captura de pantalla del entorno de programación CodeWarrior 3.1 en el momento en que estaba programando el micro para controlar el motor de cc. 10
  • 11. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 4.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 encoder de 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 para modelarlo, identificarlo y probar distintas técnicas de control. En este informe sólo usaremos un control PID que como veremos nos otorga una respuesta muy deficiente ya que es un sistema relativamente complejo para este tipo de control. Un modelo de este sistema es el siguiente: X 1 = ϕ 1− ϕ 2 X 2 = ω 1/ω 0 X 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. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Esta 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 por un 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) que permite al microcontrolador indicar el sentido de giro del motor. Este es un diagrama de la conexión del puente H. La tercer placa es en la que se aloja el microcontrolador y en donde se encuentra el control del sistema. Esta placa tiene un terminal RJ11 que permite la conexión a la PC por medio del una conexión RS232. 12
  • 13. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 El 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 desea hacer: posición o velocidad. Además se puede seleccionar 5 set point predefinidos y observar la evaluación del sistema en una pantalla grafica que grafica los últimos 60 segundos de la posición real de la masa M2. Se observa en la parte inferior de la pantalla grafica unos valores relevantes de la evolución, como ser el promedio, máximo, mínimo y excursión de la señal. Otra de las opciones es poder modificar las constantes Kp, Ki, Kd del control PID. 13
  • 14. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 4.3 Detalles del programa Una de las primeras llamadas que hacemos es a la librería <MC68HC908JK3.h>, en esta librerías se encuentran definidos los registros y las direcciones del microcontrolador, así en la siguiente programación solo se llamara al PTD como Puerto D, al ADR como registro del analógico digital, y así con los demás registros. Estas son las patas del microcontrolador que usamos para interactuar con la planta, leer la posició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-232 Como 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 que represente el desplazamiento de la masa desde el origen. Se considera origen a la posición cero que es en la que se encuentra el sistema en el momento en que energizamos el microcontrolador 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 clock source tenemos que recurrir a las interrupciones, por eso entramos con el canal A del encoder en la pata IRQ y de esta manera contamos los pulsos que indican la posición de la masa M1. El siguiente es el código utilizado para atender la interrupción por hardware generada por el flanco desendente del pin asociado a IRQ, vemos que después de indicarle al micro que aceptamos la interrupción se modifica el valor de una variable dependiendo de el sentido de giro del motor que esta indicado en el pin 4 del puerto B. 14
  • 15. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 #pragma TRAP_PROC void 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 a terminado 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 de actuador que tenemos en este proyecto representa el máximo Ton (tiempo activo) de la señal PWM. #pragma TRAP_PROC void 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 su funcionalidad. void delay(unsigned int ms) Es un retardo utilizado para formar la trama en la transmisión RS-232 void set_TON_PWM(int TON) Configura los parámetros del PWM void set_Sentido(int Sentido) Configura las salidas 2 y 3 del Puerto D que definen el sentido de giro void send_byte(char byte) Envía un byte a la PC por Puerto serie char rec_byte(void) Recibe un byte de la PC void itochar(int inum,unsigned char cadena[5]) Convierte un entero en string void 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 PC Sin embargo el corazón del programa se encuentra en la función <void main(void)> en la que se encuentra el control propiamente dicho, en este caso en forma de PID (control proporcional integral y derivativo). El programa contiene la inicialización de los módulos y un if que selecciona el tipo de lógica para obtener la actuación según si estamos controlando posición o velocidad. 15
  • 16. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Lo primero que se debe hacer al empezar el programa es configurar los registros del microcontrolador 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 salida Luego 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, pero este 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 microcontrolador para comunicarse con la PC. Para eso fue necesario para realizar una Interfase Serie Asincrónica capaz de funcionar sobre cualquier pin I/O. Los requerimientos para que las rutinas funcionen correctamente son mínimos, el problema es que poseen pequeños errores de Timming (sincronismo) que fueron solucionados utilizando eco, esto significa que el microcontrolador le envía a la PC lo que el entendió, entonces la PC decide si es necesario reenviar el dato o no. 16
  • 17. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 Los cálculos están basados en un cristal de 9.8304MHz lo que proporciona un T=0.406901useg de bus y en base a esto debemos calcular el tiempo de bit utilizado en la transmisió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 delay Transmisión: se realiza con la función send_byte, es la mas simple puesto a que una vez que comienza la transmisión con el bit de start solo se trata de cambiar el estado lógico del bit TXD configurado como salida hasta contar los 8 bits del byte y al final concluir con un bit de 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 STOP Recepcion: es la más difícil de programar, ya que en la recepción es donde se debe considerar el ruido debido a la línea de transmisión y al sincronismo. La función rec_byte verifica 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 esta transmitiendo un byte por eso en este caso se debe prestar absoluta atención a esta entrada y evaluar en intervalos correspondientes al tiempo de bit el valor de la entrada que representa el byte correspondiente. Para convertir la señal TTL del microcontrolador en niveles de tensión CMOS correspondientes a la norma RS-232 usamos un MAX232. Del cual solo nos sirve un canal de salida y un canal de entrada. 17
  • 18. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 5– 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 del microcontrolador 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 componentes utilizados en las placas de electrónica asociada al microcontrolador. 18
  • 19. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola JK3 7 - CONCLUSIÓN En esta colusión evaluaremos dos aspectos principales. El primero es la programación del microcontrolador, esta familia de microcontroladores posee un entorno de desarrollo (CodeWarrior) muy bien logrado. Al momento de escribir el programa resulta muy sencillo utilizar los módulos y registros del micro ya que se muestran como objetos desplegables de amplia versatilidad. También provee herramientas de testeo por soft y en circuito que aceleran notablemente la detección de errores. Con respecto al microcontrolador elegido, nos encontramos con muchas limitaciones a la hora de pretender un uso intensivo. La falta de un acumulador de pulsos y un modulo SCI de comunicación serie nos limitó en la optimización del control. Para lograr un control del sistema con una fluida comunicación con la PC es imprescindible usar un microcontrolador que disponga de estos módulos. Aunque en el transcurso de este proyecto se emularon estos módulos, nos vimos desbordado de interrupciones y eso repercutía en la perdida de referencia (posición cero) que obligaron a usar divisores de frecuencia y baja tasa de transmisión de datos. 19