You are on page 1of 8

ESCUELA SUPERIOR POLITCNICA DEL

LITORAL
FIEC

Proyecto de Electrnica 2
Tema:
Banda Transportadora con Contador (usando un
censor de fotocelda) y control de velocidad
Estudiantes
Jonathan Recalde
Paralelo: # 1

2012 1 TRMINO

1) Especificaciones Tcnicas del proyecto


Las personas pasan por la fotocelda, la cual comienza por el proceso de conteo. El
nmero de personas que pasan por la fotocelda se va visualizando en dos displays de
siete segmentos y mostrado en binario por un grupo de siete diodos leds, en los
displays se puede ver que el conteo llega a 99 en este momento se activa un diodo el
cual indica que a llegado al mximo de conteo que es 99. Luego de la cual se encera y
comienza el conteo de nuevo.
Las personas van pasando de una en una cerca del circuito, una fotocelda determina
su presencia y enva un pulso por persona a la entrada de interrupcin externa del
PIC. Es Decir que al detectarse una persona se produce una interrupcin externa y el
programa ir a atender esta subrutina, terminada la cual retorna al programa principal
mediante la instruccin RETFIE. El programa principal contiene un lazo infinito en
espera de la interrupcin.
2) Diagrama de bloques

SENSOR DE
INICIO

PIC

LED VISUALIZADORES
EN BINARIO
DISPLAYS VISUALIZADORES
EN DECIMAL

3) Diagrama de flujo
MAIN

VARIABLES

ACCESO A
PUERTOS

SENSOR

INICIO

ESPERA DE
INTERRUPCION
REGISTRO
DEL NUMERO
DE PERSONAS

ACTIVA ALARMA

RETFIE

Definimos variables para accesar a los puertos luego la interrupcin se hace por medio de un sensor en este caso es una
fotocelda el cual es guardado en un registro llamado nmero de personas, se seguir censando tantas veces como pase el

nmero de personas, cuando este registro llega a 99 se activa una alarma en este caso se visualizara un diodo led el cual se
encender.

4) LISTADO DEL PROGRAMA FUENTE


list p=16F887
#include "P16f887.INC"
;variables que se utilizan
CBLOCK 0x20
Contador
decena
unidad
decena_7seg
unidad_7seg
ENDC
#DEFINE Pulsador
PORTB,0
#define display_dec PORTB,1
#define display_uni PORTB,2
#define led_verde PORTB,3

; Lnea donde se conecta el pulsador.


;encendido de display
;define que el puertoB del pin 3 es led verde

org 0;inicio del programa


goto principal; ir a programa principal
org 4;interrupcion
goto ServicioInterrupcion
;seteos del pic
principal
call seteos_pic;
; funcin que llama a seteo_pic
banksel PORTC
; cambia de banco al banco c
clrf PORTC
; se limpia el puerto C
clrf PORTD
; se limpia el puerto D
bcf led_verde
; apaga el led verde
bsf OPTION_REG,NOT_RBPU ; Activa las resistencias de Pull-Up ;del Puerto B.
bcf
OPTION_REG,INTEDG ; Interrupcin INT se activa ;por
flanco de bajada.
clrf
Contador
; Inicializa el contador y lo visualiza.
clrf
unidad
; Inicializa el contador y lo visualiza.
clrf
decena
; Inicializa el contador y lo visualiza.
;call VisualizaContador
movlw b'10010000'
; Habilita la interrupcin INT y la general.
movwf
INTCON
; habilita la interrupcion general y la RB0 la externa
movlw 0x00
; pone al registro de trabajo a 0
call Binario_a_7Segmentos ; llama a la funcion
movwf unidad_7seg
;mueve a la variable
movlw 0x00
;mueve otro 0 al registro de tabajo
call Binario_a_7Segmentos ;llama a la funcion
movwf decena_7seg
;almacena en la variable decena_7seg
lazo_infinito ;etiqueta
bcf display_dec ;apaga el display_dec
bcf display_uni ; apaga el display_uni
movfw decena_7seg ;mueve al registro de trabajo decena_7seg
movwf PORTC
bsf display_dec
bcf display_uni

;carga al regsitro de trabajo el puertoC


;enciende el dispy_dec
;apaga el display_uni

call Retardo_10ms

;llama a la funcion Retaro_de_10ms

bcf display_dec ;apaga el display_dec


bcf display_uni ;apaga el display_uni
movfw unidad_7seg

;carga al registro de trabajo unidad_7seg

movwf PORTC
bcf display_dec
bsf display_uni
call Retardo_10ms

;carga lo que tiene el registro de trabajo al puertoC


;apaga display_dec
;enciende display_uni
;llamada a Retardo_10ms

goto lazo_infinito ;vuelve a la etiqueta


;*************************************************
;**************AREA DE FUNCIONES******************
;*************************************************
seteos_pic

;etiquetea
;bsf STATUS,5 ; se abre el banco en 1
banksel ANSELH
;cambia de banco y se dirige al registro
; A NSELH para decir que es entrada o salida digital
clrf ANSELH
;vuelve digital al puerto
banksel TRISB
;dirigo al banco del TRISB para dejarlo como entrada salida
movlw b'000000001'
;cargo al registro de trabjo el rb0 como entrada
movwf TRISB ; entrada en portb_0
clrf TRISC ;salida al puerto c
clrf TRISD

return

; Subrutina de servicio a la interrupcin. Incrementa un contador y lo visualiza.


;
ServicioInterrupcion
call
Retardo_20ms
; Espera a que se estabilice el nivel de tensin.
;btfsc Pulsador
; Comprueba si es un rebote.
;goto
FinInterrupcion
; Era un rebote y por tanto sale.
incf
Contador,F
; Incrementa el contador y lo visualiza.
movfw Contador
;cargo al registro de trabajo contador
sublw .99
;valor maximo 99
btfss
STATUS,Z
;registra la bandera del status
goto ok
;la bandera es 0 va a OK
clrf
Contador
;encera contador
bsf led_verde
;enciende led verde
call Retardo_2s
bcf
led_verde

;llama a la funcion Retardo_2s


;apaga led verde

ok
VisualizaContador
movf Contador,W
movwf PORTD
call
BIN_a_BCD
movfw BCD_Decenas
;movwf decena
call Binario_a_7Segmentos
Binario_a_7Segmentos
movwf decena_7seg
decena_7seg
movfw BCD_Unidades
;movwf unidad

;muevo contador al registro de trabajo


;muevo contador al puertoB donde estan los led
; Se debe visualizar en BCD.
;carga al registro de trabajo con decenas
;llama a la funcion
;mueve al registro de trabajo a la variable

;carga en el registro de trabajo BCD_unidades

call Binario_a_7Segmentos
movwf unidad_7seg
FinInterrupcion
bcf
INTCON,INTF
retfie
(GIE=1).

; mueve el registro de trabajo a la variable


; Limpia flag de reconocimiento (INTF).
; Retorna y rehabilita las interrupciones

;;AREA DE FUNCIONES
Binario_a_7Segmentos
addwf PCL,F
Tabla retlw 3Fh
retlw 06h
retlw b'01011011'
retlw 4Fh
retlw 66h
retlw 6Dh
retlw 7Dh
retlw 07h
retlw 7Fh
retlw 67h

include <RETARDOS.INC>
include <BIN_BCD.INC>
end

5) Circuito en PROTEUS

; Tabla para display de 7 segmentos.


; El cdigo 7 segmentos para el "0".
; El cdigo 7 segmentos para el "1".
; El cdigo 7 segmentos para el "2".
; El cdigo 7 segmentos para el "3".
; El cdigo 7 segmentos para el "4".
; El cdigo 7 segmentos para el "5".
; El cdigo 7 segmentos para el "6".
; El cdigo 7 segmentos para el "7".
; El cdigo 7 segmentos para el "8".
; El cdigo 7 segmentos para el "9".

;finalizacion del programa

Control de Velocidad de motor DC

R2
1k
R5
R1
470
VCC
OUT

C4
1F

LED1

D1
1N4148

RST

C1
100nF

S2
MOTOR

100k
50%
Key=A

A1

V1
12 V

D3
1N5401

Ilustracin 1: Circuito de control de velocidad de motor DC

DIS

D2
1N4148

THR
TRI

C3
100nF

CON
GND

Q1

555_VIRTUAL
R4
C2
100nF

10

IRFZ24N
R3
1k

Para el control de la velocidad de un motor DC existen varios mtodos. Por ejemplo


mediante una resistencia variable se puede limitar la corriente que este consume. Pero para
nuestro proyecto la mejor alternativa fue utilizar un control de velocidad electrnico el cual
permitir ajustar la cantidad de potencia que se entregar al motor. Para ello se construy un
circuito basado en el circuito integrado 555 que se configur como un oscilador estable para
generar una onda cuadrada. La idea es que aplicando esa onda cuadrada al motor, con los
niveles de voltaje y corriente apropiados, se pueda obtener una variacin del voltaje
promedio mediante la variacin de las caractersticas de dicha onda.
En el circuito mostrado podemos notar diferentes elementos pasivos los cuales cumplen un
rol importante en el funcionamiento de este diseo, de los cuales podemos nombrar a R1 y
D1 en donde D1 es un diodo LED, que nos permite comprobar que el circuito est
correctamente polarizado y R1 es la resistencia que limita el paso de la corriente a travs del
diodo. Algo importante en esta clase de circuitos electrnicos es evitar los cambios brucos en
la energa, para proteger a los elementos que conforman la red, es por ello que se encuentran
dos capacitancias de entrada C1 y C3, las cuales permiten el paso moderado de voltaje al
circuito que esta expenso a esos cambios producidos por el encendido, apagado o algn corte
inesperado de la energa.
El dispositivo fundamental del circuito es el integrado 555 nombrado anteriormente, en
donde diferentes elementos permiten que est configurado de manera estable, es decir que no
se mantiene en un solo estado, por lo tanto se genera una onda cuadrada en donde el nivel
alto es producido por la carga del capacitor C4 a travs del potencimetro R3 en conjunto
con la resistencia R2, y el nivel bajo es producido por la descarga del capacitor C4 a travs
del potencimetro R3, este ciclo es gracias a los diodos D2 y D3, donde el diodo D2 permite
el paso de la corriente para producir la carga del capacitor y el diodo D3 permite el paso de la
corriente para la descarga del capacitor.
Cada vez que la onda cuadrada este en nivel alto, hace que el transistor Q1 entre en
conduccin, por lo tanto se energiza el motor. Cuando la onda cuadrada est en nivel bajo el
transistor Q1 de apaga y por lo tanto el motor no recibe corriente durante ese periodo de

tiempo, cabe recalcar que la frecuencia de la seal de salida esta determina por el capacitor
C4 en donde:

Para evitar interferencias en la onda cuadrada de salida se ubic el capacitor C2 en el pin 5


(control), ya que este pin no es usado en la configuracin estable. El transistor Q1 nombrado
anteriormente es un MOSFET de potencia IRFZ22. Dado que el motor conectado en la salida
puede exigir varios amperios, se utiliz un disipador de calor en el transistor para evitar que
este sufra daos por altas temperaturas y para el correcto funcionamiento del motor se ubic
el diodo D4, el cual permite mantener un voltaje estable en los extremos del motor.

6) CONCLUSIONES
La interrupcin es un suceso asincrnico que provoca desviaciones del flujo normal de
ejecucin de instrucciones, estos sucesos pueden ser externos o internos; siendo en esta
interrupcin un pulso externo en la patita RB0/INT que se activa con el cuarto bit del registro
Intcon adems se debe activar el sptimo bit del mismo registro para permitir las
interrupciones.
Concluyo que la parte ms importante del cdigo es la habilitacin de la interrupcin externa
por medio del bit INTE y GIE en el registro INTCON, a pesar de ser tan slo dos lneas, estas
son decisivas para el desarrollo del proyecto puesto que sin estas dos lneas resulta imposible
detectar cualquier tipo de interrupcin adems se debe recordar ubicar resistencias en las
salidas para cuidar los elementos. Adems se debe tener en cuenta el directorio de ANSEL y
ANSELH para que los pines sean configurados como entradas o salidas analgicas y no tener
problema con la adquisicin de datos del sistema.
La ventaja de activar la resistencias de Pull-Up internas por medio del bit 7 del registro
Option, ya que al simular en Proteus, conectar o no resistencias externas no conlleva grandes
diferencias como si lo hara en la implementacin fsica, donde ahorramos espacio al no
conectarlas. En este proyecto se usa para la interrupcin de RB0 lgica negada para realizar
la interrupcin.

7) Recomendaciones
Para que el PIC 16F887 compile correctamente deber hacer al registro ADCON1=7 en el
BANCO 1. Esto debido a que por default el PIC 16F887 viene seteado para 8 entradas
analgicas y si lo que se necesitan son entradas y salidas digitales debemos desactivar esas
entradas analgicas ingresando el valor que se indica en el registro ADCON1.
Tener cuidado al asignar el vector de interrupcin ya que al estar habilitado GIE, algn error
en los bits correspondientes a otro tipo de interrupcin pueden dar errores en la compilacin
del programa.
Se podra implementar un circuito externo con el cual se pueda variar el tiempo en el que se
presenta los nmeros en los displays, lo cual tambin afectara el tiempo de presentacin del
led.

You might also like