domingo, 15 de julio de 2012
MATERIAL:
1-L293D.
1- Motor Bipolar 24v.
1- PIC 16f84a.
1- Crystal 4Mhz.
2- Capacitores cerámicos de 22pf.
2- Resistores de 10k.
2- Push button.
Un motor paso a paso gira en función de una secuencia de pulsos aplicados a sus devanados. El eje del motor gira un determinado ángulo por cada impulso de entrada. Los incrementos de rotación o pasos se miden en grados.
Motor Bipolar
De este motor salen cuatro hilos conectados al circuito del control, que realiza la función de cuatro interruptores electrónicos dobles, se pueden obtener las secuencias para que el motor gire de un lado o del otro.
Vccs2 es el voltaje del motor, EN 1,2,3,4 poner a 1.
Circuito simulado en proteus:
Giro a la derecha
Half step
Modo medio paso, el rotor avanza medio paso por cada pulso de exitacion. presenta como principal ventaja una mayor resolucion de paso.
Al presionar los dos pushbutton se activa este modo.
Giro a la izquierda
Modo paso completo, avanza un paso por cada pulso de exitacion.
Al presionar el primer pushbutton se activa este modo.
Video de la simulación Proteus:
Programa en asm.
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSCLIST P=16F84A
INCLUDE<P16F84A.INC>
cblock
endc
status equ 0x03
porta equ 0x05
portb equ 0x06
trisa equ 0x85
trisb equ 0x86
org 0
inicio
bsf status,5
bsf porta,0
bsf porta,1
clrf portb
bcf status,5
activar
btfss porta,0
goto giro
clrf portb
goto fin
giro
btfsc porta,1
goto izq_z
call der
goto fin
izq_z
call izq
fin
goto activar
izq
movlw b'00000101'
movwf portb
call Retardo_20ms
movlw b'00000110'
movwf portb
call Retardo_20ms
movlw b'00001010'
movwf portb
call Retardo_20ms
movlw b'00001001'
movwf portb
call Retardo_20ms
return
der
movlw b'00001001'
movwf portb
call Retardo_20ms
movlw b'00001000'
movwf portb
call Retardo_20ms
movlw b'00001010'
movwf portb
call Retardo_20ms
movlw b'00000010'
movwf portb
call Retardo_20ms
movlw b'00000110'
movwf portb
call Retardo_20ms
movlw b'00000100'
movwf portb
call Retardo_20ms
movlw b'00000101'
movwf portb
call Retardo_20ms
movlw b'00000001'
movwf portb
call Retardo_20ms
return
INCLUDE <retardos.inc>
end
Para aumentar o disminuir el tiempo del disparo utilizar los tiempos de la librería de retardos.
DESCARGAR SIMULACION, ASM Y HEX:
REFERENCIAS:
- Microcontrolador 16f84 desarrollo de proyectos, pag. 481-504
Etiquetas:
lenguje asm,
practicas simuladas
Suscribirse a:
Enviar comentarios (Atom)
24 comentarios:
y como agrego las librerías de retardo
por lo regular si estan los archivos en la misma carpeta se compilan ambos, tambien si empiezas un proyecto wizard desde alli puedes agregar la libreria de retardo
olle amigo y si quiero contar las vueltas del motor y ponerlas en un display o en una lcd como le puedo hacer
por lo regular se utiliza un sensor de efecto hall y se tendria que hacer un contador mediante el pic para que cuente las vueltas. en el blog hay dos ejemplos de contadores uno con pic otro con integrados.
suban de nuevo el archivo porque el link ya esta caido :( porfa
ya cargue de nuevo el archivo ya puedes descargarlo
y si quiero que gire "x" numero de vueltas... osea que quede en una posicion especifica lo que pretendo mover con el motor?
este programa al activar un 1 daria una vuelta, si dejas presionado el push sigue girando, la opcion mas facil, por ejemplo si quieres que de 3 vueltas al activar un 1 es copiar el codigo tres veces tambien tiene que ver con tu motor bipolar y cuantos grados por paso avanza.
Que tal apues me gustaria saber si esto me puede servir esoty utilizando igual un l293d para mover el motor paso a paso pero despues nesesito conectarlo al puerto paralelo no se si me puedan ayudar por favor!
bueno si quieres una comunicacion serial te recomiendo que utilices otro pic que tenga tx y rx, como el 18f887 (checar el libro de mikro C lo encuentras en este blog), si lo quieres realizar con 18f84a hay un ejemplo de comunicacion serial en el libro del 16f84 desarrollo de proyectos. No se si esta es tu idea o a menos que quieras solo madar pulsos por el puerto paralelo que al oprimir un boton de tu interfaz se active alguno de los pines del puerto paralelo, si este es el caso solo remplaza los pushbutton por los cables del puerto.
Hola amigo, me puedes decir a donde van conectadas los resistores 1 y 2 del diagrama por favor, imagino yo que a +5v, y también quiero saber que aplicacion utilizaste para crear el programa para el micro.
Gracias por tu aporte me esta ayudando mucho
las resistencias van a la fuente con que alimentas el pic por lo regular es de 5v no se ve en el digrama porque la alimentacion del pic en proteus ya esta implicita, y el compilador utilizado fue mplab el cual puedes descargar de la pagina de microchip es gratuito
Hola robot gracias por tu pronta respuesta y por tu ayuda.
Una cosa más, quiero corregir que en la imagen del diagrama del L293d tienes los +5v en el pin 8 que es alimentación del motor, y en la alimentación lógica del circuito tenes de 4,5-36v es decir están inversas según el datasheet, puede enredar a alguien.
De nuevo gracias por el aporte.
tienes razon lo habia revisado la imagen ya lo corregi lo unico comun es la tierra.
como hago para variar la velocidad a un motor paso a paso 4 cables
Como hago para k el motor gire al otro lado sin dejar apretado el push button
buenas amigo con este programa y circuito, podria controlar dos motores dc, podria regular la velocidad y sentido de giro
cuando armo este circuito y le agrego un motor bipolar pm25s-048 no funciona. Sabes a que se debe? Agradecerìa tu respuesta por favor
Hola, saben como puedo hacer este arreglo a un motor de CD, por favor.
Esta muy bien tu programa, gracias por la aportación.
suban de nuevo el link porfavor
Algun programa en pic 16f84a que realice la funcion de dar 3 seg hacia la izquierda y automaticamente cambie a 5 o 10 segundos hacia la derecha
Se los agradeceria mucho si me lo proporcionaran
Hola Robot,mi nombre es Carlos. No sé di todavía uses este blog, me ayudó mucho tu código y circuito. Pero tengo una duda, cuando lo simulo en Proteus arranca bien pero luego me aparece este error y no sé si sepas o alguien sepa de qué se trata...
-------------------------------------------------------------------------------
[PIC16 MEMORIA] PC = 0x005E. Intentará escribir posición de memoria sin aplicarse 0x006D con 0xF9 ignorado. [U1]
[MEMORIA PIC16] PC = 0x0060. Intentar leer la posición de memoria sin aplicarse 0x006D ignorada. [U1]
-----------------------------------------------------------------------------
por que me marca que no esta las bibliotecas de retard
EXELENTE GRACIAS
Publicar un comentario