Anda di halaman 1dari 21

UNIVERSIDAD DE SONORA

Ingeniera Mecatrnica

Control de un motor a pasos . Objetivo General Disear el control para un motor a pasos unipolar con medio paso e interfaz de potencia con proteccin empleando el mC 16F84A. Se podr utilizar otro motor para la demostracin y/o pruebas.

Objetivos especficos a) Disear una interfaz de potencia basada en transistor tipo MOSFET con diodos de proteccin de dos diodos por bobina de 3 Amperes b) Disear una etapa de aislamiento ptico c) Realizar una rutina de control que realice las siguientes tareas .Cambio de giro. .Paro. Introduccin El control de posicin es una de las variables de mayor demanda en aplicaciones de ingeniera. Desde el control de impresoras, robots y sistemas mecatrnicos de seguimiento solar hasta aplicaciones de alta precisin, la variable mecnica posicin casi siempre es requerida en los servomecanismos. Debido a que la velocidad, aceleracin y el jerk pueden ser derivados de la posicin, se requiere conocer ampliamente est ltima variable. Los motores a pasos, representan una solucin efectiva para el control de posicin, ya que su diseo fue pensado para este tipo de seal. En esta prctica

se disearn los elementos necesarios para la utilizacin de actuadores tipo stepper motor de imn permanente, unipolares, de los usados para el seguimiento solar en el Campo de Prueba de Helistatos. PIC16F84 El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama Media (segn la clasificacin dada a los microcontroladores por la misma empresa fabricante) Microchip. Estructura: Se trata de uno de los microcontroladores ms 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 fcil 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 caractersticas son:


Manejo de interrupciones (de 4 fuentes). Perro guardin (watchdog). Bajo consumo. Frecuencia de reloj externa mxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que
2

significa que con un reloj de 20Mhz, el reloj interno sera de 5Mhz y as pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS) No posee conversores analgicos-digital ni digital-analgicos. Pipe-line de 2 etapas, 1 para bsqueda de instruccin y otra para la ejecucin de la instruccin (los saltos ocupan un ciclo ms). Repertorio de instrucciones reducido (RISC), con tan solo 30 instrucciones distintas. 4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operacin entre registros, de salto.

Motor a Pasos El motor paso a paso es un dispositivo electromecnico que convierte una serie de impulsos elctricos 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 conversin digital-analgica y puede ser gobernado por impulsos procedentes de sistemas lgicos. 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 Unipolares Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a continuacin. 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 ms 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 retencin.

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 ms suave. La
3

contrapartida es que al estar solo una bobina activada, el torque de paso y retencin 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.

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 ms utilizado en la industria microelectrnica. Prcticamente la totalidad de los procesadores comerciales estn basados en transistores MOSFET. Un transistor MOSFET consiste en un sustrato de material semiconductor dopado en el que, mediante tcnicas de difusin de dopantes, se crean dos islas de tipo opuesto separadas por un rea sobre la cual se hace crecer una capa de dielctrico culminada por una capa de conductor. Los transistores MOSFET se dividen en dos tipos fundamentales dependiendo de cmo 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 difusin 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 tensin de la puerta es idntica a la del sustrato, el MOSFET est en estado de no conduccin: ninguna corriente fluye entre fuente y drenador. Tambin se llama MOSFET a los aislados por juntura de dos componentes. 2. Conduccin lineal Al polarizarse la puerta con una tensin negativa (nMOS) o positiva (pMOS), se crea una regin de deplexin en la regin que separa la fuente y el drenador. Si esta tensin crece lo suficiente, aparecern portadores minoritarios (electrones en pMOS, huecos en nMOS) en la regin de deplexin que darn lugar a un canal de conduccin. El transistor pasa entonces a estado de conduccin, 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 tensin de puerta. 3. Saturacin Cuando la tensin entre drenado y fuente supera cierto lmite, el canal de conduccin bajo la puerta sufre un estrangulamiento en las cercanas del drenado y desaparece. La corriente entre fuente y drenado no se interrumpe, ya que es debido al campo elctrico entre ambos, pero se hace independiente de la diferencia de potencial entre ambos terminales.
5

Diagrama de Flujo

Inicio Definicin de variables

Configuracin de puertos

Avanza con indicador en PB4

SI

Entrada PA0 =1?


NO

Hold con indicador en PB5

SI

Entrada PA1 =1?


NO

Modo discreto con indicador en PB6

SI

Entrada PA2 =1?


NO
6

Avance de diez pasos

SI

Entrada PA3

Motor a pasos Para realizar esta prctica 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 comn. Despus 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.

Parmetros 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

Cdigo 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 utilizado en esta prctica. INCLUDE<P16F84A.INC> cblock endc status equ 0x03 porta equ 0x05 portb equ 0x06 trisa equ 0x85 trisb equ 0x86 org 0 Direccion de inicio inicio bsf status,5 bsf porta,0 bsf porta,1 bsf porta,2 bsf porta,3 bsf porta,4 bsf porta,5 ; Cambio al banco 1 ; RA0 se configura como entrada ; RA1 se configura como entrada ; RA2 se configura como entrada ; RA3 se configura como entrada ; RA4 se configura como entrada ; RA4 se configura como entrada
8

; Pic

; libreria del pic. ; Define bloques de constante.

; Ubicar status en direccin 0x03. ; Ubicar porta en direccin 0x05. ; Ubicar portb en direccin 0x06. ; Ubicar trisa en direccin 0x85. ; Ubicar trisb en direccin 0x86. ;

clrf portb bcf status,5

; Limpia el puerto B ; Cambio al banco 0

activar clrf porta clrf portb btfsc porta,1 continua saltando girohold. goto girohold btfsc porta,0 continua saltando giro. goto giro btfsc porta,2 continua saltando a girodiscr. goto girodiscr btfsc porta,3 continua saltando a diezpasos. goto diezpasos goto activar giro btfsc porta,4 es 0 salta der. goto izq_z goto der izq_z call izq izq movlw b'10010011' movwf portb call Retardo_20ms movlw b'10010110' movwf portb

; Limpia el puerto A ; Limpia el puerto B ; Salto, si RA1 es 1 salta a girohold, si no ; Se mueve a girohold. ; Salto, si RA0 es 1 salta a girohold, si no ; Se mueve a giro. ; Salto, si RA2 es 1 salta a girohold, si no ; Se mueve a girodiscr. ; salto, si RA3 es 1 salta a girohold, si no ; Se mueve a diezpasos. ; Va a activar. ; salto, si RA4 es 1 salta a izq_z, pero si RA4

; Se mueve a izq_z. ; Se mueve a der. ; Llama a izq. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f.
9

call Retardo_20ms movlw b'10011100' movwf portb call Retardo_20ms movlw b'10011001' movwf portb call Retardo_20ms goto activar der movlw b'00011100' movwf portb call Retardo_20ms movlw b'00010110' movwf portb call Retardo_20ms movlw b'00010011' movwf portb call Retardo_20ms movlw b'00011001' movwf portb call Retardo_20ms goto activar girohold btfsc porta,0 continua saltando activar. goto activar

; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Se mueve a activar ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Se mueve a activar ; Salto, si RA0 es 1 salta a activar, si no

; Se mueve a activar.
10

btfsc porta,4 si RA4 es 0 salta der. goto izq_zhold goto derhold izq_zhold goto izqhold goto girohold izqhold movlw b'10100011' movwf portb call Retardo_20ms movlw b'10100110' movwf portb call Retardo_20ms movlw b'10101100' movwf portb call Retardo_20ms movlw b'10101001' movwf portb call Retardo_20ms goto girohold derhold movlw b'00101100' movwf portb call Retardo_20ms movlw b'00100110' movwf portb

; salto, si RA4 es 1 salta a izq_z, pero

; Se mueve a izq_zhold. ; Se mueve a derhold. ; Se mueve a izqhold. ; Se mueve a izq_zhold. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Se mueve a girohold ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20 milisegundo. ; Carga el numero a w. ; El contenido de w se mueve a f.
11

call Retardo_20ms milisegundo. movlw b'00100011' movwf portb call Retardo_20ms milisegundo. movlw b'00101001' movwf portb call Retardo_20ms milisegundo. goto girohold girodiscr btfsc porta,4 pero si RA4 es 0 salta der. goto izq_zdiscr goto derdiscr izq_zdiscr call izqdiscr goto activar izqdiscr movlw b'11000011' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. movlw b'11000110' movwf portb call Retardo_500ms milisegundo.

; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Se mueve a girohold ; salto, si RA4 es 1 salta a izq_z,

; Se mueve a izq_zdescr. ; Se mueve a derdiscr. ; Llama a izqdiscr. ; Se mueve a activar. ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

12

call Retardo_500ms milisegundo. movlw b'11001100' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. movlw b'11001001' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. goto activar derdiscr movlw b'01001100' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. movlw b'01000110' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. movlw b'01000011'

; Llama un retardo de 500

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Se mueve a activar ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Carga el numero a w.
13

movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. movlw b'01001001' movwf portb call Retardo_500ms milisegundo. call Retardo_500ms milisegundo. goto activar diezpasos btfsc porta,4 pero si RA4 es 0 salta der. goto izqpasos goto derpasos izq_zpasos call izqpasos goto diezpasos izqpasos movlw b'10000011' movwf portb call Retardo_20ms milisegundo. movlw b'10000110' movwf portb call Retardo_20ms milisegundo. movlw b'10001100'

; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 500

; Llama un retardo de 500

; Se mueve a activar ; salto, si RA4 es 1 salta a izq_z,

; Se mueve a izqpasos. ; Se mueve a derpasos. ; Llama a izqpasos. ; Se mueve a diezpaos ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w.
14

movwf portb call Retardo_20ms milisegundo. movlw b'10001001' movwf portb call Retardo_20ms milisegundo. movlw b'10000011' movwf portb call Retardo_20ms milisegundo. movlw b'10000110' movwf portb call Retardo_20ms milisegundo. movlw b'10001100' movwf portb call Retardo_20ms milisegundo. movlw b'10001001' movwf portb call Retardo_20ms milisegundo. movlw b'10000011' movwf portb call Retardo_20ms milisegundo.

; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

15

espera

movlw b'10000110' movwf portb call Retardo_20ms

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

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

; Se mueve a espera ; Se mueve a activar ; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

16

call Retardo_20ms milisegundo. movlw b'00000110' movwf portb call Retardo_20ms milisegundo. movlw b'00000011' movwf portb call Retardo_20ms milisegundo. movlw b'00001001' movwf portb call Retardo_20ms milisegundo. movlw b'00001100' movwf portb call Retardo_20ms milisegundo. espera1 movwf portb call Retardo_20ms milisegundo. btfss porta,0 pero si RA0 es 0 salta a activar. goto espera1 goto activar INCLUDE <retardos.inc> END movlw b'00000110'

; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; Carga el numero a w. ; El contenido de w se mueve a f. ; Llama un retardo de 20

; salto, si RA0 es 0 salta a espera1,

; Se mueve a espera1. ; Se mueve a activar. ; Librera de retardos ; Fin


17

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 continuacin se puede observar la configuracin del optoacoplado.

Figura 4. Configuracin de un Opto acoplador 4n35

La ltima etapa de nuestra prctica, es la etapa de potencia la cual consista de un Mosfet IRF 510 en el cual utilizamos la siguiente configuracin, 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

Figura 5. Configuracin de un Mosfet IRF510

Diagrama Elctrico del Circuito

19

Bibliografa

20

"MICROCONTROLADOR PIC16F84. Desarrollo de proyectos" Notas de Clase Control de Maquinas Electricas www.wikipedia.org www.electronicaradical.blogspot.mx/2011/03/triac.html Electrnica Industrial Timothy Maloney Ed. 3ra.

21

Anda mungkin juga menyukai