Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ups GT000025 PDF
Ups GT000025 PDF
Sede Guayaquil
FACULTAD DE INGENIERÍAS
TEMA:
Autores:
Eduardo Mendoza Merchán
Luis Chacón Buñay
Director:
Ing. Luís Córdova Rivadeneira
f.......................................................
Eduardo Vicente Mendoza Merchán
f.......................................................
Luís Alonso Chacón Buñay
CERTIFICO:
………………………………….
Ing. Luís Córdova Rivadeneira
DIRECTOR DEL PROYECTO
Conste por el presente documento la cesión de los derechos del Proyecto Final de
Titulación, de conformidad con las siguientes cláusulas:
SEGUNDA.-
UNO.- El Sr. Eduardo Mendoza M. y Luís Chacón B., realizaron El Proyecto Final
titulado “Aplicación de Lenguaje C para microcontroladores PIC y Visual C# en el
desarrollo de un Sistema de Control de Acceso Peatonal”, para optar por el Título de
Ingeniero en Electrónica, especialidad Sistemas Industriales en la Universidad
Politécnica Salesiana Sede Guayaquil.
----------------------------------------
Ing. Luís Córdova Rivadeneira
DIRECTOR DE PROYECTO FINAL
-------------------------------------- -------------------------------------
Eduardo Mendoza Merchán Luís Chacón Buñay
AUTOR AUTOR
D E D I C A T O R I A
Eduardo
Luís.
A G R A D E C I M I E N T O
Eduardo Mendoza M.
Luís Chacón B.
CONTENIDO
AUTORÍA
CERTIFICACIÓN
DEDICATORIA
AGRADECIMIENTO
ÍNDICE GENERAL
ÍNDICE DE FIGURAS
ÍNDICE DE TABLAS
RESUMEN
OBJETIVOS
JUSTIFICACIÓN
METODOLOGÍA
INTRODUCCIÓN
7.- BIBLIOGRAFÍA
8.- ANEXOS
Autoría I
Certificación II
Acta de sesión de derechos III
Dedicatoria IV
Agradecimiento V
Contenido VI
i.- Resumen 1
ii.- Objetivos 3
iii.- Justificación 3
vi.- Metodología 4
v.- Introducción 5
1.- CAPÍTULO I:
Sistemas de control de acceso
1.1.- Antecedentes: 7
1.2.- Nociones del Control de Acceso Discrecional. 8
1.2.1.- Autorización Positiva y Negativa. 8
1.2.2.- Autorización Fuerte y Débil. 6
1.2.3.- Autorizaciones Explícitas e Implícitas 9
1.2.4.- Autorizaciones basadas en el contenido 9
1.2.5.- Control de Acceso Obligatorio 9
1.2.6.- Control de Acceso basado en Roles 10
1.2.7.- Control de Acceso basado en Restricciones 10
1.3.- Análisis general de los sistemas de control de acceso. 11
1.3.1.- El primer mecanismo 12
1.3.2.- El segundo mecanismo 12
1.3.3.- El tercer mecanismo 12
1.3.4.- El cuarto mecanismo 13
1.4.- Mecanismos de seguridad utilizados en los sistemas de control de acceso 14
1.4.1.- Control de Acceso basadas en teclados y bandas magnéticas 14
1.4.2.- Sistemas de Control de Acceso basados en Tarjetas Inteligentes. 16
1.4.3.- Etiquetas y Llaveros Inteligentes 18
1.4.4.- Sistemas de control de acceso basados en huellas dactilares. 19
1.4.4.1.- La identificación biométrica 19
a) Falsa aceptación 21
b) Falso rechazo 21
1.4.5.- Lectores subcutáneos de huellas dactilares 22
i.- Funcionamiento: 23
1.4.6.- Otros controles de acceso 24
1.5.- Cerraduras Especiales 25
1.5.1.- Cerradura electromagnética 26
1.5.2.- Cerradura electromecánica (Multipla 2000) 26
1.5.3.- Cerradura electrónica Rench 27
1.5.4.- Cerradura electrónica para múltiples aplicaciones 28
2.- CAPÍTULO II
Microcontroladores PIC de gama media.
2.1.- Introducción: 29
2.2.- El microcontrolador PIC 30
2.2.1.- Juego de instrucciones y entorno de programación 31
2.2.2.- Programación del PIC 31
2.2.2.- Tamaño de palabra 33
2.2.3.- Características generales 33
2.2.4.- Variaciones del PIC 34
a).- PICs modernos 34
b).- Clones del PIC 34
c).- PICs WírelesS 34
e).- PICs para procesado de señal (dsPICs) 35
2.2.4.- PICs más comúnmente usados 35
2.2.5.- Familia de la serie PIC18 35
2.2.5.- PICs en Internet 37
2.3.- Arquitectura interna de un microcontrolador PIC 38
2.3.1.- El procesador 38
2.2.2. Memoria de programa 40
i) ROM con máscara 41
ii) EPROM 42
iii) OTP (Programable una vez) 42
iv) EEPROM 42
v) FLASH 43
2.2.3. Memoria de datos 43
2.2.4. Líneas de E/S para los controladores de periféricos 44
2.2.5. Recursos auxiliares 45
2.4.-Descripción del PIC 16F877 46
2.4.1.- Características del PIC 16F877 46
2.4.2- Descripción de los puertos 48
4.- CAPÍTULO IV
Análisis y desarrollo del Sistema de Control de Acceso.
CAPITULO V
Análisis de de costos
7.- Bibliografía
8. – Anexos
ÍNDICE DE FIGURAS:
Capítulo I
Capítulo II
Capítulo IV
5.1 Relación costos fijos costos variables para una unidad 180
5.2 Relación costos fijos costos variables para producir 10 sistemas 181
5.3 Relación costos fijos costos variables para producir 100 sistemas 182
5.4 Relación costos fijos costos variables de los tres modelos 182
5.5 Variación de los precios debido al incremento de la producción 183
Teclado de acceso 2 salidas s170132 184
Control de acceso por teclado s170130 185
Control de acceso AC-903 186
Anexos
ÍNDICE DE TABLAS:
Capítulo II
Capítulo III
Capítulo IV
Capítulo V
Anexos
Dentro de estos procesos, tienen un rol muy importante los microcontrolador, que son
circuitos integrados programables que contiene todos los componentes de un computador
personal, aunque de limitadas prestaciones. La cantidad de productos electrónicos que
funcionan en base a uno o varios de estos microcontroladores aumenta de forma
exponencial. No es aventurado pronosticar que en el siglo XXI habrá pocos aparatos que
carezcan de microcontroladores.
1.1.- Antecedentes:
Los controles de acceso son sistemas muy antiguos, que nacieron por la necesidad de
proteger y controlar el acceso a ciertas áreas y lugares. Esta protección se ha visto
motivada inicialmente por temor que personas ajenas al entorno, delincuentes o
enemigos puedan robar y/o extraer material valioso o información de acuerdo a
criterios personales, sociales, comerciales, etc. Muchas obras majestuosas como por
ejemplo palacios, bases militares, se caracterizaban por sus muy particulares
métodos de acceso, los cuales fueron construidos de tal forma que sus principales
vías de acceso eran diseñadas con puentes que se elevaban mediante mecanismos
especiales, quedando así abajo un círculo de agua y caimanes que rodeaban dicho
castillo o fortaleza. En tal sentido, el acceso a estas edificaciones no sólo era posible
suministrando un nombre. En efecto, las palabras claves (passwords), eran utilizadas
por algunas personas para acceder al castillo, así como señas de reconocimiento
visual, o algún objeto en particular, como por ejemplo un anillo o un sello.
La estrategia de control de acceso está basada en la idea de que los sujetos acceden a
los objetos en base a su identidad y a unas reglas de autorización, que indican para
cada sujeto, las acciones que puede realizar sobre cada objeto del sistema.
Con esta estrategia, si un usuario desea realizar una operación sobre un objeto, se
busca en el sistema una regla de autorización que le dé permiso para realizar esa
operación sobre ese objeto, y si no se encuentra se le deniega el acceso. El motivo
por el que a este mecanismo de control de acceso se le llama ‘discrecional’ es porque
el usuario puede otorgar la autorización de acceso a otros usuarios. La forma más
común de administrar las autorizaciones es aplicando el concepto de ‘propiedad’, de
forma que cada objeto pertenece a un propietario que es responsable de otorgar o
revocar los derechos de acceso sobre los objetos. A continuación se realiza un breve
análisis de las principales variantes de estas estrategias:
Autorizaciones fuertes, tanto positivas como negativas son aquellas que no pueden
ser invalidadas, mientras que las débiles sí pueden ser invalidadas por otras
autorizaciones fuertes o débiles, de acuerdo a unas reglas específicas.
Las bases de datos que utilizan esta política de control de acceso son susceptibles de
recibir ataques por parte de sujetos que aparentemente realicen un acceso correcto a
los datos, pero que en realidad han recibido el permiso de acceso por parte de otro
sujeto de forma fraudulenta.
Consiste en la clasificación de tanto los sujetos como los objetos en el sistema. Una
‘clase de acceso’ es asignada a cada objeto y cada sujeto. Una ‘clase de acceso’ es
un elemento de un conjunto de ‘clases’ parcialmente ordenadas. Mientras que la
forma más general de conjunto de ‘clases de acceso’ es un conjunto de ‘etiquetas’, a
veces se define como un conjunto formado por dos componentes, un ‘nivel de
seguridad’ y un ‘conjunto de categorías’. Cada ‘nivel de seguridad’ es un elemento
de un conjunto jerárquicamente ordenado como ‘alto secreto’ (TS), ‘secreto’ (S),
‘confidencial’ (C) y ‘sin clasificar’ (U), donde TS > S > C > U. El conjunto de
categorías es un subconjunto de un conjunto desordenado, donde los elementos
pueden reflejar áreas funcionales o diferentes competencias como por ejemplo
‘finanzas’, ‘administración’, ‘ventas’ y ‘compras’ para sistemas comerciales.
En RBAC (Role-Based Access Control), los permisos se asocian con roles, y a los
usuarios se les hace miembros de los roles. De este modo los usuarios consiguen
permisos. Esto simplifica considerablemente la gestión de permisos. Los roles
representan a cada grupo funcional de las organizaciones, agrupando en cada uno de
ellos a aquellos usuarios que realizan funciones y tienen responsabilidades similares.
Por ejemplo, los roles en una entidad bancaria podrían ser Cajero y Contable, donde
cada uno de ellos tiene un conjunto de privilegios. Algunos de estos privilegios
pueden ser como en este caso jerárquicos y compartidos.
Mediante este simple mecanismo es muy sencillo llevar a cabo ciertas acciones,
como por ejemplo, intercambiar a los usuarios de un rol a otro, o incluir nuevos
permisos en los roles, o sustraer permisos en los roles, etc.
Una técnica de control de acceso mucho más flexible que las anteriores, pero con
poca experiencia en su utilización es la conocida como ‘Control de Acceso Basado
en Restricciones’, donde las restricciones expresadas en un lenguaje formal son
usadas para especificar asociaciones generales entre los usuarios y sus
autorizaciones. Esta estrategia permite tener tanto restricciones estáticas como
dinámicas, por ejemplo considerando factores como las horas del día en las que
estará vigente una autorización
1.3.- Análisis general de los sistemas de control de acceso.
El presente capítulo tiene por objeto analizar de forma general los distintos tipos de
controles de acceso que existen en la actualidad y la diversidad de mecanismos que
existen para verificar la identidad del usuario, su nivel de accesibilidad y demás
complementos que han ido evolucionando de forma paralela al avance de la
tecnología, así como a los constantes cambios que sufren debido a los nuevos
requerimientos y exigencias de las empresas y usuarios.
Tal como hemos mencionado anteriormente, existen al menos cuatro (4) diferentes
mecanismos que pueden estar inmersos en un sistema de control de acceso (Ver
figura 1.3).
Cada uno de estos mecanismos esta apoyado por una “tecnología de seguridad”, por
ejemplo: palabras claves (passwords), los tokens inteligentes o de seguridad,
certificados digitales, los dispositivos de reconocimiento de huellas digitales, palma
de la mano, iris del ojo, etc. Estas tecnologías están presentes en una gran variedad
de “productos de seguridad”. La figura 1.4, muestra las diferentes tecnologías que
apoyan el mecanismo de autenticación de usuarios y su relación con la complejidad
de implantación.
Existen una infinidad de tipos y modelos de control de acceso, que dependen del
nivel de seguridad, la magnitud del campus que controlen, las tecnologías usadas, la
integración en red con ordenadores y bases de datos, etc.
Figura 1.4. Tecnologías que apoyan el mecanismo de autenticación
Las tarjetas magnéticas contienen una banda magnética (llamada a veces magstripe
como abreviación de magnetic stripe) es toda aquella banda oscura presente en
tarjetas de crédito, abonos de transporte público o carnets personales que está
compuesta por partículas ferromagnéticas embebidas en una matriz de resina
(generalmente epoxi) y que almacenan cierta cantidad de información mediante una
codificación determinada que polariza dichas partículas. La banda magnética es
grabada o leída mediante contacto físico pasándola a través de una cabeza
lectora/escritora gracias al fenómeno de la inducción magnética.
Las tarjetas chip, muy usadas hoy en día en la telefonía (tarjetas telefónicas),
contiene en su interior un número de serie que es único y que, además, es imposible
de modificar. Eso nos indica que la tarjeta además de ser único sobre todo el mundo
es imposible de alterar. Entonces, se aprovecha eso para diseñar sistemas de
seguridad capaz de leer la parte inicial de la tarjeta, comparar el número con los
almacenados en la memoria E2PROM interna del circuito y permitir o impedir el
acceso de la persona a determinado lugar o recinto.
De nada sirve que el sistema de lectura de la tarjeta explore profundamente en la
memoria para garantizar que el código es válido si cualquiera con un martillo o
destornillador puede quitar de su lugar el dispositivo lector y puentear los cables que
accionan la apertura de la puerta o la traba. Para que esto no suceda el zócalo lector
de la tarjeta debe estar montado por un lado y la circuitería por el otro, haciendo que
si un malintencionado quita el lector no logre accionar el sistema puenteando cables.
El campo del lector tiene la apariencia de dos circunferencias, una en la parte frontal
del lector y otra en la parte posterior. Esto significa que si monta el lector sobre
cristal o cualquier superficie no metálica, podrá leer la tarjeta a través de ambos lados
del escáner. (Otra ventaja sobre las tarjetas de banda magnética).
A pesar de que la tarjeta será leída con mayor velocidad dependiendo del ángulo, la
posición exacta de la tarjeta dentro del campo no es importante (al contrario que los
lectores de banda magnética). Una vez activada, la tarjeta responde transmitiendo su
número único de identificación mediante una señal de 125KHz. Los 34 billones de
combinaciones posibles hacen prácticamente imposible la duplicación. Cada número
de identificación de las tarjetas es testado para comprobar la seguridad y los datos,
garantizando que el número no se leerá de forma incorrecta.
Las tarjetas inteligentes no tienen batería. Esto significa que cada tarjeta tiene una
vida teóricamente infinita, independientemente del número de veces que se utilice.
Aunque los estudios biométricos no son perfectos, sí son una herramienta muy
poderosa para identificar personas. De todos los sistemas de identificación
biométrica existentes, las huellas dactilares son las únicas legalmente reconocidas
como prueba fidedigna de identidad. Es un sistema que además de ser efectivo, es
cómodo de aplicar y la autenticación se obtiene rápidamente.
Las huellas digitales se toman de los dedos índices de ambas manos, tanto por la
comodidad al capturarlas, como porque estos dedos están menos propensos que los
pulgares a sufrir accidentes que dejen cicatriz.
Son únicas e irrepetibles aún en gemelos idénticos, debido a que su diseño no está
determinado estrictamente por el código genético, sino por pequeñas variables en las
concentraciones del factor del crecimiento y en las hormonas localizadas dentro de
los tejidos. Cabe señalar que en un mismo individuo la huella de cada uno de sus
dedos es diferente.
Para ello checa si los datos de la persona a identificar, corresponden con los
guardados en una base de datos.
¿Quién es la persona?
a) Falsa aceptación.-
Cuando se acepta a alguien que No es; por ejemplo, alguien podría clonar una
credencial de identificación, o adueñarse de los números confidenciales de una
persona para hacer una transacción en perjuicio de su legítimo dueño y hasta
falsificar su firma.
b) Falso rechazo.-
En lugar de las tradicionales llaves, por ejemplo los arrendatarios podrán escanear
sus huellas dactilares para acceder a su apartamento, un rascacielos en construcción
en el vecindario de Yaletown, situado en la parte baja de Vancouver."Esta tecnología
se está utilizando en edificios de finanzas, gobiernos o para aplicaciones de alta
seguridad", explicó el promotor del proyecto, James Schouw. "Pero va a llegar a ser
más barata, más solvente, y a todo el mundo al final le concierne la seguridad".
La gama de lectores biométricos subcutáneos utiliza una tecnología nueva que lee
debajo de la capa de piel (muerta) del individuo. Es en la capa subcutánea de la piel
donde reside la auténtica huella dactilar. El sistema funciona rebotando ondas
electromagnéticas, similares a las ondas de radio, en el tejido vivo y el flujo
sanguíneo bajo la piel de las personas.
Estas reflexiones son grabadas para luego construir la imagen de la huella, que es
utilizada posteriormente para confirmar la identidad del individuo.
Existe otros tipos de control de acceso, que no han sido mencionado, tales como
Torniquetes, molinetes, puertas batientes, etc., que son muy utilizados en centros
comerciales, terminales terrestres, aeropuertos, etc. y que además de servir para
contabilizar el numero de individuos o vehículos que visitan dichos locales, generan
tarjetas en donde consta la fecha y hora para luego sirve para determinar como por
ejemplo el costo por garaje.
Las cerraduras Bancarias incluyen lo anterior más retardo, doble usuario, conexión a
alarma silenciosa e inhibición a distancia.
2.1.- Introducción:
Los “PIC” son una familia de microcontroladores tipo RISC fabricados por
Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por
la división de microelectrónica de General Instruments. El nombre actual no es un
acrónimo, en realidad, el nombre completo es PICmicro, aunque generalmente se
utiliza como Peripheral Interface Controller (Controlador de Interfaz Periférico), ver
figura 2.1.
.
El PIC original se diseñó para ser usado con la nueva UCP (Unidad Central de
proceso) de 16 bits CP16000. Siendo en general una buena UCP, ésta tenía malas
prestaciones de E/S, y el PIC de 8 bits se desarrolló en 1975 para mejorar el
rendimiento del sistema quitando peso de E/S a la UCP, El PIC utilizaba micro
código simple almacenado en la ROM para realizar estas tareas; y aunque el término
no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una
instrucción cada 4 ciclos del oscilador.
En 1985, dicha división de microelectrónica de General Instruments se convirtió en
una filial y el nuevo propietario canceló casi todos los desarrollos, que para esas
fechas la mayoría estaban obsoletos. El PIC, sin embargo, se mejoró con EPROM
para conseguir un controlador de canal programable. Hoy en día multitud de PICs
vienen con varios periféricos incluidos (módulos de comunicación serie, UARTs,
núcleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000
palabras (una palabra corresponde a una instrucción en ensamblador, y puede ser 12,
14 , 16 bits, 17 o 18 bits dependiendo de la familia específica de PICmicro).
El PIC usa un juego de instrucciones tipo RISC (Reduced Instruction Set Computer)
cuyo número puede variar desde 35 para PICs de gama baja a 77 para los de gama
alta. Las instrucciones se clasifican entre las que realizan operaciones entre el
acumulador y una constante, entre el acumulador y una posición de memoria,
instrucciones de condicionamiento y de salto/retorno, implementación de
interrupciones y una para pasar a modo de bajo consumo llamada sleep.
Para Pascal existe un compilador de código abierto, JAL, lo mismo que PicForth para
el lenguaje Forth. GPUTILS es una colección de herramientas distribuidas bajo
licencia GNU que incluye ensamblador y enlazador, y funciona en Linux, MacOS y
Microsoft Windows. GPSIM es otra herramienta libre que permite simular diversos
dispositivos hardware conectados al PIC.
Programadores
• PICStart Plus (puerto serie)
• Promate II (puerto serie)
• MPLAB PM3 (puerto serie y USB)
• ICD2 (puerto serie y USB)
• PICKit 1 (USB)
• IC-Prog 1.05
Depuradores integrados
• ICD2 (USB)
Emuladores
• ICE2000 (puerto paralelo, convertidor a USB disponible)
• ICE4000 (USB)
• PIC EMU
• PIC CDlite
Los PICs actuales vienen con una amplia gama de mejoras de hardware incorporadas:
a) PICs modernos
Los viejos PICs con memoria PROM o EPROM se están renovando gradualmente
por chips con memoria Flash. Así mismo, el juego de instrucciones original de 12
bits del PIC1650 y sus descendientes directos ha sido suplantado por juegos de
instrucciones de 14, 16 y 18 bits. Microchip todavía vende versiones PROM y
EPROM de la mayoría de los PICs para soporte de aplicaciones antiguas o grandes
pedidos, la nueva generación de PIC18 trae nuevas mejoras con respecto de sus
antecesoras, como por ejemplo tiene memoria plana, es decir toda la memoria de
programa es un solo bloque a diferencia de las anteriores versiones que disponían de
hasta cuatro bancos de memoria para organizar su memoria, otras ventajas como
mayor capacidad de direccionamiento, 77 instrucciones y más ventajas que se vera
más adelante en detalle.
Por todos lados surgen compañías que ofrecen versiones del PIC más baratas o
mejoradas. La mayoría suelen desaparecer rápidamente. Una de ellas que va
perdurando es Ubicorn (antiguamente Scenix) que vende clones del PIC que
funcionan mucho más rápido que el original. OpenCores tiene un núcleo del
PIC16F84 escrito en Verilog.
c) PICs wíreless
• 77 instrucciones
• Arquitectura orientada al uso de Lenguaje C
• Memoria de programa lineal hasta 2Mbytes
• Memoria de datos hasta 4Kbytes
• Capacidad de proceso hasta 10MIPS, clock: DC - 48Mhz
• Instrucciones de 16 bits y datos de 8 bits
• Multiplicador por hardware de 8x8 bits
• Pines soportan hasta 25mA en modo sink/source
• Hasta 4 pines para interrupciones externas
• Hasta 3 timers de 16 bits y hasta 2 timers de 8 bits
• Timer 1 con oscilador LP
• Hasta 5 módulos CCP, configurables como
o Entradas de captura de 16 bits de resolución
o Modo Comparador de 16 bits de resolución
o Salida PWM hasta 10 bits de resolución
156Khz Max con 8 bits de resolución
39Khz max con 10 bits de resolución
• Generales
o Alimentación: 2.0V - 5.5V
o Rango temperatura
Comercial: 0-70ºC
Industrial: -40ºC a 85ºC
Extendido: -40ºC a 125ºC
o 18 a 80 pines
• Procesador
• Memoria no volátil para contener el programa
• Memoria de lectura y escritura para guardar los datos
• Líneas de E/S para los controladores de periféricos:
a) Comunicación paralelo
b) Comunicación serie
c) Diversas puertas de comunicación (bus l2C, USB, etc.)
• Recursos auxiliares:
a) Circuito de reloj
b) Temporizadores
c) Perro Guardián («watchdog»)
d) Conversores AD y DA
e) Comparadores analógicos
f) Protección ante fallos de la alimentación
g) Estado de reposo o de bajo consumo(sleep).
2.3.1.- El procesador
1
Los temas tratados están basados en el libro titulado “Microcontroladores PIC diseño práctico de
aplicaciones” de José M. Angulo Usategui 3era edición.
Otra aportación frecuente que aumenta el rendimiento del computador es el fomento
del paralelismo implícito, que consiste en la segmentación del procesador (pipe-line),
descomponiéndolo en etapas para poder procesar una instrucción diferente en cada
una de ellas y trabajar con varias a la vez. l alto rendimiento y elevada velocidad que
alcanzan los modernos procesadores, como el que poseen los microcontroladores
PIC, se debe a la conjunción de tres técnicas:
• Arquitectura Harvard
• Computador tipo RISC
• Segmentación
2.2.2.Memoria de programa
Observe que dos de las posiciones de memoria tienen las indicaciones “vector de
reset” y “vector de interrupción”. Eso significa que, cuando se provoca un reset, el
microprocesador vuelve a la posición 0000 del programa y cuando se produce una
interrupción, a la posición 0004. Estos retornos forzados deben ser considerados al
diseñar el programa del microprocesador; es decir que el reset se produce porque la
señal externa pone el contador de programa en 000 y todo el programa se reinicia. En
cambio, cuando ingresa una señal por la pata de interrupción el contador de
programa va a 004 y la acción que, en general ocurre, es que se comienza a leer un
subprograma particular. Cuando este subprograma termina, el contador de programa
recupera el número que tenía en el momento de arribar la interrupción.
Este modelo de memoria sólo se puede grabar una vez por parte del usuario,
utilizando el mismo procedimiento que con la memoria EPROM. Posteriormente no
se puede borrar. Su bajo precio y la sencillez de la grabación aconsejan este tipo de
memoria para prototipos finales y series de producción cortas.
d) EEPROM
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar
en circuito al igual que las EEPROM, pero suelen disponer de mayor capacidad que
estas últimas. El borrado sólo es posible con bloques completos y no se puede
realizar sobre posiciones concretas. En las FLASH se garantizan 100.000 ciclos de
escritura-borrado.
Por sus mejores prestaciones está sustituyendo a la memoria EEPROM para contener
instrucciones. De esta forma Microchip comercializa dos microcontroladores
prácticamente iguales, que sólo se diferencian en que la memoria de programa de
uno de ellos es tipo EEPROM y la del otro tipo Flash. Se trata del PIC 16C84 y el
PIC 16F84, respectivamente. En la actualidad Microchip tiene abierta una línea de
PIC con memoria Flash cada vez más extensa y utilizada.
Los datos que manejan los programas varían continuamente, y esto exige que la
memoria que contiene debe ser de lectura y escritura, por lo que la memoria RAM
estática (SRAM) es la más adecuada, aunque sea volátil.
Hay microcontroladores que también disponen como memoria de datos una de
lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte en el
suministro de la alimentación no ocasiona la pérdida de la información, que está
disponible al reiniciarse el programa.
Las líneas de E/S que se adaptan con los periféricos manejan información en paralelo
y se agrupan en conjuntos de ocho, que reciben el nombre de Puertos. Hay modelos
con líneas que soportan la comunicación en serie; otros disponen de conjuntos de
líneas que implementan puertos de comunicación para diversos protocolos, como el
I2C, el USB, etc. A continuación se muestra el diagrama de bloques del PIC
16F877A 2
2
LA imagen así como algunos criterios han sido tomados de la colección de libros titulado: “Curso
práctico sobre Microcontroladores”, de la empresa Cekit
Figura 2.8 Diagrama de bloques General De un PIC de gama media
2.2.5. Recursos auxiliares
CARACTERÍSTICAS 16F877
Número de pines 40
Interrupciones 14
Timers 3
Módulos CCP 2
Arquitectura Harvard
CPU Risc
Canales Pwm 2
Pila Harware -
El PIC 16F877 tiene un total de 40 pines, de los cuales utiliza 7 para alimentación,
reset y oscilador. Los 33 restantes se distribuyen en cinco puertos desde el A hasta
el Puerto E, Los dispositivos periféricos se listan a continuación:
Dispositivos periféricos:
En la siguiente tabla se resume la función de cada uno de los pines que contiene el
Microcontrolador PIC 16F877
TIPO DE
NOMBRE PIN TIPO BUFFER DESCRIPCIÓN
DEL PIN
RC7/RX/DT
PORTD es un puerto bidireccional
paralelo
RD0/PSP0 19 I/O ST/TTL
RD1/PSP1 20 I/O I/O ST/TTL
RD2/PSP2 21 I/O I/O ST/TTL
RD3/PSP3 22 I/O I/O ST/TTL
RD4/PSP4 27 I/O ST/TTL
RD5/PSP5 28 ST/TTL
RD6/PSP6 29 ST/TTL
RD7/PSP7 30 ST/TTL
Además, al ser tan pequeños tienen una potencia limitada y sólo sirven para realizar
una tarea. En el siglo XXI la realización de proyectos para aplicar los
microcontroladores en el gobierno y automatización de multitud de productos y
procesos se presenta como una ingente labor que va a requerir la colaboración de
multitud de profesionales y va a ofrecer una oportunidad inigualable para quienes
estén preparados adecuadamente.
• El lenguaje Ensamblador
• El lenguaje Basic
• El Lenguaje C
Se dice que el lenguaje Ensamblador es de bajo nivel porque sus instrucciones son
exactamente las que el procesador sabe interpretar y ejecutar. En realidad, el
computador digital sólo acepta instrucciones en código binario y el Ensamblador
facilita su escritura al programador permitiendo expresarlas mediante
«mnemónicos 1», que son tres o cuatro letras significativas que referencian en inglés,
la operación que conlleva la instrucción. Por ejemplo, una instrucción que «mueve»
un dato de un sitio (A) a otro (B), en Ensamblador se escribe MOV A,B.
Los lenguajes de «alto nivel» tienen instrucciones más potentes: saben multiplicar,
sacar la raíz cuadrada y realizar funciones y operaciones mucho más complicadas
que las que pueden hacer las instrucciones de la máquina. Pero como la máquina es
la misma, la realización de esas instrucciones se tiene que hacer con programas de
instrucciones elementales. Cada instrucción de alto nivel se convierte en un
subprograma de instrucciones de bajo nivel. Por eso para que el procesador pueda
ejecutar las instrucciones de un lenguaje de alto nivel precisa otro programa que las
descomponga en las instrucciones de bajo nivel correspondientes. A estos programas
se les llama compiladores.
1
La definición del término mnemónico, puede ser revisado en el vocabulario técnico, al final de este
documento.
3.1.1.- Programa fuente en Lenguaje Ensamblador:
El programa fuente esta compuesto por una sucesión de líneas de programa. Cada
línea de programa esta compuesta por 4 campos separados por uno o más espacios o
tabulaciones. Estos campos son:
Si se las divide en tres grupos, se tiene en primer lugar el grupo de las instrucciones
que operan con bytes y que involucran algún registro de la memoria interna. En
segundo lugar se analizaran las instrucciones que operan solo sobre el registro W y
que permiten cargarle una constante implícita o incluida literalmente en la
instrucción (literales). En tercer lugar se agrupan las instrucciones que operan sobre
bits individuales de los registros de la memoria interna. En cuarto lugar se clasifican
las instrucciones de control de flujo del programa, es decir las que permiten alterar la
secuencia lineal de ejecución de las instrucciones. Por último se agrupan unas pocas
instrucciones que llamaremos especiales, cuyas funciones o tipos de operandos son
muy específicos y no encajan en ninguna de las clasificaciones anteriores.
En la tabla 3.1 se ha resumido las 35 instrucciones de los microcontroladores PIC de
gama media, clasificados en los tres grupos antes mencionados, en donde se hace una
breve descripción de su función, se determina el numero de ciclos que necesita para
ser ejecutado por el microcontrolador, y se establece los bit de las banderas que serán
afectados en el registro status.
• Crear un proyecto.
• Agregar un archivo de programa fuente de proyecto.
• Ensamblar o compilar programas fuente.
• Editar programas fuente.
• Reconstruir todos los archivos fuente, o compilar un solo archivo.
• Depurar su programa fuente.
Aprender a manejar el lenguaje BASIC para computadoras es una labor muy sencilla,
tan simple como escribir (en inglés). En BASIC las instrucciones coinciden con el
nombre en inglés de la operación que se debe llevar a cabo. Por ejemplo, escribir o
visualizar un valor en la pantalla utiliza la instrucción PRINT; para introducir por el
teclado un valor se emplea la instrucción INPUT y si se desea realizar una suma
basta con poner el signo “+” de la misma.
Se trata de un lenguaje muy sencillo que está orientado a las personas y por eso sus
instrucciones recuerdan las palabras inglesas con las que se describe la operación que
realizan. Dado su parecido con el álgebra elemental es muy útil para resolver
problemas técnicos de ingeniería, aunque también es muy cómodo en las
aplicaciones que manejan mucha información literal, típico en los negocios.
Las grandes ventajas del lenguaje BASIC desgraciadamente están acompañadas por
algunos defectos, que suelen empujar a los programadores profesionales a repudiarlo.
Como mayor defecto se dice que es un lenguaje «no estructurado» o «no
procedural», de lo cual la mayor culpa tiene la instrucción GOTO, que es capaz de
desviar el flujo de la ejecución de instrucciones a cualquier parte del programa,
impidiendo la posibilidad de dividir la tarea en trozos pequeños e independientes.
En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña
finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras
de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un
lenguaje que permite realizar una programación estructurada economizando las
2
Conceptos y datos de la historia de lenguaje C se han tomado de la enciclopedia “wikipedia”,
disponible en el Internet en la dirección http://es.wikipedia.org/wiki/Portada.
expresiones, con abundancia de operadores y tipos de datos (aunque los básicos sean
pocos), codificando en alto y bajo nivel simultáneamente, reemplazando
ventajosamente la programación en ensamblador y permitiendo una utilización
natural de las funciones primitivas del sistema. Además, no está orientado a ningún
área en especial y sobre todo consigue un código objeto altamente optimizado que
repercute en que los programas son muy rápidos.
Durante muchos años no existieron reglas estándares para el lenguaje, pero en 1983
se decide formar un comité con el objetivo de crear el estándar ANSI (Instituto
Nacional Americano de Estándares). El proceso dura seis años y a principios de los
90 el estándar es reconocido por la ISO (Organización Internacional de Estándares) y
comienza a comercializarse con el nombre ANSI C.
void main()
{
printf( "Hola mundo" );
}
Debido al éxito del lenguaje, en 1990 se reúnen las organizaciones ANSI e ISO para
definir un estándar que formalice el lenguaje. El proceso culmina en 1998 con la
aprobación del ANSI C++.´
#include <iostream>
void main()
{
std::cout << "Hola mundo";
}
class HolaMundo
{
static void Main()
{
System.Console.Write( "Hola mundo" );
}
}
• Programación estructurada
• Economía de las expresiones
• Abundancia en operadores y tipos de datos.
• Codificación en alto y bajo nivel simultáneamente.
• Reemplaza ventajosamente la programación en ensamblador (assembler).
• Utilización natural de las funciones primitivas del sistema.
• No está orientado a ningún área en especial.
• Producción de código objeto altamente optimizado.
• Facilidad de aprendizaje (;-)).
3.4.1 Antecedentes.-
3
Mucha de la información contenida ha sido tomada de varias páginas Web publicadas en el Internet,
con información actualizada, y otros se ha tomado directamente de los manuales de los compiladores,
al final en bibliografía constan las direcciones de los sitios Web visitados.
El compilador Pic C soporta dispositivos de todas las familias de los
microcontroladores PIC (baja, media y alta), en su ultima versión (4.0) se incluyen
librerías para controlar mas de 300 modelos de microcontroladores PIC. El
compilador manejara en forma automática el registro PCLATH y la selección de
bancos de memoria
El Pic C Compiler fue desarrollado para cumplir con las especificaciones del
lenguaje ANSI C . El compilador produce principalmente tres tipos de archivos.
Archivos con extensión .hex que le permitirá grabar el programa ejecutable en el
PIC por medio del uso de un programador. El archivo con extensión .asm
contendrá un listado en assembler del programa compilado con la información del
mapeo de memoria. Estos archivos son muy útiles para el debugging de los
programas y para determinar la cantidad de pasos de programas (ciclos de
ejecución) tiene la aplicación. Los archivos con extensión .pre contienen la
información preprocesada del programa, #defines, #includes, etc. la cual es
expandida y guardada en el archivo.
Es el producto ideal para aquellas personas que le gusta desarrollar en bajo nivel
con los recursos de un lenguaje de alto nivel como el C. Se recomienda ser
utilizado por personas vinculadas con la programación y sintaxis de C.
En sus principales ventajas podemos anotar:
1. leer NOMBRE
2. leer NOTA
3. si no hay mas notas, ir al punto 5
4. ir al punto 2
5. calcular la MEDIA
6. imprimir NOMBRE
7. imprimir MEDIA
Fig. 3.3 Diagrama de flujo del programa media
declaraciones globales
prototipos de funciones
main()
{ variables locales;
bloque de sentencias;
llamadas a las funciones;
}
funcion_1()
{
variables locales a funcion_1;
bloque de sentencias;
llamada a otra/s funciones;
}
funcion_n() {
…
}
//programa parpadeo_led.c
//proyecto de tesis (2006-09-19)
//Realizado: Eduardo Mendoza Merchán
//Revisado: ing. Luís Córdova R.
//Función: Pprograma que hace parpadear un led en RB7 cada 1 s
Todo programa en C debe tener una función main(), la cual debe aparecer solamente
una vez, y es en esta función donde comienza la ejecución del programa. No deben
aparecer ningún parámetro entre los corchetes que le siguen a la función. La palabra
reservada void puede aparecer opcionalmente para clarificar que no deben ir
parámetros. Como main() es clasificada como una función, todo el código que
contenga debe iniciar y finalizar con un par de llaves, las cuales indican el punto
inicial y final del programa.
Ej.
void main(void )
{
Cuerpo del programa
}
#include <Nombre_Fichero>
Esta directiva hace que el compilador incluya en el fichero fuente el texto que
contiene el archivo especificado en <Nombre_Fichero>. Si el nombre del fichero se
incluye entre los símbolos '< >' el compilador busca el fichero en el directorio
INCLUDE. Si se pone entre comillas dobles " " el compilador busca primero en el
directorio actual o directorio de trabajo y si no lo encuentra, entonces lo busca en los
directorios INCLUDE del compilador.
Ejemplo:
#include <18F4550.H>
#include <lcd.h>
#include "reg_C84”
3.4.5.3. función printf
printf(“control_string”, argument_list);
Cuando se usan variables, string debe ser una constante. El carácter % se pone dentro
de string para indicar un valor variable, seguido de uno o más caracteres que dan
formato al tipo de información a representar. Si ponemos %% obtenemos a la salida
un solo %. El formato tiene la forma genérica %wt, donde w es optativo y puede ser
1,2,...,9. Esto es para especificar cuántos carácteres son representados; si elegimos el
formato 01,...,09 indicamos ceros a la izquierda, o también 1.1 a 9.9 para
representación en punto flotante. t es el tipo de formato y puede ser uno de los
siguientes:
C Carácter
U Entero sin signo
x Entero en Hex (minúsculas)
X Entero en Hex (mayúsculas)
D Entero con signo
%e Real en formato exponencial
%f Real (flota)
Lx Entero largo en Hex (minúsculas)
LX Entero largo en Hex (mayúsculas)
Lu Decimal largo sin signo
Ld Decimal largo con signo
% Simplemente un %
Tabla 3.2 formatos de salida para la función printf()
Ejemplos:
byte x,y,z;
printf (" Hola ");
printf("RTCCValue=>%2x\n\r",get_rtcc());
printf("%2u %X %4X\n\r",x,y,z);
printf(LCD_PUTC, "n=%c",n);
3.4.5.4.- variables
Alguno tipos de datos básicos que C soporta son: char, int, Float y long, en las
siguientes líneas se encuentran los diferentes tipos de datos soportador por el
lenguaje C para PIC-C:
declarador:
[const] [*]identificador [expr._constante][= valor_inicial]
enumerador:
enum [identificador]{
[lista_identificadores[= expresión_constante]]
}
estructura y unión:
struct [identificador] {
[calificador_tipo [[*]identificador
:expresión_constante [expresión_constante]]]
}
unión Ídem
Ejemplo:
struct lcd_pin_map
{ boolean enable;
boolean rs;
boolean rw;
boolean unused;
int data : 4;
} lcd;
En la siguiente tabla se muestra los rangos para cada tipo de dato, a fin de dar mayor
claridad a cada uno de los tipos de variables:
Una constante es una variable cuyo valor puede determinar el compilador durante la
ejecución y puede aplicar optimizaciones derivadas de ello. Para que esto sea posible
se ha de cumplir que el valor de una constante no pueda cambiar durante la
ejecución, por lo que el compilador informará con un error de todo intento de
modificar el valor inicial de una constante. Una constante puede ser declarada usando
la declaración #define <label> value
la etiqueta <label> define el nombre que usará a través del programa, y value es el
valor que se le asigna a la constante, ejemplo de declaración de constantes son las
siguientes:
#define TRUE 1
#define pi 3.14159265359
3.4.5.6.- Comentarios
Los comentarios son utilizados para documentar el significado y operaciones del
código fuente. Todo comentario es ignorado por el copilador. Un comentario puede
ser ubicado en cualquier lugar en el programa, excepto por la mitad de una palabra
reservada, el nombre de una función o en el nombre de una variable. Los
comentarios pueden tener muchas líneas y pueden ser usadas para remover
temporalmente líneas de código, los comentarios no pueden ser anidados.
Existen dos formas de realizar comentarios. La primera es usada por todos los
copiladores de C :
/* este es un comentario */
// este es un comentario
3.4.5.7.- Funciones
main()
{
function1()
{
}
function2()
{
}
}
Main() es la primera función llamada cuando se ejecuta el programa, las otras
funcione, tales como funcion1. funcion2, pueden ser llamadas por cualquier función
en el programa
Las funciones pueden ser de tipo void, char, int , float, double, array y de tipo
puntero, que esta en relación con el tipo de dato que devuelven. De igual forma se
trata con lo argumentos que recibe la función, en el siguiente ejemplo se observa la
forma de pasar los argumentos y de retornar un valor:
Int main()
{
Printf(“Programa para calcular la raíz cuadrada”)
Vsalida();
Return 0;
}
Void vsalida(void)
{
Double dt=12345.0
Double du;
Du=sqrt(dt);
Printf(“La raiz cuadrada es: %f”, du)
}
3.4.5.8.- Palabras reservadas de C
cont_eprom = ee_read(0x08)
Ejemplos:
Con la librería LCD.h podemos fácilmente escribir en una pantalla LCD de 2 líneas,
para utilizar la funciones de esta librería, es necesario llamarla a través de la directiva
#include, inicializarla y utilizar la siguiente nomenclatura:
\f Limpia el display
\n Va al inicio de la segunda líneas
\b regresa una posición
Existen otras librerías para manejar otros tipos de pantallas LCD, como por ejemplo
para módulos LCD de cuatro líneas.
La librería KBD.H, contiene el código para recibir datos del un teclado numérico de
4x3, para lo cual es necesario llamarla a la función por medio de la directiva #include
y luego inicializarla, para poder utilizarla, a continuación se explica con detalle el
uso de esta librería:
#include <16F870.h>
#include <kbd.c>
#include <lcd.c>
Main(){
Char c;
Kbd_init();
White(1)
{ c=kbd_init()
If (k!=0)
{
lcd_putc(”\fHa press la tecla: \n”);
lcd_putc(c);
}
}
}
Ejemplo:
#int_ad
control_adc()
{
adc_activo=FALSO
La librería I2C contiene funciones para implementar un bus I2C. La directiva #USE
I2C permanece efectiva para las funciones I2C_START, I2C_STOP, I2C_READ,
I2C_WRITE e I2C_POLL hasta que se encuentre otra directiva #USE I2C. Se
generan las funciones software a menos que se especifique la opción
NOFORCE_SW. Las opciones son:
MASTER Establece el modo maestro o principal
SLAVE Modo esclavo
Especifica el pin SCL (es un bit de
SCL=pin
dirección)
SDA=pin Especifica el pin SDA
ADDRESS=nn Especifica la dirección del modo esclavo
FAST Usa la especificación rápida I2C
SLOW Usa la especificación lenta I2C
Reinicia el WDT mientras espera en
RESTART_WDT
I2C_READ
NOFORCE_SW Usa funciones hardware I2C
Tabla 3.4 opciones del bus I2C
//programa comunicación_I2C.c
//Realizado: Eduardo Mendoza Merchán – Luís Chacón Buñay
//Revisado: ing. Luís Córdova R.
//Función: Comunicación por Bus I2C
#include <16C74.h>
#fuses XT, NOWDT
#use delay(clock=4000000)
#use I2C(master, SCL=PIN_B0, SDA=PIN_B1)
main()
{
int data;
I2C_START(); // Inicia la comunicación
I2C_WRITE(10); //Dirección del dispositivo
I2C_ WRITE (1); //Dato 1 enviado
I2C_ WRITE (2);
I2C_ WRITE (3);
I2C_STOP(); //Fin de la comunicación
I2C_START(); //Inicio de la comunicación
I2C_ WRITE (11); //Dirección dispositivo
data=I2C_READ(); //Lee el bus y almacena en data
I2C_STOP(); //fin de la comunicación
}
#include<16f877a.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) /
#include <lcd.c>
#include <kbd.c>
#int_RDA //interrupción por RS 232
RDA_isr()
OPCIONES:
{ float c;
c=getc(); //lee datos de la interfaz RS 232
printf(lcd_putc,"\fdato = %f ",c);
lcd_putc(c);
} //Fin de la interrupción
main()
{
int c,d;
kbd_init();
lcd_init();
enable_interrupts(int_rda); //Activa la interrupción
enable_interrupts(global);
while (1)
{
c=kbd_getc();
if (c!=0)
{
printf(lcd_putc,"\f %d ",c-48);
putc(c); //Envía información a la interfaz RS232
}
}
}
• SETUP_ADC_PORTS(value)
Esta función configura los pines del ADC para que sean analógicos, digitales o
alguna combinación de ambos. Las combinaciones permitidas varían, dependiendo
del microcontrolador.
Las constantes usadas también son diferentes para cada chip. Véase el archivo de
cabecera *.h para cada PIC concreto. Las constantes ALL_ANALOG y
NO_ANALOGS son válidas para todos los chips.
RA0_RA1_RA3_ANALOG
Esto hace que los pines A0, A1 y A3 sean analógicos y los restantes sean digitales.
Los +5v se usan como referencia; véase el siguiente ejemplo:
RA0_RA1_ANALOG_RA3_REF
Los pines A0 y A1 son analógicos; el pin RA3 se usa como voltaje de referencia y
todas los demás pines son digitales.
Ejemplo:
Setup_adc_ports( ALL_ANALOG );
• SETUP_ADC(mode)
Esta función prepara o configura el conversor A/D. Para la serie 14000 esta función
establece la corriente de carga. Véase el archivo 14000.H para los valores según el
modo de funcionamiento. Los modos son:
o ADC_OFF
o ADC_CLOCK_DIV_2
o ADC_CLOCK_DIV_8
o ADC_CLOCK_DIV_32
o ADC_CLOCK_INTERNAL
Ejemplo:
setup_adc(ADC_CLOCK_INTERNAL);
• SET_ADC_CHANNEL(canal)
set_adc_channel(2);
• i=READ_ADC()
Esta función lee el valor digital del conversor analógico digital. Deben hacerse
llamadas a SETUP_ADC() y SET_ADC_CHANNEL() en algún momento antes de
la llamada a esta función.
Ejemplo:
setup_adc( ALL_ANALOG );
set_adc_channel( );
while ( input(PIN_B0) ) {
delay_ms( 5000 );
value = read_adc();
printf("A/D value = %2x\n\r",value);
}
//programa conversor_AD.c
//Realizado: Eduardo Mendoza Merchán – Luís Chacón Buñay
//Revisado: ing. Luís Córdova R.
//Función: Adquiere datos por el canal 0 y convierte a digital
#include<16f877a.h> //Dispositivo
#fuses xt,nowdt,protect,noput,nolvp
#use delay (clock=4000000) //velocidad del reloj 4.00 MHz
#include"lcd.c" // Controlador de LCD
main()
{
float c;
lcd_init();
set_tris_a(0b000001); //RA0 anlog
setup_adc(adc_clock_internal); //Reloj interno
setup_adc_ports(ra0_analog); //RA0 entrada análoga
set_adc_channel(0); //utiliza el canal 0
while(1)
{
c=read_adc(); //almacena en c el valor obtenido
delay_ms(150); //
lcd_gotoxy(1,1); //0-5 V y 255 niveles
printf(lcd_putc,"Voltale = %1.2f V ",c);
delay_ms(150);
}
}
El PIC 16F877 posee dos módulos de captura, comparación o PWM, dichos módulos
trabajan utilizando alguno de los timers del dispositivo y pueden configurarse para
realizar una comparación, conteo o PWM en base al timmer seleccionado.
T2_DISABLED
T2_DIV_BY_1
T2_DIV_BY_4
T2_DIV_BY_16
setup_timer_2(T2_DIV_BY_16,255,1);
1 1
T= • 4 • t 2div•# periodos + 1 = • 16 • 4 • 256 = 0.004096 s
reloj 4000000
1
F = = 244hz
T
SET_PWM1_DUTY(value)
SET_PWM2_DUTY(value)
Estas funciones escriben los 10 bits de “value” al dispositivo PWM para establecer el
ciclo de trabajo. Se puede usar un valor de 8 bits si no son necesarios los bits menos
significativos. Value escribe el registro de 10 bits que determina el ciclo de trabajo
del PWM. Debe tenerse en cuenta que según la velocidad a la que trabaja el
oscilador, el registro de 10 bits, puede reducirse a 8 en caso que se requiera .una
velocidad de respuesta alta.
Puerta Abierta.- este mensaje se despliega cuando la puerta es abierta por medio del
ordenador o por medio del botón interno, creado a propósito con el fin de facilitar la
salida de personas que se encuentran dentro del condominio. Esta información no
será registrada si la puerta se abre por medio del botón interno, pero si se abre a
través del ordenador, se registrará en la base de datos del sistema.
Figura 4.3 pantalla del módulo LCD para ingreso de número de apartamento
1La imágenes mostradas, corresponden a la simulación del proyecto en computadora, con el simulador ISIS
PROTEUS, versión 6.9 SP3, de Labcenter Electronics.
Figura 4.4 pantalla del módulo LCD para ingreso de clave
Figura 4.5 pantalla del módulo LCD con mensaje de puerta abierta
Si la clave no es correcta, el sistema proporciona dos oportunidades mas para que sea
ingresada la clave correctamente, ver figura 4.6.
Figura 4. 7 Pantalla del módulo LCD que india que la alarma ha sido activada
Las puertas de los condominios aseguradas con este sistema podrán abrirse desde el
interior del condominio por medio de un interruptor, éste envía una señal que ingresa
a un interrupción dentro del microcontrolador y permite abrir la puerta por medio del
sistema, si en ese preciso momento una persona esta intentando ingresar por la
misma puerta, el microcontrolador se reiniciará de esa sesión y volverá a su estado de
ingreso departamento.
Todos los proceso descritos con relación a los microcontroladores esclavos, serán
enviados por medio del bus I2C al microcontrolador maestro, el cual una vez que los
registra en su memoria, procede a enviarlos al ordenador a través de una interfaz de
comunicación RS-232, en donde el ordenador presentará al usuario los mensajes
apropiados y almacenará la información que sea pertinente.
Si un usuario cree que su clave debe ser cambiada, puede cambiarla, pero este
proceso únicamente se lo puede realizar a través del ordenador. El ordenador envía
el número de apartamento cuya clave desea ser cambiada, el microcontrolador
confirma la existencia o no del número de apartamento ingresado, si el apartamento
es correcto, se digita la clave correspondiente. La clave ingresada es enviada al
microcontrolador maestro, el cual compara con sus registros en la memoria eeprom,
y si la clave es correcta envía autorización al PC para que se ingrese la nueva clave.
La nueva clave es digitada en el ordenador, el cual la envía al microcontrolador
maestro, éste cambia primero en su memoria eeprom, y luego la envía por medio del
Bus I2C a los otros dos esclavos, los cuales confirmarán el cambio de clave al
ordenador, por intermedio del microcontrolador maestro.
Los detalles más importantes que hacen que la familia de microcontroladores PIC sea
la más utilizada hoy en día son los siguientes:
2 Para mas detalles del microcontrolador PIC 16F877A, refiérase al capitulo II del presente trabajo o a los
anexos en migración del PIC16F877 a PIC16F877A
periféricos. Dada la complejidad de dichas rutinas, se consideró que el uso del
lenguaje ensamblador podría acarrear muchas complicaciones.
En el caso del entorno MPLAB, la principal dificultad radica en que solo la última
versión del paquete, posee integrado un compilador en C. Cabe aclarar que la última
versión del software no tiene distribución gratuita, por lo cual es muy complicado
poder utilizar el mismo si no se cuenta con la licencia correspondiente.
El siguiente paso fué la elección del compilador de lenguaje C a utilizar, para ello se
buscó en Internet cuales eran los compiladores más difundidos que soporta el
MPLAB 7.10, llegando a la determinación de elegir entre dos compiladores a saber:
- CC5X Versión 3.2
- CCSC Versión 3.216
Por ejemplo, para el caso de las comunicaciones vía I2C y SPI, el compilador CCSC
incluye funciones propias de lectura, escritura y configuración de los periféricos.
El compilador CCSC no es de distribución gratuita, de todos modos se adjunta al
informe en el CD correspondiente.
El compilador CCSC posee una completa bibliografía sobre el uso de sus funciones
internas, en el CD adjunto se brinda el manual del compilador bajo el nombre CCSC
manual.pdf donde se puede encontrar una guía completa sobre el uso del compilador,
el uso de sus funciones específicas así como también ejemplos de aplicación.
3 Las librerías incluye, son archivos tipo texto, que contienen procedimientos o funciones que pueden ser
llamados desde un programa principal en asm, a fin de disminuir el número de líneas en el programa principal, o
crear rutinas para ser utilizador en otros programas, como por ejemplo para el manejo del Módulo LCD.
En el párrafo anterior no se ha considera aún el tema de dar mantenimiento a los
sistemas, sea para corregir o ampliar funciones en el programa principal. Este es un
problema que es bastante crítico en programas y bases de datos de computadores,
puesto que muchas de las veces el que hace el mantenimiento no es el mismo que
realizó el programa. Un problema similar podría generarse con los
microcontroladores, y dar mantenimiento a un programa cuyo archivo fuente se
encuentra en lenguaje Ensamblador sería muy complicado (ver figura 4.9).
Visual C# 2005 Express Edition, es un entorno ultima generación, con gran parte de
los elementos de Visual Studio 2005, y el compilador de C# 2.0. Esta herramienta
que se adquiere de forma gratuita, al igual que SQL Express, permite desarrollar
aplicaciones orientadas a Escritorio, aplicaciones Web, páginas Web, programación
de bases de datos en ADO.NET, programación de dispositivos móviles, etc. Todo
esto con características heredadas de C++ y Java y con un entono tan sencillo como
el de Visual Basic.
i).- Función beep().- esta función se encarga de generar un sonido suave y corto,
apropiado para cuando se presiona una tecla, esta función utiliza la librería tone.h del
conjunto de librerías de CCS C, a continuación se anota el código fuente 4.
ii).- Función alarma().- Esta función que también utiliza la librería tones.h, ha sido
desarrollada con el fin de generar un tono similar a una alarma, compuesta de
sonidos agudos que llaman la atención y que duran aproximadamente 1 min.
4 Los códigos fuentes copiados en el presente código corresponden a los desarrollados para los programas de
los microcontroladores y el ordenador. El texto marcado en azul son funciones propias de C ANSI, y el texto
marcado en verde son comentarios.
Estas dos funciones tienen un pin de salida que es el pin B0, al cual se ha conectado
un transistor que genera la corriente necesaria para hacer sonar un altavoz, que se
encarga de reproducir las notas musicales generadas por estas dos librerías., a
continuación se muestra el circuito y una foto del parlante utilizado en el proyecto, el
cual es de 8 ohmios y una potencia de salida de ½ vatio.
iii).- Función Pantalla().- Esta función corresponde a una secuencia de mensajes que
se despliegan en el módulo LCD al arrancar el microcontrolador, cuyo objetivo son
identificar el nombre del proyecto, y los nombres de los integrantes y del director de
tesis, a continuación se muestra el código fuente de esta librería.
4.3.1.2.- La librería selapart.h.- Esta librería se encarga de recibir datos del teclado,
correspondientes al número de apartamento, el diagrama se muestra en la figura 4.18.
El diagrama muestra el flujo principal, ya que se han descartado lazos sencillos que
cumplen funciones que se explican en el mismo programa. El objetivo de esta
función es la de recibir datos del teclado que corresponden al número de
apartamento, convertirlos a un numero entero y verificar si existe o no este
departamento, si el procedimiento es correcto, termina la función y el dato obtenido
es enviado a la siguiente función en el programa principal. A continuación se copia el
código fuente correspondiente a esta función.
Figura 4.18 Diagrama de flujo de la librería sel-apart
4.3.1.3.- La librería selclave.h .- Esta librería se encarga de recibir datos del teclado
correspondientes a la clave de acceso, compararlos con los almacenados en la
memoria eeprom y determinar si es válida o no. Si es válida envía una señal por el
pin A1, de lo contrario permite por dos ocasiones el ingreso de la clave, si es errónea
por tercera vez, se activa una alarma sonora, generada por el mismo
microcontrolador por el lapso aproximado de un minuto, luego de lo cual vuelve a su
estado inicial.
A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
D 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76
Tabla 4.2 número de apartamento y posiciones de memoria
Figura 4.19 Diagrama de flujo de la librería selclave
Int clave[4];
Dir_eprom=int_conv*4-4;
For (int i=0;i>4;i++)
Clave[i]=read_eprom(dir_eeprom++)
Luego, utilizando lazos “for”, se realiza la comparación con la clave ingresada, tal
como se muestra en el código fuente correspondiente, copiado a continuación:
INICIO
Declaración de variables
NO
0>state<80
NO
Dir_eprom!=100
FIN
Figura 4.21 Diagrama de flujo para la interrupción por I2C para los esclavos
Declaración de variable
Contador (time_puerta)
NO
Reset=1
Contador ++
NO
NO
RA0=1
Abre puerta
Resetea variables
Time_puerta>10
NO
RA0=0
FIN
Figura 4.22 Diagrama de flujo para la interrupción por desbordamiento del timer1
#include <16F877A.h>
#use delay(clock=4000000)
#use i2c(slave,sda=PIN_C4,scl=PIN_C3,address=0xA0) //configuración de I2C
#include <lcd.c> //librería para manejo del LCD
#include <kbd.c> //librería para manejo del teclado
#include <tones.c>
#byte port_A=5
int *dir_status; //maneja la dirección del dato enviado al maestro
int dir_data; //dato que contiene la dirección apuntado por dir_status
int reset=0;
int contador=0,variable=0,variable_pc=0;
#include"pantalla.h"
#include "selapart.h"
#include "selclave.h"
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Interrupción I2C para comunicación con master
_________________________________________________________________*/
#int_SSP
void SSP_isr()
{
BYTE dato,state;
int dir_eprom;
state = i2c_isr_state(); //recibe comando escritura/lectura
if(state>0 && state < 0x80)
{
dir_eprom = i2c_read(); //lee el dato del maestro
if(dir_eprom != 100)
{
eprom[cuenta]=dir_eprom; //almacena información del maestro
cuenta=cuenta+1;
}
else
{
variable_pc=1; //Permite abrir la puerta desde el ordenador
}
}
if(state ==0x80)
{
i2c_write(dir_data); //envía al maestro el estado
}
} //fin de int #int_SSP
void isr()
{ int time_puerta;
time_puerta=time_puerta+1; //contador para reiniciar el sistema
if (reset == 1)
{ contador=contador+1;
if(contador>210)
contador=0;
}
if(!BIT_TEST(port_a,5) || variable_pc==1) //bit de reset (interruptor interno)
{ port_a=2; //abre la puerta pin A1=1
time_puerta=0;
variable=1;
*dir_status=25; //envía estado al PC a través del maestro
}
if(variable==1&&time_puerta>10) //temporizador para abrir puerta
{ port_a=0;
variable=0;
variable_pc=0;
}
variable_pc=0;
} //fin #int_rtcc
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PROGRAMA PRINCIPAL
_________________________________________________________________*/
main()
{
int int_conv,dir_eprom;
lcd_init();
kbd_init();
set_tris_a(0b00110000);
ini_pant(); //pantalla de inicio
dir_status= &dir_data; //dirección de dir_data en dir_status
while(true)
{
*dir_status=0; //valor por defecto de dir_data
int_conv=code_usuario();
if(int_conv>0 && int_conv<21) //ingresa solo si el apart existe
{
dir_eprom=(int_conv); //calcula la dirección inicial
in_clave(dir_eprom);
}
}
}// Fin del programa principal
La interrupción por I2C, se genera cuando hay actividad en el Bus I2C, es decir
cuando el master envía una petición de lectura o escritura. Esta interrupción se activa
por medio de la instrucción:
enable_interrupts(INT_SSP);
#int_SSP
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
La interrupción RTCC se produce cada vez que el contador TIMER0 pasa de FFh a
00h.
El TIMER0 hace un cómputo completo de 00h a FFh cada 512 μS 5, sin embargo este
tiempo puede ser cambiado mediante un preescaler o sea un divisor ajustable. Los
tiempos generados para cada configuración son:
Archivos de cabecera
Llamada de librerías
Declaración de variables
Configurar interrupciones
Solicita
Cont=9 información al
esclavo 2
NO
Solicita
Cont=19 información al
esclavo 2
NO
Envía estado
Data_slave1!=0 del esclavo 1 al
PC
NO
Envía estado
Data_slave2!=0 del esclavo 2 al
PC
NO
Espera 20 ms
Declaración de variables
Obtener datos de PC
rcv_clave[7]
NO convertir número de
rcv_clave[0]=11 apartamento en
entero
Informa al PC NO Informa al PC
Apartamento 0>apart<21 Apartamento
existe No existe
Informa al PC NO Informa al PC
Clave es Clave correcta Clave es
correcta incorrecta
NO
rcv_clave[0]=12
1
2
CONTINUA…
2
Envia orden a
rcv_clave[0]=15 esclavo 1 abrir
puerta
NO
Envia orden a
rcv_clave[0]=16 esclavo 1 abrir
puerta
NO
FIN
INICIO
NO
FIN
#include<16f877A.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use I2C(master,sda=PIN_C4,scl=PIN_C3)
#include <conversor.h>
int cont; //almacena número de vueltas de int_RTCC
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Interrupción RS232 para comunicación con el PC
__________________________________________________________________*/
#int_RDA //interrupción por RS 232
void RDA_isr()
{
int m,u,cuenta=0,l=3;
int ent_conv=0; //almacena el apart convertido en entero
int pos_mem=0; //posición inicial de la memoria
char rcv_clave[7]; //se almacena los siete caracteres del PC
//0= acción, 1-2 = apart, 3-6 = clave
gets(rcv_clave); //recibe la información del PC vía RS232
if(rcv_clave[0]==11) //verificar si apart y claves son correctas
{
ent_conv=conversor(rcv_clave); //convierte apart en entero
if(ent_conv>0 && ent_conv<21) //apart es mayor a cero o mayor a 20
putc(82); //2 = apartamento si existe
else
putc(83); //3 = apartamento no existe
pos_mem=ent_conv*4-4; //determina la posición inicial de la memoria
for(m=0;m<4;m++) //determina si la clave es correcta
{
if (read_eeprom(m+pos_mem)!=rcv_clave[m+3])
cuenta=cuenta+1; //si la clave es correcta cuenta =0
}
if(cuenta == 0) //cuenta es igual a 0 si la clave es correcta
putc(84);
//4 = clave correcta
else
putc(85); //5 = clave incorrecta
}
if(rcv_clave[0]==12) //dato del PC SI apart y clave son correctas
{
ent_conv=((rcv_clave[1]-48)*10)+(rcv_clave[2]-48); //convierte en int
dir=ent_conv*4-4; //posición inicial de la eeprom
/*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PROGRAMA PRINCIPAL
____________________________________________________________*/
void main()
{
int k;
int data_slave1; //recibe el estado del esclavo 1
int data_slave2; //recibe el estado del esclavo 2
setup_counters(RTCC_INTERNAL,RTCC_DIV_256); //int cada 66.6 ms
enable_interrupts(INT_RTCC);//habilita la interrupción de RTCC
enable_interrupts(int_rda); //habilita la interrupción de rs232
enable_interrupts(global); //habilita todas las interrupciones
while(true)
{ if(cont==9) //solicita estado a slave1
{
i2c_start();
i2c_write(0xA1);
data_slave1=i2c_read(0);
i2c_stop();
while(cont==9)
{} //permite que envié solo una vez la petición
}
if(cont==19) //solicita estado a slave2
{ i2c_start();
i2c_write(0xB1);
data_slave2=i2c_read(0);
i2c_stop();
while(cont==19)
{} //permite que envié solo una vez la petición
}
if(data_slave1!=0) //envía estado del esclavo 1 a PC
{
printf(lcd_putc,"\fSLAVE1: %u",data_slave1);
putc(data_slave1);
data_slave1=0;
}
if(data_slave2!=0) //envía estado del esclavo 1 a PC
{ printf(lcd_putc,"\fSLAVE2: %u",data_slave2);
putc(data_slave2+40);
data_slave2=0;
}
}
} //fin del programa
Para recibir información a través de la interfaz RS232 se utiliza getc() para el envío
de un carácter, pero si se desea enviar una cadena, se utiliza la instrucción Gets(); asi
como se muestra en el ejemplo:
Char datos_recibidos[5];
Datos_recibidos=gets();
Se había mencionado que solo a través del Ordenado se puede cambiar la clave de
los esclavos, para realizar este proceso se realiza el siguiente dialogo ordenador-
microcontrolador. Cuando un usuario desee cambiar la clave, en el ordenador hay
una opción para este propósito, en donde el usuario ingresa su número de
apartamento y su clave actual, se envía esta información hacia el microcontrolador,
el cual la recibe en forma cadena de 7 elementos tal como se muestra a continuación
Una vez que llega la información, verifica si el primer byte es 11, 12, 15 o 16
Si es 11, indica que debe comprobar la información recibida, con la que se encuentra
almacenada en el microcontrolador. El programa verifica si el apartamento existe o
no, para ambos casos envía información al ordenador del resultado. De igual forma
se verifica si la clave ingresada es o no correcta, verificado esta información, el
resultado es enviado al ordenado, el cual definirá de acuerdo a los resultados
obtenidos si se permite o no el cambio de clave.
Si todos los datos han sido correctos, el ordenador envía la nuevamente información
en una paquete de bytes, de los cuales el byte 0 tiene una valor de 12, y los cuatro
últimos bytes la nueva clave. Si el programa determina que el valor es 12, entonces
ejecuta el cambio de clave: primero cambia su propia clave, y luego envía la orden y
la información a los esclavos para que ejecuten este cambio.
Es conveniente mencionar una pequeña librería creada para este programa, que
cumple la función de transformar los números de apartamento que son del tipo char,
en un valor entero de 8 bits, para aclararlo realizaremos un ejemplo: un usuario digita
el numero de apartamento 14, entonces:
Se requiere convertir a estos dos dígitos ingresados por teclado en un solo valor
decimal (14 decimal en este caso), para lo cual nos aprovechamos del orden de
ingreso. Al primer valor que ingresa (en esta caso ‘1’) lo multiplicamos por 10,
puesto que va a ser decena. Y al segundo valor, que es una unidad, simplemente lo
adicionamos al primer valor:
1 x 10 = 10
4x1 = 04 Valor decimal = 14.
Esta es la función que cumple la siguiente función, aunque se han omitido algunos
detalles en la explicación, con el ejemplo será suficiente para su entendimiento.
//programa CONTROL_ACCESO
//proyecto de tesis (2006-09-19)
//Realizado: Eduardo Mendoza Merchán – Luís Chacón Buñay
//Revisado: Ing. Luís Córdova R.
//Función para la entrada y conversión del código del departamento en entero
Para escoger el software que almacenará los datos del proyecto automáticamente se
elige “Microsoft Sql Server 2005”. Sql tiene la facilidad o permite realizar
procedimientos, los cuales no son más que consultas hechas en la misma base de
datos, lo que permite un menor tiempo de respuesta a cualquier programa que
consulte a la base, brindando así un mejor rendimiento y estabilidad del software. De
igual forma que C#, SQL es de distribución gratuita y los instaladores de este
programa pueden ser descargados de su sitio Web del Internet.
Programa guía 1:
Recibe datos a una longitud específica, esta parte controla el pic por lo que no es
necesario como la necesidad de comparar los datos recibidos.
private void textBoxSerial1_SerialDataArrived(object sender,
wclTextBoxSerial.SerialDataArrivedEventArgs e)
{ //En e.Data esta el grupo de caracteres recibidos desde el puerto serial
if (e.Data.Length == 14) //Si llegan 14 caracteres procesarlos
e.Data = e.Data.Substring(1, 10); //Solo deja pasar 10 caracteres
else
e.Handled = true; //Ignora los caracteres
}
Programa requerido 1:
Se requiere comparar datos numéricos, segun esto se toma decisiones en los
mensajes.
private void textBoxSerial1_SerialDataArrived(object sender,
wclTextBoxSerial.SerialDataArrivedEventArgs e)
{
int a = int.Parse(e.Data); //pasa de string a int
TextBoxSerial1.Text = "";
if (a == 1) //si el dato que recibe es 1 presentar apart1
textBox1.Text = "apartamento 1";
if (a == 15) //si el dato que recibe es 15 presentar apart2
textBox1.Text = "apartamento 2";
}
Programa requerido 2:
La programación no tenia originalmente el envío de datos, se tuvo la necesidad de
añadir.
private void button1_Clic(object sender, EventArgs e)
{
TextBoxSerial1.SendText(textBox1.Text); //envia lo que este en text
textBox1.Text = ""; //limpia text
}
Programa guia 3:
Esta configurado a otras necesidades.
private void Form1_Load(object sender, System.EventArgs e)
{
TextBoxSerial1.Port = 2; //Abro el com2
TextBoxSerial1.TimeToWaitForMoreData = 300;
TextBoxSerial1.Format =
wclTextBoxSerial.TextBoxSerial.FormatoDatos.Ascii; //Formato en que se
mostrará la información
TextBoxSerial1.TimeToWaitForMoreData = 300;
TextBoxSerial1.OpenPort(); //Abrir el puerto
}
Programa requerido 3:
Abrir com1, leer en formato decimal y cambiar tiempo de espera a 10ms.
private void Form1_Load(object sender, System.EventArgs e)
{
TextBoxSerial1.Port = 1; //Abro el com1
TextBoxSerial1.TimeToWaitForMoreData = 300;
TextBoxSerial1.Format =
wclTextBoxSerial.TextBoxSerial.FormatoDatos.Decimal//Esperar 10 milisegundos
TextBoxSerial1.TimeToWaitForMoreData = 10;
TextBoxSerial1.OpenPort(); //Abrir el puerto
}
La wcltextboxserial.dll está encaminada al uso del objeto textbox para leer y enviar
datos por el puerto serial, que de la forma tradicional esta versión de lenguaje no
permitiría con tanta facilidad como lo hace al trabajar conjuntamente con
wcltextboxserial.dll.
Si se compara con un textbox sin ser acoplado a la dll, como el textbox que se usa
para envío de datos desde la pc al exterior, se observa que no hay manera de
configurar para la comunicación serial., a pesar que visualmente son idénticos.
Figura 4.27 propiedades de textBox, sin dll
Al digitar la clave correcta se accede al menú abrir puertas, donde permite cambiar
de estado por un instante al led indicador “Puerta” de la tarjeta esclavo1 o esclavo2.
1
Escoger con un click una de los radiobutton “PUERTA 1” o “2” para efectuar la
orden con el botón “OK”. (ver figura 4.30).
INICIO
V V V
MODIFICA CLAVES PC
ALMACENADA
EN BASE
RECIBE DATOS
SERIAL
FIN
F
CLAVE = 123
CONT <= 3
CONT ++
FIN
Se puede observar las opciones insertar, modificar, eliminar y buscar, cada una de
estas alternaticas facilitan manipular cualquier dato almacenado en la base de datos.
Figura 4.33 menú mantenimiento
Cada uno de los sub menús son habilitados con un click respectivo.
INICIO
CLAVE = 123
F
CONT<= 3
CONT ++
SALIR
FIN
Para acceder al menú “Cambiar clave pic” se requiere ingresar la clave “123” la
misma que es valida por tres oportunidades, caso contrario se pierde el casillero
cambiar clave pic, se ejecuta esta orden al presionar la tecla “ enter.
Figura 4.35 Selección del menú cambiar clave pic
Al ingresar en “Cambiar clave pic”, permite el envío/recepción de datos por el puerto
serial, se envía desde pc a pic “seis caracteres”, los 2 primeros equivalen al
departamento del cliente y el resto a la clave del mismo.
INICIO
F
CLAVE = 123
CONT <= 3
CONT ++
MENU
CAMBIAR CLAVE PIC
CONT= 0
ENVIO RS232 PC a PIC
F F
CLAVE CLAVE = DOS CLAVE
== DÍGITOS ==
CORRECTA CORRECTOS INCORRECTA
V V V
FIN
INICIO
F
CLAVE = BD
CONT <=3
CONT ++
CAMBIA CLAVE
CONT= 0
GRABA EN BASE DE
DATOS
FIN
El pin1 corresponde al Master clear, que es utilizado como un pin de reset, que se
utiliza para reiniciar el funcionamiento del sistema cuando sea necesario. Para que el
microcontrolador funcione normalmente es necesario que se encuentre conectado a
Vcc (5 voltios), y para que el sistema se reinicie es necesario llevar
momentáneamente este pin aun estado lógico bajo, es decir conectarlo a tierra, tal
como se muestra en el siguiente diagrama:
4.4.2.-Microcontroladores esclavos.-
Los pines A0, A1, A2, BO, se destinan a salidas, para lo cual se ha dispuesto un
transistor en la salida de cada una de ellos, para que sean estos lo que se encarguen
de manejar la corriente de los dispositivos que manejen y evitar cualquier problema
por sobre corriente. El Pin B0 maneja el parlante, y su circuito ya se ha explicado
anteriormente, el pin A0 maneja la luz del LCD y fue explicado en la página 110. El
pin A1 esta destinado a abrir la puerta, en nuestro caso se ha colocado un led de
10mm, que lo simula, luego el último pin, es decir A2, supuestamente se activa al
igual que las alarmas, y su conexión es similar a las anteriores.
Los pines A, B, C, D del teclado van conectados a una resistencia de 330 ohmios,
según lo solicita la lógica del programa. La parte de conexión de módulo LCD fue
ampliamente explicada al inicio de este capítulo, finalmente se puede observar en la
figura 4.43 el diagrama de todo el circuito que se lo ha analizado por partes.
Microcontroladores:
3 microcontroladores PIC 16F877A
Módulo LCD
2 Módulos LCD de 2x20
Teclados
2 teclado matriciales de 3x4
Figura 4.44 Diagrama del Sistema de control de Acceso
Cristales de cuarzo:
3 Cristales de cuarzo a 4 Mhz
Bocinas:
2 Parlantes de 0.5 W 8 ohmios y 2 pulgadas de diámetro.
Transistores:
8 transistores 2N3904 (NPN)
Pulsadores:
5 Micropulsadores
Diodos Led
2 Diodos led verdes de 10mm
3 diodos led verde de 5 mm
2 diodos led rojos de 5 mm
Capacitores:
5 capacitores de 10 uFaradios
Resistencias ½ W
3 220 ohmios
6 1K
16 3.3 K
7 10 K
Zócalos:
3 zócalos de 40 pines
El consumo de energía del sistema construido es muy reducido al punto que cada
microcontrolador requiere aproximadamente 0.6 mA según su hoja de datos, y los
valores que se tomaron del circuito armado consume en total 1.5 mA. De esta forma
hacemos una lista de los elementos y su respectivo consumo de corriente. Estos
valores han sido tomados del circuito armado y se han comparados con valores
teóricos de referencia de tablas y hojas de datos.
En la siguiente tabla se muestra los consumos aproximados que se tendría en los tres
microcontroladores, considerando la activación de los elementos antes mencionado.
Para que el sistema funcione se requiere muy poca corriente, por lo que si
alimentamos todo el sistema con una misma fuente, se requeriría de una fuente que
suministre como máximo 150 mA, con lo cual el sistema quedaría completamente
abastecido, aún en las condiciones mas extremas.
Una vez que los circuitos ha sido probado en el ProtoBoard o tablilla de conexiones
y su funcionamiento es correcto, esta listo para proceder a diseñar la paca de circuito
impreso donde irán ubicados todos los elementos, basándose en las conexiones
realizadas en el ProtoBoard.
Otra consideración que fue necesario tomar en cuenta, es que la pista se imprimirá
por un solo lado, y como los circuitos diseñados tienen bastantes líneas digitales,
habrá el inconveniente de líneas que se crucen, por lo que abra que recurrirá a los
denominados cortocircuitos, que son pedazos de hilo de cobre que unen una pista
cortada, por la cara que van los elementos.
Se recurre a colocar zócalos, para todos los circuitos integrados, a fin de proteger los
microcontroladores o de reemplazarlos con facilidad en caso de avería, y las
resistencias se han elegido de ¼ de vatio, por su tamaño.
Protel dispone de muchas librerías, que contienen las plantillas de una gran cantidad
de elementos eléctricos y electrónicos, y de circuitos integrados de las principales
casas fabricantes, por lo tanto antes de iniciar el diseño es conveniente buscar las
plantillas de los elementos que se requieren y evitar la engorrosa tarea de elaborarlos.
Por ejemplo para el conector DB9, la plantilla esta hecha, y solo se requiere llamarla,
tal como se ve en la figura 4.46, esta plantilla se encuentra en la librería
Miscellaneous Connectors.IntLib, en donde además se encuentra una gran cantidad
de otros tipos de conectores..
El diseño de las placas en Protel queda de la siguiente forma, tal como se muestra a
continuación:
El ancho de las pistas se ha seccionado en 25 mil (0.625 mm) y de los círculos para
las patillas, resistencias, etc. tienen un diámetro exterior de 70 mil (1.78 mm) y un
diámetro interior de 30 mil (0.76 mm).
Finalmente, una vez que esta terminado el diseño, se imprime y se envía a personas
que realizan este tipo de trabajos, luego, el diseño es impreso en la placa y queda tal
como se muestra en la figura 4.49
En la figura 4.51, se aprecia la placa del microcontrolador maestro, con todos los
elementos soldados, destaca el microcontrolador, y el conector DB-9, que servirá
para la comunicación con el ordenador.
En la figura 4.53 se aprecia una placa de circuito Esclavo conectada al LCD, parlante
y teclado, antes de ser montada en la maqueta preparada para el sistema.
ANÁLISIS DE COSTOS
5.1.- Preliminares.-
Otro aspecto que es necesario comentar, esta relacionado con los productos de
características similares, que se venden en el mercado local o que existen en el
extranjero y puede solicitar su compra y envío hacia nuestro país, previo el pago de
alguno aranceles. Es necesario averiguar las características y los costos finales de
estos productos y comparar con el precio del producto fabricado para determinar si
somos competitivos en el sentido económico o si tenemos ventajas o desventajas con
respecto al performance y adaptabilidad del producto. Para determinar el costo del
control de acceso peatonal, es necesario tomar en cuenta los siguientes costos: Costo
de elementos, costo de fabricación de placas (incluido su diseño), costo de armado
del circuito, costo de programación del PIC, costo de programación del ordenador..
Habrá personas entendidas en la materia, que consideren que el valor de este rubro
es bajo, pero, esto se ve compensado en el valor final del producto, debido a que el
tiempo de programación va a ser mucho mayor de lo que lo realizaría un profesional
con experiencia, puesto que los lenguajes de programación utilizados se están
aprendiendo conforme avanza el desarrollo de esta obra lo cual implica una demanda
de mayor tiempo, por obvias razones. El objetivo de este capitulo es determinar una
valor tentativo al valor real del producto que se está desarrollando, tratando de
aproximarse al valor que tomaría en el mercado y poder realizar una comparación
objetiva con productos de similares características que existan tanto en el mercado
nacional como internacional.
Para realizar la labor expuesta, se determina el costo de mano de obra, para lo cual
se realiza la siguiente tabla en la que constan cada uno de los rubros de mano de
obra, el número de horas y su valor total.
TOTAL: 154.92
Costo de elementos
ELEMENTO CANT C UNITARIO C TOTAL $
PIC 16F877A 3 11,032 33,096
Modulo LCD 2x20 2 16,5 33
Cristal 4Mhz 3 0,7 1,5
Teclado 4X3 2 10 20
Micro pulsadores 5 0,1 0,5
Diodo Led 10 mm 2 0,1 0,2
Diodo Led 5 mm 5 0,4 2
Parlante 0,5 W 2 0,5 1
Resistencia 10KΩ 7 0,05 0,35
Resistencia 3,3KΩ 16 0,05 0,8
Resistencia 1 KΩ 6 0,05 0,3
Resistencia 220 KΩ 3 0,05 0,15
Resistencia 10 Ω 2 0,05 0,1
Potenciómetro 5KΩ 2 0,4 0,8
Max232 1 2,5 2.5
Conector hembra DB9 2 0,6 1
zócalos de 40 pines 3 0,2 0,6
Capacitores 5 0,1 0,5
pines 2x16 4 0,4 1,6
Para la fabricación de tarjetas se tienen dos costos. Costo por diseño de las placas, el
cual se lo realiza mediante un software de computadora. Costo por fabricación de las
placas, es decir, una vez que se ha diseñado las placas en un ordenador, se envía a
lugares que se encargan de fabricar la placa en base al diseño realizado. El costo por
fabricación se lo detalla a continuación en la tabla 5.3, y el costo por diseño ya fue
tomado en cuenta en costo por mano de obra en la tabla 5.1.
Elaboración de Tarjetas
TOTAL 20,00
Tabla 5.3 Costo de elaboración de tarjetas
3 El precio puesto corresponde a un ordenador Pentium IV, a 2.8 Ghz y 512 MB de memoria
RAM, suficiente para operar con los programas utilizados en este proyecto
ordenador (incluye el CPU y el monitor) consume aproximadamente 250 vatios en
una hora lo que es igual a 0.25 Kw./h, se tiene que la hora de ordenador por
concepto de consumo de energía eléctrica es:
Con este valor, se puede determinar el costo por uso del ordenador. De la tabla 5.1 se
puede observar el número de horas que se han utilizado en programación y diseño de
las tarjetas, por lo que esos valores se retoman para calcular el costo por uso del
ordenador, y que se exponen en la tabla 5.4:
Una vez calculado todos los costos que se han dado en el desarrollo del presente
proyecto, se procede a sumarlos y obtener el valor neto del proyecto. Cabe resaltar
que en estos costos no se ha incluido valores que desde nuestro punto de vista se
consideran superfluos, tales como son los programas de computadoras, por ejemplo
el sistema operativo Windows en nuestro medio acostumbran a instalarlo gratis en
los ordenadores, que aunque no es legal es un método muy difundido y en el
proyecto no se ha incluido gastos que no se han realizado en la práctica. Ahora se
obtiene el total de gastos y mano de obra para todo el proyecto. En la tabla 5.5 se
resumen estos valores:
Rubro
Costo de mano de obra 154.92
Costo de materiales 116.96
Elaboración de tarjetas 20
Costo de ordenador 20.384
TOTAL: 312.26
Tabla 5.5 Costo de elaboración de tarjetas
El costo del sistema de control de acceso peatonal es de 319 dólares, que son el
resultado de las sumatoria de mano de obra, materiales y maquinaria, por lo que
hasta este punto solo se devengan gastos y no existe ganancia alguna., es el valor real
de la máquina. Pero el fabricante debe obtener una utilidad o beneficio que
generalmente se toma el 15% del valor real.
En caso de fabricar mas de una unidad, el costo por unidad se reduce, debido a que
existen rubros que no son necesarios repetirlos o realizarlos de nuevo, por el simple
hecho de que ya están realizados, tal como es el caso de la programación, diseño de
placas y consumo por uso del ordenador, para analizar mejor esta situación
dividiremos en dos tipos de gastos. Gastos fijos, que son los gastos o costos que no
varían así se produzca una o mil unidades, tal como es el caso de la programación de
los microcontroladores. Gastos variables, que son los costos que dependen del
número de unidades que se produzcan, tal como es el caso de un módulo LCD que su
número aumenta de acuerdo a la cantidad de sistemas que se produzcan. En la
siguiente tabla muestra el costo del sistema de control de acceso, pero desglosado
desde el punto de vista de los gastos fijos y variables.
Gastos Variables:
Materiales 116,96
Elaboración de tarjetas 20
TOTAL 312.26
Tabla 5.5 Costo de elaboración de tarjetas
Costos
Variables; Costos Fijos;
153,4; 49% 158,86; 51%
Figura 5.1 relación costos fijos costos variables para una unidad
Si se produce 10 unidades, los costos fijos se reducen para cada unidad a la décima
parte, por lo que cada unidad el costo fijo será de:
Costo fijo = 158.86 / 10 = 15.87 dólares
En la tabla 5.6 se detalla los costos por unidad, en una producción de 10 unidades del
sistema de control de acceso.
Costo unitario (producción de 10 unidades)
Subtotal 169.27
Ganancia 25.39
Total 194.66
Tabla 5.6 Costo por unidad para producir 10 sistemas
Costos Fijos Vs Costos Variables
Costos Fijos;
15,88; 10,35%
Costos
Variables;
153,4; 89,6%
Figura 5.2 relación costos fijos costos variables para producir 10 sistemas
Por último, si se produce 1000 unidades, los costos fijos se reducen para cada unidad
a la milésima parte, esto reduce considerablemente el costo final del producto ya que
los costos fijos representaban más del 50 % en la producción para una unidad. El
costo fijo para cada unidad producida será de:
Costo fijo = 158.86 / 1000 = 0.1587 dólares
En la tabla 5.7se detalla los costos por unidad, en una producción de 1000 unidades
Subtotal 153.56
Ganancia 23.03
Total 176.6
Tabla 5.7 Costo por unidad para producir 1000 sistemas
Costos Fijos Vs Costos Variables
Costos Fijos;
0,159; 0,103%
Costos
Variables;
153,4; 99,896%
Figura 5.3 relación costos fijos costos variables para producir 1000 sistemas
Las graficas son claras en este aspecto, los costos fijos pasan a ser insignificantes
cuando la producción aumenta a 1000 unidades. Para tener una visión mas clara de
esta situación, se grafica nuevamente los tres casos analizados individualmente.
100%
80%
60%
Costos Fijos
40% Costos variables
20%
0%
una unidad diez unidades mil unidades
Figura 5.4 relación costos fijos costos variables de los tres modelos
Cada barra representa el costo total del producto, la gráfica lo que intenta representar
es la relación porcentual entre los costos fijos y variables en cada uno de los casos
analizados. Se observa que al producir una unidad los costos fijos son incluso
mayores que los costos variables, pero al producir 10 unidades decrecen
significativamente, pero al llegar a las 1000 unidades, los costos fijos se vuelven casi
insignificantes.
En la siguiente grafica se aprecia el decrecimiento del los costos totales del sistema,
el mismo que baja de 312 dólares (costo para producir una unidad) a 153 dólares
(costo para producir 1000 unidades.). La diferencia es bástate grande, lo que hace
reflexionar la forma drástica con que bajan los costos de los productos que se
fabrican en grandes cantidades, como por ejemplo el microprocesador de un
ordenador cuyo costo es realmente insignificante frente a la tecnología que
representa tanto en su fabricación como en su funcionamiento, gracias a que los
costos fijos que son elevadísimos debido a los estudios, diseños, matrices,
maquinarias, etc. son absorbidos por el número de producto fabricados.
359,1
400
350
300
194,66 176,6
250
200
150
100
50
0
una unidad diez unidades mil unidades
1 euro = 1.31dolares
Ahora: 112.25 euros será: 147 dólares
Un sistema de este tipo, en nuestro país podría estar costando valores cercanos a los
200 dólares americanos incluido gastos de envió e impuestos.
112,25-Euros.
http://www.superinventos.com/S170132.htm
5.4.2.- Teclado de combinación para puertas.-
El siguiente modelo, es una variante del anterior y es fabricado por la misma empresa,
en el cuadro de texto se aprecia sus características, y su precio en dólares es de: 97.54
x 1.31 = 127.74 dólares www.superinventos.com/S170130.htm
Dispone de tres salidas distintas, una de ellas un rele con capacidad para 10
A, que puede conectarse a una cerradura eléctrica, una salida auxiliar para
enviar una señal externa y un botón de pánico para situaciones de
emergencia.
AC-903
Características
http://www.factorydirect.co.uk/ac903.html
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES
6. El precio final del sistema propuesto, resulta más económico que los sistemas
similares fabricados por empresas extranjeras, y que son importados al país
por diferentes comercializadoras.
Microchip Corporation
http://www.microchip.com
Enciclopedia Wikipedia
http://es.wikipedia.org/wiki/Portada
Parallax. inc
http://www.parallaxinc.com
Directivas MPLAB:
http://tinyurl.com/zdkj
PicManía by Redraven
http://picmania.garcia-cuervo.com/index.htm
Identific-ar
http://identific-ar.com.ar/acceso.htm
Glosario
ADC.-
Siglas de “analog-to-digital converter” (abreviado también como A/D or A to D).
Un conversor analógico-digital es un dispositivo electrónico capaz de convertir
un voltaje determinado en un valor binario, en otras palabras, este se encarga
de transformar señales análogas a digitales (0's y 1's).
ANSI.-
Significa: Instituto Nacional Estadounidense de Estándares (ANSI, por sus siglas en
inglés: American National Standards Institute) es una organización sin ánimo de
lucro que supervisa el desarrollo de estándares para productos, servicios, procesos y
sistemas en los Estados Unidos. ANSI es miembro de la Organización Internacional
para la Estandarización (ISO) y de La Comisión Electrotécnica Internacional
(International Electrotechnical Commission, IEC). La organización también coordina
estándares del país estadounidense con estándares internacionales, de tal modo que
los productos de dicho país puedan usarse en todo el mundo.
BIT.-
Es el acrónimo de Binary digit. (dígito binario). Un bit es un dígito del sistema de
numeración binario. La Real Academia Española (RAE) ha aceptado la palabra bit
con el plural bits.
CCITT.-
Son las siglas de Comité Consultivo Internacional Telegráfico y Telefónico
(Consultative Committee for International Telegraphy and Telephony - Comité
Consultivo Internacional de Telegráfico y Telefónico), antiguo nombre del comité de
normalización de las telecomunicaciones dentro de la UIT (Unión Internacional de
Telecomunicaciones) ahora conocido como UIT-T.
CISC.-
Es un modelo de arquitectura de computadores (del inglés Complex Instruction Set
Computer). Los microprocesadores CISC tienen un conjunto de instrucciones que se
caracteriza por ser muy amplio y permitir operaciones complejas entre operandos
situados en la memoria o en los registros internos, en contraposición a la arquitectura
RISC.
EIA.-
Acrónimo de “Electronic Industries Alliance”, que traducido es Alianza de Industrias
Electrónicas (EIA) es una organización comercial nacional que incluye el espectro completo
de los fabricantes de los Estados Unidos. La alianza es una sociedad de asociaciones de las
compañías electrónicas y de alta tecnología cuya misión es promover el desarrollo de
mercado y la competitividad de la industria de alta tecnología de los Estados Unidos con
esfuerzos domésticos e internacionales de la política.
EEPROM.-
Son las siglas de electrically-erasable programmable read-only memory (ROM
programable y borrable eléctricamente), en español o castellano se suele referir al
hablar como E²PROM y en inglés "E-Squared-PROM". Es un tipo de memoria ROM
que puede ser programado, borrado y reprogramado eléctricamente, a diferencia de la
EPROM que ha de borrarse mediante rayos ultravioletas. Aunque una EEPROM
puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada
entre 100.000 y 1.000.000 de veces.
EPROM.-
Son las siglas de Erasable Programmable Read-Only Memory (ROM borrable programable).
Es un tipo de chip de memoria ROM inventado por el ingeniero Dov Frohman que retiene los
datos cuando la fuente de energía se apaga. En otras palabras, es no volátil.
DSP.-
el acrónimo de Digital Signal Processor, que significa Procesador Digital de
Señales. Un DSP es un sistema basado en un procesador o microprocesador que
posee un juego de instrucciones, un hardware y un software optimizados para
aplicaciones que requieran operaciones numéricas a muy alta velocidad. Debido a
esto es especialmente útil para el procesado y representación de señales analógicas
en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben
muestras (samples en inglés), normalmente provenientes de un conversor
analógico/digital (ADC).
ISO.-
La Organización Internacional para la Estandarización o International Organization for
Standarization (ISO), es una organización internacional no gubernamental, compuesta por
representantes de los organismos de normalización (ONs) nacionales, que produce normas
internacionales industriales y comerciales. Dichas normas se conocen como normas ISO y su
finalidad es la coordinación de las normas nacionales, en consonancia con el Acta Final de la
Organización Mundial del Comercio, con el propósito de facilitar el comercio, facilitar el
intercambio de información y contribuir con unos estándares comunes para el desarrollo y
transferencia de tecnologías.
LCD.-
Son las siglas de Liquid Crystal Display en inglés, que traducido al español es
Pantalla de Cristal Líquido, dispositivo inventado por Jack Janning, quien fue
empleado de NCR. Se trata de un sistema eléctrico de presentación de datos formado
por 2 capas conductoras transparentes y en medio un material especial cristalino
(cristal líquido) que tienen la capacidad de orientar la luz a su paso.
LED.-
Son las siglas en inglés de Light-Emitting Diode (diodo emisor de luz) es un
dispositivo semiconductor (diodo) que emite luz policromática, es decir, con
diferentes longitudes de onda, cuando se polariza en directa y es atravesado por la
corriente eléctrica. El color depende del material semiconductor empleado en la
construcción del diodo, pudiendo variar desde el ultravioleta, pasando por el espectro
de luz visible, hasta el infrarrojo, recibiendo éstos últimos la denominación de IRED
(Infra-Red Emitting Diode).
PWM.-
La modulación por anchura de pulsos (ó PWM, de pulse-width modulation en inglés)
es una técnica de modulación en la que se modifica el ciclo de trabajo de una señal
periódica (por ejemplo sinusoidal) para portar información.
El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en
relación al período. Matemáticamente:
D es el ciclo de trabajo
τ es el tiempo en que la función es positiva (anchura del pulso)
T es el período de la función
RISC.-
En arquitectura computacional, RISC del inglés Reduced Instruction Set Computer
(Computadora con Conjunto de Instrucciones Reducido). Tipo de microprocesadores
con las siguientes características fundamentales:
1. Instrucciones de tamaño fijo y presentado en un reducido número de formatos.
2. Sólo las instrucciones de carga y almacenamiento acceden a la memoria por datos
ROM.-
Es el acrónimo de Read-Only Memory (memoria de sólo lectura). Es una memoria
de semiconductor no destructible, es decir, que no se puede escribir sobre ella, y que
conserva intacta la información almacenada, incluso en el caso de interrupción de
corriente (memoria no volátil). La ROM suele almacenar la configuración del
sistema o el programa de arranque del ordenador.
RAM
Es el acrónimo inglés de Random Access Memory (memoria de acceso aleatorio ó
memoria de acceso directo). Se trata de una memoria de semiconductor en la que se
puede tanto leer como escribir información. Es una memoria volátil, es decir, pierde
su contenido al desconectar la energía eléctrica. Se utiliza normalmente como
memoria temporal para almacenar resultados intermedios y datos similares no
permanentes. Se dicen "de acceso aleatorio" o "de acceso directo" porque los
diferentes accesos son independientes entre sí. Por ejemplo, si un disco rígido debe
hacer dos accesos consecutivos a sectores alejados físicamente entre sí, se pierde un
tiempo en mover la cabeza hasta la pista deseada (o esperar que el sector pase por
debajo, si ambos están en la misma pista), tiempo que no se pierde en la RAM.
Vocabulario.-
Acrónimo.-
Un acrónimo (del griego ἄκρος akros, 'extremo' y ὄνομα ónoma, 'nombre') es una
palabra que resulta de la unión de las letras iniciales de una o más palabras. Un
acrónimo constituye una palabra de nueva formación en una lengua. Normalmente,
aparecen con el objeto de abreviar la lectura de un concepto que precisa de varias
palabras para ser designado. El término hace referencia a un modo de formación de
palabras, no a una clase de palabras; por lo tanto, la palabra en sí puede ser
clasificada como sustantivo, adjetivo, etc.
Estos son unos ejemplos de acrónimos, con sus respectivos significados:
• ONU: Organización de las Naciones Unidas
• SIDA: Síndrome de Inmuno-Deficiencia Adquirida (debido a su gran uso ha terminado
por convertirse en un sustantivo común).
Byte.-
Voz inglesa, se pronuncia “báit”, que si bien la Real Academia Española ha
aceptado como equivalente a octeto, es decir a ocho bits, para fines correctos, un
byte debe ser considerado como una secuencia de bits contiguos, cuyo tamaño
depende del código de información o código de caracteres en que sea definido.
Embebido.-
Termino equivalente a sistema integrado, que a veces traducido del inglés se expresa como
embebido, empotrado o incrustado
Ensamblador.-
El término ensamblador (del inglés assembler) se refiere a un tipo de programa
informático que se encarga de traducir un fichero fuente escrito en un lenguaje
ensamblador, a un fichero objeto que contiene código máquina, ejecutable
directamente por la máquina para la que se ha generado. El propósito para el que se
crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que
escribir directamente en código binario, que es el único código entendible por la
computadora, es en la práctica imposible. La evolución de los lenguajes de
programación a partir del lenguaje ensamblador originó también la evolución de este
programa ensamblador hacia lo que se conoce como programa compilador
Compilador.-
Un compilador es un programa (o un conjunto de programas) que traduce un
programa escrito en un lenguaje de programación a otro lenguaje de programación,
generando un programa equivalente. Usualmente el segundo lenguaje es código de
máquina, pero también puede ser simplemente texto. Este proceso de traducción se
conoce como compilación.
Dactilar.-
Relativo a los dedos de la mano. Una huella dactilar o huella digital, es la impresión
visible o moldeada que produce el contacto de las crestas papilares
Emulador.-
En informática, un emulador es un software que permite ejecutar programas de ordenador en
una plataforma (arquitectura hardware o sistema operativo) diferente de la cual fueron
escritos originalmente. A diferencia de un simulador, que sólo trata de reproducir el
comportamiento del programa, un emulador trata de modelar de forma precisa el dispositivo
que se está emulando.
Escáner.-
Dispositivo para obtener o "leer" imágenes (escáner de ordenador o de barras) o encontrar un
objeto o señal (escáner de un aeropuerto, o de radio).
Facsimil.-
Reproducción (o copia; normalmente de imágenes). Se refiere sobre todo al envío de
imágenes sin movimiento a través de una línea de comunicación (Internet, BBS, cualquier
red, etc...). Su abreviatura es el FAX.
Ferromagnetismo.-
El ferromagnetismo es un fenómeno físico en el que se produce ordenamiento magnético de
todos los momentos magnéticos de una muestra, en la misma dirección y sentido. Un material
ferromagnético es aquel que puede presentar ferromagnetismo.
Firmware.-
Programación en Firme, es un bloque de instrucciones de programa para propósitos
específicos, grabado en una memoria tipo ROM, que establece la lógica de más bajo
nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Al
estar integrado en la electrónica del dispositivo es en parte hardware, pero también es
software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de
programación. Funcionalmente, el firmware es el intermediario (interfaz) entre las
órdenes externas que recibe el dispositivo y su electrónica, ya que es el encargado de
controlar a ésta última para ejecutar correctamente dichas órdenes externas.
Hardware.-
Término del inglés que se utiliza generalmente para describir los artefactos físicos de
una tecnología. En un sentido más corto, el hardware puede ser equipo militar
importante, equipo electrónico, o equipo informático. En la informática se denomina
hardware o soporte físico al conjunto de elementos materiales que componen un
ordenador. Hardware también son los componentes físicos de una computadora tales
como el disco duro, CD-ROM, disquetera (floppy), etc... En dicho conjunto se
incluyen los dispositivos electrónicos y electromecánicos, circuitos, cables, tarjetas,
armarios o cajas, periféricos de todo tipo y otros elementos físicos.
Instrucción.-
Son un conjunto de datos insertados en una secuencia estructurada o especifica que el
procesador interpreta y ejecuta. En Informática, una instrucción normalmente se
refiere a una operación simple que se le da a un procesador y que este llevará a cabo.
Los tipos de instrucción permitidos están definidos y determinados dentro de cada
plataforma en la arquitectura del repertorio de instrucciones (ISA, instruction set
architecture), que también determina los registros de origen y destino de la CPU, y
en ocasiones un dato inmediato.
Interfaz.-
En términos generales, una interfaz es el punto, el área, o la superficie a lo largo de la cual
dos cosas de naturaleza distinta convergen.
Por extensión, se denomina interfaz a cualquier medio que permita la interconexión
de dos procesos diferenciados con un único propósito común.
Lenguaje (de programación).-
Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el
comportamiento de una máquina, particularmente una computadora. Consiste en un
conjunto de reglas sintácticas y semánticas que definen su estructura y el significado
de sus elementos, respectivamente.
Mascara.-
En informática, conjunto de datos que, junto con una operación, permiten extraer
selectivamente ciertos datos almacenados en otra. El término proviene, en sentido
figurado, de la capacidad de las máscaras para permitir a través de sus agujeros la
visualización de ciertas partes de aquello que cubren, a la vez que ocultan
(enmascaran) aquello tapado por las zonas no perforadas.
Microcontrolador.-
Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres
unidades funcionales de un ordenador: CPU, Memoria y Unidades de E/S, es decir, se trata
de un computador completo en un solo circuito integrado. Aunque sus prestaciones son
limitadas, además de dicha integración, su característica principal es su alto nivel de
especialización. Aunque los hay del tamaño de un sello de correos, lo normal es que sean
incluso más pequeños, ya que, lógicamente, forman parte del dispositivo que controlan.
Microprocesador.-
El microprocesador, micro o "unidad central de procesamiento", CPU , es un chip
que sirve como cerebro del ordenador. En el interior de este componente electrónico
existen millones de transistores integrados. Suelen tener forma de prisma chato, y se
instalan sobre un elemento llamado zócalo[2]). También, en modelos antiguos solía
soldarse directamente a la placa madre. Aparecieron algunos modelos donde se
adoptó el formato de cartucho, sin embargo no tuvo mucho éxito. Actualmente se
dispone de un zócalo especial para alojar el microprocesador y el sistema de
enfriamiento, comúnmente se usa un ventilador (cooler). El microprocesador está
compuesto por: registros, la Unidad de control, la Unidad aritmético-lógica, y
dependiendo del procesador, una unidad en coma flotante.
Mnemónico.-
En Informática un 'Mnemónico es una palabra que sustituye a un código de
operación (Lenguaje de máquina), con lo cual resulta más fácil la programación, es
de aquí de donde resulta el concepto de lenguaje ensamblador.
Un ejemplo común de mnemónico es la instrucción MOV, que le indica al
microprocesador que debe de mover datos de un lugar a otro. El microprocesador no
entiende palabras, sino que números binarios, por lo que es necesaria la traducción
del mnemónico a código objeto.
Ordenador.-
Una computadora, conocida en algunos países como ordenador y en otros países como
computador, es un sistema digital con tecnología microelectrónica capaz de procesar datos a
partir de un grupo de instrucciones denominado programa. La estructura básica de una
computadora incluye microprocesador (CPU), memoria y dispositivos de entrada/salida (E/S),
junto a los buses que permiten la comunicación entre ellos. En resumen la computadora es
una dualidad entre hardware (parte física) y software (parte lógica), que interactúan entre sí
para una determinada función.
Periférico.-
Se denominan periféricos tanto a las unidades o dispositivos a través de los cuales el
ordenador se comunica con el mundo exterior, como a los sistemas que almacenan o
archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Puerto.-
En computación, un puerto es una forma genérica de denominar a una interfaz por la
cual diferentes tipos de datos pueden ser enviados y recibidos. Dicha interfaz puede
ser física, o puede ser a nivel software (por ej: los puertos que permiten la
transmisión de datos entre diferentes computadoras)
PIC.-
Los 'PIC' son una familia de microcontroladores tipo RISC fabricados por Microchip
Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división
de microelectrónica de General Instruments.
El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro,
aunque generalmente se utiliza como Peripheral Interface Controller (Controlador
de Interfaz Periférico).
Radiofrecuencia.-
El término radiofrecuencia, también denominado espectro de radiofrecuencia o RF, se aplica
a la porción del espectro electromagnético en el que se pueden generar ondas
electromagnéticas aplicando corriente alterna a una antena.
Simulador.-
Un simulador es un aparato que permite la simulación de un sistema, reproduciendo
su comportamiento. Los simuladores reproducen sensaciones que en realidad no
están sucediendo. Un simulador pretende reproducir tanto las sensaciones físicas
(velocidad, aceleración, percepción del entorno) como el comportamiento de los
equipos de la máquina que se pretende simular. Para simular las sensaciones físicas
se puede recurrir a complejos mecanismos hidráulicos comandados por potentes
ordenadores que mediante modelos matemáticos consiguen reproducir sensaciones
de velocidad y aceleración. Para reproducir el entorno exterior se emplean
proyecciones de bases de datos de terreno. A este entorno se le conoce como
"Entorno Sintético”
Sistema integrado.-
Un sistema integrado () es un sistema informático de uso específico construido
dentro de un dispositivo mayor. Los sistemas integrados se utilizan para usos muy
diferentes de los usos generales para los que se emplea un ordenador personal. En un
sistema integrado la mayoría de los componentes se encuentran incluidos en la placa
base (motherboard) (la tarjeta de vídeo, audio, módem, etc.)
Software.-
Se denomina software, programática, equipamiento lógico o soporte lógico a todos
los componentes intangibles de un ordenador o computadora, es decir, al conjunto de
programas y procedimientos necesarios para hacer posible la realización de una tarea
específica, en contraposición a los componentes físicos del sistema (hardware). Esto
incluye aplicaciones informáticas tales como un procesador de textos, que permite al
usuario realizar una tarea, y software de sistema como un sistema operativo, que
permite al resto de programas funcionar adecuadamente, facilitando la interacción
con los componentes físicos y el resto de aplicaciones.
Ultravioleta (radiación).-
La radiación ultravioleta, cuyas longitudes de onda van aproximadamente desde los
400 nm, hasta los 15 nm, es emitida por el Sol en las formas UV-A, UV-B y UV-C
pero a causa de la absorción por parte de la atmósfera terrestre, el 99% de los rayos
ultravioletas que llegan a la superficie de la Tierra son del tipo UV-A. Estos rangos
están relacionados con el daño que producen en el ser humano. La radiación UV-C
no llega a la tierra porque es absorbida por el oxígeno y el ozono de la atmósfera, por
lo tanto no produce daño. La radiación UV-B es parcialmente absorbida por el ozono
y llega a la superficie de la tierra, produciendo daño en la piel.
http://www.kimaldi.com/kimaldi
Anexos
• SDA (System Data) por la cual viajan los datos entre los dispositivos.
• SCL (System Clock) por la cual transitan los pulsos de reloj que
sincronizan el sistema.
• GND (Masa) Interconectada entre todos los dispositivos "enganchados" al
bus.
Las líneas SDA y SCL son del tipo drenador abierto, similares a las de colector
abierto pero asociadas a un transistor de efecto de campo (ó FET). Se deben poner en
estado alto (conectar a la alimentación por medio de resistores Pull-Up) para
construir una estructura de bus tal que se permita conectar en paralelo múltiples
entradas y salidas.
Las definiciones o términos utilizados en relación con las funciones del bus I2C
son las siguientes:
Como es lógico, para iniciar una comunicación entre dispositivos conectados al bus
I2C se debe respetar un protocolo. Tan pronto como el bus esté libre, un dispositivo
maestro puede ocuparlo generando una condición de inicio. El primer byte
transmitido después de la condición de inicio contiene los siete bits que componen
la dirección del dispositivo de destino seleccionado y un octavo bit correspondiente
a la operación deseada (lectura o escritura). Si el dispositivo cuya dirección se
apuntó en los siete bits está presente en el bus éste responde enviando el pulso de
reconocimiento ó ACK. Seguidamente puede comenzar el intercambio de
información entre los dispositivos.
Cuando la señal R/W está previamente a nivel lógico bajo, el dispositivo maestro
envía datos al dispositivo esclavo hasta que deja de recibir los pulsos de
reconocimiento, o hasta que se hayan transmitido todos los datos.
En el caso contrario, es decir cuando la señal R/W estaba a nivel lógico alto, el
dispositivo maestro genera pulsos de reloj durante los cuales el dispositivo esclavo
puede enviar datos. Luego de cada byte recibido el dispositivo maestro (que en este
momento está recibiendo datos) genera un pulso de reconocimiento.
El dispositivo maestro puede dejar libre el bus generando una condición de parada
(Stop). Si se desea seguir transmitiendo, el dispositivo maestro puede generar otra
condición de inicio el lugar de una condición de parada. Esta nueva condición de
inicio se denomina "inicio repetitivo" y se puede emplear para direccionar un
dispositivo esclavo diferente ó para alterar el estado del bit de lectura/escritura
(R/W).
Conclusiones Finales:
Tanto Philips como como otros fabricantes de dispositivos compatibles con I2C
disponen de una amplia gama de circuitos integrados, incluyendo memorias RAM y
EEPROM, microcontroladores, puertos de E/S, codificadores DTMF, tranceptores
IR, conversores A/D y D/A, relojes de tiempo real, calendarios, etc.
Dado que no siempre se requiere alta velocidad de transferencia de datos este bus es
ideal para sistemas donde es necesario manejar información entre muchos
dispositivos y, al mismo tiempo, se requiere poco espacio y líneas de circuito
impreso. Por ello es común ver dispositivos I2C en video grabadoras, sistemas de
seguridad, electrónica automotriz, televisores, equipos de sonido y muchas otras
aplicaciones mas. Incluso, y gracias a que el protocolo es lo suficientemente
simple, usualmente se ven dispositivos I2C insertados en sistemas microcontrolados
que no fueron diseñados con puertos I2C, siendo el protocolo generado por el
firmware.
Hay, además, circuitos integrados cuya única misión es adaptar los niveles presentes
en el bus I2C y convertirlos desde y hacia TTL, permitiendo resolver fácil y
rápidamente la interconexión de dispositivos de dicha familia con el I2C.
Es una interfaz que designa una norma para el intercambio serie de datos binarios
entre un DTE (Equipo terminal de datos) y un DCE (Data Communication
Equipment, Equipo de terminación del circuito de datos), aunque existen otras
situaciones en las que también se utiliza la interfaz RS-232.
En la siguiente tabla podrás ver la lista de las señales RS-232 más comunes según los
pines asignados:
Signal DB-25 DE-9 (TIA-574) EIA/TIA 561 Yost RJ-50 MMJ
Transmitted Data TD 2 3 6 3 8 2
Received Data RD 3 2 5 6 9 5
Ring Indicator RI 22 9 1 - 2 -
Tabla B1 Lista de señales RS-232
2.- Construcción física
Para los propósitos de la RS-232 estandar, una conexión es definida por un cable
desde un dispositivo al otro. Hay 25 conexiones en la especificación completa, pero
es muy probable que se encuentren menos de la mitad de éstas en una interfaz
determinada. La causa es simple, una interfaz full duplex puede obtenerse con
solamente 3 cables.
Existe una cierta confusión asociada a los nombres de las señales utilizadas,
principalmente porque hay tres convenios diferentes de denominación (nombre
común, nombre asignado por la EIA, y nombre asignado por el CCITT.
En la siguiente tabla se muestran los tres nombres junto al número de pin del
conector al que está asignado, los nombres de señal están desde el punto de vista del
DTE (por ejemplo para Transmit Data los datos son enviados por el DTE, pero
recibidos por el DCE:
PIN EIA CCITT Función DTE-DCE
Sobre los circuitos, todos los voltajes están con respecto a la señal de tierra (SG).
Las convenciones que se usan son las siguientes:
+3 a +25 Espacio 0 On
Los valores de voltaje se invierten desde los valores lógicos. Por ejemplo, el valor
lógico más positivo corresponde al voltaje más negativo. También un 0 lógico
corresponde a la señal de valor verdadero o activada. Por ejemplo si la línea DTR
está al valor 0 lógico, se encuentra en la gama de voltaje que va desde +3 a +25 V,
entonces DTR está listo (ready).
El canal secundario a veces se usa para proveer un camino de retorno de información
más lento, de unos 5 a 10 bits por segundo, para funciones como el envío de
caracteres ACK o NAK, en principio sobre un canal half duplex. Si el módem usado
acepta esta característica, es posible para el receptor aceptar o rechazar un mensaje
sin tener que esperar el tiempo de conmutación, un proceso que usualmente toma
entre 100 y 200 ms.
Existen en el mercado dos circuitos integrados disponibles, (los chips 1488 y 1489)
los cuales implementan dos drivers y receptores TTL, (4 por chip), para una RS-232
de forma compatible con las reglas anteriores.
Cuando una señal cambia de una condición a otra, la especificación limita el tiempo
que puede permanecer en la región de transición. Este requerimiento determina el
máximo de capacidad distribuida admisible en el cable, porque la capacidad limita el
tiempo de transición de la señal. La norma RS-232 especifica que la capacidad en la
línea no debe superar los 2.500 picofaradios. Los cables que se suelen utilizar tienen
una capacidad de 120 a 150 pico faradios por metro de longitud, por lo que la RS-
232 tiene como límite de 15 m de distancia, como se vio anteriormente.
El presente manual, ha sido elaborado para usuarios que deseen utilizar el programa
Control Acceso para PC, que es parte del proyecto de titulación “Aplicación de Pic C
y C# en el desarrollo de un Sistema de Control de Acceso Peatonal” y que tiene por
finalidad supervisar el funcionamiento del sistema basado en microcontroladores, y
cambiar algunos parámetros dentro de estos dispositivos inteligentes.
El programa Control Acceso para PC, fue desarrollado con Microsoft Visual C#
2005 Express Edition, el cual, además de interactuar con los microcontroladores,
maneja una base de datos que ha sido creada con Microsoft SQL Server 2005, para el
manejo y almacenamiento de datos que serán recibidos por medio del puerto serial
del ordenador.
La pantalla principal del programa, presenta varias alternativas distribuidos de forma
estratégica en recuadros dentro del panel principal., que tienen funciones como
visualización de mensajes y varios submenús (ver figura E1).
Cada submenú requiere una clave específica y se abre por medio de un botón,
validados en tres intentos posibles, el programa esta orientado a que solo un
submenú este abierto, como se aprecia en la figura E2..
Cada botón requiere de una clave tipo entero, que es “123”, la misma que puede ser
modificada desde el software por el usuario., a excepción del botón cambiar clave
del software., este ingresa directo, los botones que requieren clave deshabilitan al
botón cambiar clave del software y viceversa.
Permite abrir las puertas desde el ordenador y almacenar a la base, se activa por
medio del botón “OK” una vez que se haya seleccionado una de las puertas.