Hola
Yo este año he empezado a dar microprocesadores y su programacion en ensamblador. Asi que me parecio interesante y ya tengo algunas cosas para seguir aprendiendo a programar ensamblador con PIC's.
Mi primer proyecto:
Mover un motor PAP (paso a paso) con un PIC.Necesitamos:
1-Un microcontrolador (yo he usado un 16F628A de Microchip).
2-Un programador de microcontroladores (compre uno por ebay).
3-Motor PAP unipolar (se consigue facilmente en escaneres y/o impresoras).
4-Amplificador de potencia (integrado ULN2003).
5-Protoboard con cables para montarlo con facilidad.
6-Fuente de alimentacion (se puede usar la de un PC viejo).
Motor PAP: Se trata de un motor electrico como todos los demas pero con una diferencia. Posee en su interior mas de un bobinado y por lo tanto mas de 2 cables para hacer que se mueva. Gracias a esto podemos conseguir una alta precision de movimiento y/o giros de un determinado numero de grados.
Hay de 2 tipos, los bipolares y los unipolares. Se diferencian por sus bobinados y que el bipolar es de 4 cables y el unipolar de 5 o 6 cables. He usado el unipolar porque me parece mas sencillo, pero tambien se puede con el otro tipo.
Pagina con informacion-->
http://www.todorobot.com.ar/informacion ... torial.htmMetodo: Si os fijais en el funcionamiento del motor en la pagina de antes, hay que seguir una combinacion de pasos para conseguir el giro del motor. Cambiar de una combinacion a otra que le sigue se llama "paso" y sera de alrededor de 1-3 grados gracias a la reductora que suelen tener (engranajes que convierten un giro grande en mas pequeño).
Entonces necesitamos crear esas señales a partir del microcontrolador (PIC 16F628A en mi caso) y amplificar esos estimulos ya que el motor consume mas intensidad de la que puede suministrar el PIC (necesitamos en mi caso 200-250mA).
La serie de combinaciones para hacer que gire seria esta:
0011 - 1001 - 1100 - 0110 ... y un 1 siempre en el cable comun. Este seria el codigo que realiza dicha tarea:
LIST p=16F628a
radix hex
__config 0x3D18
;Declaracion de constantes
RP0 EQU 5
CMCON EQU 0x1F
STATUS EQU 0x03
PORTB EQU 0x06
CNT1 EQU 0x20
CNT2 EQU 0x21
C equ 00h ;flag de acarreo
ORG 0x00 ;Vector Reset
GOTO INICIO
;****************************************
;Configuracion de puertos
;****************************************
ORG 0x05
INICIO MOVLW 0x07 ;Desactivar comparadores analogicos
MOVWF CMCON
BSF STATUS,RP0 ;Cambio al banco 1
CLRF PORTB ;Puerto B como salida
BCF STATUS,RP0 ;Cambio al banco 0
BCF STATUS, C ;Desactivar el carry para rotar bien
;Programa principal
MOVLW b'11001100'
MOVWF PORTB
ROTAR CALL DELAY
RRF PORTB,F
GOTO ROTAR
;Rutina de retardo
DELAY MOVLW 0x4E
MOVWF CNT1
MOVLW 0x12
MOVWF CNT2
DELAY1 DECFSZ CNT1, F
GOTO $+2
DECFSZ CNT2, F
GOTO DELAY1
GOTO $+1
NOP
RETURN
END
Aun no domino la programacion de PIC's, acabo de empezar. Es un programa simple con el que podemos empezar en esto sin hacer el tipico "primer programa" que enciende y apaga un LED.
Conexionado: En el codigo hemos asignado el puerto B como salidas. Cogemos el catalogo del PIC y miramos el patillaje del microcontrolador (el catalogo es para el diseñador como la biblia para el cristiano
). Conectamos la alimentacion a la via de 3,3 o 5V de la fuente de PC (este PIC funciona entre 2 y 5,5V creo recordar, lo pone en el catalogo, como no).Conectamos las cuatro primeras patillas del puerto B al integrado ULN2003 que amplificara esas señales (tambien se puede conectar a las ultimas 4 patillas. Viendo el codigo, se ve que es simetrico). El amplificador donde reciba un 0 pondra un 1 con capacidad de dar hasta 500mA (son como puertas NOT). Asi que, donde haya un 1, habra un 0 en el motor y junto que en el cable comun lo alimentamos a 12V crearemos una diferencia de potencial. Estimulamos asi las bobinas internas.
Esquema hecho con el paint:
Algunas cosas para los principiantes seran confusas y otras para los expertos muy tontas. Para eso lo he posteado, para debatir, exponer dudas, explicar el funcionamiento y para que la gente se anime a exponer los proyectos.
Saludos!!