domingo, 16 de diciembre de 2007

Motor Paso

En nuestro trabajo relacionado al motor paso a paso, hemos decidido usar un motor unipolar por las siguientes ventajas: Menor costo en el circuito de control, y son más factibles y fáciles el manejo de dichos motores.

Veamos a continuación como usamos el motor:

Empezamos definiendo las patitas A,B,C, y D del motor de la siguiente manera:

Para identificar el cable común:
Con el multímetro en modo ohmetro comenzamos a medir resistencias por todos los cables y para mayor sorpresa solo se obtienen tres valores distintos y que se repiten varias veces
- 47 ohm
- 100 ohm
100 Ohm es el mayor valor por lo tanto corresponde a los extremos de las bobinas, es decir A-B o bien C-D.

47 Ohm es aproximadamente la mitad de 100, por tanto esa debe ser la resistencia entre el terminal común y ambos extremos de una bobina, por ejemplo entre A-Com1 o B-Com1, o bien en la otra bobina, C-Com2 o D-Com2.

Lo que queda pendiente es cuando no marca nada, y bueno es que en ese momento se midieron los cables de bobinas distintas.

Ahora suponte que unes los terminales Com1 y Com2, entonces nos quedamos con un motor de 5 cables.
Para identificar A, B, C y D:
Como unimos los cables comunes de cada bobina los cuatro cables restantes serán A, B, C y D, se conecta el terminal común al positivo de la fuente de alimentación, toma uno de los 4 cables que te quedaron, lo bautizas como A y lo mandas a GND, el motor quedará enclavado en una sola posición, ahora se sostiene otro de los tres que te quedaron, el motor dará un primer paso.

Aquí pueden ocurrir 3 cosas
-Que el motor gire a derecha, lo bautizas como B
-Que gire a izquierda, lo nombras D
-Si no pasa nada es C
Si este último cable era B entonces lo desconectamos y mantenemos A Conectado se buscas D, es decir que gire a izquierda y bueno, C es el que quedó libre.
Luego de conocer las patitas del motor procedemos a armar el circuito, y para esto es necesario contar con un ULN2003, que se encuentra en el mercado a un valor de 1.5 soles, este integrado nos servirá par manejar el motor paso, se trata de un array de transistores Dárlington capaz de manejar hasta 500mA en sus salida.


Veamos los esquemas a continuación:


Para controlar el motor paso decidimos hacerlo con un microcontrolador Pic16f84A, que es de fácil manejo y muy económico, con un oscilador de Cristal de 4 Mhz, Para el ejemplo usamos 4 entradas y 4 salidas, las 4 primeras (Port A) fueron para los switch de control, estos hacían girar el motor en ángulos de 360º, 180º, 90º y en sentido contrario, las otras cuatro salidas (Port B) fueron usadas para controlar el motor, Tal como se muestran en las imágenes a continuación.







El programa de control en lenguaje Assembler es el siguiente:

; Programa de Control para un motor paso

list p=16f84a
include
include

cblock 0xC
AUX1
AUX2
AUX3
AUX4
endc

org 0000h
goto inicio
org 5
goto inicio


;**********declaracion de variables*********
inicio
bsf STATUS,5
movlw b'11111111'
movwf TRISB
clrf TRISA
bcf STATUS,5
clrf PORTA
;***********programa principal************

principal
clrf PORTB
btfss PORTB,1
goto pasos_360
btfss PORTB,2
goto pasos_180
btfss PORTB,3
goto pasos_90
btfss PORTB,4
goto pasos_reversa
goto principal


;************Vuelta completa********
pasos_360
movlw .13
movwf AUX1
loop1
decfsz AUX1
goto loop2
clrf PORTA
goto principal
loop2
call pasos
goto loop1

;***********Media Vuelta************
pasos_180
movlw .7
movwf AUX2
loop3
decfsz AUX2
goto loop4
clrf PORTA
goto principal
loop4
call pasos
goto loop3


;********Cuarto de Vuelta***********
pasos_90
movlw .4
movwf AUX3
loop5
decfsz AUX3
goto loop6
clrf PORTA
goto principal
loop6
call pasos
goto loop5

;**************Reversa***************
pasos_reversa
movlw .13
movwf AUX4
loop7
decfsz AUX4
goto loop8
clrf PORTA
goto principal
loop8
call pasos
goto loop7

;***********Rutina de pasos***********
pasos
movlw b'00001000'
movwf PORTA
delay_ms .50
movlw b'00001001'
movwf PORTA
delay_ms .50
movlw b'00000001'
movwf PORTA
delay_ms .50
movlw b'00000011'
movwf PORTA
delay_ms .50
movlw b'00000010'
movwf PORTA
delay_ms .50
movlw b'00000110'
movwf PORTA
delay_ms .50
movlw b'00000100'
movwf PORTA
delay_ms .50
movlw b'00001100'
movwf PORTA
delay_ms .50
return

include
END

Este programa podria ser el inicio de un control mucho más completo, hoy en día existen muchas aplicaciones las cuales podríamos destacar y controlarlos del mismo modo que nuestra aplicación.

• Taxímetros
• Brazo y Robots completos.
• Patrón mecánico de velocidad angular.
• Máquinas de escribir electrónicas.
• Posicionamiento de válvulas en controles industriales.
• Posicionamiento de piezas en general.

No hay comentarios: