Trabajo Práctico de Microprocesadores 1.
Integrantes:
Tema: Control de la Posición Angular.
Diseño e Implementación.
Descripción del Motor Paso a Paso.
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.
Programación del Microprocesador 68HC11.
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.
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.
Diagrama Circuital y Secuencia.

donde EVB es el Evaluation Board Kit
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
Secuencia de impulsos positivos para generar movimiento:
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.
|
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
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.