Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ascensor
Ascensor
Comando de un ascensor
de cuatro pisos
Pgina 1
08/08/2008
INDICE
1. Introduccin
1.1
Propuesta inicial
1.2
Modificaciones y propuesta realizada
2. Diseo y armado del kit (Tarjeta entrenadora) del MC68HC11E1CFN2
2.1
Caractersticas del MC68HC11E1CFN2
2.2
Circuitos de la tarjeta
2.2.1 Circuito de alimentacin
2.2.2 Circuito de clock
2.2.3 Circuito del reset
2.2.4 Circuito de transmisin serie asincrnica
2.2.5 Circuito de interrupciones externas
2.2.5 Circuito de seleccin de modos de arranque
2.2.6 Conexin de VRL y VRH
2.2.7 Referencia para el conversor A/D
2.3
Circuito del motor paso a paso
2.4
Diseo y armado de las placas utilizadas por la planta
2.4.1 Conexin de leds
2.4.2 Conexin de pulsadores de entrada
3. Metodologa de resolucin
3.1
Diseo del programa ascensor para el HC11
3.2
Distribucin de puertos
3.3
Esquema de funcionamiento
4. Diagramas de flujo
5. Cdigo en lenguaje Assembler
6. Conclusin
7. Bibliografa
Gonzalo Cnepa
Pgina 2
08/08/2008
1.
1.1
Introduccin
Propuesta inicial:
Gonzalo Cnepa
Pgina 3
08/08/2008
1.2
Gonzalo Cnepa
Pgina 4
08/08/2008
2.
2.1
Grafico 2
Gonzalo Cnepa
Pgina 5
08/08/2008
2.2
Circuitos de la tarjeta
Gonzalo Cnepa
Pgina 6
08/08/2008
Gonzalo Cnepa
Pgina 7
08/08/2008
Gonzalo Cnepa
Pgina 8
08/08/2008
2.3
Gonzalo Cnepa
Pgina 9
08/08/2008
Gonzalo Cnepa
Pgina 10
08/08/2008
3.
3.1
Metodologa de resolucin
En primer lugar hay que tener en cuenta que un motor paso a paso se
controla a travs de una secuencia. Esta secuencia puede ser muy bsica o muy
compleja dependiendo de la exactitud buscada. Para el caso del ascensor la
secuencia de subida ser A,B,C,D y la de bajada ser D,C,B,A (ver Circuito del
motor paso a paso)
El ascensor tiene una parada de emergencia, la cual se ejecutar a travs
de la interrupcin IRQ
3.2
?
?
?
?
?
3.3
Distribucin de puertos
El PORTA no ser utilizado puesto que es de 3 entradas y cuatro salidas
fijas.
En los 4 bits menos significativos del PORTB se controlar el motor paso a
paso y en los 4 ms significativos se encendern los leds indicadores. El
PORT es configurado enteramente como salida
En los 7 bits ms significativos del PORTC se controlar el Display de 7
segmentos (el punto no se utiliza).
Teniendo en cuenta las limitaciones del PORTD, los 4 bits tiles (bit 2, bit 3,
bit 4 y bit 5) sern utilizados para los fines de carrera. El PORT es
configurado enteramente como entrada
En los 4 bits menos significativos del PORTE sern utilizados para los
pulsadores internos y en los 4 ms significativos para los pulsadores de
llamada.
Esquema de funcionamiento
Pgina 11
08/08/2008
4. Diagramas de flujo
PROGRAMA PRINCIPAL
PORTD = 00?
PORTD =
00000100 B?
SI
Procedimiento
INICIALIZACION
SI
DISPLAY : =
N_CERO
CONSTANTES MOTOR:
BAJAR = 01
SUBIR = 02
QUIETO = 04
PORTD =
00001000 B?
SI
DISPLAY : =
N_UNO
SI
DISPLAY : =
N_DOS
PORTD =
00010000 B?
CONSTANTES DYSPLAY:
N_CERO : =01111110B
N_UNO : = 00001100B
N_DOS : = 10110110B
N_TRES : = 10011110B
VARIABLES
SI
DISPLAY : =
N_TRES
PORTD =
00100000 B?
PORTC : = DISPLAY
CONFIGURACIONES
PULSADORES
=0
Gonzalo Cnepa
NO
Subrutina
ESCANEAR
PULSADORES
Pgina 12
DDRC : = 11111111
DDRD : = 00000000
OPTION : = 00100000
habilitar interrupciones
PUNTERO A PILA : = $01F8
08/08/2008
SI
MOTOR =
BAJAR?
SI
MOTOR =
SUBIR?
SECUENCIA
= 00010000B?
SI
SECUENCIA
= 00000000B?
SI
Rotar la secuencia
hacia la izquierda
(LSL)
Rotar la secuencia
hacia la derecha
(LSR)
SECUENCIA : =
00000001B
SECUENCIA : =
00001000B
SI
MOTOR =
QUIETO?
PORTB : = 0
Desconecta el motor si no se
est utilizando.
MOTOR = QUIETO
OR
COND_ESPERA = 1?
SI
COND_ESPERA : = 0
PORTD = 0
&
PULSADORES ?0?
Gonzalo Cnepa
Pgina 13
SI
Subrutina ESPERA
08/08/2008
Subrutina
RETARDO
SI
PULSADORES = 0?
Procedimiento
DEC_CONTADOR
COD_ESPERA : = 0
CONTADOR : = FFH
SUBRUTINA CARGAR_PULSADORES
SUBRUTINA GUARDAR_PULSADORES
B : = QUIETO
Gonzalo Cnepa
Pgina 14
08/08/2008
PROCEDIMIENTO ESPERA
b = 20 ; b > 0 ; b : = b - 1
Subrutina
RETARDO
Subrutina
REFRESH LEDS
Subrutina
CARGAR PULSADORES
SUBRUTINA RETARDO
y = 6FFFH ; y > 0 ; i : = i - 1
y : = 0100 H
PROCEDIMIENTO INICIALIZACIN
MOTOR : = BAJANDO
PULSADORES : = 00001000B
Gonzalo Cnepa
Pgina 15
08/08/2008
PROCEDIMIENTO DEC_CONTADOR
COND_ESPERA : = 01
CONTADOR : = CONTADOR - 1
SI
CONTADOR = 0?
PULSADORES : = 00001000
A : = PULSADORES
A : = (PULSADORES) OR (A)
Gonzalo Cnepa
Pgina 16
08/08/2008
PULSADORES
= 10000000B?
SI
PULSADORES
= 01000000B?
SI
PULSADORES
= 00100000B?
Gonzalo Cnepa
SI
PULSADORES
= 00010000B?
SI
PULSADORES
= 00001000B?
SI
PULSADORES
= 00000100B?
SI
Procedimiento
PISO_CERO_LLAMADA
Procedimiento
PISO_UNO_LLAMADA
Procedimiento
PISO_DOS_LLAMADA
Procedimiento
PISO_TRES_LLAMADA
Procedimiento PISO_CERO
Procedimiento PISO_UNO
Pgina 17
08/08/2008
PULSADORES
= 00000010B?
SI
PULSADORES
= 00000001B?
SI
Procedimiento PISO_DOS
Procedimiento PISO_TRES
MOTOR : = B
* SALTO INCONDICIONAL 1
PROCEDIMIENTO PISO_CERO_LLAMADA
PORTD =
00000100B?
SI
A : = 01111111B
Subrutina GUARDAR_PULSADORES
PORTD =
(00001000B
00010000B
00100000B)?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 18
08/08/2008
PROCEDIMIENTO PISO_UNO_LLAMADA
PORTD =
00000100B?
SI
PORTD =
00001000B?
SI
B : = SUBIENDO
PULSADORES
= (00010000B
00100000 B)?
SI
MOTOR =
SUBIENDO?
A : = 10111111B
Subrutina GUARDAR_PULSADORES
* SALTO INCONDICIONAL 1
PORTD =
(00010000B
00100000B)?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 19
08/08/2008
SI
PROCEDIMIENTO PISO_DOS_LLAMADA
PORTD =
(00000100B
00001000B)?
SI
PORTD =
00010000B?
SI
B : = SUBIENDO
SI
PULSADORE
S = 00010000B ?
MOTOR =
SUBIENDO?
A : = 11011111B
Subrutina GUARDAR_PULSADORES
* SALTO INCONDICIONAL 1
PORTD =
00100000B?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 20
08/08/2008
SI
PROCEDIMIENTO PISO_TRES_LLAMADA
PORTD =
(00000100B
00001000B
00010000B)?
PORTD =
00100000B?
SI
B : = SUBIENDO
SI
A : = 11110111B
Subrutina GUARDAR_PULSADORES
PROCEDIMIENTO PISO_CERO
PORTD =
00000100B?
SI
A : = 11110111B
Subrutina GUARDAR_PULSADORES
PORTD =
(00001000B
00010000B
00100000B)?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 21
08/08/2008
PROCEDIMIENTO PISO_UNO
PORTD =
00000100B?
SI
PORTD =
00001000B?
SI
B : = SUBIENDO
A : = 10111111B
Subrutina GUARDAR_PULSADORES
* SALTO INCONDICIONAL 1
PORTD =
(00010000B
00100000B)?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 22
08/08/2008
PROCEDIMIENTO PISO_DOS
PORTD =
(00000100B
00001000B)?
SI
PORTD =
00010000B?
SI
B : = SUBIENDO
A : = 11111101B
Subrutina GUARDAR_PULSADORES
* SALTO INCONDICIONAL 1
PORTD =
00100000B?
Gonzalo Cnepa
SI
B : = BAJANDO
Pgina 23
08/08/2008
PROCEDIMIENTO PISO_TRES
PORTD =
(00000100B
00001000B
00010000B)?
PORTD =
00100000B?
SI
B : = SUBIENDO
SI
A : = 11111110B
Subrutina GUARDAR_PULSADORES
Gonzalo Cnepa
Pgina 24
08/08/2008
INTERRUPCIN IRQ
Subrutina RETARDO
A : = MOTOR
SI
MOTOR =
QUIETO?
NO
MOTOR_INTERRUMPIDO : = MOTOR
MOTOR : = MOTOR_INTERRUMPIDO
MOTOR : = QUIETO
Gonzalo Cnepa
Pgina 25
08/08/2008
6. Conclusin
El proyecto realizado cost mucho tiempo y trabajo, pero ver la planta
terminada y funcionando es la recompensa al esfuerzo.
Los conocimientos adquiridos son muy amplios, tanto en electrnica con la
realizacin del kit como tambin a la hora de programar y crear un programa
extenso en solo 512 bytes de memoria.
Tambin fue muy gratificante por primera vez controlar un motor paso a
paso, que si bien se lo control con la secuencia ms bsica debido al escaso
torque del mismo, me enter de otros mtodos
Si bien el proyecto es muy lgico y algortmico, result realmente complejo
en el momento del diseo poder imaginar como realizar la memoria en caso de
presionar ms de un pulsador a la vez
En definitiva fue una gran experiencia y muy gratificante desde los
momentos en que empez a funcionar.
Gonzalo Cnepa
Pgina 26
08/08/2008
7. Bibliografa
?
Gonzalo Cnepa
Pgina 27
08/08/2008