captulo i

Anuncio
Universidad
Tecnológica de
Querétaro
Digitally signed by Universidad Tecnológica de
Querétaro
DN: cn=Universidad Tecnológica de Querétaro,
c=MX, o=Universidad Tecnológica de Querétaro,
ou=UTEQ, [email protected]
Date: 2005.11.30 10:27:43 +01'00'
UNIVERSIDAD TECNOLÓGICA
DE QUERÉTARO
Voluntad * Conocimiento * Servicio
CONTADOR DIGITAL PROGRAMABLE
SERVICIOS DE INGENIERÍA ELECTRÓNICA
Reporte de Estadía
Para obtener el Título de Técnico Superior
Universitario en Electrónica y Automatización
CESAR ALBERTO BERNAL PÉREZ
Santiago de Querétaro, Qro. Septiembre de 2005
UNIVERSIDAD TECNOLÓGICA
DE QUERÉTARO
Voluntad * Conocimiento * Servicio
CONTADOR DIGITAL PROGRAMABLE
SERVICIOS DE INGENIERÍA ELECTRÓNICA
Reporte de Estadía
Para obtener el Título de Técnico Superior
Universitario en Electrónica y Automatización
Asesor de Empresa: Ing. Juan Carlos Domínguez
Asesor de escuela: Ing. Manuel Meléndez Romero
CESAR ALBERTO BERNAL PÉREZ
Santiago de Querétaro, Qro. Septiembre de 2005
AGRADECIMIENTOS
Quiero dedicar este gran logro primordialmente a dos excelentes
personas, a mis padres, los cuales siempre me han apoyado hasta llegar a
esta etapa de mi vida, y que gracias a ello adquirí consolidar mi
formación tanto en conocimiento como en mi desarrollo personal,
también quiero agradecer a mis profesores, asesores y amigos que fueron
una magnífica herramienta para mi desempeño como estudiante y una
persona competitiva capaz de sobresalir en una ámbito laboral. Gracias.
ÍNDICE
AGRADECIMIENTOS
ÍNDICE
INTRODUCCIÓN
CAPÍTULO I. ANTECEDENTES GENERALES DE LA EMPRESA
Pág.
1.1 Antecedentes de la empresa…………………………………………………11
1.2 Misión……………………………………………………………………….11
1.3 Visión………………………………………………………………………..11
1.4 Política de calidad…………………………………………………………...11
1.5 Organización………………………………………………………………...12
1.6 Campo de desarrollo nacional o internacional………………………………12
CAPÍTULO II. EL PROYECTO
2.1 Antecedentes………………………………………………………………...15
2.2 Definición del proyecto……………………………………………………..15
2.3 Objetivo……………………………………………………………………..15
2.4 Alcance……………………………………………………………………...15
2.5 Plan de trabajo………………………………………………………………16
2.5.1 Separación de actividades………………………………………….16
2.5.2 Secuencia de actividades…………………………………………...16
2.5.3 Asignación de tiempos……………………………………………..18
2.5.4 Gráfica de Gant…………………………………………………….19
CAPÍTULO III. MARCO TEÓRICO
Pág.
3.1 Introducción a los contadores………………………………………………21
3.2 Funcionamiento básico del contador……………………………………….22
3.3 Displays…………………………………………………………………….23
3.4 Otros dispositivos utilizados (Drivers)……………………………………..29
3.5 Teclado matricial……………………………………………………………34
3.6 Modulación por ancho de pulso (PWM)…………………………………...35
3.7 Programación en MPLB de microchip……………………………………..36
3.7.1 Partes del MPLAB………………………………………………..37
CAPÌTULO IV. DESARROLLO DEL PROYECTO
4.1 Desarrollo de investigación vía Internet…………………………………...40
4.2 Fuente de investigación en libros…………………………………………..40
4.3 Hojas de datos……………………………………………………………...41
4.4 Desarrollo de circuitos electrónicos………………………………………..41
4.5 Desarrollo de programación sobre software……………………………….42
4.6 Cambios en circuito electrónico y programación………………………….42
CAPÌTULO V. ACTIVIDADES DIVERSAS
5.1 Control de velocidad de un motor de CC………………………………….67
CAPÌTULO
VI.
EVALUACIÒN
ECONÒMICA
Y
RESULTADOS
OBTENIDOS
6.1 Evaluación económica……………………………………………………..73
6.2 Resultados obtenidos………………………………………………………74
Conclusiones……………………………………………………………………..76
Bibliografía………………………………………………………………………78
Glosario………………………………………………………………………….80
INTRODUCCIÓN
En nuestra vida cotidiana, ocupamos diversos aparatos eléctricos tal como la plancha,
el televisor, la radio, etc., pero quizás no sabemos como están armados o como
funcionan, y menos como pasa la corriente eléctrica y de que forma hace funcionar
dichos aparatos.
La electrónica puede definirse como el estudio de los electrones de la materia en
movimiento y de los fenómenos capaces de influir sobre tales movimientos.
La electrónica es el campo de la ingeniería y de la física aplicada relativo al diseño y
aplicación de dispositivos, por lo general circuitos electrónicos, cuyo funcionamiento
depende del flujo de electrones para la generación, transmisión, recepción,
almacenamiento.
Esta información puede consistir en voz o música como en un receptor de radio, en
una imagen en una pantalla de televisión, o en números u otros datos en un
ordenador.
En base a los principios de la electrónica la tecnología desarrolló elementos y
dispositivos electrónicos para infinidad de usos prácticos, provocando una verdadera
revolución técnica.
Este desarrollo ha posibilitado el perfeccionamiento en el ámbito de las
comunicaciones.
Ejemplo
de
esto
es
la
radiofonía
y
la
televisión.
También dicha revolución facilitó el desarrollo de la cibernética, lo cual hace posible
el procesamiento de datos, el control administrativo, el almacenaje de información,
etc.
Por medio de la electrónica se ha permitido la verificación de cálculos muy precisos,
lo que contribuyó a facilitar la creación de instrumentos cuya precisión era
inimaginable años atrás, tales como medidores térmicos, de pesos, tiempos, etc.
Electrónica digital
La electrónica digital es una parte de la electrónica que se encarga del estudio
de sistemas electrónicos en los cuales la información está codificada en dos
únicos estados.
A dichos estados se les puede llamar "verdadero" o "falso", o más
comúnmente 1 y 0. Electrónicamente se les asigna a cada uno un voltaje o rango
de voltaje determinado, a los que se les denomina niveles lógicos, típicos en
toda señal digital.
Se diferencia de la electrónica analógica en que, para la electrónica digital un
valor de voltaje codifica uno de estos dos estados, mientras que para la
electrónica analógica hay una infinidad de estados de información que codificar
según el valor del voltaje.
Esta particularidad permite que usando Álgebra de Boole y un sistema de
numeración binario se puedan realizar complejas operaciones lógicas o
aritméticas sobre las señales de entrada, muy costosas de hacer empleando
métodos analógicos.
La electrónica digital ha alcanzado una gran importancia debido a que es
utilizada para realizar autómatas y por ser la piedra angular de los sistemas
microprogramados como son los ordenadores o computadoras.
Los sistemas digitales pueden clasificarse del siguiente modo:
•
Sistemas cableados
Combinacionales
Secuenciales
Memorias
Convertidores
•
Sistemas programados
Microprocesadores
Microcontroladores
En este caso se utilizará sistema de programación por microcontroladores.
CAPÍTULO I
ANTECEDENTES
GENERALES DE LA
EMPRESA
1.1 Antecedentes de la empresa
SIE Servicios de Ingeniería Electrónica es una empresa que fue constituida en 1998
por un grupo de ingenieros entusiastas, formando un compromiso con sus clientes e
invariablemente ofreciéndoles productos de alta calidad que cumplan con las normas
y especificaciones establecidas, además de una atención personalizada que se
introduzca en excelente servicio como:
Entregas a tiempo en calidad y oportunidad a un precio competitivo real.
1.2 Misión
Ofrecer productos de alta calidad que cumplan ampliamente con las normas, las
expectativas y especificaciones que el cliente requiere, además de un excelente
servicio y la entrega del producto en el tiempo requerido.
1.3 Visión
Tener un compromiso más, es ofrecer a nuestros clientes el apoyo y accesoria para
optimizar el uso de sus equipos proponiendo o sugiriendo cambios y mejoras a un
criterio de mejora continua.
1.4 Política de calidad
Nos especializamos en mantenimiento preventivo, correctivo, productivo; diseño y
fabricación de equipo electrónico, formando un compromiso con los clientes e
invariablemente ofreciéndoles productos de alta calidad que cumplan ampliamente
con las normas y especificaciones establecidas, además de una atención personalizada
que se introduzca en excelente servicio como:
¾ Diseño y fabricación de circuitos impresos
¾ Ensamble de equipo electrónico
¾ Cableado e instalación de equipo Eléctrico y Electrónico
¾ Fabricación de sistemas Electrónicos
¾ Servicio de Mantenimiento Preventivo, Correctivo, Productivo de todo
Equipo Eléctrico y Electrónico
¾ Maquila de Tarjetas Electrónicas
¾ Elaboración de Sistemas de Calidad para mantenimiento Electrónico
¾ Venta de dispositivos y Periféricos Electrónicos.
1.5 Organización
Juan Carlos Domínguez
Carolina
Dirección
Secretaria
Juan Gregorio
Proyectos
Víctor Hugo
Preventivo
Correctivo
Productivo
Irene Soto
González
Oscar Balderas
Contabilidad
Diseño y
Desarrollo
Figura 1.1 Organización
1.6 Campo de desarrollo nacional o internacional
Nos especializamos en mantenimiento preventivo, correctivo, productivo; diseño y
fabricación de equipo electrónico, ofreciéndoles los siguientes servicios:
•
•
•
•
•
Fabricación de fuentes de voltaje fijas
Ensamble de módulos probadores para productos electrónicos y eléctricos.
Diseño de equipo especial para el proceso
Servicio de corrección de fallas en maquinaria industrial.
Ensamble de gabinetes con arrancadores trifásicos (controles de motores)
•
•
Somos
Automatización y control de sistemas
Control de mantenimiento preventivo y productivo.
distribuidores
de
WEIDMULLER,
TEMPCO
Y
STECK,
representamos las siguientes marcas:
ASCO
DANFOSS
BALUFF
DEWIT
CONTROLS
EAGLE SIGNAL
BAUMER ELECTRIC EGE ELECTRONICK
METRON
OMRON
BANNER
EFECTOR
BIMBA
EXTECH instruments
SIEMENS
PECO
CLIPPARD
NORGREN
CONDUMEX
HERION
HEDLAND
HONEYWELL
MOELLER
MAC
SCHRACK
ROCHESTER
MITUTOYO
TAYLOR
OPTOSWITCH
Nuestros clientes:
•
•
•
•
•
•
•
•
•
•
KOSTAL MEXICANA S.A de C.V. QUERETARO
TECNOMAC, S.A de C.V. QUERETARO
PASATIEMPOS GALLO, S.A de C.V. QUERETARO
CONSTRULITA DE QUERETARO, S.A de C.V.
PRETTL DE MEXICO, S.A de C.V.
TRANSMISIONES TSP, S.A de C.V.
MABE DE MEXICO S. De R.L. De C.V.
CARVEL PRINT,
CABLESA S.A de C.V.
RHODIA DE MEXICO, S.A de C.V.
además
CAPÍTULO II
EL PROYECTO
2.1 Antecedentes
Este proyecto surge de la necesidad de las empresas que tienen por objeto y fuente
primordial la producción mediante la aplicación de un contador digital, el cual tendrá
indicado el número de piezas que se han producido para fines de producción en
cuanto a tiempo y calidad.
2.2 Definición del proyecto
“Contador digital programable”.
2.3 Objetivo
Lo que se pretende lograr con este proyecto es tener la indicación en la producción de
piezas o algún bien que se este produciendo en cantidades que por lo regular son
grandes, mediante el conteo automático de éstas con la utilización de sensores y
mostrando la cantidad en 8 dígitos en displays de 7 segmentos. El contador utiliza 2
modos, el primero al pulsar una letra en el teclado se configura como un contador de
8 dígitos, el segundo al pulsar otra letra se configura como 2 contadores de 4 dígitos.
2.4 Alcance
Además de ser un proceso automático es indispensable ya que puede realizar muchas
más operaciones por medio del teclado en el cual se introducen funciones tales como
la siguiente: puede utilizar un modo en el que se introduce una cantidad fija en los
dígitos y cuando el número de piezas sea igual al número introducido en los dígitos
mande activar una alarma o encienda alguna lámpara indicando que se ha llegado a
una meta de producción. O controlar algunas otros dispositivos como un motor en un
proceso etc.
2.5 Plan de trabajo
2.5.1 Separación de actividades
* Investigación de contadores
* Investigación teclado matricial
* Investigación de material para contador
* Investigación de material para teclado
* Chequeo de hojas de datos de material para contador
* Chequeo de hojas de datos de material para teclado
* Información y manual de PIC’s
* Desarrollo de programa en software para contador
* Montaje de elementos del contador para pruebas en protoboard
* Desarrollo de programa en software para teclado
* Montaje de elementos del teclado para pruebas en protoboard
* Pruebas para el contador en protoboard
* Pruebas para el teclado en protoboard
* Unión de programas de contador y teclado en software
* Unión de elementos del teclado y contador para pruebas
* Pruebas finales del teclado y contador en conjunto en protoboard
* agregado de otras funciones al teclado mediante el programa en software
* agregado de elementos finales para otras funciones del proyecto
* Diseño del circuito en PCB mediante software
* diseño físicamente de PCB
* Soldadura de elementos del circuito en PCB
* Pruebas finales del circuito en PCB
* Bosquejo gráfico de proyecto
* Implementación del circuito PCB y otros elementos en chasis
* Entrega de proyecto
* Pruebas finales del proyecto en protoboard
* Realización de la documentación del proyecto
2.5.2 Secuencia de actividades
1.- Investigación de contadores
2.- Investigación de material para contador
3.- Chequeo de hojas de datos de material para contador
4.- Montaje de elementos del contador para pruebas en protoboard
5.- Información y manual de PIC’s
6.- Desarrollo de programa en software para contador
7.- Pruebas para el contador en protoboard
8.- Investigación teclado matricial
9.- Investigación de material para teclado
10.- Chequeo de hojas de datos de material para teclado
11.- Montaje de elementos del teclado para pruebas en protoboard
12.- Desarrollo de programa en software para teclado
13.- Pruebas para el teclado en protoboard
14.- Unión de programas de contador y teclado en software
15.- Unión de elementos del teclado y contador para pruebas
16.- Pruebas finales del teclado y contador en conjunto en protoboard
17.- agregado de otras funciones al teclado mediante el programa en software
18.- agregado de elementos finales para otras funciones del proyecto
19.- pruebas finales del proyecto en protoboard
20.- Diseño del circuito en PCB mediante software
21.- diseño físicamente de PCB
22.- Soldadura de elementos del circuito en PCB
23.- Pruebas finales del circuito en PCB
24.- Bosquejo gráfico de proyecto
25.- Implementación del circuito PCB y otros elementos en chasis
26.- Realización de la documentación del proyecto
27.- Entrega de proyecto
2.5.3 Asignación de tiempos
ACTIVIDAD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
TIEMPO (días)
3
2
2
2
3
5
1
2
2
1
1
6
3
5
1
6
5
1
4
5
2
1
1
2
1
6
1
2.5.4 Gráfica de Gant
CAPÍTULO III
MARCO TEÓRICO
3.1 Introducción a los contadores
En electrónica es bastante frecuente verse necesitado de contabilizar eventos y por
tanto se requiere utilizar un contador, en nuestro caso se tratará de un contador
electrónico digital. En nuestros días estamos rodeados de dispositivos que disponen
de algún tipo de contador digital, incluso en la mayoría de los electrodomésticos
vienen equipados con uno. Un contador digital, básicamente consta de una entrada de
impulsos que se encarga de conformar las señales, de manera que el conteo de los
pulsos no sea alterado por señales no deseadas, las cuales pueden falsear el resultado
final. Estos impulsos son acumulados en un contador propiamente dicho cuyo
resultado, se presenta mediante un visor que puede estar constituido por una serie de
sencillos dígitos de siete segmentos o en su caso mediante una sofisticada pantalla de
plasma.
Los contadores digitales son elementos importantes de muchos sistemas digitales.
Además de efectuar la función obvia de contar, tienen la capacidad de integrarse en
equipos para la medición digital de cantidades como tiempo, velocidad, frecuencia y
distancia, entre otras. Los contadores encuentran también usos muy difundidos en la
instrumentación digital.
Los registros son dispositivos que almacenan temporalmente un conjunto de datos en
forma de palabras binarias. Por lo general tienen tamaños de 8, 16, o 32 bits, y se
encuentran conformados por un conjunto de flip-flops, en los cuales se almacena la
información. Estos dispositivos son empleados en los computadores para almacenar
temporalmente datos, con los cuales se realizan operaciones binarias.
En nuestro caso no se utilizarán flip-flops, nos guiaremos más hacia la programación
de PIC’S, en este caso se utilizará el PIC16F84.
A continuación se muestra el patillaje de este PIC
Figura 3.1 Diagrama de PIC16F84
3.2 Funcionamiento básico del contador
El funcionamiento principal de este contador es muy sencillo, básicamente consta de
dos sensores o dos entradas las cuales detectarán la presencia de algún evento para
con esto poder hacer uso del conteo
Estas entradas las utilizaremos en RA3 Y RA4 del PIC, las
cuales corresponden al puerto A del mismo.
Al ser detectado un pulso o un cero lógico en la entrada esto tiende a realizar un
conteo ascendente hasta obtener la máxima cuenta permisible para esto se necesita el
dispositivo por medio del cual se visualizará esa cuenta, el cual es una serie de LED’s
indicadores llamado DISPLAY a 7 segmentos.
3.3 Displays
Dentro de la familia de semiconductores hay uno que tiene la particular característica
de emitir luz. La existencia de este tipo de dispositivos ha abierto un amplio campo de
investigación. Este nuevo campo de investigación es la opto electrónica.
La opto electrónica es el nexo de unión entre los sistemas ópticos y los sistemas
electrónicos. En esta área juega un papel importante el LED. Que está cada vez más
de moda. Hoy en día parece imposible mirar cualquier aparato electrónico y no ver un
panel lleno de luces o de dígitos mas, o menos espectaculares. Por ejemplo, la
mayoría de los walkman disponen de un piloto rojo que nos avisa que las pilas ya han
agotado y que deben cambiarse. Una forma mas avanzada de LED: el LED láser es
usado para generar el impulso luminoso que atraviesa las redes de fibra óptica,
importante para las transmisiones de banda ancha.
Otra importante aplicación de los Diodos Emisores de Luz es el Display de 7
Segmentos que se utiliza para mostrar información acerca del estado de un aparato
electrónico. Básicamente es una forma de representar los dígitos del sistema numérico
que utilizamos actualmente, (0-9). En este trabajo se estudian las características y
funcionamiento de este dispositivo.
Diodo Emisor De Luz
Un LED (Light Emitting Diode- Diodo Emisor de Luz), es un dispositivo
semiconductor que emite radiación visible, infrarroja o ultravioleta cuando se hace
pasar un flujo de corriente eléctrica a través de este en sentido directo. Esencialmente
es una unión PN cuyas regiones P y regiones N pueden estar hechas del mismo o
diferente semiconductor. El color de la luz emitida está determinado por la energía
del fotón, y en general, esta energía es aproximadamente igual a la energía de salto de
banda del material semiconductor en la región activa del LED.
Los elementos componentes de los LED's son transparentes o coloreados, de un
material resina-epoxy, con la forma adecuada e incluye el corazón de un LED: el chip
semiconductor.
Los terminales se extienden por debajo de la cápsula del LED o foco e indican cómo
deben ser conectados al circuito. El lado negativo está indicado de dos formas:
1) por la cara plana del foco o,
2) por el de menor longitud. El terminal negativo debe ser conectado al terminal
negativo de un circuito.
Los LED's operan con un voltaje relativamente bajo, entre 1 y 4 volts, y la corriente
está en un rango entre 10 y 40 mili amperes. Voltajes y corrientes superiores a los
indicados pueden derretir el chip del LED.
La parte más importante del "Light emitting diode" (LED) es el chip semiconductor
localizado en el centro del foco, como se ve en la figura1.
El chip tiene dos regiones separadas por una juntura. La región P está dominada por
las cargas positivas, y la N por las negativas. La juntura actúa como una barrera al
paso de los electrones entre la región P y la N; sólo cuando se aplica el voltaje
suficiente al chip puede pasar la corriente y entonces los electrones pueden cruzar la
juntura hacia la región P.
Si la diferencia de potencial entre los terminales del LED no es suficiente, la juntura
presenta una barrera eléctrica al flujo de electrones.
Figura 3.2 Figura de un led y su chip semiconductor
El material que compone el diodo LED, es importante ya que el color de la luz
emitida por el LED depende únicamente del material y del proceso de fabricación
principalmente de los dopados.
Figura 3.3 Símbolo electrónico del diodo emisor de luz
El Display De 7 Segmentos
Una de las aplicaciones mas populares de los LED’s es la de señalización. Quizás la
mas utilizada sea la de 7 LED’s colocadas en forma de ocho tal y como se indica en la
figura. Aunque externamente su forma difiere considerablemente de un diodo LED
típico, internamente están constituidos por una serie de diodos LED con unas
determinadas conexiones internas. En la figura se indica el esquema eléctrico de las
conexiones del interior de un indicador luminoso de 7 segmentos.
Figura 3.4 Diagrama interno de un display
En la figura se muestra un indicador de siete segmentos. Contiene siete LED
rectangulares (a - g), en el que cada uno recibe el nombre de segmento porque forma
parte del símbolo que esta mostrando. Con un indicador de siete segmentos se pueden
formar los dígitos del 0 al 9, también las letras a, c, e y f y las letras minúsculas b y d.
Los entrenadores de microprocesadores usan a menudo indicadores de siete
segmentos para mostrar todos los dígitos del 0 al 9 mas a, b, d, d, e y f .
Polarizando los diferentes diodos, se iluminaran los segmentos correspondientes. De
esta manera podemos señalizar todos los números en base 10. Por ejemplo, si
queremos representar el número de 1 en el display deberemos mandar a los diodos b y
b, y los otros diodos deben de tener tensión cero. Esto lo podemos escribir así
0110000(0). El primer digito representa al diodo a, el segundo al b, el tercero al c, y
así sucesivamente. Un cero representa que no polarizamos el diodo, es decir no le
aplicamos tensión. Un uno representa que el diodo esta polarizado, y por lo tanto,
emite luz.
Muchas veces aparece un octavo segmento, entre paréntesis en el ejemplo anterior,
que funciona como punto decimal
Figura 3.5 Octavo segmento
Para este contador se necesitan 8 displays de 7 segmentos los cuales van
multiplexados sus 7 segmentos para ahorro de líneas
Figura 3.6 Multiplexado
Los ánodos van a los transistores los cuales están controlados por medio de un
demultiplexor que a continuación se detalla.
3.4 Otros dispositivos utilizados (Drivers)
Demultiplexores (Distribuidores de datos)
Un demultiplexor es un circuito combinacional que recibe información en una sola
línea y la transmite a una de 2n líneas posibles de salida. La selección de una línea de
salida específica se controla por medio de los valores de los bits de n líneas de
selección. La operación es contraria al multiplexor. En la figura se muestra el
diagrama de bloques del demultiplexor.
Figura 3.7 Diagrama de bloques de demultiplexor
Diagrama de Bloques del Demultiplexor.
En la siguiente figura se muestra un demultiplexor de 1 a 4 líneas. Las líneas de
selección de datos activan una compuerta cada vez y los datos de la entrada pueden
pasar por la compuerta hasta la salida de datos determinada. La entrada de datos se
encuentra en común a todas las AND.
Figura 3.8 Diagrama lógico demultiplexor
Circuito Lógico de un Demultiplexor de 1 a 4 líneas.
El decodificador de la siguiente figura funciona como un demultiplexor si la línea E
se toma como línea de entrada de datos y las líneas I0 e I1 como líneas de selección.
Observe que la variable de entrada E tiene un camino a todas las salidas, pero la
información de entrada se dirige solamente a una de las líneas de salida de acuerdo al
valor binario de las dos líneas de selección I0 e I1. Por ejemplo si la selección de las
líneas I0I1 = 10 la salida Y2 tendrá el mismo valor que la entrada E, mientras que las
otras salidas se mantienen en nivel bajo.
Figura 3.9 Diagrama decodificador
Circuito Lógico de un Decodificador/Demultiplexor.
En consecuencia, como las operaciones decodificador y demultiplexor se obtienen del
mismo circuito, un decodificador con una entrada de activación se denomina
decodificador/demultiplexor; siendo la entrada de activación la que hace al circuito
un demultiplexor.
La tabla de verdad se muestra.
E I0 I1 Y0 Y1 Y2 Y3
1 X X 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
Tabla de verdad de un decodificador/demultiplexor
Para esta aplicación utilizamos el demultiplexor SN74HC138N que controla hasta 8
salidas por medio de una configuración de entrada la cual se realiza por medio de
RA0, RA1 y RA2 del puerto A del PIC.
Y a continuación se muestra la tabla de verdad de este demultiplexor, decodificador
Las entradas G1, G2A y G2B es una configuración fija y las entradas A, B y C es una
configuración que viene de las tres primeras salidas del puerto A del PIC estas se
controlan por medio del programa que se realiza en software, las cuales activa a los
transistores (BC 327) que controlan a los ánodos de los 8 displays.
Driver ULN2003A
El ULN2003A es un circuito integrado compuesto por una serie de componentes tipo
Darligton con las siguientes características básicas las cuales nos generan más
potencia de salida con lo cual podemos trabajar con reles, displays e incluso con
motores.
Tensión máxima de entrada
30 Vlts
Tensión máxima de salida
50 Vlts
Intensidad máxima de salida
500 mA
Potencia máxima disipable
1W
Si se trabaja con un ULN2003 hay que tener en cuenta que este circuito integrado
trabaja con lógica negativa por lo que la señal binaria enviada por el microcontrolador
es invertida por el ULN2003 hacia los 7 segmentos del display de ánodo común.
3.5 Teclado matricial
Este tipo de dispositivo de entrada de datos que consta de 16 teclas o pulsadores,
dispuestos e interconectados en filas y columnas. Dispone de un conector SIL (Single
In Line) macho de 8 pines que se corresponden con las 4 filas y las cuatro columnas
de las que dispone.
En la siguiente figura vemos el esquema de conexionado interno del teclado matricial
y sus correspondientes pines de salida numerados de izquierda a derecha mirando el
teclado tal y como se ve. Cuando se presiona un pulsador se conecta una fila con una
columna, teniendo en cuenta este hecho es muy fácil averiguar que tecla fue pulsada.
También podemos ver el conexionado típico con el puerto B del PIC.
Las resistencias son necesarias para poder compartir el puerto del PIC
independientemente del teclado y por ejemplo poder conectar un display o una barra
de leds al mismo tiempo. Durante la fase de lectura del teclado la mitad de la puerta B
es configurada como entrada y la otra mitad como lectura y durante la escritura en el
display u otro sistema, la puerta B es configurada como salidas. Entonces se podrían
cortocircuitar accidentalmente las salidas de los puertos provocando su destrucción, si
pulsásemos alguna tecla es ese momento con lo que al poner estas resistencias
evitamos este hecho y así si se produjera el cortocircuito tan solo circularía una
pequeña corriente y el puerto del PIC no correría ningún riesgo.
3.6 Modulación por ancho de pulso (PWM)
En una onda cuadrada se varía el ancho de pulso positivo, manteniendo constante la
frecuencia, ya que de esta manera el valor medio de la onda resultante es variable
dependiendo de la duración del pulso positivo de la misma.
La modulación de anchura de pulsos (PWM) se consigue con circuitos electrónicos,
de una de estas formas:
•
Generando una señal triangular y comparándola con una tensión continua de
referencia (variable a voluntad), de manera que en la salida se obtiene una onda
cuadrada con regulación del ancho del pulso positivo.
•
Mediante un circuito astable que controla el disparo de un monoestable, para
obtener en la salida una onda cuadrada de pulso positivo variable.
•
Mediante software, que es el método que se va a utilizar enseguida, este
funciona mediante un programa para µP, obteniendo en el puerto de
salida una señal cuadrada donde se puede variar el tiempo de pulso
positivo.
3.7 Programación en MPLB de microchip
El MPLAB IDE
es un plataforma de desarrollo integrada bajo Windows, con
múltiples prestaciones, que permite escribir su programa en lenguaje ensamblador o
en C, crear proyectos, ensamblar o compilar, simular el programa y finalmente
programar el componente, si se cuenta con el PIC START PLUS.
3.7.1 Partes del MPLAB
*Editor: Editor incorporado que permite escribir y editar programas u otros
archivos de texto.
*Project manager: Organiza los distintos archivos relacionados con un
programa en un proyecto. Permite crear un proyecto, editar y simular un programa.
Además crea archivos objetos y permite bajar archivos hacia emuladores o
simuladores de hardware.
*Simulador: Simulador de eventos discretos que permite simular programas
con ilimitados breakpoint, examinar/modificar registros, observar variables, tiempos
y simular estímulos externos.
*Ensamblador: Genera varios tipos de archivos objetos y relacionados para
programadores microchip y universales.
*Linker: Permite unir varios archivos objetos en uno solo generados por el
ensamblador o compiladores C.
La creación de un proyecto comienza con la escritura de un programa. Para ello
escoja la opción File/New y el editor del MPLAB-IDE presentará una página en
blanco. El sugerible que ponga nombre al archivo fuente desde el principio. Para ello,
ello escoja la opción File/Save As, póngale nombre al programa y agregue la
extensión ASM
CAPÍTULO IV
DESARROLLO DEL
PROYECTO
4.1 Desarrollo de investigación vía Internet
En este primer punto se ha desarrollado todo un proceso de investigación en base al
problema a resolver mediante diversos medios de investigación.
La primera fuente que se utilizó fue vía Internet, ya que es un método muy simple
para la búsqueda de información en la cual se encontró gran variedad de información,
la cual ha sido utilizada para el proyecto.
Pero valla no todo lo que se encuentra en Internet nos otorga gran confianza y
fiabilidad para el desarrollo del proyecto, es por eso que se tuvo que requerir a otra
fuente de investigación la cual son los libros.
4.2 Fuente de investigación en libros
Este medio quizás es uno de los mejores y más versátiles, ya que es muy utilizado
para aplicaciones muy importantes de ingeniería, y no sólo de ingeniería sino en todo
el ámbito que comprende la ciencia y una gama de aplicaciones esenciales en la
sociedad humana.
Por este medio queda bien claro sobre lo que vamos a trabajar y qué material es
indispensable para el proyecto para su buen funcionamiento e integridad.
4.3 Hojas de datos
Teniendo recaudada la información sobre lo que se va a realizar y cuál es el material
electrónico mejor diseñado y con mayor adaptación para el proyecto, se tienen en
cuenta las hojas de datos de estos materiales.
Las hojas de datos son simplemente hojas en donde encontramos las especificaciones
y cómo es su estructura interna de los componentes electrónicos, con esto podemos
saber que material es el más adecuado para implementar y también podemos conocer
cómo es que éste se conectará dentro de un circuito o aplicación.
4.4 Desarrollo de circuitos electrónicos
En esta etapa del proyecto se diseño un modelo sencillo que sirvió de base para el
desarrollo del proyecto, con el cual se trabajo por un momento, el material utilizado
como se muestra en la figura es un microcontrolador PIC16F84, 4 displays de ánodo
común, cuatro transistores que controlan a los displays, resistencias, capacitores.
Así es como se realizó la base de este proyecto
4.5 Desarrollo de programación sobre software
Muchas de las aplicaciones de electrónica, automatización, control e instrumentación,
requieren de el desarrollo de un programa mediante software para que realice una
diversidad de instrucciones tales como controlar ciertos procesos en las empresas o
realizar tareas automáticas en las que el hombre no interviene para su seguridad y
calidad del producto que se este realizando.
En este punto se hizo uso de la programación en el software MPLAB que es una
Plataforma de Desarrollo Integrada bajo Windows, con múltiples prestaciones, que
permite escribir su programa en lenguaje ensamblador o C (el compilador C se
compra aparte), crear proyectos, ensamblar o compilar, simular el programa y
finalmente programar el componente, con el programador para PIC’S el PICSTARTPLUS.
Aquí se realizó el programa principal para el proyecto realizándose distintas pruebas
para su funcionamiento.
4.6 Cambios en circuito electrónico y programación
El circuito básico que se tenía anteriormente se cambió a otro con más componentes
electrónicos y otras funciones en el programa base, a este circuito se le agregó un
teclado matricial de 16 teclas para poder programar el microcontrolador para que éste
realice otras situaciones.
También se le añadieron otros 4 displays, con sus respectivas resistencias y
transistores.
Claro esta que el microcontrolador sólo cuenta con 18 pines para lo cual con todo este
material que se agregó es imposible montarlo ya que se requieren de más salidas y
entradas, es por eso que también se agregó el teclado matricial que nos ahorra muchos
pines de I/O y también un demultiplexor que va hacia los displays por medio de los
transistores.
También se utilizó un método llamado multiplexaje que es la combinación de
diversos canales para tener la comunicación en uno sólo, este método también nos
otorga ahorro de líneas en el microcontrolador por lo que se tuvo el siguiente circuito.
Figura 4.1 Diagrama del contador
Como podemos notar en la figura anterior encontramos otro elemento que lleva sus
líneas a los displays, éste es el integrado ULN2003A es un driver que sirve para
aumentar la potencia de salida mediante arreglos de transistores llamados
“Darlington” los cuales vienen ya integrados en el circuito, esto nos ayuda a que los
displays no se muestren tan tenues cuando enciendan debido al multiplexaje.
Para finalizar se realizaron múltiples pruebas para su buen funcionamiento y se
corrigieron algunos detalles.
Figura 4.2 Etapa del microcontrolador
En esta primera etapa encontramos al microcontrolador y sus partes esenciales, botón
de reset y circuito de oscilador, también dos pulsadores o entradas para incrementar la
cuenta dependiendo el modo en que se encuentre el contador.
Figura 4.3 Etapa del teclado
Esta etapa es la del teclado matricial que son filas y columnas que van a los pines del
microcontrolador de RB0 a RB7, con el cual se configura el contador.
Figura 4.4 Etapa de visualización
En esta etapa podemos observar el módulo de los displays, que van multiplexados
desde la salida del drive ULN2003A para un mejor brillo de la luz que emiten.
Figura 4.5 Etapa de control de displays
Esta es la etapa del control de los displays mediante transistores y un demultiplexor
que tan sólo con una configuración de tres entradas se puede controlar hasta ocho
dígitos de display.
Figura 4.6 Etapa de indicadores
Esta es la última etapa del proyecto que es una serie de LEDS que nos indican el
estado en que se encuentra el contador para su funcionamiento.
CAPÍTULO V
ACTIVIDADES
DIVERSAS
5.1 Control de velocidad de un motor de CC
Diseño de circuito para el control de un motor de 120v, 220 v de corriente directa.
Mediante el uso de un microcontrolador se controla la velocidad de un motor de dc
mediante el método llamado PWM que consta en hacer cambiar el ancho de pulso de
una onda en función de voltaje. La salida PWM del microcontrolador va hacia un fet
de potencia para controlar el motor.
Es un diseño digital en donde existen 2 botones, el primero es para aumentar la
velocidad y el segundo es para disminuir ésta.
También se muestra en displays la velocidad en RPMS en la que se encuentra el
motor.
Figura 5.1 Etapa del microcontrolador
Esta es la primera etapa de nuestro circuito, el primer arreglo se basa en el reset del
circuito con la resistencia de 10k a vcc y nuestro swich a tierra, la otra parte es la del
oscilador con la frecuencia que va a trabajar el micro. Tenemos 2 entradas en RB0 Y
RB1, la primera va a aumentar la velocidad del motor y la segunda la disminuye, por
otra parte tenemos una salida en RC2 a una resistencia de 220 Ohms, esta es la salida
del PWM la cual se dirige a la segunda etapa, la de potencia que hará el control del
motor.
Figura 5.2 Etapa de potencia
En esta etapa nuestra salida del PWM se dirige a un optoacoplador con salida a
transistor para la protección del microcontrolador, de ahí se dirige a dos resistencias
de 1k que controlan 2 transistores mosfet de potencia en paralelo con sus diodos de
protección y con rumbo a el motor.
La entrada es de corriente alterna la cual la rectificamos con el puente de diodos y la
filtramos a un condensador, con ello arrancamos el motor.
La siguiente y última etapa es de visualización en donde observamos la velocidad del
motor en rpms.
Figura 5.3 Etapa de visualización
Aquí utilizamos el microcontroloador PIC16F84, hay una entrada en RA2 que es
donde entran los pulsos del sensor colocado en el encoder del motor para asi ser
mostrado el valor de las RPMS.
Figura 5.4 Etapa del control de displays
Y aquí solo se muestra el control de los displays para ahorrar líneas en el
microcontrolador.
Figura 5.5 Etapa de sensado
El funcionamiento del encoder es muy sencillo simplemente se coloca el sensor a una
distancia adecuada a los engranes del encoger y el sensor mandará un tren de pulsos a
la entrada del controlador, y mediante un factor y tiempo se logran medir las RPMS.
CAPÍTULO VI
EVALUACIÓN
ECONÓMICA Y
RESULTADOS
OBTENIDOS
6.1 Evaluación económica.
COMPONENTE
CANTIDAD
PRECIO $
Transistor BC 327
12
24
Microcontrolador
1
184
1
47
1
10
Driver ULN2003A
1
4
Cristal 4Mhz
2
24
Transistor Mosfet
3
160
12
132
------
50
PIC16C72
Microcontrolador
PIC16F84
Demultiplexor
SN74HC138N
IRFPGC50
Display 7 segmentos
Ánodo común
Otros
Total
El material utilizado no fue comprado, ya que la empresa lo tenía
635 pesos
6.2 Resultados obtenidos.
Para la realización del proyecto se tomaron muchos puntos en cuenta, tanto para su
diseño como para su robustez, no obstante, el proyecto se realizó con un número
determinado de componentes, lo cual hace de éste ser muy eficiente para la
utilización y trabajo en un ámbito industrial.
El proyecto como se esperaba resultó muy adecuado para su utilización, ya que tiene
muy buen funcionamiento y además se incluyeron algunas otras funciones de las
cuales serán muy útiles para su uso en las líneas de producción logrando así un
tamaño adecuado y de fácil instalación.
CONCLUSIONES
Al término de este proyecto se logró lo que se deseaba, implementar un dispositivo
capaz de contabilizar eventos e ir llevando una cuenta exacta de cada uno de ellos,
todo esto con el fin de hacer un proceso de producción automático sin la necesidad de
un ser humano con lo cual se consigue una mayor seguridad para el trabajador, una
mejor calidad para el producto o el bien común, y la mayor producción en poco
tiempo.
Contabilizar eventos es de grata importancia, con ello se consigue llevar un control
sobre lo que se esta produciendo, si se está logrando el objetivo de producir más o si
no se están alcanzando las metas ya planeadas por la empresa, y esto conlleva a
realizar ciertos cambios en la empresas para una excelente producción sin que halla
pérdidas de tiempo, calidad y poca producción.
Un contador además de contar eventos se puede utilizar para otras aplicaciones en las
empresas tales como medir la posición angular de servomecanismos mediante un
encoger el cual le envía una señal de pulsos al contador para ser procesadas por el
sistema, además de que estas señales son relativas y el sistema busca obtener una
posición absoluta. También se utiliza para medir la velocidad en la cual esta girando
un motor con el mismo principio del encoger o taco generador.
El haber realizado este proyecto muchas de las cosas que aprendí en el curso las logré
aplicar y hacer una perfección de ellas mismas, con ello consolide mi formación y
aprendizaje aplicando otros conocimientos de los cuales en el curso no logré ser
participe de ellos.
ANEXOS
Programa en microcontrolador PIC
LISTP=16F84
#include<P16F84.inc>
; DECLARACIÓN DE REGISTROS Y VARIABLES
STATUS EQU 03h
TRISA EQU 85h
TRISB EQU 86h
PORTA EQU 05h
PORTB EQU 06h
CUENTA EQU 0Ch
TMR0 EQU 01h
INTCON EQU 0Bh
DISPLAY1 EQU 0Dh
DISPLAY2 EQU 10h
DISPLAY3 EQU 11h
DISPLAY4 EQU 13h
DISPLAY5 EQU 16h
DISPLAY6 EQU 18h
DISPLAY7 EQU 1Ah
DISPLAY8 EQU 1Ch
UNIDADES EQU 0Eh
DECENAS EQU 0Fh
CENTENAS EQU 12h
MILLARES EQU 14h
UNIMILLA EQU 15h
DECMILLA EQU 17h
CENMILLA EQU 19h
MILMILLA EQU 1Bh
registro EQU 1Dh
TECLAS EQU 1Eh
CUENTA1 EQU 1Fh
TARDAR EQU 20h
UNIDADES1 EQU 21h
DECENAS1 EQU 22h
CENTENAS1 EQU 23h
MILLARES1 EQU 24h
UNIMILLA1 EQU 25h
DECMILLA1 EQU 26h
CENMILLA1 EQU 27h
MILMILLA1 EQU 28h
MILMILLA2 EQU 2Ch
CENMILLA2 EQU 2Dh
DECMILLA2 EQU 2Eh
UNIMILLA2 EQU 2Fh
UNIDADES2 EQU 30h
DECENAS2 EQU 31h
CENTENAS2 EQU 32h
MILLARES2 EQU 33h
MILMILLA3 EQU 34h
CENMILLA3 EQU 35h
DECMILLA3 EQU 36h
UNIMILLA3 EQU 37h
UNIDADES3 EQU 3Bh
DECENAS3 EQU 3Ch
CENTENAS3 EQU 3Dh
MILLARES3 EQU 3Eh
LED11 EQU 38h
LED22 EQU 39h
LED33 EQU 3Ah
LED1 EQU 29h
LED2 EQU 2Ah
LED3 EQU 2Bh
org 0x00
goto start
org 0x05
; Vector de inicio
; vete a start
; Inicio de programa
decod
addwf PCL,1
; Subrutina de decodificación
retlw b'0111111' ; Coloca ese número a w
retlw b'0000110' ; Coloca ese número a w
retlw b'1011011' ; Coloca ese número a w
retlw b'1001111' ; Coloca ese número a w
retlw b'1100110' ; Coloca ese número a w
retlw b'1101101' ; ...
retlw b'1111101'
retlw b'0000111'
retlw b'1111111'
retlw b'1101111'
retlw b'0111111'
return
; regresar
UDCM
call OO
; Subrutina de multiplexado
movf UNIDADES,W ; Mueve lo que hay en UNIDADES A w
movwf PORTB
; Mueve w a PORTB
movlw b'000'
; Mueve ese código a w
movwf PORTA
; Mueve w a PORTA
call retardo
; Llama a rutina de retardo
movf DECENAS,W ; ...
movwf PORTB
movlw b'001'
movwf PORTA
call retardo
movf CENTENAS,W
movwf PORTB
movlw b'010'
movwf PORTA
call retardo
movf MILLARES,W
movwf PORTB
movlw b'011'
movwf PORTA
checar
call retardo
movf UNIMILLA,W
movwf PORTB
movlw b'100'
movwf PORTA
call retardo
movf DECMILLA,W
movwf PORTB
movlw b'101'
movwf PORTA
call retardo
movf CENMILLA,W
movwf PORTB
movlw b'110'
movwf PORTA
call retardo
movf MILMILLA,W
movwf PORTB
movlw b'111'
movwf PORTA
call retardo
return
; regresar
bcf MILMILLA1,7
bcf DECMILLA1,7
bcf CENMILLA1,7
bcf MILLARES1,7
movf LED11,W
sublw 0x01
btfss STATUS,2
goto checar2
movf UNIDADES,W
subwf UNIDADES1,W
btfss STATUS,2
goto loop2
movf DECENAS,W
subwf DECENAS1,W
btfss STATUS,2
goto loop2
movf CENTENAS,W
subwf CENTENAS1,W
btfss STATUS,2
goto loop2
movf MILLARES,W
subwf MILLARES1,W
btfss STATUS,2
goto loop2
movf UNIMILLA,W
subwf UNIMILLA1,W
btfss STATUS,2
goto loop2
movf DECMILLA,W
subwf DECMILLA1,W
btfss STATUS,2
checar2
checar3
goto loop2
movf CENMILLA,W
subwf CENMILLA1,W
btfss STATUS,2
goto loop2
movf MILMILLA,W
subwf MILMILLA1,W
btfss STATUS,2
goto loop2
bsf MILLARES,7
goto p3
bcf MILMILLA1,7
bcf DECMILLA1,7
bcf CENMILLA1,7
bcf MILLARES1,7
movf LED22,W
sublw 0x02
btfss STATUS,2
goto p4
movf UNIDADES,W
subwf UNIDADES1,W
btfss STATUS,2
goto loop2
movf DECENAS,W
subwf DECENAS1,W
btfss STATUS,2
goto loop2
movf CENTENAS,W
subwf CENTENAS1,W
btfss STATUS,2
goto loop2
movf MILLARES,W
subwf MILLARES1,W
btfss STATUS,2
goto loop2
bsf MILLARES,7
goto p2
bcf MILMILLA1,7
bcf DECMILLA1,7
bcf CENMILLA1,7
bcf MILLARES1,7
movf LED33,W
sublw 0x03
btfss STATUS,2
goto p2
movf UNIMILLA,W
subwf UNIMILLA1,W
btfss STATUS,2
goto loop2
movf DECMILLA,W
subwf DECMILLA1,W
btfss STATUS,2
goto loop2
movf CENMILLA,W
subwf CENMILLA1,W
btfss STATUS,2
goto loop2
movf MILMILLA,W
subwf MILMILLA1,W
btfss STATUS,2
goto loop2
bsf MILLARES,7
goto p2
retardo
clrf CUENTA
; subrutina de retardo
CICLOR
movlw 0x01
; mueve ese numero a w
addwf CUENTA,1 ; suma lo que hay en w con cuenta
clrf TMR0
; limpia timer0
TIEMPO
btfss INTCON,2 ; checa el bit 2 TMR0 salta si es 1
goto TIEMPO
; vete a tiempo
bcf INTCON,2 ; limpia el bit 2 del intcon
btfss CUENTA,0 ; checa bit 0 de cuenta salta si es 1
goto CICLOR
; vete a ciclior
return
; regresa
retardo1
clrf CUENTA1 ; ...
CICLOR1
btfsc LED1,1
bsf MILMILLA,7
call UDCM
movlw 0x01
addwf CUENTA1,1
clrf TMR0
TIEMPO1
btfss INTCON,2
goto TIEMPO1
bcf INTCON,2
btfss CUENTA1,4
goto CICLOR1
return
FC
bsf STATUS,5 ; cambia a banco1
movlw 0xF0
; configura la mitad del puerto como
movwf TRISB
; entradas y la otra como salidas
bcf STATUS,5 ; cambia a banco 0
return
; regresar
OO
bsf STATUS,5
; cambia a banco 1
movlw 0x00
; configura el puerto b
movwf TRISB
; como salida
bcf STATUS,5 ; cambia a banco 0
return
; regresa
mostrar
movf UNIMILLA2,W ; mueve unimilla2 a w
movwf UNIMILLA1 ; mueve lo que hay en w a unimilla1
movf DECMILLA2,W
movwf DECMILLA1
movf CENMILLA2,W
movwf CENMILLA1
movf MILMILLA2,W
movwf MILMILLA1
movf UNIDADES2,W
movwf UNIDADES1
movf DECENAS2,W
movwf DECENAS1
movf CENTENAS2,W
movwf CENTENAS1
movf MILLARES2,W
movwf MILLARES1
return
mover
mover1
l2
l3
limpiar2
limpiar
movf UNIDADES,W ; mueve lo que hay en unidades a w
movwf UNIDADES1 ; mueve lo que hay en w a unidades1
movf DECENAS,W
movwf DECENAS1
movf CENTENAS,W
movwf CENTENAS1
movf MILLARES,W
movwf MILLARES1
movf UNIMILLA,W
movwf UNIMILLA1
movf DECMILLA,W
movwf DECMILLA1
movf CENMILLA,W
movwf CENMILLA1
movf MILMILLA,W
movwf MILMILLA1
return
btfss LED1,1
goto l2
goto par1
btfss LED2,2
goto l3
goto limpiar
btfss LED3,3
goto mover1
goto limpiar2
movf UNIDADES1,W
movwf UNIDADES2
movf DECENAS1,W
movwf DECENAS2
movf CENTENAS1,W
movwf CENTENAS2
movf MILLARES1,W
movwf MILLARES2
movlw b'00111111'
movwf UNIDADES1
movwf DECENAS1
movwf CENTENAS1
movwf MILLARES1
goto par1
movf UNIMILLA1,W
movwf UNIMILLA2
movf DECMILLA1,W
movwf DECMILLA2
par1
movf CENMILLA1,W
movwf CENMILLA2
movf MILMILLA1,W
movwf MILMILLA2
movlw b'00111111'
movwf UNIMILLA1
movwf DECMILLA1
movwf CENMILLA1
movwf MILMILLA1
goto par1
movf UNIDADES1,W
movwf UNIDADES
movf DECENAS1,W
movwf DECENAS
movf CENTENAS1,W
movwf CENTENAS
movf MILLARES1,W
movwf MILLARES
movf UNIMILLA1,W
movwf UNIMILLA
movf DECMILLA1,W
movwf DECMILLA
movf CENMILLA1,W
movwf CENMILLA
movf MILMILLA1,W
movwf MILMILLA
return
; INICIO DE PROGRAMA
start
clrf PORTB
; limpia puerto a y b
clrf PORTA
bsf STATUS,5 ; cambia a banco 1
movlw b'11010010' ; configura el timer0
movwf TMR0
movlw 0x00
; como salida el puerto b
movwf TRISB
movlw b'11000' ; del b0 a b2 como salida
movwf TRISA
; b3 y b4 como entrada
bcf STATUS,5 ; cambia a banco 0
movlw b'00111111' ; CHECAR
btfsc LED1,1
bsf MILMILLA,7
movwf UNIDADES1 ; ...
movwf DECENAS1
movwf CENTENAS1
movwf MILLARES1
movwf UNIMILLA1
movwf DECMILLA1
movwf CENMILLA1
movwf MILMILLA1
movwf UNIMILLA2
movwf DECMILLA2
movwf CENMILLA2
movwf MILMILLA2
movwf UNIDADES2
movwf DECENAS2
movwf CENTENAS2
movwf MILLARES2
inicia
teclado
A
BE
Ce
clrf LED11
clrf LED22
clrf LED33
call OO
movlw b'00111111' ; mueve es enumero a w
movwf PORTB
; mueve w a portb
movwf UNIDADES ; ...
movwf DECENAS
movwf CENTENAS
movwf MILLARES
movwf UNIMILLA
movwf DECMILLA
movwf CENMILLA
movwf MILMILLA
bsf UNIMILLA,7 ; CHECAR
call UDCM
; llama a rutina de multiplexado
clrf DISPLAY1 ; limpia display1
clrf DISPLAY2 ; ...
clrf DISPLAY3
clrf DISPLAY4
clrf DISPLAY5
clrf DISPLAY6
clrf DISPLAY7
clrf DISPLAY8
clrf registro
clrf TECLAS
clrf TARDAR
clrf LED1
clrf LED2
clrf LED3
clrf PORTB
; limpia puerto b
call FC
; llama a rutina de configuración de puertos
movlw b'0100' ; mueve ese numero a puerto b
movwf PORTB
btfss PORTB,6 ; checa el bit 6 del puerto b salta si es 1
goto BE
; vete a BE
goto rebote
; vete a rebote
call FC
movlw b'0100' ; repetitivo
movwf PORTB
; ...
btfsc PORTB,7
goto rebote1
call FC
movlw b'1000'
movwf PORTB
btfsc PORTB,4
goto rebote2
goto DEE
goto Ce
DEE
btfsc PORTB,5
goto rebote3
goto E
E
btfsc PORTB,6
goto rebote14
call UDCM
goto A
rebote
btfss PORTB,6
goto A
goto seguido
rebote1
btfss PORTB,7
goto A
movlw 0x01
movwf registro
goto partes
rebote2
btfss PORTB,4
goto A
bsf LED1,1
movlw 0x01
movwf LED11
goto pruebled1
rebote3
btfss PORTB,5
goto A
bsf LED2,2
movlw 0x02
movwf LED22
bsf TARDAR,7
goto pruebled2
rebote14
btfss PORTB,6
goto A
bsf LED3,3
movlw 0x03
movwf LED33
bsf TARDAR,2
goto pruebled3
; PRUEBA DE MODOS
pruebled1
btfss LED1,1
goto numeros
bsf MILMILLA,7
bcf UNIMILLA,7
goto numeros
pruebled2
btfsc LED2,2
bsf CENMILLA,7
bcf UNIMILLA,7
goto numeros
pruebled3
btfsc LED3,3
bsf DECMILLA,7
bcf UNIMILLA,7
numeros
x
x1
x4
x2
x3
x5
ca
tcero
tdos
goto numeros
call mostrar ; checar
btfss LED1,1
goto x
bsf MILMILLA,7
bcf CENMILLA,7
bcf DECMILLA,7
btfss LED2,2
goto x1
bsf CENMILLA,7
bcf MILMILLA,7
bcf DECMILLA,7
btfss LED3,3
goto x4
bsf DECMILLA,7
bcf MILMILLA,7
bcf CENMILLA,7
call mover1
btfss LED1,1
goto x2
bsf MILMILLA,7
bcf CENMILLA,7
bcf DECMILLA,7
btfss LED2,2
goto x3
bsf CENMILLA,7
bcf MILMILLA,7
bcf DECMILLA,7
btfss LED3,3
goto x5
bsf DECMILLA,7
bcf MILMILLA,7
bcf CENMILLA,7
call UDCM
; Llama a rutina de multiplexado
clrf PORTB ; limpia puerto b
call FC
; configuración del puerto b
movlw b'1000' ; mueve ese numero a w
movwf PORTB ; mueve w a puerto b
btfss PORTB,7 ; checa b7 del puerto b salta si es 0
goto ca
; vete a inicia
call mover
; CHECAR REGISTROS
goto inicia
call FC
movlw b'0001' ; mueve ese numero a puerto b
movwf PORTB
btfss PORTB,4 ; checa la tecla0 si esta pulsada
goto tdos
; vete a tdos
call retardo1 ; llama a retardo1
goto rebote4 ; vete a rebote4
btfss PORTB,5 ; checa la tecla1
goto ttres
; vete a ttres
call retardo1 ; llama a rutina de retardo1
goto rebote5 ; vete a rebote5
ttres
tcuatro
btfss PORTB,6 ; checa la tecla2
goto tcuatro ; vete a tcuatro
call retardo1 ; llama a rutina de retardo1
goto rebote6 ; vete a rebote6
btfss PORTB,7 ; checa la tecla3
goto numeros2 ; vete a fila 2
call retardo1 ; llama a rutina de reatardo1
goto rebote7 ; vete a rebote7
numeros2
call UDCM
; llama a rutina de multiplexado
clrf PORTB ; limpia el puerto b
call FC
; configuración del puerto
movlw b'0010' ; mueve ese numero a w
movwf PORTB ; mueve w a puerto b
tcinco
btfss PORTB,4 ; checa la tecla4
goto tseis
; vete a tseis
call retardo1 ; llama a rutina de reatardo1
goto rebote8 ; vete a rebote8
tseis
btfss PORTB,5 ; checa la tecla5
goto tsiete ; vete a tsiete
call retardo1 ; llama a rutina de reatardo1
goto rebote9 ; vete a rebote9
tsiete
btfss PORTB,6 ; checa la tecla6
goto tocho ; vete a tocho
call retardo1 ; llama a rutina de retardo1
goto rebote10 ; vete a rebote10
tocho
btfss PORTB,7 ; checa la tecla7
goto numeros3 ; vete a numeros3
call retardo1 ; llama a rutina de retardo1
goto rebote11 ; vete a rebote11
numeros3
call UDCM
; llama a rutina de multiplexado
clrf PORTB ; limpiar puerto b
call FC
; configurar puerto b
movlw b'0100'
movwf PORTB
tnueve
btfss PORTB,4 ; checa la tecla8
goto tdiez
; vete a tdiez
call retardo1 ; llama a rutina de retardo1
goto rebote12 ; vete a rebote12
tdiez
btfss PORTB,5 ; checa la tecla9
goto numeros ; vete a numeros
call retardo1 ; llama a rutina de retardo1
goto rebote13 ; vete a rebote13
rebote4
rebote5
rebote6
movlw 0x00 ; mueve ese numero a teclas para decodificar
movwf TECLAS
goto despliega ; vete a despliega
movlw 0x01 ; mueve ese numero a teclas para decodificar
movwf TECLAS
goto despliega ; vete a despliega
movlw 0x02 ; repetitivo
movwf TECLAS ; ...
goto despliega
rebote7
rebote8
rebote9
rebote10
rebote11
rebote12
rebote13
despliega
mitad
movlw 0x03
movwf TECLAS
goto despliega
movlw 0x04
movwf TECLAS
goto despliega
movlw 0x05
movwf TECLAS
goto despliega
movlw 0x06
movwf TECLAS
goto despliega
movlw 0x07
movwf TECLAS
goto despliega
movlw 0x08
movwf TECLAS
goto despliega
movlw 0x09
movwf TECLAS
goto despliega
movf TECLAS,W ; mueve lo que hay en teclas y colocalo en w
call decod
; llama rutina de decodificación
movwf TECLAS ; mueve w a teclas
btfsc TARDAR,2 ; chequeo para saber en que modo esta
goto despliega2 ; de corrido o en partes
btfsc TARDAR,7 ; chequeo de modo corrido o partes
goto mitad
; vete a mitad
bsf CENMILLA,7 ; CHECAR
movf CENMILLA,W ; mueve lo que hay en cenmilla y colocalo en w
movwf MILMILLA ; mueve w a milmilla
movwf MILMILLA1
movwf MILMILLA2
movf DECMILLA,W ; repetitivo
movwf CENMILLA ; ...
movwf CENMILLA1
movwf CENMILLA2
movf UNIMILLA,W
movwf DECMILLA
movwf DECMILLA1
movwf DECMILLA2
movf MILLARES,W
movwf UNIMILLA
movwf UNIMILLA1
movwf UNIMILLA2
movf CENTENAS,W
movwf MILLARES
movwf MILLARES1
movwf MILLARES2
movf DECENAS,W
movwf CENTENAS
movwf CENTENAS1
movwf CENTENAS2
movf UNIDADES,W
movwf DECENAS
movwf DECENAS1
movwf DECENAS2
movf TECLAS,W
movwf UNIDADES
movwf UNIDADES1
movwf UNIDADES2
goto numeros
despliega2
movf CENMILLA,W ; despliega los numeros de la parte 2
movwf MILMILLA ; repetitivo
movwf MILMILLA1
movwf MILMILLA2
movf DECMILLA,W ; ...
movwf CENMILLA
movwf CENMILLA1
movwf CENMILLA2
movf UNIMILLA,W
movwf DECMILLA
movwf DECMILLA1
movwf DECMILLA2
movf TECLAS,W
movwf UNIMILLA
movwf UNIMILLA1
movwf UNIMILLA2
call mover
goto numeros
; PROGRAMA DEL CONTADOR
partes
seguido
bcf UNIMILLA,7
call OO
loop
call FC
; configuración de puerto b
movlw b'1000'
movwf PORTB
btfsc PORTB,7 ; chequeo de bit para regresar a inicio
goto inicia
call OO
btfss PORTA,3 ; checa si se pulsa el boton 1
goto incrementar ; vete a incremetar
call UDCM
; llama a rutina de multiplexado
; checar
goto checar
p3
goto checar2
p4
goto checar3
p2
goto loop2
; vete a loop2
incrementar incf DISPLAY1,F ; incrementa display1 y guardalo ahi mismo
movf DISPLAY1,W ; mueve display1 y colocalo en w
call decod
; llama a rutina de decodificación
movwf PORTB ; despliega numero al puerto b
movwf UNIDADES ; y lo mueve a unidades
debounce
btfss PORTA,3 ; debounce si la tecla se deja pulsada
goto seguir ; vete a seguir
goto decenas ; vete a decenas
seguir
call UDCM
; llama a rutina de multiplexado
goto debounce ; vete a debounce
decenas
movf DISPLAY1,W ; mueve display1 a w
sublw 0x0A
; resta 0Ah a w
btfss STATUS,2 ; resultado de la resta es 0 brinca
goto loop2
; si es otro resulyado se va a loop2
clrf DISPLAY1 ; limpia display1
incf DISPLAY2,F ; incrementa display2 y se guarda ahi mismo
movf DISPLAY2,W ; mueve display2 a w
call decod
; llama a rutina de decodificación
movwf PORTB ; mueve numero a puerto b
movwf DECENAS ; mueve numero a decenas
debounce1
btfss PORTA,3 ; repetitivo
goto seguir1 ; ...
goto centenas
seguir1
call UDCM
goto debounce1
centenas
movf DISPLAY2,W
sublw 0x0A
btfss STATUS,2
goto loop2
clrf DISPLAY2
incf DISPLAY3,F
movf DISPLAY3,W
call decod
movwf PORTB
movwf CENTENAS
debounce2
btfss PORTA,3
goto seguir2
goto millares
seguir2
call UDCM
goto debounce2
millares
movf DISPLAY3,W
sublw 0x0A
btfss STATUS,2
goto loop2
clrf DISPLAY3
incf DISPLAY4,F
movf DISPLAY4,W
call decod
movwf PORTB
movwf MILLARES
debounce3
btfss PORTA,3
goto seguir3
goto unimilla
seguir3
call UDCM
goto debounce3
unimilla
btfsc registro,0
goto parte2
movf DISPLAY4,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY4
incf DISPLAY5,F
movf DISPLAY5,W
call decod
movwf PORTB
movwf UNIMILLA
debounce4
btfss PORTA,3
goto seguir4
goto decmilla
seguir4
call UDCM
goto debounce4
decmilla
movf DISPLAY5,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY5
incf DISPLAY6,F
movf DISPLAY6,W
call decod
movwf PORTB
movwf DECMILLA
debounce5
btfss PORTA,3
goto seguir5
goto cenmilla
seguir5
call UDCM
goto debounce5
cenmilla
movf DISPLAY6,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY6
incf DISPLAY7,F
movf DISPLAY7,W
call decod
movwf PORTB
movwf CENMILLA
debounce6
btfss PORTA,3
goto seguir6
goto milmilla
seguir6
call UDCM
goto debounce6
milmilla
movf DISPLAY7,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY7
incf DISPLAY8,F
movf DISPLAY8,W
call decod
movwf PORTB
movwf MILMILLA
debounce7
btfss PORTA,3
goto seguir7
goto loop
seguir7
call UDCM
goto debounce7
; CONTADOR PARTES
parte2
bcf UNIMILLA,7
call OO
loop2
btfss registro,0 ; chequea si es modo partes o no
goto loop
; vete a loop
btfss PORTA,4 ; checa si el boton 2 esta pulsado
goto inc2
; vete a inc2
call UDCM
; llama a rutina de multiplexado
goto loop
; vete a loop
inc2
incf DISPLAY5,F ; incrementa display5 guardalo ahi mismo
movf DISPLAY5,W ; mueve display5 a w
call decod
; llama a rutina de decodificación
movwf PORTB
; mueve numero a puerto b
movwf UNIMILLA ; mueve numero a unimilla
debo
btfss PORTA,4
; repetitivo
goto segm
; ...
goto ud
segm
call UDCM
goto debo
ud
movf DISPLAY5,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY5
debo1
segm1
ce
incf DISPLAY6,F
movf DISPLAY6,W
call decod
movwf PORTB
movwf DECMILLA
btfss PORTA,4
goto segm1
goto ce
call UDCM
goto debo1
movf DISPLAY6,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY6
incf DISPLAY7,F
movf DISPLAY7,W
debo2
segm2
mi
debo3
segm3
call decod
movwf PORTB
movwf CENMILLA
btfss PORTA,4
goto segm2
goto mi
call UDCM
goto debo2
movf DISPLAY7,W
sublw 0x0A
btfss STATUS,2
goto loop
clrf DISPLAY7
incf DISPLAY8,F
movf DISPLAY8,W
call decod
movwf PORTB
movwf MILMILLA
btfss PORTA,4
goto segm3
goto loop
call UDCM
goto debo3
end
BIBLIOGRAFÍA
Canello Pablo. Turnero digital con PIC. Recuperado el 9 de mayo de 2005, de
http://www.pablin.com.ar.
Canello Pablo. Control de velocidad PWM para motor de continua .Recuperado el 2
de junio de 2005, de http://www.pablin.com.ar.
González Fuentetaja Rafael. Motorización de telescopios. Recuperado el 13 de julio
de 2005, de http://es.geocities.com/astrorafael/motorscopio/introduccion.html.
Martín Daniel. (2001). Teclado matricial 4x4. Recuperado el 15 de mayo de 2005, de
http://www.x-robotics.com/rutinas.htm#RS232.
MICROCHIP
INC.
Design
Microchip.
de
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=143
4MOTOROLA INC. Thyristor Device Data. Series D. USA. 1991. 295 Págs.
Pérez Isaías. Teclados matricial y paralelo. Recuperado el 21 de mayo de 2005, de
http://www.geocities.com/pepi6006/.
Román Leonardo. Modulador por ancho de pulso (pwm). Recuperado el 15 de junio
de 2005, de www.paginadeleo.on.to.
Sarmiento Joaquín. (2003). Transistores Darlington. Recuperado el 6 de mayo de
2005, de http://roble.cnice.mecd.es/~jsaa0039/cucabot/darlington-tip120.html.
GLOSARIO
Contador: Dispositivo que sirve para contabilizar eventos mediante impulsos lógicos
mostrando un valor visualmente.
Sensor: Dispositivo que capta determinados fenómenos o alteraciones y los transmite
de forma adecuada.
Display: Pantalla donde se representan visualmente los datos que proporciona el
sistema de un aparato electrónico.
Registro: Unidad completa de almacenamiento.
Frecuencia: En un movimiento periódico, número de ciclos completos realizados en
una unidad de tiempo.
Microcontrolador: Un microcontrolador es un dispositivo electrónico capaz de
llevar a cabo procesos lógicos.
Multiplexaje: Es la combinación de múltiples canales de información en un medio
común de transmisión de alta velocidad.
Demultiplexor: Circuito electrónico que garantiza la separación de varias vías de
información reagrupadas en un mismo soporte de transmisión, según criterios de
frecuencia o tiempo.
Driver: Dispositivo del hardware o un programa que controlan o regulan otro
dispositivo.
Decodificador: Es un circuito lógico combinacional, que convierte un código de
entrada binario de N bits en M líneas de salida tales que cada línea de salida será
activada para una sola de las combinaciones posibles de entrada.
Descargar