Está en la página 1de 27

Universidad Nacional de Quilmes Ing.

Automatizacin y Control Industrial

Diseo de Microcontroladores Proyecto final

Comando de un ascensor
de cuatro pisos

Alumno: Gonzalo Cnepa


Profesor: Jos Juarez
Gonzalo Cnepa

Pgina 1

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

1.
1.1

Introduccin

Propuesta inicial:

Inicialmente se basaba en un motor paso a paso con una polea empotrada y


comunicada con otra a travs de una correa la cual se fijaba el cubculo del
ascensor y dos guas laterales impedan el desbordamiento del mismo.

Gonzalo Cnepa

Pgina 3

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

1.2

Modificaciones y propuesta realizada:

La propuesta inicial se cambi debido a la complicacin a la hora de


conseguir sistemas poleas con correas dentadas de tamao compatibles con el
proyecto; y la solucin encontrada fue utilizar el sistema del carro de una
impresora
Adems del cubculo del ascensor el proyecto cuenta con un display de 7
segmentos, 4 leds indicadores y 9 pulsadores (4 para llamada, 4 de ir a piso o
internos y una parada de emergencia). Los leds indicadores reflejan que
pulsador de llamada o de ir a piso fue activado y el display de 7 segmentos
indica en que piso est el cubculo.
Los pulsadores de llamada se diferencian de los de ir a piso en el caso
de que haya mltiples llamadas (llamadas desde varios pisos a la vez). En este
caso, el ascensor debe ir a buscar al pasajero del piso mayor y luego recoger a los
dems pasajeros. Esto se debe a que lo ms probable es que todo aquel que llame
al ascensor desee dirigirse a planta baja. En cambio los pulsadores de ir a piso
(internos al cubculo del ascensor) solicitaran el programa ms inteligente para
cada situacin particular
El microcontrolador se comunicar con la planta a travs de cuatro fines de
carrera que le indicarn en que piso est posicionado el cubculo.
Nota: Si bien el motor ideal para el sistema es un motor de corriente continua (DC
motor), el proyecto est pensado para utilizar un motor paso a paso. Esto se debe
a que por motivo personal de estudio decid aprender a controlar este tipo de
motores.
Los leds indicadores estn compartidos entre los pulsadores de llamada y los
internos. Si bien esto no tiene sentido para el caso real, es muy ilustrativo para
observar el correcto funcionamiento de la planta

Gonzalo Cnepa

Pgina 4

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

2.
2.1

Diseo y armado del kit del


MC68HC11E1CFN2

Caractersticas del MC68HC11E1CFN2

El microcontrolador MC68HC11E1CFN2 es de encapsulado


PLCC (Grafico 2) y se diferencia de otro microcontrolador de la
familia E1 de la siguiente forma:

Grafico 2

Las caractersticas de memoria del microcontrolador se detallan en la


siguiente tabla:

Gonzalo Cnepa

Pgina 5

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

Finalmente, la distribucin de puertos de Entrada/Salida est dada en la


siguiente tabla:

Para el funcionamien to del ascensor el PORTC debe setearse como salida y


el PORTD como entrada.
Nota: El PORTD tiene la particularidad de que el bit 0 y el bit 1 estn compartidos
con la transmisin de datos del puerto serie (necesario para cargar un programa)
por lo que para su utilizacin como bit de entrada o salida debe colocarse un
jumper en la creacin del kit. En el caso particular de este kit estos bits solo sern
utilizados para el puerto serie

2.2

Circuitos de la tarjeta

2.2.1 Circuito de alimentacin

Donde a Vcc In se conecta una fuente estndar de 9V


C1 = 0,33 F
C2 = 0,01 F
C3 = 0,1 F
C2 = 1 F

Gonzalo Cnepa

Pgina 6

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

El MC7805 es un regulador de voltaje que entrega un voltaje de 5V a partir de 9V


y permite una circulacin mxima de corriente de 500 mA. Si los valores de
corriente son cercanos a este se aconseja incorporar un disipador
2.2.2 Circuito de clock
En donde
C1 = C2 = 22 pF
R = 10 MO
Y el cristal es de 8MHz

2.2.3 Circuito del reset

2.2.4 Circuito de transmisin serie asincrnica

Los capacitores empleados son electrolticos de 22 F y 25 V

Gonzalo Cnepa

Pgina 7

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

2.2.5 Circuito de interrupciones externas

2.2.5 Circuito de seleccin de modos de arranque


El circuito se repite para MODB

2.2.6 Conexin de VRL y VRH

VRL est directamente conectado a GND

2.2.7 Referencia para el conversor A/D

Gonzalo Cnepa

Pgina 8

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

2.3

Circuito del motor paso a paso

Las 4 resistencias son de 4K7


En la entrada A corresponde al bit 0 del PORTB
B corresponde al bit 1 del PORTB
C corresponde al bit 2 del PORTB
D corresponde al bit 3 del PORTB
El integrado ULN2803 es un arreglo de transistores darligston con
VccALIMENTACIN = 5V y VccMOTOR < 50V y una limitacin de corriente mxima de
500mA. Cumple la funcin de separar el circuito de potencia del motor sin la
necesidad de la utilizacin de 4 transistores individuales

2.4.1 Conexin de leds


Los leds se conectan con una resistencia en serie que limita la
circulacin de corriente a travs del led

Gonzalo Cnepa

Pgina 9

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

2.4.2 Conexin de pulsadores de entrada


La utilizacin de las resistencias de pull-down evita que el
microcontrolador confunda el uno lgico con el cero lgico

Gonzalo Cnepa

Pgina 10

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

3.
3.1

Metodologa de resolucin

Diseo del programa ascensor para el HC11

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

La estructura del programa se basa una subrutina de inicializacin, la cual


debe ejecutarse solo en el caso de que el cubculo no este posicionado sobre un fin
de carrera al inicio del programa.
Una vez inicializado, se ejecutar un programa principal en el cual se
chequear el estado de los fines de carrera y se mostrar el N correspondiente en
el display de 7 segmentos. Luego se verifica si se ha presionado un pulsador, y en
ese caso se ejecutar la subrutina correspondiente que modificar una variable
llamada motor.
Luego, a partir del valor de la variable motor el microcontrolador decidir
si se ejecutar una secuencia para subir o para bajar, mientras que en cada paso
de dicha secuencia se comprobar si se ha llegado a destino.
Gonzalo Cnepa

Pgina 11

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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?

PULSADORES: byte $00


MOTOR: byte $00
SECUENCIA_MOTOR: byte $00
DISPLAY: byte $00
COND_ESPERA: byte $01
MOTOR_INTERRUMPIDO: byte $00
CONTADOR: byte $FF

PORTC : = DISPLAY
CONFIGURACIONES

Subrutina CARGAR PULSADORES

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

La secuencia del Motor se


controla en los 4 bits menos
significativos.
Si se desborda => se acomoda

SECUENCIA : =
00001000B

SI
MOTOR =
QUIETO?

PORTB : = 0

Desconecta el motor si no se
est utilizando.

Subrutina REFRESH LEDS

MOTOR = QUIETO
OR
COND_ESPERA = 1?

SI
COND_ESPERA : = 0

PORTD = 0
&
PULSADORES ?0?

Gonzalo Cnepa

Pgina 13

SI

Subrutina ESPERA

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

Subrutina
RETARDO

SI
PULSADORES = 0?

Procedimiento
DEC_CONTADOR

COD_ESPERA : = 0

CONTADOR : = FFH

SUBRUTINA CARGAR_PULSADORES

PULSADORES : = (PORTE) OR (PULSADORES)

SUBRUTINA GUARDAR_PULSADORES

PULSADORES : = (A) AND (PULSADORES)

B : = QUIETO

Gonzalo Cnepa

Pgina 14

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

PROCEDIMIENTO DEC_CONTADOR

COND_ESPERA : = 01

CONTADOR : = CONTADOR - 1

SI
CONTADOR = 0?

PULSADORES : = 00001000

SUBRUTINA REFRESH LEDS

A : = PULSADORES

Rotar la A hacia la izquierda (LSLA)

Rotar la A hacia la izquierda (LSLA)

Rotar la A hacia la izquierda (LSLA)

Rotar la A hacia la izquierda (LSLA)

A : = (PULSADORES) OR (A)

A : = (A) AND (11110000H )

PORTB : = (PORTB) OR (A)

Gonzalo Cnepa

Pgina 16

08/08/2008

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

SUBRUTINA ESCANEO PULSADORES

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

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

Universidad Nacional de Quilmes Ing. Automatizacin y Control Industrial

7. Bibliografa
?

MICROCONTROLADOR 68HC11: Fundamentos, recursos y programacin.


http://www.microbotica.es

Ambiente de desarrollo para un HC11 por Juan Pablo Guzmn Peralta


(Trabajo final de licenciatura)

kit11 v61 - Kit de iniciacin al microcontrolador - Universidad de Zaragoza


http://www.unizar.es/euitiz/micros.htm

M68HC11E family Hoja de datos (datasheet) MOTOROLA

MC68HC11E1CFN2 Hoja de datos (datasheet) MOTOROLA

MAX232 , ULN2803, MC7805, MC34064 Hoja de datos (datasheet)

Gonzalo Cnepa

Pgina 27

08/08/2008

También podría gustarte