S. C. ´ PI PIC C
ELEC TRÓNI CA PRÁCTI ELECTRÓNI PRÁCTI CA CON CO N M I CR CROC OCONT ONT R OLA DO DORE RES S PI PI C
S an t i ag o C or r a le s V. V. Profesor de Microcontroladores PIC Director de Investigac Investigac ión Gerent e de la emp resa S.C. ´ PIC
S. C. ´ PI PIC C
Título Original: ELECTRÓNICA PRÁCTICA CON MICROCONTROLADORES PIC
DERECHOS RESERVADOS Diseño de Portada: Santiago Corrales V. Programación: Santiago Corrales V. Fotografía: Santiago Corrales V. Prohibida la reproducción total o parcial de este libro. © 2006: Santiago Corrales V. Pedidos de ejemplares, Placas para el Entrenador de PIC, Servomotores, etc. A los Telfs.:02 - 2506145 / 2553526 CEL: 097087999 / 091008031 Email:
[email protected] Impreso en: Imprenta Gráfica Manuel Cajías E13 – 134 y Toribio Hidalgo Telfs. 3226918 / 3226370 CEL 098394772 / 094257639
[email protected]
IMPRESO EN ECUADOR
S. C. ´ PI PIC C
CONTENIDO PROLOGO………………………………………………………………………………...7
1. MICROCONTROLADORES PIC CONOCIMIENTOS BASICOS Introducción a los microcontroladores…………………………………………………….9 Microcontroladores PIC………………………………………………………………...…9 Microcontroladores PIC 16F628A……………………………………………………….13 Microcontroladores PIC 16F819…………………………………………………………14 Microcontroladores PIC 16F877A……………………………………………………….15 Síntesis del manejo del software PIC BASIC PRO…………………………………...…16 Síntesis del manejo del software IC – PROG …………………………………………...18 Síntesis del manejo del software PROTEUS…………………………………………….22 Manejo del programador puerto paralelo de S.C. ´ PIC…………………………………24
2. PROGRAMANDO EL PIC “16F628A” Manejo de secuencias...………………………………………………………………….25 Estudio de subrutinas…………………………………………………………………….29 Variables…………………………………………………………………………………32 Cambio de nombre a los puertos…………………………………………………………33 Instrucciones múltiples…………………………………………………………………..33 Instrucción FOR – NEXT………………………………………………………………..34 Pulsadores y switch………………………………………………………………………35 Instrucción IF – ELSE – ENDIF…………………………………………………………36 Instrucción SELECT – CASE……………………………………………………………40
S. C. ´ PI PIC C
Proyectos con Pulsadores y LEDs……………………………………………………….41 Manejo de teclados hexadecimales………………………………………………………45 Displays…………………………………………………………………………………..49 Proyectos con teclados y displays………………………………………………………..53 Relés de 12V……………………………………………………………………………..57 Diseño y construcción de 1 PLC de 8 entradas y 8 salidas controlado por un PIC 16F628A……...………………………………………………………………………….60 Proyectos con teclados y relés de 12V…………………………………………………..63 Instruccióin EEPROM – READ – WRITE………………………………………………71 Manejo de módulos LCD………………………………………...………………………77 Instrucción DEFINE – LCDOUT………………………………………………………..79 Proyectos con LCDs……………………………………………………………………..83 Instrucción LOOKUP……………………………………………………………………85 Instrucción Instrucción SOUND…………………… SOUND………………………………………………… ……………………………………….………..87 ………….………..87 Instrucción FREQOUT………………………………………………………….……….88 Instrucción DTMFOUT………………………………………………………………….89
3. COMUNICACIÓN SERIAL CON EL MICROCONTROLADOR PIC “16F628A” Instrucción SERIN – SEROUT………………………………………………………….93 Comunicación serial PIC – PIC………………………………………………………….94 Comunicación serial Infrarroja…………………………………………………………..95 Comunicación serial PC – PIC…………………………………………………………..97 Comunicación serial con Visual Basic 6.0………………………………………………98 Manejo del Software LABVIEW 7.0…………………………………………………..109 Comunicación serial con LABVIEW 7.0………………………………………………117
S. C. ´ PI PIC C
4. MANEJO DE MODULOS DE RADIO FRECUENCIA Instrucción POT……………………………………………………………………...…126
5. PROGRAMANDO EL PIC “16F819” Y EL “16F877A” Conversor ANALOGO – DIGITAL……………………………………………………127 Instrucción ADCIN……………………………………………………………………..127 Diferencias entre el PIC 16F628A y el PIC 16F819……………………………………130 Microcontrolador PIC 16F877A………………………………………………………..131 Diferencias entre el PIC 16F628A, 16F819 y 16F877A………………………………..133
6. MANEJO DE MOTORES Motores PASO – PASO………………………………………………………………...135 Motores PASO – PASO UNIPOLARES……………………………………………….136 Secuencia WAVE DRIVE…………………………………………………………...…138 Secuencia FULL STEP…………………………………………………………………139 Motores PASO – PASO BIPOLARES…………………………………………………140 Manejo de Servomotores……………………………………………………………….141 Instrucción PWM……………………………………………………………………….143
S. C. ´ PI PIC C
S. C. ´ PI PIC C
PROLOGO En la actualidad los microcontroladores son la herramienta fundamental para el desarrollo científico y tecnológico, saber sobre estas mini computadoras es muy importante ya que se encuentran en nuestro trabajo, nuestro hogar, en los computadores, en proyectos aeroespaciales, etc. Todas estas áreas de aplicación me han motivado a realizar este libro en el cual he puesto todos mis conocimientos adquiridos por estudio y por experiencia. Lo he realizado de una manera clara para que el lector no tenga dificultad en el aprendizaje y pueda encontrar soluciones a diversos problemas que podrá hallar en su vida cotidiana. Los diferentes temas que se encontrará en el libro son exclusivamente trabajados con microcontroladores PIC por ser más económicos y muy fáciles de encontrarlos en las tiendas electrónicas. En el capitulo1 se encuentran conocimientos básicos que el lector debe conocer para introducirse en el manejo de estos dispositivos electrónicos, el capitulo 2 trata sobre la programación para el microcontrolador, para explicar las instrucciones del lenguaje BASIC para PIC se ha elegido el 16F628A por varias ventajas que las irá conociendo en el transcurso del libro. El capitulo 3 aprenderá a manejar comunicación con el computador, entre microcontroladores, y monitoreo con LABVIEW. En el capitulo 4 se encuentra el manejo de dos dispositivos de radio frecuencia, con los cuales podrá introducirse en la era inalámbrica que está gobernando el mundo entero. En el capitulo 5 se detalla el funcionamiento de dos microcontroladores más por ser de gran ayuda a la hora de realizar un proyecto. Y en el capítulo 6 el lector aprenderá a manejar diversos motores para realizar proyectos de robótica. Mi agradecimiento es primeramente a DIOS por haber permitido culminar con un objetivo más de los que me he planteado en mi vida, a mis padres por su incondicional apoyo en el transcurso de mi carrera. A mis maestros, quienes en su noble labor me han transmitido sus valiosos conocimientos, en especial a los Ingenieros del área de electrónica del colegio técnico particular “Hermano Miguel” de la ciudad de Latacunga, A mi esposa y mi hija por su apoyo moral y su ayuda en la realización del libro. Agradezco a mis amigos quienes han aportado con sus conocimientos despejando ciertas dudas y finalmente a la empresa CORPOIMPEX representantes de Microchip para el Ecuador.
S. C. ´ PI PIC C
S. C. ´ PI PIC C
MICROCONTROLADORES PIC CONOCIMIENTOS BASICOS INTRODUCCION A LOS MICROCONTROLADORES Existen varias empresas que actualmente se encuentran fabricando estas microcomputadoras, las cuales poseen variedad de modelos que nos facilitan la implementación de proyectos que se pueden realizar. En este libro se detallará el estudio de los Microcontroladores PIC de MICROCHIP TECHNOLOGY Inc. Microchip es una empresa que está liderando las ventas de este dispositivo, por su bajo costo, por tener una gran variedad de modelos, y por su programación muy sencilla, la que hace que el microcontrolador PIC se esté estudiando en diversas universidades de gran prestigio a nivel mundial.
MICROCONTROLADOR PIC En sí un microcontrolador es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica, sus partes o componentes principales son: •
M e m o r i a R OM O M (Memoria de sólo lectura)
•
M e m o r i a R AM A M (Memoria de acceso aleatorio)
•
L ín ín e as a s d e e n t r a da da / s a all i d a ( I / O ) También llamados puertos
•
L ó g i c a d e c o n t r o l Coordina la interacción entre los demás bloques
S. C. ´ PI PIC C
En la figura se puede observar la estructura interna de un microcontrolador, y como se puede apreciar posee un circuito externo de reloj, el cual indica al micro la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema, ya que sin él no podríamos ejecutar las órdenes o las líneas de instrucción que se encuentran programadas en el mismo. Los diferentes tipos de cristal más comunes para un microcontrolador PIC son: •
RC. Oscilador con resistencia y condensador. condensador.
Vcc R C I P R O D A L O R T N O C O R C I M
OSC1
OSC2
C
Según las recomendaciones de Microchip R puede tomar valores entre 5k y 100k, y C superior a 20pF. •
X T. Cristal. C I P R O D A L O R T N O C O R C I M
22pF OSC1
4 Mhz
22pF
OSC2
•
H S. Cristal de alta velocidad.
•
LP . Cristal para baja frecuencia y bajo consumo de potencia.
El microcontrolador como se ha visto anteriormente es un microcomputador, el cual necesita de periféricos de entrada y salida para su correcta utilización. Las entradas dependiendo de la aplicación pueden ser: sensores, teclados, pulsadores, switch, etc. Las salidas igualmente dependiendo de la aplicación pueden ser: leds, display, LCD, relés, computadoras, etc. Arquitectura interna del PIC. PIC. Hay dos arquitecturas conocidas: la clásica de Von Neumann, y la arquitectura Harvard,
S. C. ´ PI PIC C
Arquitectura Von Neumann Dispone de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).
Arquitectura Harvard Dispone de dos memorias independientes, una que contiene sólo instrucciones, y otra que contiene sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias, ésta es la estructura para los PIC's.
Memoria de programa Esta vendría a ser la memoria de instrucciones, aquí es donde almacenaremos nuestro programa o código que el micro debe ejecutar. No hay posibilidad de utilizar memorias externas de ampliación.
Memorias EEPROM. (Electrical Erasable Programmable Read Only Memory Memoria de sólo lectura Programable y borrable eléctricamente).- Ésta tarea se hace a través de un circuito grabador y bajo el control de un PC (IC-PROG). El número de veces que puede grabarse y borrarse una memoria EEPROM es finito aproximadamente 1000 veces. •
Memorias FLASH. Posee las mismas características que la EEPROM, pero ésta tiene menor consumo de energía y mayor capacidad de almacenamiento, por ello está sustituyendo a la memoria EEPROM.
S. C. ´ PI PIC C
La memoria de programa se divide en páginas de 2048 posiciones.
Cuando ocurre un Reset, el contador de programa (PC) apunta a la dirección 0000h, y el micro se inicia nuevamente. Por esta razón, en la primera dirección del programa se debe escribir todo lo relacionado con la iniciación del mismo. Ahora, si ocurre una interrupción el contador de programa (PC) apunta a la dirección 0004h, entonces ahí escribiremos la programación necesaria para atender dicha interrupción.
Memoria de datos
Posee dos zonas distintas:
1. RAM estática ó SRAM: donde residen los Registros Específicos (SFR) con 24 posiciones de tamaño byte, aunque dos de ellas no son operativas y los Registros de Propósito General (GPR) con 68 posiciones.
S. C. ´ PI PIC C
2. EEPROM: de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentación. MICROCONTROLADOR PIC 16F628A El microcontrolador PIC 16F628A, soporta 1000 ciclos de escritura en su memoria FLASH y 1.000.000 de ciclos en su memoria EEPROM, la memoria de programa que posee es de 2048 Words, memoria de datos EEPROM es de 128 bytes, la memoria RAM es de 224 bytes, 16 pines de entrada y salida, y posee 2 comparadores. A más de esto posee grandes ventajas como son: Comunicación AUSART, Oscilador interno de 4 MHz, Master Clear (MCLR) programable, etc. La alimentación del microcontrolador PIC en general es de Vss = GND = 0V y de Vdd = Vcc = 5V, este valor de Vdd puede variar desde 3V hasta 5.5V. Posee a más de ello 2 puertos de I/O el Puerto A y el Puerto B, los cuales trabajan a 8 bits cada uno y entregan 25mA por cada PIN, y en modo sumidero pueden soportar hasta 25mA por cada PIN.
S. C. ´ PI PIC C
DISTRIBUCIÓN DE PINES DEL PIC 16F628A
MICROCONTROLADOR PIC 16F819 El microcontrolador PIC 16F819, posee una memoria de programa de 2048 Words, Memoria de datos EEPROM de 256 bytes, memoria RAM de 256 bytes y 16 pines de entrada y salida, no posee comparadores pero tiene una gran ventaja de poseer 5 conversores análogo – digital A/D, siendo ésta la diferencia principal con el microcontrolador PIC 16F628A. Cada uno de estos conversores trabaja a 10bits. También posee MCLR programable, comunicación AUSART y oscilador interno, el cual se puede calibrar hasta 8 posiciones, desde 31,25 KHz hasta 8 MHz, es decir: 1. 2. 3. 4. 5. 6. 7. 8.
31,25 KHz 125 KHz 250 KHz 500 KHz 1 MHz 2 MHz 4 MHz 8 MHz
DISTRIBUCIÓN DE PINES DEL PIC 16F819
S. C. ´ PI PIC C
MICROCONTROLADOR PIC 16F877A El microcontrolador PIC 16F877A, posee una memoria de programa de 8192 Words, Memoria de datos EEPROM de 256 bytes, memoria RAM de 368 bytes y 33 pines de entrada y salida, los cuales se dividen en: Puerto A trabaja a 6 bits Puerto B trabaja a 8 bits Puerto C trabaja a 8 bits Puerto D trabaja a 8 bits Puerto E trabaja a 3 bits Además de ello posee 8 Conversores Análogo - Digital A/D, una de las principales diferencias frente a los otros pic estudiados anteriormente es la capacidad que posee, y por esta razón es el más utilizado en proyectos avanzados que requieren mayor numero de entradas y/o salidas, como automatización de procesos industriales, alarmas residenciales, etc. Una desventaja es que debe ser conectado con un cristal externo, ya que no tiene incorporado el mismo y necesita también en el Master Clear una resistencia Pull – Up, ya que no hay forma de deshabilitar esta opción.
DISTRIBUCIÓN DE PINES DEL PIC 16F877A
S. C. ´ PI PIC C
SINTESIS DEL MANEJO DEL SOFTWARE PIC BASIC BASI C PRO Pic Basic Pro es un compilador el cual permite realizar la programación de un microcontrolador en un lenguaje de alto nivel, lenguaje Basic. A más de este compilador tenemos el Software MicroCode Studio, que es un editor de texto exclusivo para facilitar la programación de los microcontroladores PIC. Por lo tanto MicroCode Studio y Pic Basic Pro van juntos.
Detalle de las partes más importantes del MicroCode Studio y del PicBasic Pro. .- Esta ventana permite al usuario seleccionar el microcontrolador que va a utilizar para la programación, en este caso se encuentra seleccionado el Pic 16F628A
.- Explorador de Código. Permite visualizar las variables, subrutinas, constantes, etc. Que durante la programación se haya realizado, con la finalidad de encontrar o seleccionar rápidamente algún código que necesitemos cambiar o editar.
S. C. ´ PI PIC C
.- Numeración de línea de programa.- Esta herramienta es muy importante a la hora de realizar un programa, ya que al compilarlo, si ocurre algún error nos indica cual es la línea en donde se produjo, y facilita el arreglo del mismo. .- Permite visualizar que espacio ocupó el programa en el PIC, como se puede observar se ha ocupado 59 words de 2048 words disponibles en el PIC 16F628A, o si existe algún error en el programa, aparece:
.- Indica que se produjo un error en la compilación, del tipo sintaxis y en la línea numero 17.
.- En esta ventana vamos a realizar nuestros programas, a más de ello se puede observar en la parte superior se encuentra el encabezado para cada uno de los programas que se realice, donde se puede incluir el nombre del proyecto, nombre del autor, notas, etc. .- Estas herramientas son las más importantes a la hora de montar un proyecto, ya que nos permite realizar la compilación del programa. Vamos a detallar cada una de ellas: .- Este botón sirve solamente para compilar el programa, se lo puede también activar digitando F9, desde el teclado del computador. Una vez compilado el programa
S. C. ´ PI PIC C
genera 4 archivos que son: .ASM, .MAC, .PBP y .HEX, siendo este último el más importante ya que éste sirve para grabar el microcontrolador PIC. .- Este botón tiene dos funciones a la vez, la primera es de compilar el programa y generar los 4 archivos estudiados anteriormente, y la segunda es de llamar al programador IC – PROG, el cual nos permitirá grabar el PIC. También se lo puede activar digitando F10.
SINTESIS DEL MANEJO DEL SOFTWARE IC - PROG El IC – PROG es una herramienta fundamental para el programador de microcontroladores en general, ya que éste permite grabar el archivo .HEX en el micro. Este programador permite seleccionar varios dispositivos electrónicos tanto de puerto serial y puerto paralelo que permiten realizar la interfaz entre el computador y el microcontrolador, mas adelante se detallará el funcionamiento del dispositivo serial de la empresa S.C. ´ PIC ELECTRONICA & COMPUTACION.
S. C. ´ PI PIC C
En la figura se puede apreciar que al iniciar el programa IC – PROG el código del programa aparece 3FFF, en todas las direcciones.
.- Por medio de la ventana abrir, buscamos la carpeta donde se haya hecho el programa, y seleccionamos el archivo .HEX que deseamos cargar en el PIC.
S. C. ´ PI PIC C
Al cargar el programa .HEX, cambian los valores de dirección, por otros distintos a 3FFF, así podremos darnos cuenta que el programa a sido cargado en el programador. .- Esta barra de herramientas es la mas importante dentro del manejo del IC – PROG, a continuación detallaremos cada una de éstas opciones, .- Permite leer el contenido del microcontrolador PIC .- Este botón realiza la programación del microcontrolador, es decir carga el archivo hexadecimal al PIC. .- Permite borrar el contenido del microcontrolador y dejarlo en blanco para poder ser grabado nuevamente. .- Como en el MicroCode Studio, en esta ventana, seleccionamos el microcontrolador que deseamos utilizar.
.- En la ventana del oscilador, seleccionamos la configuración deseada, es decir podemos cambiar al cristal interno de 4MHz que posee el PIC 16F628A o la que necesite el usuario.
.- Aquí se puede seleccionar los Bits de configuración, es recomendable desactivar la opción del MCLR y dejarlo siempre como se muestra en la figura. NOTA: Para la correcta utilización del IC – PROG, es recomendable realizar los siguientes pasos para que no tenga ningún tipo de problema:
S. C. ´ PI PIC C
1. 2. 3. 4.
Seleccionar el microcontrolador PIC a utilizar. Cargar el archivo hexadecimal al IC – PROG Configurar el oscilador a los requerimientos del usuario Seleccionar los bits de configuración a los indicados anteriormente.
Siguiendo estos pasos no tendrá ningún problema a la hora de realizar sus proyectos. Si aún así le aparece una ventana como la siguiente:
Puede ser por dos motivos. El primero es que no se encuentra bien habilitado el Hardware a utilizar, o el segundo es que el microcontrolador que está utilizando está en mal estado, por lo que siempre debemos tener mucho cuidado con los micros porque éstos son de tecnología CMOS, y son muy vulnerables a la estática, por lo que se aconseja manejarlos con pinzas para evitar el contacto directo con las manos.
S. C. ´ PI PIC C
SINTESIS DEL MANEJO DEL SOFTWARE PROTEUS Proteus es una herramienta fundamental para las personas que están readicionadas con el mundo de los microcontroladores, ya que ésta permite realizar simulaciones de los proyectos montados, es decir no hace falta: probar en protoboard el proyecto, comprar materiales, quemar los microcontroladores, etc. Simplemente necesitamos seleccionar cada uno de los elementos a utilizar, ya que esta poderosa herramienta contiene: Microcontroladores Microcontrolador es PIC, LCD’s, Relés, Leds, Displays, etc.
A continuación detallaremos las partes más importantes de este Software. .- Componente.- Permite seleccionar el elemento que deseamos utilizar, de la siguiente manera: Seleccionamos el icono del componente dando un clic, seguido damos un clic en
la
, y nos aparece una ventana similar a la siguiente:
S. C. ´ PI PIC C
En la parte de Keywords: escribimos el elemento a utilizar, en este caso se ha escrito el PIC 16F628A, y en Results (1): damos doble clic para agregar el micro a la pantalla del proteus. RECOMENDACIÓN PARA SELECCIONAR RESISTENCIAS. 1. Escribir para el caso de una resistencia de 330 ohmios, escribir RES 330R y seleccionar la MINIRES 330R. 2. Para el caso de una resistencia de 4,7K debe escribir RES 4K7, y seleccionar la MINIRES 4K7. .- Esta herramienta permite escoger Gnd y Vcc para realizar el proyecto.
.- Power para Vcc y Ground para Gnd. .- Permite realizar líneas entre los componentes seleccionados.
S. C. ´ PI PIC C
MANEJO DEL PROGRAMADOR PUERTO PARALELO DE S.C. ´ PIC La empresa S.C. ´ PIC ELECTRONICA & COMPUTACION a diseñado un programador totalmente económico para que los lectores puedan realizar cada uno de los proyectos que se encuentran a lo largo del libro. Se ha elaborado un programador universal de microcontroladores PIC del tipo paralelo por presentar varias ventajas, como la rapidez que posee para grabar, borrar y leer los microcontroladores PIC. El nivel de voltaje que necesitan los microcontroladores PIC de la serie A es de 5 Vcc en la entrada de datos, y los que no poseen la A es de 13,8 Vcc, sin embargo este programador está diseñado para grabar cualquiera de los dos tipos. Siendo ésta la diferencia entre los microcontroladores PIC de serie A frente a los sin A.
Este programador corresponde a PROPIC2 en el IC – PROG que se lo conecta al puerto paralelo del computador. Este programador soporta microcontroladores PIC de 8, 14, 18, 28 y 40 pines, comunes en las tiendas electrónicas. Para realizar la programación lo único que se debe hacer es seleccionar el área donde se debe ubicar el microcontrolador y proceder a grabarlo mediante el software IC – PROG que ya se ha detallado anteriormente.
S. C. ´ PI PIC C
PROGRAMANDO EL PIC “16F628A” En sí la programación de los microcontroladores PIC en lenguaje Basic, es la misma, lo único que los diferencia unos de otros es la definición de los puertos, y ciertas ventajas que poseen. El PIC 16F628A consta de 2 puertos el A y el B, los cuales trabajan a 8 bits cada uno, es decir se divide el puerto A y B en 8 bits de entrada o salida así:
PUERTO A A.0 – A.1 – A.2 – A.3 – A.4 – A.5 – A.6 – A.7 PUERTO B B.0 – B.1 – B.2 – B.3 – B.4 – B.5 – B.6 – B.7
MANEJO DE SECUENCIAS Iniciaremos las secuencias aprendiendo a utilizar las instrucciones: PORT, HIGH, LOW, PAUSE.
PORT.- Esta instrucción nos permite indicar que puerto se va a ocupar, y por lo general va acompañado de otra instrucción. Su sintaxis es la siguiente: PORTB.0 ; indica que se ha seleccionado el puerto B.0 PORTA.0 ; indica que se ha seleccionado el puerto A.0 HIGH.- Permite sacar 5 Vcc o 1 Lógico por un puerto del microcontrolador, y a la vez lo convierte en salida. Ejemplo: HIGH PORTB.0 ; convierte el puerto B.0 en salida y lo coloca en 1L. LOW.- Coloca el puerto en salida y lo hace 0L, es decir lo “apaga”. LOW PORTB.0 ; convierte el puerto B.0 en salida y lo coloca en 0L. PAUSE.- Detiene el programa por un período en milisegundos así: PAUSE 1000; realiza una pausa en el programa de 1000 ms equivalente a 1 segundo.
S. C. ´ PI PIC C
Un período tiene 16 bits, por lo que se podrá colocar una pausa hasta de 65535 milisegundos, es decir 1,09 minutos equivalentes a 65,5 segundos. Más adelante se indicará como realizar pausas de más de 1 min, hasta varias horas de acuerdo a las necesidades del programa. Una vez estudiadas éstas instrucciones podremos empezar con nuestro primer proyecto el cual realizará la función de un 555 como un oscilador monoestable.
Oscilador Monoestable.PBP
Si analizamos el programa la forma de onda quedaría algo así: Vcc [V] 5
0
1
2
3
4 5
6
7
8
9 10
t [seg]
Ahora realizaremos la simulación en el Proteus de la siguiente manera: 1. Seleccionamos el icono de componente 2. Escribimos los elementos a utilizar, en este caso sería: 2.1. PIC 16F628A 2.2. RES 330R 2.3. LED rojo, amarillo, verde o azul 3. Procedemos a realizar el circuito como un esquemático cualquiera quedando el diagrama mas o menos así:
S. C. ´ PI PIC C
Como se puede observar, en el proteus cada microcontrolador tiene su distribución de pines, lo cual facilita realizar el diagrama. Ahora lo único que falta es cargar el archivo hexadecimal al microcontrolador, aquí no vamos a ocupar el IC – PROG, porque solo es una simulación, pero sí debemos cargar el archivo al micro de la siguiente manera:
Damos un clic derecho en cualquier parte del componente que se desee seleccionar y se pintará de color rojo, eso quiere decir que se ha seleccionado correctamente, si se realiza doble clic derecho, el componente se borrará. Seguido damos un clic izquierdo y aparece una pantalla como la siguiente:
S. C. ´ PI PIC C
Primero cambiamos el Oscilador a 4MHz, en la ventana Processor Clock Frequency, seleccionamos la carpeta de Program File, lo cual me permitirá buscar el archivo hexadecimal en este caso sería Oscilador Monoestable. HEX. Y damos un clic en OK. Damos un clic derecho en cualquier parte de la pantalla para deshabilitar la selección del componente y corremos el programa digitando F12 desde el teclado del computador.
Prendido el LED durante 5 segundos
Apagado el LED .- Otra manera de correr el programa es digitando el botón RUN que es similar al PLAY de una grabadora. Se puede pausar el programa y detener el mismo con la utilización de los botones de ésta barra de herramientas. Estos pasos se seguirán para realizar cada uno de los proyectos que se encuentran en el libro, o si prefieren pueden utilizar el simulador de un entrenador el cual posee todos los elementos que se necesitarán para cada uno de los proyectos. Éste se encuentra en el CD con el nombre de Entrenador de Entrenador PIC 16F628A. 16F628A. A continuación presentamos la figura del Entrenador diseñado para realizar los proyectos con el Microcontrolador PIC 16F628A, el cual posee 8 Leds, 1 Display, 1 LCD, 3 pulsadores, 1 teclado y 1 relé.
S. C. ´ PI PIC C
ESTUDIO DE SUBRUTINAS Las subrutinas permiten realizar una llamada a cierta parte del programa, para que realice una función específica. En el compilador PicBasic Pro existen dos tipos de subrutinas la GOTO y la GOSUB, las que detallaremos a continuación:
GOTO.- Permite apuntar a cierta parte del programa donde se le haya asignado una etiqueta, y continuar con las líneas de programación después de la misma. Para poder entender mejor la instrucción GOTO vamos a desarrollar nuestro siguiente proyecto, el cual realizará la función de un 555 pero esta vez como un oscilador astable el cual estará en nivel alto durante 1 segundo y en nivel bajo durante ½ segundo. Su forma de onda sería: Vcc [V] 5
0
1 2
3 4 5 6 7 8 9 10
t [seg]
S. C. ´ PI PIC C
La programación será la siguiente:
Oscilador Astable.PBP
Para la simulación simplemente cargamos el archivo Oscilador Astable.HEX en el entrenador, activamos el interruptor correspondiente a los leds y presionamos F12.
GOSUB.- Es similar a la subrutina GOTO, apunta a cierta parte del programa donde esté asignada la etiqueta, guardando su dirección de retorno, es decir cumple con la subrutina y regresa a la siguiente línea donde se quedó. Para entender esta instrucción realizaremos un programa de un led intermitente.
Led Intermitente.PBP
Como se puede observar hemos sustituido la pausa con una subrutina denominada timer, la que detiene el programa durante 1 segundo. Así ahorramos espacio en el Pic ya que la instrucción PAUSE se la realiza una sola vez. Cada vez nuestros programas se irán incrementando de tamaño y complicándose poco a poco, por lo que es muy importante repasar los que hemos realizados hasta el momento.
S. C. ´ PI PIC C
TRIS.- Realiza la función de colocar los pines seleccionados como entrada (0L) o salida (1L) dependiendo de la aplicación a utilizar. TRISB=%00000000 con esta instrucción colocamos todos los pines del puerto B como salida, o bien se puede utilizar TRISB=0 que realiza la misma función. TRISB=%11111111 colocamos todos los pines del puerto B como entrada, o se puede ocupar TRISB=1. Cada bit puede ser manejado individualmente de la misma manera es decir pueden ser entrada o salida. TRISA=%11110000 con esta instrucción hacemos que los bits menos significativos del puerto A sean salidas y los mas significativos sean entradas. Una vez definido cuales son los puertos de entrada o salida, procedemos a encender o apagar los puertos así:
Instrucción TRIS. PBP
Conociendo estas herramientas en la programación para los microcontroladores estamos listos para realizar nuestro siguiente proyecto.
SEMAFORO DIGITAL
S. C. ´ PI PIC C
Semáforo Digital. PBP
Si se desea utilizar focos de 110V se procede a realizar el siguiente diagrama de conexión para cada uno de los leds a utilizar:
VARIABLES Una variable es un nombre identificador en el cual guardamos datos de forma temporal. El compilador PIC BASIC PRO posee tres tipos de variable que son:
VARIABLE TIPO
FACTOR
VALOR
BIT
21
0-1
BYTE
28
0 - 255
WORD
216
0 - 65535
S. C. ´ PI PIC C
La Sintaxis a utilizar es la siguiente:
Donde X, Y, Z son nombres identificadores para la variable, los cuales pueden ser distintos de acuerdo al usuario.
CAMBIO DE NOMBRE A LOS PUERTOS Para realizar el cambio de nombre a los puertos del microcontrolador usamos la misma instrucción estudiada anteriormente, nos referimos a la instrucción VAR. Su sintaxis es la siguiente:
Como se puede observar esta herramienta es muy fundamental a la hora de montar un proyecto, ya que permite darnos cuenta que elemento está conectado en cada uno de los puertos y evitamos errores en la programación.
INSTRUCCIONES INSTRUCCIONES MULTIPLES Otra de las herramientas fundamentales del PIC BASIC PRO son los comandos múltiples que permite escribir varias instrucciones en la misma línea simplemente separados por ( : ).
LUCES INTERMITENTES. PBP
S. C. ´ PI PIC C
INSTRUCCION FOR – NEXT Permite ejecutar un programa n veces, y su sintaxis es la siguiente:
Donde R es una variable asignada con el valor de 1 hasta 5. Es decir realizará 5 veces Lo que contenga el cuerpo del programa. Ejemplo:
lazo FOR. PBP
Como se había estudiado anteriormente el PIC BASIC PRO no permite realizar una pausa mayor a 65,5 segundos. Por esa razón si se desea incrementar la pausa se utilizará el lazo FOR estudiado. Así:
S. C. ´ PI PIC C
PAUSA 5 MINUTOS. PBP
Mediante el lazo FOR se ha incrementado la pausa hasta 5 minutos, y así se puede seguir aumentando de acuerdo a las necesidades del usuario.
PULSADORES Y SWITCH Existen 2 tipos de conexión para el manejo de pulsadores o switch. La primera es la conexión a 1L y la segunda la conexión a 0L. A continuación los diagramas de conexión por cada uno de los casos. CONEXIÓN A 1L.Se la conoce como 1L porque Vcc se encuentra conectado a través de una resistencia al microcontrolador PIC, y el pulsador generará 0L cuando este sea presionado. La resistencia nos permite bajar la corriente de entrada para que el microcontrolador PIC funcione correctamente.
CONEXIÓN A 0L.Contraria a la anterior, ésta permite ingresar 0L a través de una resistencia al microcontrolador, y en el momento que el pulsador es digitado generará 1L. Igualmente la resistencia permite bajar la corriente a la requerida por el PIC para evitar daños o errores al ingresar los pulsos.
S. C. ´ PI PIC C
Para el control de los pulsadores o switch debemos utilizar una instrucción que nos permita realizar preguntas.
INSTRUCCIÓN INSTRUCCIÓN IF – ELSE – ENDIF Esta instrucción es muy utilizada para realizar preguntas en cualquier lenguaje de programación. Sin embargo en los microcontroladores es esencial para diversas aplicaciones, y una de ellas es la utilización en los pulsadores o switch. Su sintaxis de manejo es la siguiente:
IF pregunta es correcta THEN Realice esta programación programación
ELSE Caso contrario si no es correcto realice esta otra programación
ENDIF Mediante ENDIF terminamos la instrucción IF. Para aclarar esta instrucción realizaremos un programa el cual al ser presionado un pulsador prenderá un led, para sacar un pulsador en el proteus digitamos BUTTON en la parte de elementos.
S. C. ´ PI PIC C
Instrucción IF. PBP
Recuerden que estos proyectos pueden probar en el simulador de un entrenador que viene adjunto en el CD. Como habrán notado al inicio del programa utilice una instrucción llamada CMCON=7, y si analizaron un poquito más se habrán dado cuenta que utilice esa instrucción porque manejé el puerto A. Lo que quiere decir que esta instrucción apaga los comparadores de voltaje y digitaliza el puerto, en otras palabras me permite ocupar el puerto A. Si en la compilación del programa se tiene el siguiente error: Se refiere a que no se ha seleccionado el microcontrolador PIC 16F628A. Por esta razón siempre antes de realizar cualquier programa debemos fijarnos que PIC vamos a utilizar.
Otra observación más. Como se puede observar en el programa se preguntó si el pulsador = 0 esto quiere decir que en la parte hardware debe estar conectado a 1L, ingresando directamente a través de una resistencia un voltaje alto al microcontrolador PIC, y cuando es pulsado cambiará de estado a 0L. El bit A.4 del puerto A es de colector abierto, lo que quiere decir que para utilizarlo debemos conectarlo por medio de una resistencia de 100 ohmios a Vcc.
S. C. ´ PI PIC C
En la figura se puede observar que los puertos RA7, RA6 y RA5 son para conectar el oscilador y el master clear respectivamente, lo que provoca que estos bits no se prendan si programamos una secuencia en el puerto A. Para solucionar este problema debemos indicar en la programación que vamos a ocupar el oscilador y el master clear interno que posee el microcontrolador PIC 16F628A, de la siguiente manera:
Ocupando el puerto A. PBP
S. C. ´ PI PIC C
PUERTOA. Schematic Design CONEXIÓN PARA LA SECUENCIA UTILIZANDO EL PUERTO A
Como se puede observar en la figura solamente el bit A.4 del puerto A se encuentra conectado a través de una resistencia de 100 ohmios a Vcc.
S. C. ´ PI PIC C
INSTRUCCIÓN SELECT – CASE La instrucción SELECT CASE, permite realizar preguntas, la compone una serie de IF..THENs, los cuales se denominan casos (CASE). Esta instrucción es usada para comparar una variable, con diferentes valores o rangos asignados por el usuario. Su sintaxis es: SELECT CASE var CASE expr1 {, expr...} statements CASE expr2 {, expr...} statements {CASE ELSE statements} END SELECT
A continuación realizaremos un ejemplo con esta instrucción, que consistirá en prender y apagar un led de acuerdo al valor que se le haya asignado en la variable.
Instrucción SELECT CASE. PBP
NOTA: Para probar esta instrucción, variar el valor de la variable X y probar en el software de simulación PROTEUS, específicamente en el archivo Entrenador del PIC 16F628A. Schematic Design.
S. C. ´ PI PIC C
PROYECTOS CON PULSADORES Y LEDS El primer proyecto que realizaremos es que se prenda un led con un pulsador y se apague el led con el mismo pulsador.
Proyecto 1_Pulsadores. PBP
S. C. ´ PI PIC C
En el primer proyecto de secuencias se generó una subrutina denominada AR, la cual permite realizar un antirebote, la misma que indica si el pulsador sigue presionado, evitando errores a la hora de ingresar un pulso. A continuación realizaremos un programa el que permitirá incrementar o disminuir la velocidad en un juego de luces de 2 leds.
S. C. ´ PI PIC C
Proyecto2_Luces_Velocidad_Variable. Proyecto2_Luces_Velocidad_Variable. PBP
Como tercer proyecto realizaremos un contador en binario, el que se va a observar en el puerto B con leds de visualización.
Contador binario con leds. PBP
Y como último proyecto realizaremos un desplazamiento de leds hacia la izquierda y hacia la derecha.
Desplazamientos. PBP
S. C. ´ PI PIC C
S. C. ´ PI PIC C
MANEJO DE TECLADOS HEXADECIMALES Una de las más grandes aplicaciones de pulsadores está en los teclados, los cuales permiten al usuario ingresar datos, procesarlos y tener respuestas, por lo que estos dispositivos electrónicos se encuentran en calculadoras, alarmas residenciales, comerciales, en los equipos de sonido, en las computadoras, etc. Es decir se encuentran en casi todo tipo de aparato electrónico.
TECLADO HEXADECIMAL COMUN EN LAS TIENDAS ELECTRONICAS
La estructura interna del teclado es la siguiente:
Como se puede apreciar el teclado consta de 16 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 4 columnas que dispone para realizar el control. Por esta razón debemos introducirnos en el manejo de una matriz 4 * 4.
S. C. ´ PI PIC C
Una matriz es una tabla rectangular de números, ordenados por filas y columnas. Para nuestro caso tenemos una matriz con lógica binaria, es decir los datos de la matriz pueden variar entre 0L y 1L. ⎛ 0 ⎜ ⎜0 Μ 4*4 ⎜ 0 ⎜ ⎜ ⎝ 0
0 0 0 0
0 0 0 0
0 ⎞ ⎟ 0⎟ 0⎟ ⎟ 0 ⎠⎟
A continuación se presenta una tabla con el nombre de cada uno de los pulsadores del teclado y sus coordenadas correspondientes a la matriz 4 * 4. Digito del Teclado 1 2 3 4 5 A B
Coordenadas de d e la Matriz Fila 1, columna 1 Fila 1, columna 2 Fila 1, columna 3 Fila 2, columna 1 Fila 2, columna 2 Fila 1, columna 4 Fila 2, columna 4
Digito del Teclado 6 7 8 9 0 C D
Coordenadas de Matriz Fila 2, columna 3 Fila 3, columna 1 Fila 3, columna 2 Fila 3, columna 3 Fila 4, columna 2 Fila 3, columna 4 Fila 4, columna 4
la
Como podemos apreciar, para cada uno de los dígitos del teclado se tiene su respectiva coordenada, la cual ocuparemos al momento de realizar la parte del control con los microcontroladores PIC. Como se ha dicho anteriormente el teclado es una serie de pulsadores conectados entre sí. Por lo que el teclado también se lo puede conectar a 0L o 1L, además necesita en su programación un antirebote para evitar que los datos sean erróneos. Una vez entendido el manejo interno de este dispositivo electrónico realizaremos la conexión con el programa Proteus, y la programación correspondiente para poder controlarlo. Pasaremos a realizar un programa que permita ingresar datos, y visualizarlos en un led, el cual se prenderá varias veces de acuerdo al dígito que se haya presionado en el teclado.
S. C. ´ PI PIC C
Manejo de Teclado Hexadecimal. Schematic Design
Para sacar un teclado en el proteus, digitamos en la parte de elementos KEYPAD y seleccionamos SMALLCALC. Si recordamos, en la parte de pulsadores la conexión a 1L se realizaba mediante una resistencia de 4,7K conectada a Vcc, y otra parte conectada a tierra para que cuando exista una pulsación ésta permita ingresar 0L. En el teclado se ha realizado el mismo procedimiento, con la única diferencia que las columnas van conectadas a la parte de Vcc por medio de una resistencia de 4,7K y las filas van conectadas directamente al microcontrolador para por medio de éstas poder censarlas y proceder a preguntar por cada dígito del teclado.
S. C. ´ PI PIC C
Manejo de Teclado Hexadecimal. PBP
S. C. ´ PI PIC C
Como se puede apreciar en el programa, el barrido que se realiza en el teclado es sumamente rápido, ya que no generamos ninguna pausa en el mismo. De esta manera logramos que el microcontrolador genere un dato por cada una de las teclas presionadas, en éste caso dará un valor a X de acuerdo al número de dígito pulsado, el cual se cargará en el lazo FOR y generará X veces el parpadeo del led. También se puede notar que el antirebote para el teclado se forma con las 4 columnas del mismo, obteniendo datos exactos.
DISPLAY s Una de las aplicaciones de los leds se encuentra en los displays, que son dispositivos electrónicos que permiten visualizar datos en forma de números, letras o palabras si se los coloca uno tras otro, permitiendo al usuario identificar lugares, contar equipos, etc. Existen displays en el mercado de varios tipos: displays 7*5, displays de 7 segmentos tipo ánodo o cátodo común, entre otros. En este caso empezaremos estudiando los displays de 7 segmentos. Un display de 7 segmentos quiere decir que consta de 7 leds internos los cuales se encuentran conectados de tal manera que permiten al usuario visualizar números. Cada uno de los segmentos tiene su respectivo nombre Así:
Cátodo común significa que el cátodo de cada uno de los leds que conforman el display se encuentra conectado entre sí, y cada uno de los segmentos se prenderá con niveles de voltaje altos es decir con 1L. Ánodo común significa que el ánodo de cada uno de los leds que conforman el display se encuentra conectado entre sí, y cada uno de los segmentos se prenderá con niveles de voltaje bajos es decir con 0L.
S. C. ´ PI PIC C
Para sacar un display en el Proteus, digitamos en la parte de elementos Display y seleccionamos el que dice display active. Realizaremos una práctica que permita visualizar los números del 0 al 9 en un display de 7 segmentos tipo ánodo común. Lo primero que se debe hacer es generar una tabla para identificar cual es la lógica binaria para encender cada uno de los segmentos que identificará cada número. Número Número g f e d c b a Decimal Binario Cero 0000 1 0 0 0 0 0 0 Uno 0001 1 1 1 1 0 0 1 D os 0010 0 1 0 0 1 0 0 Tres 0011 0 1 1 0 0 0 0 Cuatro 0100 0 0 1 1 0 0 1 Cinco 0101 0 0 1 0 0 1 0 Seis 0110 0 0 0 0 0 1 1 Siete 0111 1 1 1 1 0 0 0 Ocho 1000 0 0 0 0 0 0 0 Nueve 1001 0 0 1 1 0 0 0 Como se puede apreciar en la tabla los segmentos se encenderán con niveles de voltaje bajos es decir con 0L por que estamos usando un display tipo ánodo común. Por lo tanto el diagrama en el proteus sería así:
Display 7 segmentos. Schematic Design
S. C. ´ PI PIC C
Las resistencias que se ocupa son de 330 ohmios igual como se ocupaba en los leds, ya que éstas sirven para evitar que superen el voltaje permitido y sufran daños. A continuación presentamos la programación correspondiente para esta práctica.
DISPLAY 7 SEGMENTOS. PBP
Lo único que se ha realizado en el programa es copiar el código para cada uno de los números decimales que se realizó anteriormente. Otra manera de visualizar números en un display es mediante el circuito integrado 7447 si el display es ánodo común o el 7448 si el display es cátodo común. Lo que realizan estos integrados es convertir un código binario de entrada en el código de salida para cada uno de los números que se encuentran en la tabla para poder visualizarlos. Para sacar el 7447 en el proteus digitamos en la parte de elementos 74LS47 y procedemos a armar el siguiente circuito.
S. C. ´ PI PIC C
Display 74LS47. Schematic Design
Como se puede apreciar lo único que se ha incrementado es el integrado a la salida del PIC, en la programación se debe manejar solamente los 4 bits del puerto B, es decir del B.0 hasta el B.3.
Display 74LS47. PBP
Lo que se realizó en el programa es un contador binario desde 0 hasta 9, similar al realizado en los proyectos con pulsadores y leds.
S. C. ´ PI PIC C
PROYECTOS CON TECLADOS Y DISPLAYS El primer proyecto consistirá en manejar un teclado hexadecimal y visualizar los datos en un display, es decir, de acuerdo al dígito presionado se visualizará el número en un display de 7 segmentos.
Proyecto1_Teclado_Display. Proyecto1_Teclado_Display. Schematic Design
En el diagrama se puede apreciar que se está manejando todos los bits del puerto B para el teclado y los 4 primeros bits del puerto A para el display, por lo que la programación sería la siguiente:
S. C. ´ PI PIC C
Proyecto1_teclados_display.PBP
S. C. ´ PI PIC C
El segundo proyecto consiste en realizar un dado digital, al presionar un pulsador el display empezará a recorrer los números del dado que varían de 1 a 6 y cuando el usuario suelte el pulsador aparecerá el dígito en el display.
Dado Digital. Schematic Design
La programación para el Dado sería:
S. C. ´ PI PIC C
Dado digital. PBP
S. C. ´ PI PIC C
RELES DE 12V Los relés permiten al usuario conectar varios equipos de potencia, como son motores de corriente alterna, bombas de agua, focos de 110V, etc. Es decir podemos controlar circuitos de alta potencia, iniciando la automatización de diferentes procesos a nivel Industrial. El relé es un dispositivo electrónico que internamente posee una bobina la cual al energizarla adecuadamente producirá un campo magnético, haciendo que los contactos internos cambien de estado. Para cargar un relé a la hoja del proteus debemos introducir la palabra RELAY en la parte de elementos, teniendo en cuenta que se debe seleccionar el relé que dice active para poder realizar la simulación. La manera de conectar un relé a un microcontrolador es la siguiente:
Conexión de un Relé. Schematic Design
Como se puede apreciar el relé que estamos ocupando es un relé de 12V, por lo que necesariamente necesita una fuente de 12V para poder funcionar. A más de ello se está colocando un led, en el mismo puerto de salida para el relé, que permitirá visualizar si el Relé se encuentra activado o no, ya que en la realidad no vamos a visualizar como en la simulación que los contactos cambian de estado. Sino se escuchará un sonido alertando el cambio de estado de los mismos.
S. C. ´ PI PIC C
Continuando con la conexión del relé, se puede apreciar que se está colocando un diodo 1N4007, el cual permite proteger al microcontrolador. Además de ello se ocupa un transistor 2N3904 el cual funciona en corte y saturación, permitiendo energizar o no energizar la bobina del relé de 12V. Como se ocupará una fuente de 12V, es necesario tener en cuenta que el microcontrolador PIC se polariza con niveles de voltaje que oscilan entre 3,5V hasta 5,5V, por esta razón realizaremos la conexión para ocupar una sola fuente de 12V, y con una salida de 5V para colocarla en el microcontrolador que se esté ocupando.
Fuente de 12V y 5V. Schematic Design
En el circuito de la figura se está ocupando un regulador de voltaje (7805), el cual permite bajar el nivel de voltaje de entrada a 5V, si se necesitara bajar el nivel de voltaje a 9V se debería ocupar un regulador de voltaje (7809), y si en un caso se necesitara un nivel de voltaje de -12V se debería ocupar un (7912). Es decir la serie 78XX permite regular el voltaje de entrada a un voltaje positivo de acuerdo al nivel requerido por el usuario, y la serie 79XX permite regular el voltaje de entrada a un nivel de voltaje negativo de acuerdo a las necesidades del usuario. A continuación realizaremos un programa que permita accionar un relé por medio de un pulsador y poder visualizar el cambio de contactos que ofrece este dispositivo electrónico.
S. C. ´ PI PIC C
Conexión de un Relé_con_Pulsador. Schematic Design
En la figura podemos apreciar que hemos añadido un pulsador conectado a 1L en el BIT A.0 del puerto A.
Manejo_Relé. PBP
Como se puede notar en el programa lo único que se ha realizado es encender o apagar un BIT del puerto B, el que se lo ha definido con el nombre de relé. El pulsador de entrada, se lo puede cambiar por finales de carrera, sensores magnéticos, sensores de movimiento, etc. Con la finalidad de obtener un proceso automático.
S. C. ´ PI PIC C
DISEÑO Y CONSTRUCCION DE UN PLC DE 8 ENTRADAS Y 8 SALIDAS CONTROLADO POR UN MICROCONTROLADOR PIC 16F628A Un PLC (Controlador Lógico Programable) es un dispositivo electrónico que permite realizar varias funciones a nivel industrial. Actualmente existe una gran variedad de empresas que se encuentran fabricando este tipo de instrumentos, que se basa esencialmente en un microcontrolador y diferentes relés internos que permiten el cambio de contactos de acuerdo a una o varias señales de entrada. A nivel industrial es muy utilizado para automatizar diferentes procesos, teniendo ventajas como el suprimir espacio al no tener que trabajar con armarios llenos de RELAYS de alta potencia que ocupaban cuartos enteros para ese propósito. Como se ha dicho anteriormente el PLC consta de un microcontrolador interno, el cual debe ser necesariamente programado para su funcionamiento, por esta razón los PLC poseen diferentes lenguajes de programación, facilitando al usuario obtener el proceso que él requiera. La única desventaja que éste posee es su alto costo en el mercado. En nuestro caso realizaremos un PLC controlado con un microcontrolador PIC 16F628A, el cual tendrá internamente 8 relés para realizar las salidas y tendrá 8 entradas conectadas a 1L para realizar su programación. A continuación presentamos la lista de materiales necesarios para realizar un PLC de 8 entradas y 8 salidas. LISTA DE MATERIALES -
16 Resistencias de 4,7K A ¼ W. 16 Resistencias de 330 ohmios 8 leds de alto brillo color rojo para las entradas 8 leds de alto brillo color azul para las salidas 8 borneras de 3 entradas para las salidas del PLC 4 borneras de 3 entradas para las entradas del PLC 8 diodos 1N4007 8 transistores 2N3904 1 PIC 16F628A Placa de circuito impreso de S.C. ´ PIC PLC 23-02
S. C. ´ PI PIC C
DIAGRAMA DE CONEXIÓN
PLC 8 ENTRADAS Y 8 SALIDAS. Schematic Design
Como se puede apreciar en el diagrama, se ha utilizado leds de visualización tanto a la entrada como a la salida, para indicar que la entrada está activa y que el relé se ha accionado. A más de ello se está ocupando pulsadores como referencia de entrada, los cuales pueden cambiarse por sensores como ya se ha explicado anteriormente. Noten también que se ha suprimido los diodos 1N4007 que se deben conectar en la entrada de polarización de cada relé, esto se debe a que en simulación no existe el problema que se pueda quemar el microcontrolador, pero en la realidad es totalmente necesario utilizar este diodo de protección. Ahora realizaremos una aplicación con este dispositivo, que consistirá en lo siguiente: Por medio de una entrada del PLC se accionen todas las salidas, pase un tiempo de 10 segundos y empiece a accionar los relés uno por uno hacia abajo.
S. C. ´ PI PIC C
Aplicación PLC-01.PBP
Como se puede apreciar en la programación se a ocupado lo aprendido anteriormente, se ha realizando secuencias a las salidas, de acuerdo a lo que se pide en la aplicación. Noten que la programación va directamente al microcontrolador, ya que éste es la cabeza del PLC.
S. C. ´ PI PIC C
PROYECTOS CON TECLADOS Y RELES DE 12V El primer proyecto consiste en realizar una cerradura electrónica con una clave que se guardará en la memoria FLASH que posee el microcontrolador PIC 16F628A. La Memoria flash es una forma evolucionada de la memoria EEPROM que permite que múltiples posiciones de memoria sean escritas o borradas en una misma operación de programación mediante impulsos eléctricos, frente a las anteriores que sólo permite escribir o borrar una única celda cada vez. Por ello, flash permite funcionar a velocidades muy superiores cuando los sistemas emplean lectura y escritura en diferentes puntos de esta memoria al mismo tiempo. Las memorias flash son de tipo no volátil, esto es, la información que almacena no se pierde en cuanto se desconecta de la corriente, una característica muy valorada para la multitud de usos en los que se emplea este tipo de memoria. A continuación presentamos el diagrama esquemático para este proyecto.
Cerradura Digital MEMORIA FLASH. Schematic Design
S. C. ´ PI PIC C
La programación para este proyecto sería:
S. C. ´ PI PIC C
S. C. ´ PI PIC C
Cerradura Digital Memoria FLASH. PBP
DETALLE DEL FUNCIONAMIENTO Este sistema tiene asignada la clave [5, 2, 6, 9], la cual al ser digitada por el usuario, accionará al relé de 12V, el que permanecerá energizado durante 5 segundos, si en caso de que la clave ingresada sea incorrecta el sistema realizará un destello de un LED 10 veces alertando al usuario que la clave no es la correcta.
S. C. ´ PI PIC C
El segundo proyecto consiste en realizar una cerradura electrónica con una clave que se guardará en la memoria RAM que posee el microcontrolador PIC 16F628A y a su vez esta clave la cambiará el usuario de acuerdo a sus necesidades. Una memoria RAM (Random Access Memory), memoria de acceso aleatorio, es donde el microcontrolador guarda los datos que está utilizando en el momento presente; la cual permite grabarlos en variables definidas por el usuario, pero necesita que la energía suministrada al dispositivo no se la retire, para evitar que éstos se pierdan. Para simular esta práctica se puede utilizar el mismo diagrama esquemático ( Cerradura Digital MEMORIA FLASH. Schematic Design ) visto anteriormente. La programación para este proyecto sería:
S. C. ´ PI PIC C
S. C. ´ PI PIC C
S. C. ´ PI PIC C
Cerradura Digital Memoria RAM. PBP
La clave de fábrica para este proyecto es [0, 0, 0, 0] Como se puede apreciar en el programa lo que se ha realizado es definir variables (CLAVE1, CLAVE2, CLAVE3 y CLAVE4), las que almacenarán datos en la memoria RAM que posee cada una de ellas hasta un tamaño de 256. Y en el cambio de Clave los valores de fábrica se cambiarán por los asignados por el usuario, y se mantendrán en el sistema hasta que el usuario lo cambie o se desconecte de la fuente de entrada. DETALLE DEL FUNCIONAMIENTO Al ejecutar el programa, debemos asignar la Clave de fábrica para que la puerta (RELE) se abra, el sistema accionará el relé y esperará 5 segundos para retornar a sus valores iniciales, si el usuario desea cambiar la clave de fábrica lo que debe hacer es ejecutar los 3 primeros dígitos de la clave y digitar el signo + del teclado, el que prenderá un LED y se mantendrá prendido hasta que se ejecute la nueva clave, que se asignará en la memoria RAM del microcontrolador PIC, una vez digitados los cuatro nuevos números, observará que el LED se apago, indicando que su clave se grabó exitosamente. Y para accionar nuevamente el relé lo que deberá realizar es digitar la nueva clave que guardó. En caso de que la clave ingresada sea errónea, el sistema realizará el destello de un LED 10 veces, el que indicará que la clave ingresada no es la correcta. En caso de olvidarse el número de la clave debe resetear el sistema (Deshabilitando la energía y l habilitándola nuevamente), así el sistema accionará la clave de fábrica.
S. C. ´ PI PIC C
El tercer proyecto consiste en realizar una cerradura electrónica con una clave que se guardará en la memoria EEPROM que posee el microcontrolador PIC 16F628A y a su vez esta clave la cambiará el usuario de acuerdo a sus necesidades, con la finalidad de que si desconecta el suministro de energía al sistema esta permanezca con la misma clave utilizada. La memoria EEPROM (Electrical Erasable Programable Read Only Memory), memoria de lectura de programación y borrado eléctrico, es del tipo no volátil, que quiere decir que los datos que se guardarán en esta no se borrarán al momento de desconectar la energía del circuito. Para los microcontroladores de la serie A, el tiempo que permanecerá los datos en este tipo de memoria es de 100 años, en cambio en los microcontroladores que no poseen la A, el tiempo es de 40 años. ( Datos ( Datos obtenidos en la página Web de Microchip) Microchip)
INSTRUCCIÓN EEPROM – READ – WRITE Antes de continuar desarrollando este proyecto es importante conocer cada una de las instrucciones que permitirán manejar los datos de la memoria EEPROM que posee el microcontrolador PIC 16F628A.
EEPROM.- Esta instrucción permite grabar datos en la memoria que lleva el mismo nombre, los cuales se irán posicionando en cada una de las celdas del microcontrolador, cabe destacar que el PIC 16F628A, posee 128 celdas para grabar datos, las cuales manejan 1 BYTE cada una, que significa que podremos guardar un número hasta de 255 La sintaxis de manejo es la siguiente: EEPROM 0, [6,2,”S”,”C”,6,8] ; indica que los datos [6,2,”S”,”C”,6,8] se guardarán en las celdas 0, 1, 2, 3, 4, 5 de la memoria EEPROM, y en cuanto a las letras, se grabará el carácter ASCII correspondiente a cada una de ellas.
READ.- Esta instrucción permite leer los datos que se encuentran en la memoria EEPROM, y guardar el contenido de las celdas en una variable previamente definida por el usuario, su sintaxis es: READ 0, A; significa, lea lo que contiene la dirección cero de la memoria eeprom y guarde en la variable A. READ 1, B; significa, lea lo que contiene la dirección uno de la memoria eeprom y guarde en la variable B. READ 2, C ; significa, lea lo que contiene la dirección dos de la memoria eeprom y guarde en la variable C. READ 3, D; significa, lea lo que contiene la dirección tres de la memoria eeprom y guarde en la variable D. READ 4, E; significa, lea lo que contiene la dirección cuatro de la memoria eeprom y guarde en la variable E.
S. C. ´ PI PIC C
READ 5, F; significa, lea lo que contiene la dirección cinco de la memoria eeprom y guarde en la variable F.
WRITE.- Esta instrucción permite escribir o sobrescribir una dirección o celda de la memoria eeprom, su sintaxis es: WRITE 0, DATOS; DATOS; significa, guarde en la dirección o celda cero de la memoria EEPROM lo que contenga la variable DATOS. Conocido el funcionamiento de estas instrucciones realizaremos la programación para la cerradura electrónica con clave en la memoria EEPROM.
S. C. ´ PI PIC C
S. C. ´ PI PIC C
Cerradura Digital Memoria EEPROM. PBP
S. C. ´ PI PIC C
DETALLE DEL FUNCIONAMIENTO El funcionamiento de este tipo de cerradura es muy similar a la anterior, la única diferencia es que la nueva clave asignada por el usuario no se va a borrar si existe un corte de energía. Para probar este circuito se lo puede cargar en el mismo diagrama esquemático (Cerradura Digital MEMORIA FLASH. Schematic Design ) visto anteriormente. NOTA: En simulación el circuito va a funcionar exactamente igual al anterior de la memoria RAM, pero es muy importante que se tenga presente que al hacer la práctica real si se le retira la energía al sistema, la nueva clave asignada por el usuario es la que se mantendrá. En la parte de simulación como abra notado no se puede desconectar la energía al microcontrolador, porque este se encuentra internamente energizado, lo que nos dificulta realizar la prueba de este circuito. circuito. Y por último, es aconsejable anotar la nueva clave que se le asigne al sistema, ya que si nos la olvidamos no se va poder abrir la puerta pu erta (Energizar el relé), sino esta función la tendremos que realizar leyendo leyendo el microcontrolador PIC con el IC-PROG IC-PROG y observando los datos asignados en la Dirección de datos EEPROM.
Como se puede observar en la figura los datos que se encuentran en la memoria EEPROM es [0, 0, 0, 0].
S. C. ´ PI PIC C
S. C. ´ PI PIC C
MANEJO DE MODULOS LCD Un LCD (Liquid Crystal Display), pantalla de cristal líquido, es una de las herramientas mayormente utilizadas para desplegar algún tipo de información, así tenemos por ejemplo, en las cabinas telefónicas, para visualizar el costo de la llamada que se está realizando un display LCD. En el mercado existe gran variedad de módulos LCD, los que permiten realizar gráficos, los alfanuméricos 16*2, 16*4, 8*2, , con backlight, sin backlight, etc. En esta ocasión estudiaremos los módulos LCD alfanuméricos 16 * 2 y 8 * 2 con backlight azul. Ya que este presenta la ventaja de darle la elegancia al proyecto que se vaya a realizar, ya que la luz de fondo es azul y las letras son blancas.
LCD alfanumérico 16 * 2.- Este tipo de LCD, permite visualizar datos de hasta 16 caracteres por 2 líneas, cada carácter está compuesto por una matriz de leds 7*5, permitiendo formar cualquier letra que se le asigne desde el microcontrolador. El backlight es el color de fondo que va a tener el LCD, entre ellos se encuentran los de color azul, amarillo, blanco, naranja, rojo. Y de acuerdo a estos colores varían su precio en el mercado. No es indispensable que un LCD tenga luz de fondo o backlight, ya que si el usuario lo desea no lo conecta, ahorrando energía y consumo de corriente.
LCD alfanumérico 8 * 2.- Este tipo de LCD, permite visualizar datos de hasta 8 caracteres por 2 líneas, siendo esta la única diferencia en comparación con el LCD 16*2. Y de acuerdo a la aplicación que realice el usuario debe seleccionar el LCD a utilizar.
S. C. ´ PI PIC C
El LCD consta de 14 pines, para realizar el manejo o el control del módulo y 2 pines adicionales para controlar el backlight que posee, en LCDs que no poseen la función de backlight o que no poseen luz de fondo, solamente poseen 14 pines para utilizarlos en la parte de control. A continuación presentamos una tabla correspondiente a las funciones que realizan cada uno de los pines del LCD. # PIN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Símbolo Vss Vdd Vo RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 A K
DESCRIPCION Pin donde se conecta al GND del sistema Pin donde se conecta a Vdd o 5V del sistema Ajuste para el contraste del LCD varía de (0 – 5V) Registro de control/datos (Al microcontrolador) Read / Write, lectura y escritura del LCD (A GND del sistema) Enable, habilita o deshabilita el módulo LCD (Al microcontrolador) Bit para datos menos significativo
Bit para datos mas significativo Ánodo del Backlight, Vdd Cátodo del Backlight GND
Como se puede apreciar en la tabla, Los bits que permiten controlar el LCD son 8, lo cual representa una gran velocidad en visualización de datos. Pero una pequeña desventaja es que debemos conectar varios cables a nuestro sistema, y ocupar todo un puerto completo para transmisión de los mismos. Por esta razón los fabricantes de LCDs, permiten al usuario trabajar solamente con 4 Bits para transmisión de datos, lo que significa que se enviarán grupos de 4 bits, primero los más altos y luego los más bajos, la velocidad de transmisión sería menor pero no representaría problemas porque el LCD trabaja en el orden de microsegundos. Conocida la disposición de pines del módulo LCD, pasaremos a estudiar las instrucciones que permiten al usuario controlarlos y manejarlos de acuerdo a sus necesidades.
S. C. ´ PI PIC C
INSTRUCCIÓN DEFINE – LCDOUT Para continuar con el estudio de este dispositivo electrónico, debemos conocer las instrucciones DEFINE y LCDOUT, las cuales me permitirán controlar y manejar estos módulos.
DEFINE.- Algunos elementos como el oscilador, master clear, etc. Se encuentran predefinidos en el compilador Pic Basic Pro, ésta instrucción permite definir ciertos elementos o cambiarlos de definición a los que necesite el usuario. Para el caso de los módulos de LCDs, es necesario definir lo siguiente:
NOTA: Se aconseja utilizar siempre todas las definiciones en un solo puerto, es decir escoger el puerto B, o el puerto A en en el caso del PIC 16F628A. Para evitar que los datos sean incorrectos.
LCDOUT.- Esta instrucción es de escritura solamente, y su función es fijar al módulo LCD para empezar a escribir en cada uno de los caracteres que posee, y necesita de un comando para su utilización. A continuación se presenta una tabla con cada uno de los comandos que posee el compilador. COMANDO $FE, 1 $FE, 2
OPERACION Limpia el visor del LCD Vuelve al inicio del LCD
$FE, $0C
Apaga el cursor
$FE, $0E
Subrayado del cursor activo
$FE, $0F
Parpadeo del cursor activo
$FE, $10
Mover el cursor a una posición a la izquierda
$FE, $14
Mover el cursor una posición a la derecha
$FE, $80
Mueve el cursor al comienzo de la primera línea
$FE, $C0
Mueve el cursor al comienzo de la segunda línea
S. C. ´ PI PIC C
Conocida la teoría realizaremos una práctica que consiste en visualizar en un LCD el siguiente texto:
Practica con Microcontrolador Para sacar el LCD en el proteus, digitar en la parte de elementos la palabra LM016L. El diagrama esquemático de simulación para esta práctica es:
LCD. Schematic Design
Y la programación sería:
Módulo LCD. PBP
S. C. ´ PI PIC C
Como se puede apreciar en el programa, lo único que se ha realizado es definir los puertos del LCD a trabajar, y manejar la instrucción LCDOUT para displayar el texto pedido para la práctica. Noten también que no se ha realizado ninguna pausa en la programación sino que se envió directamente a finalizar el programa. Esto lo realizamos para darnos cuenta que el LCD queda cargado con la frase que se le asigno, debido a que el módulo posee una memoria interna que hace que mantenga visualizando lo que envió el usuario. Y al simular el proyecto aparecerá:
NOTA: En el simulador Proteus no existe el LCD 8*2, pero las conexiones son las mismas, la única diferencia es que acepta hasta 8 caracteres, por lo que se debe simular ocupando solo 8 caracteres. caracteres. Si se desea visualizar en un módulo LCD algún número decimal de una variable lo que se debe realizar es lo siguiente: Que significa: Limpie el visor del LCD, ubique el cursor al comienzo de la primera línea, y visualice el decimal de lo que contenga la variable datos.
S. C. ´ PI PIC C
En caso de que sea necesario sacar 2 o más decimales se procede:
Que significa: Limpie el visor del LCD, ubique el cursor al comienzo de la primera línea, y visualice con 2 decimales lo que contenga la variable datos. También se puede insertar texto y el decimal de algún número de la siguiente manera:
Que significa: Limpie el visor del LCD, ubique el cursor al comienzo de la primera línea, y visualice: X= y el decimal de lo que contenga la variable datos, es decir si datos tiene un valor de 245 entonces el usuario observará:
S. C. ´ PI PIC C
PROYECTOS CON LCDs El primer proyecto consiste en realizar un reloj digital utilizando un LCD. El diagrama de conexión para simulación sería:
Reloj Digital. Schematic Design
La programación para esta práctica sería:
S. C. ´ PI PIC C
Reloj Digital. PBP
Como se puede apreciar lo que se ha realizado es un contador, mediante la instrucción FOR – NEXT que ya se ha estudiado anteriormente. La pausa generada entre la línea que tiene los 2 puntos y la que no lo tiene permite visualizar un efecto de intermitencia. Se ha colocado una pausa de 790 milisegundos para tener la hora real de un reloj normal.
S. C. ´ PI PIC C
La segunda práctica consiste en realizar un desplazamiento de un texto en el LCD. Para este propósito es necesario tener en cuenta la Instrucción LOOKUP
INSTRUCCIÓN LOOKUP Puede ser usado para obtener valores de una tabla de constantes de 8 bits, permite obtener un carácter de letras o números de una cadena y guardarlos en una variable asignada por el usuario. Su sintaxis de manejo es: Toma el segundo carácter de la cadena HOLA y lo guarda en la variable DATOS
Si la manejamos con un lazo FOR, se podrá obtener un efecto de desplazamiento de texto. El diagrama esquemático para la simulación en el proteus será:
Desplazamientos LCD. Schematic Design
S. C. ´ PI PIC C
Y su programación será:
Desplazamientos de texto en LCD. PBP
S. C. ´ PI PIC C
INSTRUCCIÓN SOUND Esta instrucción permite generar sonido, trabaja a 8 bits, y el ruido generado va en un rango de 0 a 255. Su sintaxis de manejo es:
Que quiere decir saque por el puerto B el tono 110, manténgalo durante 10 milisegundos, y saque el tono 100 durante 20 milisegundos. A continuación se realizará esta práctica con simulación en el software proteus. Para realizar esta práctica se debe seleccionar en el proteus el elemento SOUNDER el que permitirá simular un parlante de 8 ohmios, y para escuchar se debe tener los parlantes del computador encendidos. El diagrama de conexión sería:
Instrucción SOUND. Schematic Design
Su programación será:
Instrucción SOUND. PBP
S. C. ´ PI PIC C
INSTRUCCIÓN FREQOUT Permite al usuario sacar frecuencias por un PIN, las cuales pueden estar entre 0 a 32767 Hz, y su sintaxis de manejo es:
A continuación se realizará un circuito que permita generar tonos de teléfono por un puerto del microcontrolador PIC, el cual podrá ser probado con el diagrama esquemático anterior. ( Instrucción SOUND. Schematic Design )
Instrucción FREQOUT. Schematic Design
S. C. ´ PI PIC C
INSTRUCCIÓN DTMFOUT Lo que se realizó en el programa anterior es generar los tonos de teléfono para un número celular, obteniendo cambios de frecuencia cada 50 milisegundos. Ahora con el estudio de la instrucción DTMFOUT podremos sacar los mismos tonos de celular de una manera más sencilla, es decir simplemente escribiendo el número de teléfono a llamar. La sintaxis de manejo para esta instrucción es:
Que significa saque por el BIT B.0 las frecuencias correspondientes a digitar los números de teléfono 0, 9, 7, 0, 8, 7, 9, 9, 9 Así de esa manera podremos realizar un teléfono con el microcontrolador PIC. Para realizar la prueba de esta instrucción generaremos una llamada telefónica al número 2 506 145, la cual se escuchará en un parlante de 8 ohmios. La simulación de esta práctica se puede realizar en el mismo circuito anterior. ( Instrucción SOUND. Schematic Design) La programación será:
Instrucción DTMFOUT. PBP
Para realizar una llamada telefónica con el microcontrolador se debe accionar un relé para indicarle a la entrada de la línea telefónica que se descolgó el auricular y proceder a enviar los tonos correspondientes al número que se desee llamar. El siguiente diagrama de conexión permite realizar esta función:
S. C. ´ PI PIC C
Instrucción SOUND. Schematic Design
Las resistencias de 680 ohmios a 1 watio, hacen relación a la carga Z, de un teléfono común. La programación para realizar la llamada telefónica será:
Llamada telefónica. PBP
En el programa se energiza el relé de 12V, para simular la acción del levantamiento del auricular en un teléfono convencional.
S. C. ´ PI PIC C
COMUNICACIÓN SERIAL CON EL MICROCONTROLADOR PIC “16F628A” Un cable de comunicación serial permite que dos dispositivos se comuniquen uno con otro enviando y recibiendo datos por una línea de transmisión y otra línea de recepción. Los datos enviados por esta línea, se enviarán en grupos de 8 bits, utilizando un formato de envío denominado código ASCII.
Tabla Ejemplos ASCII ASCII
Hex
Carácter
00 00 00 00
00
(nulo)
00 11 00 00
30
0
00 11 00 01
31
1
01 00 00 01
41
a
01 10 00 01
61
A
01 11 10 10
7B
{
ASCII son las siglas de American Standard Code for Information Interchange o Código Estándar Americano para el Intercambio de información. El formato ASCII es reconocido por todas las computadoras y se puede utilizar para comunicarse con el microcontrolador. Como se pudo ver de la tabla del ejemplo, un conjunto de bits representa cada carácter. Una forma más compacta de representar un conjunto de bits, es mediante la representación Hexadecimal. Esta representación toma 4 bits y los representa por un número o una letra que va del 0 al F. Se llama comunicación serial, porque los códigos se reciben uno detrás de otro o “en serie”. Existen 2 tipos de comunicación serial, la sincrónica y la asincrónica, la única diferencia entre los dos es: La comunicación sincrónica necesita una señal de reloj para compararlos con la línea de envío de datos y garantizar que los datos enviados sean los correctos.
S. C. ´ PI PIC C
En cambio la comunicación serial asincrónica envía datos sin necesidad de una señal de reloj, en su reemplazo ocupa un mecanismo como referencia tierra (norma RS232), o voltajes referenciales (norma RS422/485). En este libro se va a estudiar la comunicación serial asincrónica, por ser la más utilizada a nivel mundial por varias empresas de comunicación y también porque nos permitirá comunicarnos con el software LABVIEW y VISUAL BASIC 6.0. La manera de transmisión de datos en comunicación serial asincrónica se detalla en el siguiente diagrama:
+5 V
O I C I N I E D T I B
011000 0 1
A D A R A P E D T I B
0V
Número enviado
El gráfico corresponde al número 01100001 correspondiente al ASCII de “A” como se anotó en la tabla de ejemplo. Las computadoras poseen la norma RS232 para realizar comunicación serial, la cual utiliza lógica inversa para realizar la comunicación serial, que significa que 5V = 0L y 0V = 1L, la manera de transmisión de datos para la letra “A”, en esta norma será:
+5 V
O I C I N I E D T I B
011000 0 1
0V
Número enviado
A D A R A P E D T I B
S. C. ´ PI PIC C
VELOCIDADES DE TRANSMISIÓN DE DATOS Las velocidades para transmisión de datos van desde los 300 hasta los 9600 bits por segundo en el modo de comunicación serial, pero hay que tener presente si son velocidades de datos verdaderos, o datos invertidos. A continuación presentaremos una tabla con las velocidades para cada uno de éstos casos: Dato Verdadero T300 T1200 T2400 T9600
Dato Invertido N300 N1200 N2400 N9600
INSTRUCCIÓN SERIN – SEROUT Las instrucciones que permite al microcontrolador manejar la comunicación serial son SERIN y SEROUT, las cuales recepta y transmite el dato serial respectivamente. Para utilizar estas instrucciones es necesario incluir los modos de comunicación mediante la siguiente instrucción:
SERIN.- Como se ha dicho anteriormente esta instrucción permite recibir un dato enviado serialmente por otro dispositivo electrónico, y su sintaxis es:
Que significa: Recepte el dato serial por el BIT B.0 del puerto B a una velocidad de 2400 bits por segundo y guarde en la variable DATOS.
SEROUT.- Mediante esta instrucción se enviarán datos seriales por un pin del microcontrolador, su sintaxis es:
Que significa: Envíe el dato “A” en código ASCII a una velocidad de 2400 bits por segundo por el BIT B.0 del puerto B. Conocida la teoría de la comunicación serial pasaremos a realizar una aplicación.
S. C. ´ PI PIC C
COMUNICACION COMUNICACION SERIAL PIC – PIC Para realizar comunicación serial es importante tener en cuenta que deben existir dos dispositivos que se encuentren a la misma velocidad tanto para transmitir como para recibir datos seriales, para esta aplicación utilizaremos dos microcontroladores PIC 16F628A los cuales uno de ellos será el transmisor y otro el receptor. De ahí que el diagrama esquemático para realizar este tipo de simulación será:
Comunicación serial PIC - PIC. Schematic Design
Como se puede observar en la figura, se ha conectado para el PIC transmisor un pulsador, el cual al ser presionado enviará un dato serial al otro microcontrolador, el cual receptará ese dato y encenderá el LED del PIC receptor. La programación para el microcontrolador PIC que será el transmisor es:
Transmisor. PBP
S. C. ´ PI PIC C
La programación para el microcontrolador PIC que será el receptor es:
Receptor. PBP
COMUNICACIÓN SERIAL INFRARROJA Actualmente la electrónica se encuentra desarrollando equipos con tecnología inalámbrica (sin cables), que le permite al usuario tener mas espacio y mayor estética en sus oficinas, hogares, etc. Lo que hace indispensable comenzar a desarrollar programas que utilicen este tipo de tecnología. La comunicación serial infrarroja permite al usuario comunicarse entre 2 dispositivos electrónicos que se encuentren separados hasta una distancia de 10mts, pero con la desventaja que los LEDs infrarrojos de estos dispositivos que actúan como transmisor y receptor deben estar alineados. El transmisor no es más que un LED infrarrojo, el que enviará los datos seriales. Y el receptor es un LED infrarrojo en forma de un transistor que receptará los datos, posee un encapsulado oscuro para evitar que la luz solar o luz artificial distorsionen la información recibida. En cuanto al tratamiento de los datos, que se le debe dar a este tipo de comunicación serial, es igual al estudiado anteriormente, lo que quiere decir que en lugar del cable que se ocupó para comunicar el primer dispositivo con el otro, se utilizará un diodo LED infrarrojo transmisor y un diodo LED infrarrojo receptor los que enviarán y recibirán datos respectivamente. Y la programación será la misma. Por lo tanto la conexión para el módulo de transmisión de datos infrarrojos es:
S. C. ´ PI PIC C
Transmisor Infrarrojo. Schematic Design
Noten que se ha adicionado un pulsador, y que el LED infrarrojo se encuentra accionado a través de un transistor 2N3904. El diagrama para el receptor es:
Receptor Infrarrojo. Schematic Design
En el receptor se ha adicionado un LED que se prenderá cuando el pulsador del circuito transmisor sea digitado.
S. C. ´ PI PIC C
COMUNICACIÓN COMUNICACIÓN SERIAL PC – PIC La comunicación serial que ocupa el computador es del tipo RS232, utilizando lógica inversa para transmisión y recepción de datos. Se la puede hallar en el conector DB9 MACHO que posee cada CPU (Unidad central de proceso). Ciertas computadoras utilizan este conector para colocar periféricos de entrada como el mouse, PLCs, entre otros. Cada uno de los pines del puerto serial está dedicado a un propósito específico, que fue determinado cuando se elaboró el estándar RS232. A continuación se presenta una tabla con cada una de las funciones que realiza este puerto.
Propósito de cada uno de los pines del Conector DB9 #
Propósito
1
Tierra de chasis
2
Recibe los datos (RD)
3
Transmite los datos (TD)
4
Terminal de Datos esta Listo (DTR)
5
Tierra de señal
6
Conjunto de Datos esta Listo (DSR)
7
Solicita Permiso para Enviar Datos (RTS)
8
Pista Libre para Enviar Datos (CTS)
9
Timbre Telefónico (RI)
Como se puede apreciar en la tabla, los pines 2 y 3 son los más importantes para nosotros ya que permiten recibir y transmitir datos respectivamente.
S. C. ´ PI PIC C
Para introducirnos en el manejo de la comunicación serial con el computador utilizaremos el software VISUAL BASIC 6.0.
COMUNICACIÓN COMUNICACIÓN SERIAL CON VISUAL BASIC 6.0 Visual Basic es una herramienta que permite realizar una programación orientada a objetos, que significa que cada uno de los elementos que se escoja en la pantalla podrá ser programado.
Al iniciar Visual Basic aparece la pantalla Nuevo proyecto, en donde se seleccionará el tipo de proyecto que se va a realizar. Por defecto aparece la aplicación EXE estándar que es la que necesitamos para realizar el control computarizado de proyectos electrónicos con microcontroladores mediante comunicación serial.
S. C. ´ PI PIC C
Aparecerá una pantalla similar a la siguiente:
Esta pantalla contiene una sección que se llama Form1, la cual permite al usuario generar el Formulario, es decir permite visualizar como va a quedar nuestro proyecto con los elementos que necesite para su proyecto. En la izquierda de la pantalla se encuentra la barra de elementos, los cuales se les irá agregando de acuerdo a las necesidades del proyecto. En la derecha superior de la pantalla se encuentra el explorador de proyectos el que permitirá observar el nombre del proyecto, y el nombre del o los formularios que el usuario agregue al mismo de acuerdo a sus necesidades. En la derecha inferior de la pantalla se encuentra la ventana de propiedades, donde el usuario cambiará el nombre, el tamaño, los colores, entre otros, a cada uno de los objetos a programar.
S. C. ´ PI PIC C
Para realizar comunicación serial con este software es necesario agregar a la ventana de herramientas el modo de comunicaciones realizando un clic derecho en la parte inferior de la ventana de herramientas, seleccionamos componentes.
. Aparecerá la siguiente ventana:
S. C. ´ PI PIC C
En la que se va a buscar el componente Microsoft Comm control 6.0, y se lo seleccionará de la siguiente manera:
Al realizar este procedimiento se cargará en la ventana de herramientas un nuevo elemento parecido a un teléfono analógico.
Este elemento es el que permite al usuario comunicarse con el puerto serial que posee el computador.
S. C. ´ PI PIC C
Conocidos los elementos más importantes para el manejo de este software, realizaremos una práctica que consistirá en prender un LED desde el computador durante 5 segundos , apagar el LED y a la vez monitorearlo, utilizando Visual Basic 6.0 Para realizar esta práctica debemos adicionar al formulario los siguientes componentes: -
Un botón (CommandButton) Un reloj (Timer), que permitirá monitorear el LED si se encuentra encendido o apagado. Modo de comunicaciones Un círculo, simulando un LED
Y el formulario queda de la siguiente manera:
Para sacar el círculo se debe escoger la herramienta shape que permite dibujar rectángulos, cuadrados, óvalos, círculos, etc. Para nuestro caso ocuparemos un círculo, pero hay que tener en cuenta que por defecto visual Basic carga al shape con un rectángulo, lo que significa que en las propiedades del objeto shape se debe cambiar a círculo así:
S. C. ´ PI PIC C
Seleccionar la herramienta shape y arrastrar como se muestra en el gráfico de la parte superior, seleccionar el objeto y en la parte de propiedades proceder a cambiar a círculo.
Para seleccionar un color plomo al círculo hay que seleccionar en propiedades del elemento, FillColor y escoger el color a usar, y en FillStyle seleccionar SOLID, para que el color se fije en todo el círculo.
S. C. ´ PI PIC C
Quedando el círculo completamente editado que simulará un LED para el monitoreo.
Para visualizar cual es la velocidad de envío y recepción de datos para la comunicación serial hay que ingresar a las propiedades del componente para las comunicaciones. Para esto dar clic derecho con el mouse en el componente similar a un teléfono y seleccionar propiedades, donde aparecerá una pantalla como la siguiente:
S. C. ´ PI PIC C
Donde indica los valores para la comunicación serial. Que se encuentran establecidos en: 9600,n,8,1 que significa: Envío de 8 bits de datos seriales, sin paridad y con un bit de parada a una velocidad de 9600 bits por segundo. Esta ventana también permite seleccionar el puerto de comunicaciones que se va a utilizar para realizar la práctica. Ahora lo único que falta es realizar la programación para este proyecto que será la siguiente: Como se ha dicho anteriormente que visual Basic es una herramienta orientada a objetos, empezaremos a programar el objeto formulario. Dando doble clic en cualquier parte del formulario que no contenga ningún elemento. Aparecerá una ventana similar a:
En donde programaremos lo siguiente: Cuando se ejecute el programa, habilite el puerto de comunicaciones y a la vez permita correr el timer a intervalos de 1 milisegundo:
Luego se procederemos a programar el objeto CommandButton, el que permitirá encender el LED desde el computador, actuando como un pulsador. Para esto dar doble clic en el objeto Command1.
Doble clic para que aparezca la pantalla para la programación y donde se escribirá:
Esta parte del programa lo único que realiza es enviar el dato serial de “P” para que el microcontrolador recepte este dato y encienda el LED.
S. C. ´ PI PIC C
Ahora lo único que hace falta es programar el timer, para que realice el monitoreo del LED. Si se encuentra encendido, cambiará el color del círculo a rojo; caso contrario cambiará el color del círculo a plomo, monitoreando de esta manera el encendido y apagado de un LED. Para cumplir con este objetivo hay que dar doble clic en el componente timer que es similar a un reloj, en donde aparecerá la siguiente ventana:
Procederemos a ingresar el código necesario para el monitoreo:
Como se puede notar, en esta parte de la programación lo que se ha realizado es receptar un dato serial, y preguntar por ese dato si es E o A, y si es E pintar el color del círculo por rojo y si es A pintar el color del círculo de plomo. El programa completo quedaría así:
S. C. ´ PI PIC C
Ahora continuaremos con el microcontrolador. El diagrama esquemático para este proyecto será:
Comunicación serial con Visual Basic. Schematic Design
Como se puede apreciar el Pin transmisor del conector DB9 está conectado con el Pin que actuará como receptor en el microcontrolador, y viceversa.
S. C. ´ PI PIC C
La programación para el microcontrolador será:
Comunicación serial con Visual Basic. PBP
S. C. ´ PI PIC C
MANEJO DEL SOFTWARE LABVIEW 7.0 El LabView es un lenguaje de programación de alto nivel, de tipo gráfico, y enfocado al uso en instrumentación. Pero como lenguaje de programación, debido a que cuenta con todas las estructuras, puede ser usado para elaborar cualquier algoritmo que se desee, en cualquier aplicación, como en análisis, telemática, juegos, manejo de textos, etc. Cada programa realizado en LabView será llamado Instrumento Virtual (VI). El lenguaje mas apto para realizar proyectos computarizados se lo ha considerado al software LABVIEW por varias razones como: • Es muy simple de manejar, debido a que está basado en un nuevo sistema de programación gráfica, llamada lenguaje G. • Es un programa enfocado hacia la instrumentación virtual, por lo que cuenta con numerosas herramientas de presentación, en gráficas, botones, indicadores y controles, los cuales son muy esquemáticos y de gran elegancia. Estos serían complicados de realizar en bases como c++ o visual Basic donde el tiempo para lograr el mismo efecto sería muchas veces mayor. • Es un programa de mucho poder donde se cuentan con librerías especializadas para manejos de DAQ (Sistemas de adquisición de datos), Redes, Comunicaciones, Análisis Estadístico, Comunicación con Bases de Datos ( Útil para una automatización de una empresa a nivel total). • Con este las horas de desarrollo de una aplicación por ingeniero, se reducen a un nivel mínimo. • Como se programa creando subrutinas en módulos de bloques, se pueden usar otros bloques creados anteriormente como aplicaciones por otras personas. • Es un programa que permite pasar las aplicaciones entre diferentes plataformas como Macintosh y seguir funcionando.
S. C. ´ PI PIC C
Sus partes más importantes son:
EL PANEL FRONTAL: Donde se ven los datos, se manipulan y controlan.
Es en esta pantalla es donde se encontrarán los elementos que el usuario vaya a utilizar. Para visualizar la tabla de controles dar clic derecho en cualquier parte de la pantalla y aparecerá una ventana similar a:
S. C. ´ PI PIC C
Donde se encuentran botones, switch, leds controles numéricos, indicadores gráficos, etc.
EL DIAGRAMA DE BLOQUES: En este se aprecia la estructura del programa, su función y algoritmo, de una forma gráfica en lenguaje G, donde los datos fluyen a través de líneas.
Cada elemento que se seleccione en el panel frontal aparecerá encerrado en un cuadro dentro de la pantalla, en el diagrama de bloques, en donde se llevará a cabo la programación que el usuario la vaya a desarrollar mediante conexiones o uniones del mouse. Así:
S. C. ´ PI PIC C
EL PROGRAMA COMPILADO: Cuando se escribe en LabView, el algoritmo escrito de forma gráfica no es ejecutable por el computador, por tanto, LabView lo analiza, y elabora un código assembler, con base en el código fuente de tipo gráfico. Esta es una operación automática que ocurre al ejecutar el algoritmo, por tanto no es importante entender como sucede esto. Lo que si es algo para apreciar, es que en este proceso, se encuentran los errores de confección que son mostrados en una lista de errores, donde con solo darle doble clic al error, se aprecia en el diagrama de bloques, donde ocurre éste, para su corrección. LOS DATOS: Como el algoritmo maneja datos, requiere de un espacio en memoria para estos, lo que hace tomar en cuenta que el computador usado debe tener la memoria suficiente para manejarlos. Por ejemplo, cuando se usan grandes matrices en cálculos se puede requerir de mucho espacio. Tanto en el panel frontal como en el diagrama de bloques, existe una paleta de herramientas, que sirve tanto para editar el VI, o ejecutarlo según el modo de trabajo que se tenga.
PALETA DEL PANEL FRONTAL Ejecuta el programa repetitivamente. Permite detener el programa Pausa el programa
Ejecuta el programa una sola vez, por esta razón se debe tomar en cuenta que si no se realiza un lazo repetitivo, el usuario no podrá observar el funcionamiento del programa, debido a que el programa se ejecutará muy rápido. Entendido el funcionamiento de las partes más importantes del LABVIEW pasaremos a realizar una práctica sencilla, que permita prender y apagar un led mediante un interruptor.
S. C. ´ PI PIC C
Para la realización de esta práctica en la ventana de LabView seleccionar una hoja virtual en blanco, así:
En el panel frontal seleccionar un interruptor y un led
S. C. ´ PI PIC C
Digitar CRTL + E para pasar al diagrama de bloques donde se realizará la programación gráfica para este proyecto, que consistirá en unir mediante el mouse los dos objetos para prender y apagar el led mediante el interruptor.
Noten que al presionar CTRL + E aparece la pantalla del diagrama de bloques con los dos objetos seleccionados en el panel frontal. Ahora simplemente hay que ejecutar el programa para visualizar el proyecto.
NOTA: Tener en cuenta que si se desea observar el funcionamiento hay que correr el programa con el icono que ejecuta el programa repetitivamente, ya que no se le ha asignado ningún lazo repetitivo al proyecto. proyecto.
S. C. ´ PI PIC C
Si se desea que este proyecto se mantenga mediante un lazo repetitivo, se procede de la siguiente manera: En el diagrama de bloques dar clic derecho en cualquier parte de la pantalla y se tiene una nueva ventana con diferentes herramientas:
En esta ventana se tiene varios elementos, los cuales permiten realizar funciones de comparación, suma, resta, entrada de datos, salida de datos, etc. Para nuestro caso se seleccionará en Exec Ctrl para seleccionar un lazo While Loop que permite realizar repeticiones en el sistema.
Para que este lazo funcione en la práctica que estamos realizando se lo debe adicionar dentro de los elementos que se está utilizando de la siguiente manera:
S. C. ´ PI PIC C
Y como se puede apreciar al colocar este lazo se generó un nuevo elemento denominado STOP, el que permitirá parar el sistema en cualquier momento durante su ejecución. Para ejecutar el programa basta con dar un clic en el icono , el que ejecutará el programa repetidamente gracias al lazo While Loop que se ha adicionado al sistema.
S. C. ´ PI PIC C
COMUNICACIÓN SERIAL CON LABVIEW 7.0 LABVIEW permite utilizar tarjetas de adquisición de datos para comunicarnos con periféricos externos al computador, lo cual tiene grandiosas ventajas, pero los costos de estas tarjetas son muy elevados. LABVIEW permite comunicarse con los puertos de comunicación que posee el computador, tanto con el puerto paralelo, como con el puerto serial, siendo esta una de las grandes ventajas ya que el microcontrolador PIC puede aceptar un dato serial enviado desde el computador. A continuación realizaremos un ejemplo que permita recibir un dato serial y visualizarlo en un LED. Para este propósito se necesita un LED como indicador y un botón para iniciar la comunicación serial, adicionando un indicador tipo texto para visualizar lo que contiene la buffer al ingreso de los datos seriales. La pantalla en el panel frontal quedaría así:
Para comparar si el estado del pulsador es alto o bajo es necesario ingresar en el diagrama de bloques la función Case Structure, la cual permitirá obtener un dato verdadero si se digitó el pulsador y un dato falso si no se lo presionó.
S. C. ´ PI PIC C
Seguidamente se colocará esta opción en el diagrama de bloques.
Cuando el dato sea verdadero, el sistema permitirá el ingreso de datos seriales, caso contrario el sistema no aceptará el ingreso de los mismos.
S. C. ´ PI PIC C
Es necesario incluir el modo de comunicación serial que se encuentra en Instrumentos I/O.
Noten que en esta tabla, se encuentra la configuración del puerto serial, el que contiene: Modo para lectura, modo para escritura, modo para cerrar el puerto de comunicación serial, entre otros. Los que necesitamos para el presente proyecto son: Los modos de configuración, lectura y cerrar que posee el puerto serial.
S. C. ´ PI PIC C
A más de estos modos es necesario incrementar el Resource Name Constant
Quedando la pantalla completa así:
S. C. ´ PI PIC C
Para el caso de que el pulsador no se digite, la programación en diagrama de bloques quedará:
La función de este sistema ya se ha detallado anteriormente, y la programación para el microcontrolador consistirá en enviar el dato serial de “A” de la siguiente manera:
Comunicación serial con LABVIEW 7.0. PBP
S. C. ´ PI PIC C
S. C. ´ PI PIC C
MANEJO DE MODULOS DE RADI RADIO O – FREC FRECUE UENC NCIA IA La RADIO – FRECUENCIA, permite al usuario comunicarse entre dos equipos, a través de dispositivos de transmisión y recepción de datos, sin necesidad que los equipos se encuentren alineados, y en algunos casos, no necesitan que se encuentren en línea de vista, es decir puede estar un equipo en una habitación y otro equipo en otra habitación. Actualmente existen en el mercado una gran variedad de módulos de radio – frecuencia, los cuales permiten al usuario operar con dispositivos electrónicos sin necesidad de cables. En algunos casos estos módulos no son muy costosos, como los módulos de transmisión y recepción de datos de FUTURLEC.
Cada uno de estos módulos necesita circuitos integrados que permitan codificar la señal que están enviando y recibiendo, en el caso del transmisor de radio – frecuencia necesita el circuito integrado HT12D, y el receptor utiliza el HT12E. El fabricante de éste tipo de módulos, trabaja con modulaciones de tipo ASK, por su bajo costo y alto desempeño a la hora de transmitir y recibir datos. Poseen 2 tipos de frecuencia, la de 315 MHz y la de 433.92 MHz. El manejo de estos módulos de RF, es muy sencilla, ya que estos circuitos integrados tienen la ventaja de asignar un código para transmisión de datos, el cual debe ser el mismo en el receptor para que el sistema pueda funcionar. Los circuitos integrados HT12D y HT12E, operan hasta 4 bits, si se desea mayor capacidad para el trabajo se debe utilizar los circuitos HT648L en el caso del receptor y HT640 para el transmisor.
S. C. ´ PI PIC C
El diagrama de conexión para este tipo de dispositivos se presenta a continuación:
Noten que la entrada de datos se la realiza por el PIN 14 del HT12D, y el código se lo asigna del PIN 1 hasta el PIN A7, en este caso el código será: 00000000 para recibir datos.
En el HT12E, también se le ha asignado el mismo código para transmitir datos, haciendo que de esta manera el un dispositivo sea el receptor y el otro el transmisor. Para enviar datos con el microcontrolador lo que se tiene que hacer es en lugar de los switch que se encuentran del PIN D0 al PIN D3 colocar 4 bits del puerto B.
S. C. ´ PI PIC C
Actualmente existen microcontroladores que tienen la ventaja de convertirse en módulos de transmisión y recepción de radio – frecuencia como son: Los RFPICs. Para transmitir datos se tiene al rfPIC 12F675 y para recibir datos al rfRXD0420, pero el circuito que se debe montar es muy complicado, ya que las bobinas que necesita no se encuentran en el mercado. Por esta razón MICROCHIP ha desarrollado módulos de transmisión y recepción de radiofrecuencia para evitarnos la complejidad de armar estos circuitos.
El manejo de estos módulos de radio frecuencia no es muy complejo, ya que lo único que se debe realizar es medir la variación del potenciómetro que posee el transmisor y de acuerdo a ese dato proceder a realizar una función específica. A más de estos módulos es necesario tener un microcontrolador, el cual medirá la variación del potenciómetro. Por esta razón es necesario estudiar la instrucción POT, la cual permite medir la variación de un potenciómetro de 5K hasta 50K de acuerdo a la carga y descarga de un capacitor conectado en serie. El diagrama esquemático para esta función será:
Instrucción POT. Schematic Design
S. C. ´ PI PIC C
INSTRUCCIÓN POT La sintaxis de esta instrucción es:
Que significa: Tome el dato del potenciómetro a 8bits y guárdelo en la variable DATO. La programación para esta práctica será:
Medida de un Potenciómetro. PBP
De esta manera se podrá leer el módulo de radio frecuencia conectando el PIN RA3 del receptor en la entrada del PIN RB0 del microcontrolador PIC y de acuerdo a ese dato de 8bits, realizar cualquier tipo de aplicación, como el monitoreo de una plataforma para la alineación de vehículos.
S. C. ´ PI PIC C
PROGRAMANDO EL PIC “16F819” Y EL “16F877A” MICROCONTROLADOR MICROCONTROLADOR PIC 16F819 La programación para los microcontroladores en general es la misma, lo que difiere unos de otros es la capacidad que poseen, y ciertas ventajas más como la de tener conversores análogo – digital. El microcontrolador PIC 16F819 posee 5 conversores análogo – digital, permitiendo al usuario ocupar esta ventaja para realizar sistemas de medida de temperatura, sistemas automotrices como el balanceo de llantas, entre otros. También tiene la ventaja de utilizar oscilador interno, que puede variar desde 31.25 KHz hasta 8MHz
CONVERSOR ANÁLOGO DIGITAL Para utilizar la conversión análoga – digital que posee éste microcontrolador es necesario estudiar la instrucción ADCIN.
INSTRUCCIÓN ADCIN Los bits del puerto A, que permiten realizar la función de conversores análogo – digital son el A.0, A.1, A.2, A.3 y A.4, los que detectan el nivel de voltaje que ingresa por el PIN, y si trabajamos a 8 bits, el nivel de voltaje los dividirá en 256 segmentos que irán desde 0 a 255. Por lo tanto la instrucción ADCIN, permite entregar niveles de voltaje y guardarlos en una variable definida por el usuario. Su sintaxis de manejo es:
Que significa lea el canal cero, y guarde el resultado obtenido en la variable DATOS. Si recordamos. Para apagar los comparadores de voltaje del puerto A que posee el microcontrolador PIC 16F628A y convertirlos a digitales, se realizaba mediante la instrucción CMCON=7. Para este tipo de microcontrolador la instrucción que permite realizar esta función es: ADCON1=7.
S. C. ´ PI PIC C
A continuación se presenta un programa el cual permite leer los niveles de voltaje que ingresan por el pin que actúa como conversor análogo digital que posee el microcontrolador PIC 16F819. El potenciómetro debe ser de 5K hasta 50K. El diagrama de conexión será:
Conversor Análogo - Digital. Schematic Design
Y la programación para esta práctica será:
S. C. ´ PI PIC C
Conversor Análogo Digital PIC 16F819. PBP
En el software proteus no se encuentra este microcontrolador, por lo que el circuito se lo puede probar en el PIC 16F877A, que es similar, pero con la diferencia que tiene 40 pines para trabajar. Más adelante se indicará las ventajas de utilizar este microcontrolador. Uno de los proyectos mas utilizados con este tipo de microcontrolador PIC es un termómetro digital utilizando el sensor de temperatura LM 35, el cual presenta en su pin de salida una variación de 10 mV por cada grado centígrado que haya censado. La alimentación para este censor varía entre 4 a 30 voltios, para nuestro caso lo alimentaremos con 5 Vcc. El diagrama para utilizar este sensor será:
S. C. ´ PI PIC C
DIFERENCIAS ENTRE ENTRE EL PIC 16F628A Y EL PIC 16F819 En la siguiente tabla se presenta las principales diferencias entre los microcontroladores PIC 16F628A y el PIC 16F819 PIC
Memoria de Programa
Memoria de datos EEPROM
Memoria RAM
Comparadores
Conversores A/D
Puertos
16F628A 16F819
2048 2048
128 256
224 256
2 N/D
N/D 5
2 2
S. C. ´ PI PIC C
MICROCONTROLADOR MICROCONTROLADOR PIC 16F877A Este tipo de microcontroladores es uno de los más utilizados para realizar proyectos que requieren mayor capacidad para guardar datos, mayor número de puertos para trabajar como entrada o salida, etc. Este microcontrolador, necesita un oscilador externo, y una resistencia pull – up para conectarlo en el master clear, ya que no hay forma de deshabilitarlo. Una manera sencilla de darse cuenta que el microcontrolador posee las ventajas de tener oscilador interno y master clear programable es directamente en el IC- PROG.
En el gráfico se puede observar que en las opciones de configuración para el PIC 16F628A existe una que dice IntRC CLKOUT, que significa que posee oscilador interno. Y en los bits de configuración se puede deshabilitar la opción del MCRL, para no ocupar el Master clear. Ahora si seleccionamos en el IC-PROG el PIC 16F877A, nos daremos cuenta que estas opciones no se las encuentra, indicando al usuario que no posee master clear programable ni oscilador interno.
S. C. ´ PI PIC C
Por esta razón para que el PIC 16F877A funcione es necesaria la siguiente conexión:
S. C. ´ PI PIC C
En cuanto a la programación la única diferencia es que hay que seleccionar en el compilador PIC BASIC PRO el PIC 16F877A, y para digitalizar el puerto A, se tiene que incluir la instrucción ADCON1=7.
DIFERENCIAS ENTRE ENTRE EL PIC 16F628A, 16F819 Y 16F877A En la siguiente tabla se presenta las principales diferencias entre los microcontroladores PIC 16F628A y el PIC 16F819 PIC
Memoria de Programa
Memoria de datos EEPROM
Memoria RAM
Comparadores
Conversores A/D
Puertos
16F628A 16F819 16F877A
2048 2048 8192
128 256 256
224 256 368
2 N/D N/D
N/D 5 8
2 2 5
S. C. ´ PI PIC C
S. C. ´ PI PIC C
MANEJO DE MOTORES Los motores son una herramienta fundamental para realizar procesos industriales, como el transportar un producto de una estación a otra, se utiliza también en proyectos de robótica, mecatrónica, entre otros. En el presente libro detallaremos el funcionamiento de motores paso – paso y de servomotores. Los cuales ayudarán al lector a realizar proyectos como: posicionadores, robots, etc.
MOTORES PASO - PASO Los motores paso – paso son muy utilizados en mecanismos donde es muy importante la precisión del movimiento, como en robótica, en proyectos aeroespaciales, en maquinarias industriales como fresadoras, tornos, inclusive los encontramos en las computadoras en periféricos como las impresoras, CD-ROM, floppy disk, etc. La diferencia con los motores de corriente continua y corriente alterna se encuentra en que los motores paso – paso son más precisos, en su velocidad, movimiento y giros, ya que trabajan con señales digitales, es decir con 0L y 1L. Existen 2 tipos de motores paso – paso, los bipolares y los unipolares, la diferencia entre ellos es que los motores bipolares poseen 2 bobinas y son de 4 hilos, en cambio los motores unipolares poseen mayor número de bobinas facilitando el manejo al usuario, y poseen desde 5 hasta 8 hilos para su manejo. En el proteus podemos encontrar los 2 tipos de motores paso – paso, digitando en la parte de elementos la palabra motor.
S. C. ´ PI PIC C
Para manejar el motor paso – paso bipolar se requiere de un circuito integrado L298 que dispone de 2 puentes H (H – Bridge) o por lo menos debemos hacer un arreglo de 8 transistores, (4 NPN y 4 PNP). También se necesita el circuito integrado L297 En cuanto al voltaje de alimentación que se requiere para los 2 tipos de motores, varían entre 1.3V, 1,9V, 4,5V, 5V, 12V y 24V, y la corriente que consume un motor puede estar desde 300mA hasta 3ª, dependiendo del torque que éste se encuentre manejando.
MOTORES PASO – PASO UNIPOLARES El motor paso – paso UNIPOLAR, posee de 5 a 8 hilos como ya se ha dicho anteriormente, siendo ésta una de las grandes ventajas para trabajar con este tipo de motor, ya que el circuito de control es muy sencillo. El único inconveniente que se tiene es poder identificar las 4 bobinas principales (A, B, C, D). A continuación se presenta una gama de colores con la que se las puede identificar:
BOBINA COLOR A Amarillo B Naranja C Negro D Café Y los demás hilos serán los comunes, los cuales se los conecta a la entrada del voltaje de operación. En las especificaciones del motor viene dado el grado de precisión, entre algunos de ellos tenemos de 0.72º, 1.8º, 3.75º, 7.5º, 15º, 90º etc. Y de acuerdo al grado que gire el motor por impulso, se debe dar un número de pasos para que este gire una vuelta completa, por ejemplo: Para un motor que el grado de giro sea 90º, el número de pasos que debe dar para dar una vuelta completa será de 4, para un motor de 1,8º el número de pasos será 200. Para manejar este tipo de motor es necesario un circuito integrado buffer ULN2003, el cual es de muy bajo costo y posee toda la circuitería interna para manejar este tipo de motores. Por lo tanto el diagrama de conexión es:
S. C. ´ PI PIC C
Motor Unipolar. Schematic Design
En cuanto a la programación de este tipo de motores, se lo realiza mediante secuencias, es decir para que el motor gire un paso, se tiene que energizar las bobinas A, C, B y D. En el motor de paso que posee el proteus la disposición de pines es:
Donde A, B, C y D son las bobinas que posee el motor. Las secuencias mas utilizadas para la energización de las bobinas son: WAVE DRIVE FULL STEP
S. C. ´ PI PIC C
SECUENCIA WAVE DRIVE El programa para utilizar esta secuencia es:
Secuencia WAVE DRIVE. PBP
Como se puede observar en el programa lo único que se ha utilizado es la función trisb para generar secuencias.
S. C. ´ PI PIC C
SECUENCIA FULL STEP También se la conoce con el nombre de secuencia por paso completo. Es la más utilizada a nivel de la robótica, ya que permite mantener energizadas 2 bobinas y obtener un alto torque de paso y retención. El programa que permite realizar esta secuencia es:
Secuencia FULL STEP. PBP
S. C. ´ PI PIC C
MOTORES PASO – PASO BIPOLARES El diagrama de conexión para utilizar estos motores es:
Motor bipolar. Schematic Design
Los circuitos integrados L297, y L298 permiten generar las secuencias necesarias para energizar las bobinas del motor bipolar. Por lo tanto la programación para este tipo de motor es:
MOTOR bipolar. PBP
S. C. ´ PI PIC C
MANEJO DE SERVOMOTORES Los servos son un tipo especial de motor que se caracterizan por su capacidad para posicionarse de forma inmediata en cualquier posición dentro de su rango de operación.
Para ello, el servo espera un tren de pulsos que se corresponden con el movimiento a realizar. Están generalmente formados por un amplificador, un motor, la reducción de engranaje y la realimentación, todo en una misma caja de pequeñas dimensiones. El resultado es un servo de posición con un margen de operación de 180° aproximadamente. Como se puede apreciar en la figura, posee tres cables. El rojo es alimentación (+5V), el negro es tierra (GND) y el cable amarillo es el que permite realizar el control. El motor interno que posee, es de corriente directa, el cual posee una tarjeta controladora la cual le indica cuantas vueltas debe girar para acomodar el engranaje. La posición deseada se determina por medio de pulsos, siendo la duración del pulso la que indica el ángulo de giro por esta razón cada servomotor tiene sus márgenes de operación que corresponden al ancho de pulso ya sea máximo o mínimo. El intervalo de tiempo con los que opera el servomotor está dado entre 10 y 30 milisegundos, para que un servomotor se mantenga en la misma posición durante un cierto tiempo es necesario enviarle continuamente el pulso correspondiente al ángulo en el que se encuentra.
S. C. ´ PI PIC C
En este libro se estudiará el servomotor HITEC HS – 311, por ser más económico y tener un torque de salida de 3.0Kg.cm, suficiente para proyectos de robótica. A continuación se presenta la generación de pulsos que necesita un servomotor HITEC HS – 311, para sus tres posiciones:
Para realizar la programación para el control de los servomotores es importante estudiar la instrucción PWM, la cual permite generar pulsos por un PIN del microcontrolador.
S. C. ´ PI PIC C
INSTRUCCIÓN PWM PULSE WIDTH MODULATION, modulación por ancho de pulso, esta instrucción permite enviar un tren de pulsos modulado por ancho a un PIN. Cada ciclo de PWM está compuesto de 256 pasos. Su sintaxis es:
Que quiere decir, saque 3 pulsos al 50% en alto por el BIT B.0 del puerto B. Cada ciclo depende de la frecuencia del oscilador, para un cristal de 4 MHZ cada ciclo será de 5 milisegundos de largo, para un cristal de 20 MHz cada ciclo será aproximadamente de 1 milisegundo. A continuación se realizará una práctica que permita girar el motor a la izquierda y a la derecha, mediante dos pulsadores. El diagrama de conexión es:
Servomotor. Schematic Design
S. C. ´ PI PIC C
Y la programación para este proyecto es:
SERVOMOTOR. PBP
S. C. ´ PI PIC C
Con estos conocimientos podrá realizar un robot como el que se muestra a continuación.
En el CD encontrará una simulación con el movimiento que debe realizar las patas del ROBOT para que no existan atascos en el avance del mismo. Como se aprecia este robot se ha realizado con servomotores estudiados en el libro.