control de motor a pasos scrib

29
UNIVERSIDAD DE SONORA Ingeniería Mecatrónica “Control de un motor a pasos” . Objetivo General Diseñar el control para un motor a pasos unipolar con medio paso e interfaz de potencia con protección empleando el mC 16F84A. Se podrá utilizar otro motor para la demostración y/o pruebas. Objetivos específicos a) Diseñar una interfaz de potencia basada en transistor tipo MOSFET con diodos de protección de dos diodos por bobina de 3 Amperes b) Diseñar una etapa de aislamiento óptico c) Realizar una rutina de control que realice las siguientes tareas .Cambio de giro. .Paro. Introducción

Upload: martha-worley-audelo

Post on 11-Dec-2014

119 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Control de Motor a Pasos SCRIB

UNIVERSIDAD DE SONORA

Ingeniería Mecatrónica

“Control de un motor a pasos”

.Objetivo General

Diseñar el control para un motor a pasos unipolar con medio paso e interfaz de potencia con protección empleando el mC 16F84A. Se podrá utilizar otro motor para la demostración y/o pruebas.

Objetivos específicos

a) Diseñar una interfaz de potencia basada en transistor tipo MOSFET con diodos de protección de dos diodos por bobina de 3 Amperes

b) Diseñar una etapa de aislamiento óptico

c) Realizar una rutina de control que realice las siguientes tareas.Cambio de giro..Paro.

Introducción

El control de posición es una de las variables de mayor demanda en aplicaciones de ingeniería. Desde el control de impresoras, robots y sistemas mecatrónicos de seguimiento solar hasta aplicaciones de alta precisión, la variable mecánica posición casi siempre es requerida en los servomecanismos. Debido a que la velocidad, aceleración y el jerk pueden ser derivados de la posición, se requiere conocer ampliamente está última variable.

Los motores a pasos, representan una solución efectiva para el control de posición, ya que su diseño fue pensado para este tipo de señal. En esta práctica

Page 2: Control de Motor a Pasos SCRIB

se diseñarán los elementos necesarios para la utilización de actuadores tipo stepper motor de imán permanente, unipolares, de los usados para el seguimiento solar en el Campo de Prueba de Helióstatos.

PIC16F84 El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama Media (según la clasificación dada a los microcontroladores por la misma empresa fabricante) Microchip.

Estructura:

Se trata de uno de los microcontroladores más populares del mercado actual, ideal para principiantes, debido a su arquitectura de 8 bits, 18 pines(como se muestra en la figura 1), y un conjunto de instrucciones RISC muy amigable para memorizar y fácil de entender, internamente consta de

Memoria Flash de programa (1K x 14 bits). Memoria EEPROM de datos (64 x 8 bits). Memoria RAM (68 registros x 8 bits). Un temporizador/contador (timer de 8 bits). Un divisor de frecuencia. Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A

y 8 pines el puerto B).

Figura 1. Estructura de un PIC 16f84a

Otras características son:

Manejo de interrupciones (de 4 fuentes). Perro guardián (watchdog). Bajo consumo. Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas

versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que

2

Page 3: Control de Motor a Pasos SCRIB

significa que con un reloj de 20Mhz, el reloj interno sería de 5Mhz y así pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS)

No posee conversores analógicos-digital ni digital-analógicos. Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución

de la instrucción (los saltos ocupan un ciclo más). Repertorio de instrucciones reducido (RISC), con tan solo 30 instrucciones

distintas. 4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operación

entre registros, de salto.

Motor a PasosEl motor paso a paso es un dispositivo electromecánico que convierte una serie de impulsos eléctricos en desplazamientos angulares discretos, lo que significa es que es capaz de avanzar una serie de grados (paso) dependiendo de sus entradas de control. El motor paso a paso se comporta de la misma manera que una conversión digital-analógica y puede ser gobernado por impulsos procedentes de sistemas lógicos. Entre sus principales aplicaciones destacan como motor de frecuencia variable, motor de corriente continua sin escobillas, servomotores y motores controlados digitalmente.

Secuencias para manejar motores paso a paso UnipolaresExisten tres secuencias posibles para este tipo de motores, las cuales se detallan a continuación. Todas las secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8).

Secuencia Normal (figura 4.1): Esta es la secuencia más usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retención.

Figura 2. Secuencia normal de un motor a pasos

Secuencia del tipo wave drive (figura 4.2): En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento más suave. La

3

Page 4: Control de Motor a Pasos SCRIB

contrapartida es que al estar solo una bobina activada, el torque de paso y retención es menor.

Figura 2.1 Secuencia del tipo wave drive de un motor a pasos

Secuencia del tipo medio paso (figura 4.3): En esta secuencia se activan las bobinas de tal forma de brindar un movimiento igual a la mitad del paso real. Para ello se activan primero 2 bobinas y luego solo 1 y así sucesivamente. Como vemos en la tabla la secuencia completa consta de 8 movimientos en lugar de 4.

Figura 2.3. Secuencia del tipo medio pasó de un motor a pasos.

4

Page 5: Control de Motor a Pasos SCRIB

MOSFET Son las siglas de Metal Oxide Semiconductor Field Efecto Transistor. Consiste en un transistor de efecto de campo basado en la estructura MOS. Es el transistor más utilizado en la industria microelectrónica. Prácticamente la totalidad de los procesadores comerciales están basados en transistores MOSFET.

Un transistor MOSFET consiste en un sustrato de material semiconductor dopado en el que, mediante técnicas de difusión de dopantes, se crean dos islas de tipo opuesto separadas por un área sobre la cual se hace crecer una capa de dieléctrico culminada por una capa de conductor. Los transistores MOSFET se dividen en dos tipos fundamentales dependiendo de cómo se haya realizado el dopaje:

• Tipo nMOS: Sustrato de tipo p y difusiones de tipo n.• Tipo pMOS: Sustrato de tipo n y difusiones de tipo p. Las áreas de difusión se denominan fuente (source) y drenador (drain), y el conductor entre ellos es la puerta (gate).

El transistor MOSFET tiene tres estados de funcionamiento:

1. Estado de corte

Cuando la tensión de la puerta es idéntica a la del sustrato, el MOSFET está en estado de no conducción: ninguna corriente fluye entre fuente y drenador. También se llama MOSFET a los aislados por juntura de dos componentes.

2. Conducción lineal

Al polarizarse la puerta con una tensión negativa (nMOS) o positiva (pMOS), se crea una región de deplexión en la región que separa la fuente y el drenador. Si esta tensión crece lo suficiente, aparecerán portadores minoritarios (electrones en pMOS, huecos en nMOS) en la región de deplexión que darán lugar a un canal de conducción. El transistor pasa entonces a estado de conducción, de modo que una diferencia de potencial entre fuente y drenador dará lugar a una corriente. El transistor se comporta como una resistencia controlada por la tensión de puerta.

3. Saturación

Cuando la tensión entre drenado y fuente supera cierto límite, el canal de conducción bajo la puerta sufre un estrangulamiento en las cercanías del drenado y desaparece. La corriente entre fuente y drenado no se interrumpe, ya que es debido al campo eléctrico entre ambos, pero se hace independiente de la diferencia de potencial entre ambos terminales.

5

Page 6: Control de Motor a Pasos SCRIB

Diagrama de Flujo

6

Inicio

Definición de variables

Configuración de puertos

Entrada PA0 =1?

Avanza con indicador en PB4

Entrada PA1 =1?

Entrada PA2 =1?

Entrada PA3 =1?

NO

NO

NO

SI

SI

SI

SI

Hold con indicador en PB5

Modo discreto con indicador en PB6

Avance de diez pasos

Page 7: Control de Motor a Pasos SCRIB

Motor a pasosPara realizar esta práctica fue fundamental empezar identificando las fases y ciclo consecutivo de nuestro motor, esto lo hicimos midiendo la resistencia que existe entre cada bobina y la resistencia con nuestro común. Después identificamos el giro correcto de nuestro motor, esto lo hacemos conectando nuestros comunes a tierra y nuestras bobinas a un pulso el cual nos da un giro.

Parámetros del motor

Las fases del motor son las siguientes:

1ra fase – azul 2ª fase – amarillo 3ra fase – café 4ta fase - anaranjado

Figura 3. Fases identificadas de un motor unipolar

7

Page 8: Control de Motor a Pasos SCRIB

Código en MPLAB

;*****************PRACTICA2***************************; RA0 AVANCE Y PARO LIBRE CON INDICADOR RB4; RA1 HOLD, CON INDICADOR EN RB5; RA4 DIRECCION, CON INDICADOR EN PB7

__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC ; Configuracion.

LIST P=16F84A ; Pic utilizado en esta práctica.

INCLUDE<P16F84A.INC> ; libreria del pic.

cblock ; Define bloques de constante.

endc

status equ 0x03 ; Ubicar status en dirección 0x03.

porta equ 0x05 ; Ubicar porta en dirección 0x05.

portb equ 0x06 ; Ubicar portb en dirección 0x06.

trisa equ 0x85 ; Ubicar trisa en dirección 0x85.

trisb equ 0x86 ; Ubicar trisb en dirección 0x86.

org 0 ; Direccion de inicio

inicio bsf status,5 ; Cambio al banco 1

bsf porta,0 ; RA0 se configura como entrada

bsf porta,1 ; RA1 se configura como entrada bsf porta,2 ; RA2 se configura como entrada

bsf porta,3 ; RA3 se configura como entrada bsf porta,4 ; RA4 se configura como entrada

bsf porta,5 ; RA4 se configura como entrada

8

Page 9: Control de Motor a Pasos SCRIB

clrf portb ; Limpia el puerto B

bcf status,5 ; Cambio al banco 0

activar clrf porta ; Limpia el puerto A clrf portb ; Limpia el puerto B btfsc porta,1 ; Salto, si RA1 es 1 salta a girohold, si no continua saltando girohold. goto girohold ; Se mueve a girohold. btfsc porta,0 ; Salto, si RA0 es 1 salta a girohold, si no continua saltando giro. goto giro ; Se mueve a giro.

btfsc porta,2 ; Salto, si RA2 es 1 salta a girohold, si no continua saltando a girodiscr. goto girodiscr ; Se mueve a girodiscr. btfsc porta,3 ; salto, si RA3 es 1 salta a girohold, si no continua saltando a diezpasos. goto diezpasos ; Se mueve a diezpasos. goto activar ; Va a activar. giro btfsc porta,4 ; salto, si RA4 es 1 salta a izq_z, pero si RA4 es 0 salta der.

goto izq_z ; Se mueve a izq_z.

goto der ; Se mueve a der.

izq_z call izq ; Llama a izq.

izq movlw b'10010011' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10010110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f.

9

Page 10: Control de Motor a Pasos SCRIB

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10011100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10011001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

goto activar ; Se mueve a activar

der movlw b'00011100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00010110' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00010011' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00011001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

goto activar ; Se mueve a activar girohold btfsc porta,0 ; Salto, si RA0 es 1 salta a activar, si no continua saltando activar. goto activar ; Se mueve a activar.

10

Page 11: Control de Motor a Pasos SCRIB

btfsc porta,4 ; salto, si RA4 es 1 salta a izq_z, pero si RA4 es 0 salta der. goto izq_zhold ; Se mueve a izq_zhold. goto derhold ; Se mueve a derhold.

izq_zhold goto izqhold ; Se mueve a izqhold.

goto girohold ; Se mueve a izq_zhold.

izqhold movlw b'10100011' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10100110' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10101100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'10101001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

goto girohold ; Se mueve a girohold

derhold movlw b'00101100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00100110' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

11

Page 12: Control de Motor a Pasos SCRIB

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00100011' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

movlw b'00101001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_20ms ; Llama un retardo de 20 milisegundo.

goto girohold ; Se mueve a girohold girodiscr btfsc porta,4 ; salto, si RA4 es 1 salta a izq_z, pero si RA4 es 0 salta der.

goto izq_zdiscr ; Se mueve a izq_zdescr.

goto derdiscr ; Se mueve a derdiscr.

izq_zdiscr call izqdiscr ; Llama a izqdiscr.

goto activar ; Se mueve a activar.

izqdiscr movlw b'11000011' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'11000110' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo.

12

Page 13: Control de Motor a Pasos SCRIB

call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'11001100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'11001001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

goto activar ; Se mueve a activar

derdiscr movlw b'01001100' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'01000110' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'01000011' ; Carga el numero a w.

13

Page 14: Control de Motor a Pasos SCRIB

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

movlw b'01001001' ; Carga el numero a w.

movwf portb ; El contenido de w se mueve a f.

call Retardo_500ms ; Llama un retardo de 500 milisegundo. call Retardo_500ms ; Llama un retardo de 500 milisegundo.

goto activar ; Se mueve a activar diezpasos btfsc porta,4 ; salto, si RA4 es 1 salta a izq_z, pero si RA4 es 0 salta der.

goto izqpasos ; Se mueve a izqpasos.

goto derpasos ; Se mueve a derpasos.

izq_zpasos call izqpasos ; Llama a izqpasos. goto diezpasos ; Se mueve a diezpaos

izqpasos movlw b'10000011' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10001100' ; Carga el numero a w.

14

Page 15: Control de Motor a Pasos SCRIB

movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10001001' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10000011' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10001100' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10001001' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'10000011' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo.

15

Page 16: Control de Motor a Pasos SCRIB

espera movlw b'10000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. btfss porta,0 ; Salto, si RA0 es 0 salta a espera, y si es RA0 es 1 salta a activar goto espera ; Se mueve a espera goto activar ; Se mueve a activar

derpasos movlw b'00001100' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00000011' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00001001' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00001100' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f.

16

Page 17: Control de Motor a Pasos SCRIB

call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00000011' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00001001' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. movlw b'00001100' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. espera1 movlw b'00000110' ; Carga el numero a w. movwf portb ; El contenido de w se mueve a f. call Retardo_20ms ; Llama un retardo de 20 milisegundo. btfss porta,0 ; salto, si RA0 es 0 salta a espera1, pero si RA0 es 0 salta a activar. goto espera1 ; Se mueve a espera1. goto activar ; Se mueve a activar. INCLUDE <retardos.inc> ; Librería de retardos END ; Fin

17

Page 18: Control de Motor a Pasos SCRIB

La siguiente etapa de nuestra practica fue armar una etapa de aislamiento para nuestras cuatro bobinas de nuestro motor a pasos, esto se hizo mediante un opto acoplador 4n35, el cual se conectó al pin 1de las salidas de nuestro pic, el pin 2 conectado a tierra con una resistencia, el pin 5 conectado a voltaje y el 4 utilizado como salida a nuestro mosfet, a continuación se puede observar la configuración del optoacoplado.

Figura 4. Configuración de un Opto acoplador 4n35

La última etapa de nuestra práctica, es la etapa de potencia la cual consistía de un Mosfet IRF 510 en el cual utilizamos la siguiente configuración, el source conectado a tierra por medio de una resistencia, el gate es nuestra entrada, de nuestros cuatro optoacopladores y utilizamos el drain como nuestra salida a nuestro motor a pasos estos conectado un diodo en paralelo.

18

Page 20: Control de Motor a Pasos SCRIB

Bibliografía

20

Page 21: Control de Motor a Pasos SCRIB

"MICROCONTROLADOR PIC16F84. Desarrollo de proyectos"

“Notas de Clase Control de Maquinas Electricas”

www.wikipedia.org

www.electronicaradical.blogspot.mx/2011/03/triac.html

“Electrónica Industrial” Timothy Maloney Ed. 3ra.

21