Sie sind auf Seite 1von 2

Para el sistema de encendido electrnico de un coche, se

pide disear un circuito en torno al 68HCS12 (placa de


prcticas) que controle las revoluciones del motor. Las
revoluciones, o vueltas por segundo del motor, se han de
mantener en 100/s, de forma que si aumentan se ha de activar una
seal para su correccin. Lo mismo si disminuyen (ver esquema).
El motor dispone de un disco dentado ms un sensor compatible
TTL para el control de las revoluciones, el nmero de dientes
del disco es 100.

a) Esquema detallado y completo del circuito.


Explicacin y clculos.
b) Organigrama y programa en ensamblador.

N de dientes = 100

< de 100
68HCS12

> de 100

Velocidad = 100v/s

La frecuencia de la seal que se va a medir es de: 100x100 = 10KHz, con un ciclo de


trabajo del 50%. Se aplica a la entrada IC1 programada por flanco de subida. El periodo a
medir en ciclos de E=24MHz es de: (1/10000)*24MHz=2400.

4 MHz

N de dientes = 100
68HCS12

PB.7
IC1 > de 100

PB.6
< de 100

Velocidad = 100v/s

Como lneas de control, se toman las dos ms significativas del Puerto B. PB.7 se
pondr a 1 en el caso de que la velocidad sea superior a 100 v/s. S la velocidad es inferior a
la especificada PB.6 se pondr a 1. En el caso de que sea la velocidad sea correcta, las dos
estarn a cero.
b.2) Programa

** MOTOR - programa para el 68hcs12 E=24MHz **


*ESTE PROGRAMA PERMITE MANTENER LAS REVOLUCIONES DE UNA TURBINA EN 100 REV./SEG.
*SI LAS REVOLUCIUONES AUMENTAN SE ACTIVARA LA LINEA PB.6 (=1) Y SI DISMINUYEN
*LA PB.7(=1), SI SON 100 PB.6 Y PB.7 ESTARAN A NIVEL BAJO (0).
*LA TURBINA DISPONE DE UNA CORONA DENTADA (100 DIENTES), MAS UN SENSOR
*QUE DARA UN IMPULSO POR CADA DIENTE. ESTA SEAL (10KHz)S E APLICARA EN EL
*PIN PT.1 (IC1), PROGRAMADO PARA QUE SE DISPARE POR FLANCO DE SUBIDA (MIDE EL
*PERIODO) 1/10000=0,1ms => 0,1ms*24MHz=2400 PERIODOS DE E

*VARIABLES EN LA RAM
org $1000 ;Origen de la RAM
PULSO rmb 2 ;Reserva 2 bytes

#include hcs12.h

org $FFFE ;Vector de reset


fdb $C000 ;Origen del programa

org $C000
lds #$2000 ;SP al final de la RAM
movb #$ff,DDRB ;Puerto B salida
movb #$90,TSCR1 ;Habilita Timer y borrado de flags automtico
movb #$00,TSCR2 ;Deshab. interrup. Timer y prescaler = 0
movb #$04,TCTL4 ;IC1 por flanco subida
;Espera primer flanco subida
otro brclr TFLG1,$02,* ;Espera flanco subida 1
ldd TC1 ;Valor del TCNT al primer flanco
std PULSO
brclr TFLG1,$02,* ;Espera flanco subida 2
ldd TC1
subd PULSO
cpd #2400 ;Es 10KHz?
beq igual
bcs menor
bset PORTB %01000000 ;PB.6 = 1
jmp otro
menor bset PORTB,%10000000 ;PB.7 = 1
jmp otro
igual bclr PORTB,%11000000 ;PB.6 = PB.7 = 0
jmp otro

Das könnte Ihnen auch gefallen