Trabajo Práctico de Microprocesadores 1.

Integrantes:

 Jhony López.

Bruno Alvarenga.
 

Tema:  Control de la  Posición Angular.

Diseño e Implementación.
 

Introducción.

Descripción del Motor Paso a Paso.

Implementación.

Loop  Infinito De Control.

Diagrama de Flujo de Movimiento del Brazo del Motor.

Diagrama de Secuencia del Giro

Diagrama de Flujo del Algoritmo de Espera Entre Diferentes Salidas del Puerto B.

Tabla de Mando.

Programación del Microprocesador 68HC11.

Conclusión.
 
 

Introducción.

    El sistema mediante el Motor Paso a Paso controlado por el Microcontrolador 68HC11 logra mover el eje del Motor una cierta posición angular que puede ser positiva o negativa, y que es introducida al sistema mediante un conjunto de llaves ( número binario ) y que una vez que están todas activadas envían  una señal de aviso hacia el Microcontrolador para poder ser leídas por el, el Microcontrolador  convierte este número binario en grados que pueden ser negativos o positivos y que indican exactamente lo que se va a mover el eje del motor.

Descripción del Motor Paso a Paso.

Descripción General

Ventajas y Aplicaciones

Alimentación.

Descripción General

 Un motor PAP es una máquina en la que sus enrollamientos son alimentados el uno después del otro, provocando cada una de estas excitaciones un giro discontinuo, un ángulo determinado del eje (ámgulo fijo). Este desplazamiento se denomina paso angular y es lo que caracteriza a este tipo de motores, que funcionan a saltos o pasos de un ángulo determinado. Según el sentido de excitación de los enrollamientos, se producirán saltos hacia la derecha o hacia la izquierda.

De acuerdo con el diseño del motor y de su utilización prevista, los impulsos de excitación pueden ser de la misma polaridad, o impulsos automáticos de polaridad opuesta. La sucesión de impulsos puede aplicarse todos al mismo enrollamiento del motor, o sucesivamente en diferentes bobinas del mismo. Los impulsos no deben ser aplicados necesariamente a una frecuencia fija, sino que pueden variar desde cero hasta el máximo que permite el motor.

 Un Motor Paso a Paso puede compararce a una serie de devanados dispuestos en círculo que al ser excitados sucesivamente actúan sobre un núcleo de hierro dulce o un imán permanente, haciéndolo girar un cierto ángulo.
 
 
 


 
 

 El paso del Motor dependerá del número de bobinas del estator.

Ventajas que ofrecen los Motores Paso a Paso:


 Estas características permiten su empleo en algunos de los siguientes grupos de aplicaciones:


 Aplicaciones:


Alimentación de los Motores PAP

 Es el aspecto más importante a tener en cuenta, ya que su correcta aplicación determina la eficacia total del sistema.

 Como ya sabemos, la alimentación de un motor paso a paso consiste en la excitación sucesiva de las diferentes bobinas del estator. Esto se realiza a través de un conmutador electrónico, cuya misión es la de enviar secuencialmente corriente a las bobinas del motor cada vez que recibe un impulso en su entrada. Evidentemente la excitación de las bobinas se efectuará en un orden determinado o en el contrario, según sea el sentido de rotación que se pretenda obtener del motor.

 El Motor Paso a Paso opera con un  voltaje de +11.5 V. El motor posee un rotor que se encuentra rodeado por cuatro bobinados que según la secuencia de inducción girarán en uno u otro sentido. Un total de 48 secuencias son necesarios para dar 360º. Cada secuencia incrementa en 7.5 º el eje del motor, si se utiliza el eje del motor lo que se necesita hacer es conectar este eje a una polea o directamente a una correa con lo cual se puede utilizar este motor como una pequeña parte de un sistema mayor.

A continuación se presenta el esquema de bloques para atacar un motor paso a paso de cuatro bobinas
 
 

.
 
 

Donde R.P. es el retorno de potencia.

Hay que destacar que las etapas de retorno de potencia (generalmente un diodo volante) permite la evacuación de la corriente una vez que ha dejado de alimentarse la bobina correspondiente. De esta forma se puede aumentar la velocidad.

Implementación.

 Diagrama de Bloque General.

Descripción Funcional.

 Diagrama Circuital y Secuencia.

Etapa de Potencia.

Diagrama de Bloque General.


 

donde EVB es el Evaluation Board Kit

Descripción Funcional.

Necesitamos controlar el movimiento angular de un Motor Paso a Paso. Entonces debemos generar de alguna forma las secuencias adecuadas para la excitación de las bobinas del motor, para así generar el movimiento del mismo.
 Debemos generar dos secuencias: uno para que el motor gire en un sentido, y otro para que gire en sentido inverso.
 Nosotros utilizamos el Microcontrolador 68HC11A8 de Motorola para generar las secuencias que excitarán al motor.
 Este Microcontrolador posee (ver manual del fabricante) puertos paralelos de entrada salida que nos sirven para nuestro propósito.
 

 Puerto A: puerto paralelo que posee pines de entrada y de salida, este puerto lo utilizamos para el ingreso de pulsos de conteo, vía generador de señales. Este conteo de pulsos permite generar un delta tiempo entre excitaciones.

Entonces utilizamos el pulse accumulator del puerto A, PA7 (pin 7 del puerto A).
 
 

PINA7

PINA6

PINA5

PINA4

PINA3

PINA2

PINA1

PINA0

 Dirección $1000
 

Puerto B: puerto paralelo de salida, es utilizado para excitar las cuatro bobinas del motor PAP que utilizamos.
Entonces usamos los cuatros primeros pines del puerto: PB0, PB1, PB2, PB3.
 
 

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

Dirección $1004
 

Pin del puerto.         Bobina          Cableado del Motor

PINB0                           1                        NEGRO
PINB1                           2                        NARANJA
PINB2                           3                        AMARILLO
PINB3                           4                        ROJO
 

Puerto C: puerto de entrada salida paralela, utilizado para la interfase del usuario, por este puerto se ingresa, según código binario, el ángulo y el sentido de giro.
 
 

PINC7

PINC6

PINC5

PINC4

PINC3

PINC2

PINC1

PINC0

Dirección $1003

Entonces se programa el puerto como entrada y se utilizan todos los pines del mismo.
 

Pin del Puerto           Función

PINC0                        Determinar número de pasos (menos significativo)
PINC1                        Determinar número de pasos
PINC2                        Determinar número de pasos
PINC3                        Determinar número de pasos
PINC4                        Determinar número de pasos
PINC5                        Determinar número de pasos (más significativo)
PINC6                        Determinar el sentido (0 izquierda, 1 derecha)
PINC7                        Determinar dato válido para proceso
 
 

 Utilizamos un motor paso a paso con las siguientes características:


Número de Bobinado           Cableado del Motor

1                                                          Negro
2                                                          Naranja
Unión de la bobina 1 y 2 (A)            Negro-Naranja
3                                                         Amarillo
4                                                         Rojo
Unión de la bobina 3 y 4 (B)           Amarillo-Rojo
 
 


Diagrama Circuital.

 Secuencia de impulsos positivos para generar movimiento:


Etapa de potencia.

Se necesita una etapa de potencia para manipular la elevada corriente necesaria de excitación, que no es posible conseguir con la simple salida del puerto del Microcontrolador
(Puerto B).

 Esta etapa además actúa como llave de apertura. Cuando es excitada la base circula corriente entre el colector y el emisor generando también circulación de corriente por el bobinado, esta corriente fluirá mientras persista la excitación en la base del transistor. La corriente desaparece a causa de la desconexión de tensión en la base del transistor.
 

Tabla de Mando
 
 

Valor Binario Ingresado

Grados Equivalentes

1

7.5

2

15

3

22.5

4

30

5

37.5

6

45

7

52.5

8

60

9

67.5

10

75

11

82.5

12

90

13

97.5

14

105

15

112.5

16

120

17

127.5

18

135

19

142.5

20

150

21

157.5

22

165

23

172.5

24

180

25

187.5

26

195

27

202.5

28

210

29

217.5

30

225

31

232.5

32

240

33

247.5

34

255

35

262.5

36

270

37

277.5

38

285

39

292.5

40

300

41

307.5

42

315

43

322.5

44

330

45

337.5

46

345

47

352.5

48

360

Programación del Microcontrolador 68HC11.

*NOMBRE: Movimiento del eje del Motor Paso a Paso
*DESCRIPCION: recibe como parámetros el sentido de giro y el número de
*pasos que debe moverse el eje del motor.
*************************************************

*************************************************

*IGUALDADES

REGISTRO EQU $1000     registro base
PORTA  EQU $00               puerto A
PORTC  EQU $03               puerto C
PORTB  EQU $04               puerto B
DDRC   EQU $07                indica el sentido de los pines del puerto C
TCTL1   EQU $20                timer control register 1
TCTL2   EQU $21                timer control register 2
TMSK1  EQU $22                timer interrupt mask register 1
TFLG1   EQU $23                timer interrupt flag register 1
TMSK2  EQU $24                timer interrupt mask register 2
OC1M    EQU $0C              OC1 action mask register
PACTL  EQU $26                pulse accumulator control register
TFLG2   EQU $25                timer interrupt flag register 2
PACNT  EQU $27                pulse accumulator count register
PINB0    EQU %00000001  máscara del pin 0 del puerto B
PINB1    EQU %00000010  máscara del pin 1 del puerto B
PINB2    EQU %00000100  máscara del pin 2 del puerto B
PINB3    EQU %00001000  máscara del pin 3 del puerto B

*************************************************
*************************************************

*VARIABLES ASIGNADAS A LA RAM
  ORG $D000
SENTAC     RMB 1          indica el sentido actual de giro del motor
SENTAN     RMB 1          indica el sentido anterior de giro del motor
PASOAC    RMB 1          indica el número de pasos actual de giro
PASOIN      RMB 1          indica el número de pasos ingresados de giro
PASOAN    RMB 1          indica el número de pasos anteriores de giro
PUERTOC  RMB 1         guarda el valor ingresado por el puerto C
TERMINO    RMB 1         ciclo infinito, bandera que determina el final del programa
PASOS       RMB 1          pasos a dar por el motor
*************************************************
*************************************************

*PROGRAMA
  ORG $C000

*INICIALIZACION DE LA PILA EN EL EVB
        LDS #$0047

*************************************************
*************************************************

*INICIALIZACION DE TERMINO
        LDAA #0
        STAA TERMINO     igual a cero

*************************************************
*************************************************

*INICIALIZO EL PUERTO C COMO ENTRADA
        LDX #REGISTRO
        BCLR DDRC,X %11111111
*************************************************
*************************************************

*INICIALIZACION DEL PULSE ACCUMULATOR, PUERTO A
*SOLO ME INTERESA EL BIT 7, PA7

 BCLR TCTL1,X   %10000000 se desconecta el timer de salida
 BCLR TMSK1,X  %10000000 se deshabilita el input capture interrupt
 BCLR TFLG1,X   %10000000 se deshabilita el output compare flag
 BCLR OC1M,X    %10000000 deshabilita el output compare 1
 BCLR TMSK2,X  %00100000 deshabilito el la interrupcion por overflow del timer

*************************************************
*************************************************

*INICIALIZAMOS LAS VARIABLES PASOAN Y SENTAN
        LDAA #0
        STAA PASOAN        igual a cero
        STAA SENTAN         igual a cero
*************************************************
*************************************************

*VERIFICACION DE DATOS VALIDOS EN EL PUERTO C
        LDX #REGISTRO

CICLO1  LDAA PORTC,X              mientras el valor leído del pin 7 del puerto C
                STAA PUERTOC             sea diferente del valor lógico 1, el sistema
               ANDA #%10000000         queda leyendo el puerto hasta que sea = 1
               CMPA #%10000000        que siginifica que va a procesar los datos
                BNE CICLO1
*************************************************
*************************************************

*EXISTE UN VALOR VALIDO EN EL PUERTO C
        LDAA PUERTOC
        ANDA      #% 01000000            se lee el valor del pin 6 del puerto C para
        CMPA      #% 01000000            determinar el sentido de giro
        BNE PINC50                                izquierda
        BEQ PINC51                               derecha
*************************************************

*OBTENEMOS EL VALOR DE SENTIDO ACTUAL

PINC50  LDAA #0
               STAA SENTAC      sentido actual si pin 5 del puerto C = 0
               JMP FINPIN5

PINC51  LDAA #1
               STAA SENTAC        sentido actual si pin 5 del puerto C = 1
*************************************************
*************************************************
*SE COMPARA SENTAC CON SENTAN

FINPIN5 LDAA SENTAC
               CMPA SENTAN
               BNE SENTIDO1      no son iguales
*************************************************
*************************************************

*SENTIDO ACTUAL IGUAL A SENTIDO ANTERIOR
*SE LEE EL VALOR CORRESPONDIENTES A PASOS PARA EL MOTOR
SENTIDO2 LDAA PUERTOC
                    ANDA # % 00111111
                    STAA PASOIN
                    SUBA PASOAN
                    STAA PASOAC

*paso ingresado mayor o igual que paso anterior
         BCC COMPARACION

*paso ingresado menor a paso anterior

         LDAA #48
         ADDA PASOIN
         SUBA PASOAN
         STAA PASOAC
         JMP COMPARACION     salta a la rutina que determina la secuencia de giro
*************************************************
*************************************************

*SENTIDO ACTUAL DISTINTO A SENTIDO ANTERIOR
*SE LEE EL VALOR CORRESPONDIENTES A PASOS PARA EL MOTOR
SENTIDO1 LDAA PUERTOC
                    ANDA #%00111111
                    STAA PASOIN
                    ADDA PASOAN
                    STAA PASOAC
*************************************************
*************************************************

*DETERMINA SECUENCIA DE GIRO DEL MOTOR
COMPARACION  LDAA #0
                               CMPA SENTAC
                               BEQ SEGUIRSI     gira a la izquierda
                               BNE SEGUIRNO   gira a la derecha

*************************************************
*************************************************

SEGUIRSI     JSR GIRO1     salto a la rutina de giro a la izquierda
                       JMP FINAL     salto a la rutina de actualización

SEGUIRNO     JSR GIRO2   salto a la rutina de giro a la derecha
                         JMP FINAL    salto a la rutina de actualización
*************************************************
*************************************************

*RUTINA DE GIRO A LA IZQUIERDA
GIRO1        PSHX
                    PSHA

                    LDX #REGISTRO
                    LDAA PASOAC          número de pasos que hará el motor
                    STAA PASOS             pasos del motor
                    LDAA #0
                    CMPA PASOS           ver si finalizó cantidad de pasos
                    BEQ FIN1                    salta si ya finalizó

CICLO2       BSET PORTB,X PINB0    activa pin 0 del puerto B

                    JSR ESPERAR
                    BCLR PORTB,X PINB0    desactiva pin 0 del puerto B
                    BSET PORTB,X PINB2    activa pin 2 del puerto B

                   JSR ESPERAR
                   BCLR PORTB,X PINB2    desactiva pin 2 del puerto B
                   BSET PORTB,X PINB1    activa pin 1 del puerto B

                  JSR ESPERAR
                  BCLR PORTB,X PINB1    desactiva pin 1 del puerto B
                  BSET PORTB,X PINB3    activa pin 3 del puerto B

                  JSR ESPERAR
                  BCLR PORTB,X PINB3    desactiva pin 3 del puerto B

*verifica que se termine la cantidad de pasos del motor
             DEC PASOS
             LDAA #0
             CMPA PASOS
             BNE CICLO2
             LDAA #0
             STAA TERMINO

FIN1         PULA
                 PULX
                 RTS
*************************************************

*************************************************
*RUTINA DE GIRO A LA DERECHA
GIRO2        PSHX
                    PSHA
                    LDX #REGISTRO
                    LDAA PASOAC         número de pasos que hará el motor
                    STAA PASOS            pasos del motor
                    LDAA #0
                    CMPA PASOS
                    BEQ FIN2

CICLO3       BSET PORTB,X PINB3    activa pin 3 del puerto B

                    JSR ESPERAR
                    BCLR PORTB,X PINB3    desactiva pin 3 del puerto B
                    BSET PORTB,X PINB1    activa pin 1 del puerto B

                    JSR ESPERAR
                    BCLR PORTB,X PINB1    desactiva pin 1 del puerto B
                    BSET PORTB,X PINB2    activa pin 2 del puerto B

                    JSR ESPERAR
                    BCLR PORTB,X PINB2    desactiva pin 2 del puerto B
                    BSET PORTB,X PINB0    activa pin 0 del puerto B

                    JSR ESPERAR
                    BCLR PORTB,X PINB0    desactiva pin 0 del puerto B

*verifica que se termine la cantidad de pasos del motor
             DEC PASOS
             CMPA PASOS
             BNE CICLO3
             LDAA #0
             STAA TERMINO

FIN2         PULA
                 PULX
                 RTS
*************************************************

*************************************************

*RUTINA QUE GENERA LA FRECUENCIA DE LA ACTIVACION DE PINES
*RESPECTIVOS DEL PUERTO B

ESPERAR
             PSHX
             PSHA

             LDX #REGISTRO
             BSET PACTL,X %01000000 programa el puerto A como pulse
*                                                               accumulator
             LDAA #5
             NEGA
             STAA PACNT,X           contador del pulse accumulator

* verificación de overflow del contador de pasos
CICLO4       LDAA TFLG2,X
                     ANDA #%00100000
                     CMPA #%00100000
                     BNE CICLO4
                     BSET TFLG2,X %00100000 se cera nuevamente el PAOVF para el siguiente overflow

             PULA
             PULX
             RTS
************************************************
************************************************

*RUTINA QUE ACTUALIZA LAS VARIABLES PASOAN Y SENTAN PARA LA
*SIGUIENTE ORDEN DE GIRO

FINAL        LDAA PASOIN
                   STAA PASOAN         en POSOAN guardamos en valor de PASOIN
                   LDAA SENTAC
                   STAA SENTAN          en SENTAN guardamos en valor de SENTAC

*verificación del final del programa
             LDAA #1
             CMPA TERMINO
             BEQ PARAR

             JMP CICLO1

PARAR        STOP
 

Conclusión.

    Las características del Microcontrolador de Motorola  lo hacen más que capaz para manejar el programa del control del Motor Paso a Paso. Esta aplicación muestra la posibildad del manejo de un Sistema para un Motor Paso a Paso que puede realizar el el trabajo con un pequeño peso y trabajando a una frecuencia de unos pocos hertz.

    Lo que se hace es la conducción o no de las bobinas en forma intercalada con lo cual el Motor se mueve, dependiendo de la cantidad de tiempo entre la activación de una bobina y de otra de las bobinas el eje se moverá más rápido o más lento.

    La dirección en la cual se va a mover el Motor es también introducida junto con los datos binarios del ángulo al cual debe girar el eje  y el sentido de giro. La dirección en la cual se moverá el Motor es dada por una secuencia que llega al Motor después de pasar por el Driver de Potencia.

    Dentro de los rangos permitidos de control de peso (pequeño) y de frecuencia (entre 2 y 20 hertz) el Motor funciona percfectamente de una manera exacta y en pasos de 1.8º y secuencias de 7,5º se mueve a la posición correcta y en el sentido especificado.

jhonito@infonet.com.py
 

acodas@rieder.net.py