Proyecto de elevador de tres pisos con un microcontroladorDescripción completa
Views 186 Downloads 8 File size 235KB
Material -
PIC16F84A. Decodificador 74LS47 Un driver LB1649 con base. Un driver L293D con base. 6 resistencias de 330 Ohms. Un motor a pasos de 12 V. Madera. Tornillos y clavos. Una pila de 9V. Un eliminador de 12 V. Fuente de 5V.
Herramientas -
Taladro. Martillo. Sierra. Cautín. Desarmador. Soldadura
Diagrama de Conexión Control del Motor a Pasos (Elevador) Motor a Pasos PORTB bit 0
L293D
PORTB bit 1
PORTB bit 2
PORTB bit 3
M
Control Motor DC (Puerta Elevador)
PORTB bit 4 LB1649
PORTB bit 5
Circuito Físico
Botones
PIC16F84A
L293D
74LS47
LB1649
Salidas para Motor a Pasos
Salidas para Puerta de Elevador
1
;La entrada de bits es: ;PORTA bit 0 --> Planta Baja ;PORTA bit 1 --> Piso 1 ;PORTA bit 2 --> Piso 2 ; ;La salida de bits es: ; bit mas significativo ;PORTB = 00 00 ; Display 7 segmentos | Puerta elevador |
bit menos significativo 0000 Motor a pasos
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84 INCLUDE
CBLOCK 0x0C
;Variables a Utilizar tiempo puerta PB piso1 piso2 estado vueltas var1 var2 var3
ENDC
ORG
0
Inicio
bsf clrf movlw movwf bcf
STATUS,RP0 ;Configuración de Puertos TRISB b'00000111' TRISA STATUS,RP0
Inicializacion
movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf
d'255' tiempo d'255' puerta d'1' PB d'2' piso1 d'3' piso2 d'2' estado d'25' vueltas d'255' var2 d'25' var3
;Inicialización de Variables
Principal
btfsc goto btfsc goto
PORTA,0 PisoPB PORTA,1 PisoUno
;Menú principal, establece la acción ;de Planta baja, primer o segundo ;piso de acuerdo al boton presionado
2
btfsc goto goto
PORTA,2 PisoDos Principal
PisoPB
movf movwf movf call decfsz goto goto
estado,W var1 PB,W PuertasPB var1,F Abajo2PB AbajoPB
;Si es presionado el boton de PB ;determina la accion a realizar
PuertasPB
decfsz return movlw movwf call movlw movwf call movlw movwf movlw movwf goto
var1,F
;Si se esta en PB Abre y Cierra puertas
b'00010000' PORTB Retardo2 b'00100000' PORTB Retardo2 b'00000000' PORTB d'1' estado Principal
Puertas
movlw addwf call movlw subwf movlw addwf call movlw subwf return
b'00010000' PORTB,F Retardo2 b'00010000' PORTB,F b'00100000' PORTB,F Retardo2 b'00100000' PORTB,F
AbajoPB
movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call decfsz goto movlw movwf movlw
b'01001000' PORTB Retardo1 Retardo1 b'01000100' PORTB Retardo1 Retardo1 b'01000010' PORTB Retardo1 Retardo1 b'01000001' PORTB Retardo1 Retardo1 vueltas,F AbajoPB d'1' estado d'25'
;Función independiente que abre y cierra ;puertas en cualquier estado
;Si se esta en piso 1 baja
3
movwf movlw movf call goto
vueltas b'00000000' PORTB Puertas Principal
Abajo2PB
movf vueltas,W addwf vueltas,F goto Abajo2PB_1
;Si se esta en piso 2 baja el doble ;vueltas=vueltas+vueltas
Abajo2PB_1
movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call decfsz goto movlw movwf movlw movwf movlw movf call goto
b'10001000' PORTB Retardo1 Retardo1 b'10000100' PORTB Retardo1 Retardo1 b'10000010' PORTB Retardo1 Retardo1 b'10000001' PORTB Retardo1 Retardo1 vueltas,F Abajo2PB_1 d'1' estado d'25' vueltas b'00000000' PORTB Puertas Principal
;Mueve a PB desde piso 2
PisoUno
movf movwf movf call decfsz goto goto
estado,W var1 piso1,W P1PB var1,F P1P2 P1aP1
;Si es presionado el boton de Piso1 ;determina la accion a realizar
P1PB
decfsz var1,F return
;se presiona piso1 ¿estado PB?
P1PB1
movlw movwf call call movlw movwf call call movlw movwf call call
;Se eleva al piso 1
b'00000001' PORTB Retardo1 Retardo1 b'00000010' PORTB Retardo1 Retardo1 b'00000100' PORTB Retardo1 Retardo1
4
movlw movwf call call decfsz goto movlw movwf movlw movwf movlw movf call goto
b'00001000' PORTB Retardo1 Retardo1 vueltas,F P1PB1 d'2' estado d'25' vueltas b'01000000' PORTB Puertas Principal
P1aP1
movlw movwf call movlw movwf call movlw movwf movlw movwf goto
b'01010000' PORTB Retardo2 b'01100000' PORTB Retardo2 b'01000000' PORTB d'2' estado Principal
;abre y cierra puerta si estado=piso1 ; y boton presionado es piso1
P1P2
movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call decfsz goto movlw movwf movlw movwf movlw movf call goto
b'10001000' PORTB Retardo1 Retardo1 b'10000100' PORTB Retardo1 Retardo1 b'10000010' PORTB Retardo1 Retardo1 b'10000001' PORTB Retardo1 Retardo1 vueltas,F P1P2 d'2' estado d'25' vueltas b'01000000' PORTB Puertas Principal
;Si estado=piso2 y presiona piso1 ;baja a piso1
PisoDos
movf movwf movf call decfsz goto
estado,W var1 piso2,W P2PB var1,F P2aP2
;Si es presionado el boton de Piso2 ;determina la accion a realizar
5
goto
P2P1
decfsz return movf addwf goto
var1,F vueltas,W vueltas,F P2PB_1
P2PB_1
movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call decfsz goto movlw movwf movlw movwf movlw movf call goto
b'00000001' PORTB Retardo1 Retardo1 b'00000010' PORTB Retardo1 Retardo1 b'00000100' PORTB Retardo1 Retardo1 b'00001000' PORTB Retardo1 Retardo1 vueltas,F P2PB_1 d'3' estado d'25' vueltas b'00000000' PORTB Puertas Principal
P2P1
movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call decfsz goto movlw movwf movlw movwf movlw movf call
b'01000001' PORTB Retardo1 Retardo1 b'01000010' PORTB Retardo1 Retardo1 b'01000100' PORTB Retardo1 Retardo1 b'01001000' PORTB Retardo1 Retardo1 vueltas,F P2P1 d'3' estado d'25' vueltas b'10000000' PORTB Puertas
P2PB
;Si estado=1 y boton=piso2 entonces ;sube hasta piso2
;Si estado=2 y boton=piso2 entonces ;sube de piso1 a piso2
6
goto
Principal
P2aP2
movlw movwf call movlw movwf call movlw movwf movlw movwf goto
b'10010000' PORTB Retardo2 b'10100000' PORTB Retardo2 b'10000000' PORTB d'3' estado Principal
Retardo1
decfsz goto movlw movwf movlw movwf return
tiempo,F Retardo11 d'255' tiempo d'255' var2
Retardo11
decfsz goto movlw movwf goto
var2,F Retardo11 d'255' var2 Retardo1
Retardo2
decfsz goto movlw movwf movlw movwf return
puerta,F Retardo22 d'255' puerta d'255' var2
Retardo22
decfsz goto movlw movwf goto
var2,F Retardo222 d'255' var2 Retardo2
Retardo222
decfsz goto movlw movwf goto
var3,F Retardo222 d'25' var3 Retardo22
;si estado=3 y boton=piso2 entonces ;abre y cierra puerta
END
7