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