Professional Documents
Culture Documents
1 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
METODOLOGIA
Los cursos se desarrollarn a travs de clases tericas fundamentales acompaadas de prcticas como proyectos de aplicacin en los temas que lo requieran. Elaboracin de prototipos, maquetas, y montaje de circuitos en protoboard, sustentacin y verificacin de las prcticas de laboratorios.
OBJETIVO GENERAL
Desarrollar habilidades en la programacin de microcontroladores microchip de la gama alta mediante la aplicacin del programa LPM y el verstil software de simulacin avanzada Proteus Profesional.
OBJETIVOS ESPECIFICOS
Impartir informacin bsica relevante a la Electrnica Digital, unificar criterios fundamentales previos a la incursin en el mundo de los microcontroladores. Introducir al estudiante en las tcnicas de interfaz de perifricos avanzados, diseo optimizado de desarrollo tecnolgico con circuitos digitales microcontrolados segn las caractersticas del fabricante. Desarrollar habilidades en la programacin estructurada de la familia 18FXXXX de microchip, respetando la sintaxis y estructura de un cdigo para microcontroladores.
JUSTIFICACION
El modelo LPM de programacin estructurada y modular por macros de assembler y compilado condicional de subrutinas optimizadas y funcionales es un freeware creado en el ao 2005 y persigue proporcionar a programadores de microcontroladores PIC, expertos y/o novatos, herramientas prcticas que permitan el desarrollo rpido, fcil y optimizado de aplicaciones electrnicas. Con la implementacin de nmerosos mdulos y potentes macros se ofrece una amplia gama de posibilidades a nivel de hardware y software que sin duda corroborar al desarrollo de innumerables proyectos. El sistema de programacin modular est habilitado para microcontroladores de la familia microchip 16F y 18F. La principal ventaja de la programacin estructurada por macros es el control o gestor automatizado y
BIBLIOGRAFIA
MICROELECTRONIC CIRCUITS. Adel. S. Sedra & K. C. Smith. Editorial OXFORD UNINERSITY PREES Diseo Electrnico. Circuitos y sistemas. Savant, Roden y Carpenter. 2. Edition. Addison Wesley App Notes de Microchip (www.microchip.com) Tutorial PIC Basic profesional Tutorial MPLAB IDE versin 8.4 de Microchip Data sheet microcontroladores microchip
2 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Autor de LPM2
Ing. OSCAR JOS CABRALES BAENA
Ingeniero Electrnico nacido el 5 de Noviembre de 1978 en Momps Bolvar (Colombia). Curs el bachillerato en el colegio Nacional Pinillos de Momps y egresado de ingeniero electrnico de la Universidad de Pamplona en abril de 2001. 9 aos de experiencia laboral en docencia universitaria y desarrollo tecnolgico. Actualmente reside en valledupar cesar y es docente de tiempo completo en la Universidad Popular del Cesar (Valledupar-Colombia). Director, asesor y jurado de diversos trabajos de grado. Docente en Ingeniera Electrnica, Ingeniera de Sistemas, Ingeniera Elctrica, Ingeniera Mecatrnica, Tecnologa en Redes y Sistemas Teleinformticos. Ha sido profesor de tiempo completo ocasional en la Universidad de Pamplona, Universidad Popular del Cesar, Instituto Superior de Educacin Rural ISER y corporacin UPARSISTEM DE VALLEDUPAR en el rea de mantenimiento de computadoras, electrnica analgica, circuitos digitales, lenguajes de programacin visual y programacin de microcontroladores. Con amplia experiencia en Control y Automatizacin, programacin WEB, Diseo de Redes de computadoras, programacin orientada a objetos como Visual Basic .NET, programacin de Microcontroladores Microchip y Motorola, Diseo Web, Bases de datos ACCESS, My SQL, lenguaje assembler, arreglos lgicos programables FPGA, VHDL, Programacin de DSP (Digital Signal Processor), lenguajes de programacin visuales bajo plataforma Windows, PLCs NAIS, FESTO, control avanzado de perifricos del Computador (Puerto Paralelo, serial, USB, MODEM, Tarjeta de Red, Tarjeta de sonido), sistemas de posicionamiento global GPS, sistemas biomtricos, sistemas GPRS SMS GSM, sistemas IVR-DTMF, RFID, Protocolos TCPIP SNMP, comunicacin inalmbrica ZIGBEE, sistemas SCADA y diseo de circuitos impresos asistido por Computador EAGLE, PROTEUS. Con trabajo de grado propuesto para laurear con el proyecto LABORATORIO DE IDIOMAS INTELIGENTE CON TECNOLOGIA DE AVANZADA, artculos publicados en revista cientfica indexada, conferencista y ponente en diversos eventos cientficos a nivel internacional. Fundador de la empresa en rgimen comn DIGISOFT ELECTRONIC Ltda en el ao 2005 y la empresa en rgimen simplificado DIGITAL CONTROL B&J en el ao 2009. Diseador del sistema de control de acceso biomtrico BIOMETRIC SYSTEM 1.0 instalado en las principales clnicas y hospitales del cesar. Diseador del novedoso sistema de asignacin de turno computarizado FOTOTURNO SOFT 1.0, diseador del aplicativo SMART HOTEL SOFT de automatizacin de hoteles y moteles.
3 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
4 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PAG
11 11 11 13 14 14 15 16 17 18 19 21 22 29 31 32 35 37 38 40 41 43 44 45 46 47 48 49 50 56 60 60 61 63 64 64 65 65 66 66 66 67
5 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
6 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
138 138 139 141 141 141 142 142 144 145 147 148 149 151 152
7 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
8 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PAG
72 73 75 91 149 81 80 71 71 160 89 112 90 102 112 178 73 79 108 78 96 92 106 111 132 75 76 79 117 144 73 90 123 124 91 107 115 108 74 119 170 165
9 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
TABLA TIMER0 CONTANTES DE CONFIGURACIN DE TIEMPO TABLA TIMER1 CONTANTES DE CONFIGURACIN DE TIEMPO TABLA TIMER1 CONTANTES DE CONFIGURACIN DE TIEMPO DE TIMER1 SEGN NMERO DE CANALES, POWER AC Y MOTOR PASO PASO TABLA TIMER1 NMERO DE INVOLUCRADO CON TIMER1 INSTRUCCIONES CONSUMIDAS POR CADA MODULO
TABLA UART CONSTANTES DEL TECLADO DEL PC POR RECEPCIN UART RS232 TABLA UART SELECCIN DE VELOCIDAD EN BAUDIOS DEL MODULO UART RS232 POR PTC7 Y PTC6 TABLA UART0, UART1, UART2 SELECCIN DE VELOCIDAD EN BAUDIOS
10 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
11 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
5. 6. 7.
8.
9. 10.
12 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
13 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SOFTWARE O INFORMACION REQUERIDA PARA EL DESARROLLO DE UN PROYECTO EN LPM (contenida el CD DIGIBOOK Agosto/2007)
1. Mplab Ide V. 7.1 (Editor De Assembler De Libre Distribucin por la empresa MICROCHIP) 2. Proteus Professional 6.7 (Simulador de circuitos electrnicos) 3. WinPic800 Aplicativo Software cargador de cdigo hexadecimal en microcontrolador 4. Carpeta modelo LPM
14 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
15 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
16 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
R1 es la resistencia de pull up del reset maestro (master clear) . R2 es una resistencia de proteccin del microcontrolador contra picos negativos de voltaje al presionar el pulsador RESET. C1 y C2 son condensadores cermicos de 27pF/10V cuya funcin es estabilizar la oscilacin del cristal X1. Por norma general (efecto de seales electromagnticas de altas frecuencia) C1,C2 y X1 deben conectarse lo 1 ms cerca posible al microcontrolador. C3 y C4 son condensadores cermicos (By pass) de 100nF = 104pF = 0.1uF/10V cuya funcin es filtrar ruidos de relativa alta frecuencia (no el rizado de 60 120Hz) en la alimentacin del PIC, por lo tanto, es prioritario conectarlos lo ms cerca posible a los pines de alimentacin del PIC como se indica en la figura anterior. C5 es un condensador de 1000uF a 4700uF entre VCC y tierra para filtrar y eliminar el posible rizado de 60 120Hz de la fuente de alimentacin.
Nota: Cercirese que C1 y C2 sean de 27pF a 33pF, algunos condensadores nominados como 27K en su presentacin no son realmente de 27 pF, entonces procure utilizar condensadores nominados 27 solamente.
17 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Este circuito obtiene su alimentacin directamente de la red elctrica sin necesidad de transformador ni fuente conmutada. El conjunto formado por la resistencia de 220 ohms a 1Watt, el capacitor de 1uF, el zener de 1Watt a 5.1V, el condensador electroltico de 2200uFy los 4 diodos 1N4007 conforman la fuente de +5VDC a 100mA del PIC. La resistencia de 1M se encarga de descargar el capacitor de poliester de 1uF cuando se desconecta el equipo de la red para prevenir choques elctricos indeseados. Tenga precaucin de no trabajar descalzo o tener contacto con piso, paredes o cualquier sistema de tierra pues podra sufrir sacudidas elctricas.
18 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Se recomienda este tipo de alimentacin con adaptador de celular debido a la ausencia del tpico rizado de 60 o 120Hz de las fuentes convencionales con transformador. Este tipo de fuentes operan con otra tcnica (fuentes suicheadas o conmutadas). Pueden proporcionar hasta 300mA a 5VDC aproximadamente. Los PIC pueden trabajar con tensiones comprendidas entre 2 a 5.5VDC y consumen 2mA aproximadamente en modo normal de funcionamiento, no obstante, considerando que la fuente tambin debe alimentar a los perifricos del microcontrolador (led, LCD, teclado PS2, etc) se recomienda que mnimo proporcione 100mA. Si el adaptador genera ms de 5 VDC se recomienta poner en serie y en directa diodos 1N4001. Cada diodo captura 0.7VDC aproximadamente, es decir, si la tensin del adaptador es de 7VDC entonces conecte 3 diodos en serie.
19 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
20 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
En la carpeta SIMULACIN PROTEUS se debe incluir el plano del hardware para efectos de simulacin (*.dsn). En la carpeta PLANOS PROTEUS DEL CD DIGITAL BOOK se encuentran varios ejemplos de planos en proteus, copie el ejemplo que ms se acerque a su aplicacin y pguelo en la carpeta SIMULACION PROTEUS de la carpeta que acaba de crear en el directorio raz.
21 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
22 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CREACION DE UN PROYECTO LPM: CUARTO PASO CONFIGURACIN DEL EDITOR MPLAB IDE 7.1
Nota1: El cuarto paso slo se debe realizar la primera vez que abre el editor MPLAB IDE 7.1, esta configuracin permanece para todos los proyectos LPM de aqu en adelante. Nota2: Se recomienda trabajar LPM2 con la versin MPLAB IDE 7.1 prescindiendo de la disponibilidad de versiones ms recientes. Abra el editor MPLAB v 7.1 y cargue (men file open) el archivo FORMATO GRAL.ASM de la carpeta BRAZO ROBOTICO que acaba de crear.
Como recomendacin general Nunca elimine los renglones bsicos del formato general, ni comentarios (lneas en color verde que inician con punto y coma!. Es importante que PROGRAME SIEMPRE EN MAYUSCULA FIJA e identifique los renglones de programa dependiendo del color de letra: LETRA VERDE : Indica comentario, lneas de programacin para ayuda del programador y no para la memoria del PIC. LETRA AZUL : Indica instruccin de assembler o directiva para el editor. En total hay 75 instrucciones de assembler y decenas de directivas.
23 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SELECCIN DE MICROCONTROLADOR Note en la barra de estado que el PIC seleccionado por defecto es el PIC18F452, cambie de microcontrolador si fuese necesario, esta opcin se encuentra en el men configure - selec device.
CONFIGURACIN DEL EDITOR MPLAB IDE A continuacin configure el editor de la siguiente forma:
24 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
25 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
26 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Por defecto la ventana Settings Hot Keys (teclas de acceso rpido) tiene asignado ALT + F10 para compilar (generar el archivo .Hex o hexadecimal con cdigo de mquina para el microcontrolador), se recomienda suprimir (con la tecla Delete o Supr) el texto (ALT + F10) y cambiarlo por la tecla de funciones F5 (no digite la F y el 5 por separado si no la tecla funcin F5). El sistema le pedir guardar un archivo con la configuracin de los cambios, gurdelo en C:/mis documentos, no en la propia carpeta que acaba de crear en el directorio raz.
27 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
ACTIVACION Y DESACTIVACION DEL SIMULADOR MPLAB - SIM La activacin del simulador MPLAB SIM permite ejecutar paso a paso (step by step con F7) las instrucciones y macros del programa, la forma de activarlo es como se muestra a continuacin. No se recomienda tenerlo activado si no piensa simular un programa.
28 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
29 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
30 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Para saltar de un bloque a otro digite CONTROL F y digite el nombre del bloque seguido de la tecla enter:
Para buscar una lnea del programa digite CONTROL G y digite el nmero de la llnea seguido de la tecla enter:
Para pasar uno ms renglones a mayscula (Uppercase), minscula (Lowercase), convertir en comentario (Comment Block), deshacer comentario (Uncomment Block), Tabular a la derecha o izquierda (Indent Block, OutDent Block) debe seleccionarlo y dar clic derecho sobre el bloque seleccionado, aparecer el siguiente men contextual.
31 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
BLOQUE 0
BLOQUE 1
BLOQUE 2
BLOQUE 3
BLOQUE 4
BLOQUE 5
BLOQUE 6
Nota: El bloque 2 y 3 est invertido con respecto al formato general de gama media 16F.
32 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PROGRAMACION EN BLOQUE 0
INFORMACION GENERAL Y CONFIGURACINES ESPECIALES DEL MICROCONTROLADOR El bloque cero de LPM comprende desde el primer rengln del formato general hasta el inicio del bloque 1, est compuesto por ms de 5000 lneas de comentario (en color verde e inician con punto y coma). En la lnea 28 a 102 el usuario debe proporcionar una serie de datos tecnicos y generales del proyecto. Es de vital importancia leer y esforzarse por comprender todos los comentarios e informacin solicitada en el bloque 0 del formato general de LPM.
La seleccin del cristal de oscilacin constituye la primera configuracin en el editor MPLAB sobre el formato general, en la lnea 5202 (esta lnea puede ser diferente). Se puede seleccionar entre 4, 8, 10, 16, 20 40 MHz, en la imagen se ilustra la seleccin de un cristal de 20MHz. Se recomienda trabajar con una frecuencia de oscilacin igual a 20MHZ, el ciclo de mquina (tiempo que emplea el PIC por cada instruccin o rengln del programa) equivale a 200nSeg (CM=4/20MHz). La familia de la gama alta de microcontroladores microchip (18F) tiene la opcin de activar un circuito PLL (phase locked loop) el cual multiplica por 4 la frecuencia de oscilacin natural del cristal fsico que se conecte en el circuito, es decir, para que el PIC trabaje a 40MHz slo es necesario conectar un cristal de 10MHz y activar el mdulo PLL por
33 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
34 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Una vez realizadas las configuracines especiales del microcontrolador se procede con la programacin en cada bloque del formato general. Se recomienda configurar (a menos que el usuario requiera una opcin diferente) BROWN OUT RESET EN DISABLE (opcin 1), WATCH DOG TIMER EN DISABLE (opcion 1) , PROTEC_ALL_MEMORY EN OFF (opcin 1).
35 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Como pudo observar es muy sencillo, la funcin que se requiera se le escribe al frente un SI. Es importante que el usuario no active mdulos que no requiera en su aplicacin pues incrementar el consumo de memoria de programa y recuerde que slo dispone 8192 renglones o instrucciones (PIC 18Fx42), 16384 renglones (PIC 18FX52) . Algo digno de aclarar es que existen mdulos cuyas subrutinas se pueden activar en baja o alta prioridad (LP, HP), esto quiere decir que el usuario puede especificar si alguna interrupcin requiere mayor prioridad (mayor importancia desde el punto de vista funcional). Por ejemplo, observe en la ilustracin anterior que la interrupcin por el pin PTB7 est disponible en 4 modos diferentes:
36 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
FUENTE DE INTERRUPCIN EXTERNA: Son pines del microcontrolador configurados como entrada que al cumplirse una determinada condicin (flanco de subida/bajada) generan un salto de interrupcin. (PTB0, PTB1, PTB2, PTB4, PTB5, PTB6, PTB7, RA4_T0CKI) FUENTE DE INTERRUPCIN INTERNA: Son recursos internos del microcontrolador mediante los cuales se genera un salto de interrupcin. Por ejemplo: CONVERSOR A/D, TIMER0, TIMER1, TIMER2, USB, PWM, EEPROM. Nota1: No se permite la activacin de dos prioridades simultneamente para una misma fuente de interrupcin. Nota2: La interrupcin por los pines PTB0, PTB1 y PTB2 NO ADMITE la activacin de dos flancos simultneamente. Por ejemplo, no sera correcta la siguiente configuracin en el bloque 1:
Nota3: La interrupcin por los pines PTB4, PTB5, PTB6 Y PTB7 simultneamente.
Nota4: El puerto PTB0 slo tiene disponible interrupcin en alta prioridad con flanco de bajada o subida.
37 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
38 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
39 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DISTRIBUCION DE MEMORIA DE DATOS (DIR 0 TO 1536) DE 18F452 EN LPM ;BANCO0 : 0 A 99 :VARIABLES 8BIT PARA USUARIO : 100 BYTE ;BANCO0 : 100 A 256 :VARIABLES EXCLUSIVAS LPM : 156 BYTE ;BANCO1 : 256 A 511 :VARIABLES 16BIT PARA USUARIO : 128 WORD : 256 BYTE : 256 BYTE : 256 BYTE : 256 BYTE : 128 BYTE
;BANCO2 : 512 TO 767 :VARIABLES EXCLUSIVAS LPM ;BANCO3 : 768 TO 1023 :VARIABLES 8BIT PARA USUARIO ;BANCO4 : 1024 TO 1279 :VARIABLES 8BIT PARA USUARIO ;BANCO5 : 1280 TO 1535 :VARIABLES 8BIT PARA USUARIO
;EN TOTAL SE RESERVAN 1124 BYTE PARA EL USUARIO Y 412 BYTES PARA LPM EN PIC 18F4X2 ;EN TOTAL SE RESERVAN 356 BYTE PARA EL USUARIO Y 412 BYTES PARA LPM EN PIC 18F2X2 VARIABLES TIPO BYTE = 8 BITS = 0 a 255 : VAR1, VAR5, VAR6 VARIABLES TIPO WORD = 16 BITS = 0 a 65535 : VAR2, VAR7 VARIABLES TIPO DOUBLEWORD = 32 BITS = 0 a 4.294967.296 : VAR3, VAR4
40 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Las variables declaradas de la direccin 0 a la direccin 99 (100 bytes) son tipo bytes u 8 bits, es decir, se puede guardar mximo un dato de 0 a 255, VAR1, DIGITO1 y REG0 son ejemplos de variables declaradas tipo byte. Las direcciones 768 a 1535 (768 Bytes) tambin estn reservadas para variables tipo byte, por ejemplo: VAR5, VAR6, REG3. Las variables declaradas de la direccin 256 a 511 son exclusivamente tipo Word o 16 bit, es decir, se puede guardar un dato de 0 a 65535, VAR3, VAR4, REG1 son ejemplos de variables tipo Word. Note que para considerar una variable como tipo Word es imprescindible declararla entre las direcciones 256 a 511 y adems debe escribirse :2 despus del nombre de la variable, por ejemplo VAR3:2. El 2 indica el nmero de bytes que componen la variable, en efecto, una variable tipo byte tambin podra declararse como VAR1:1. En ciertas aplicaciones en las cuales se requiera direccionamiento indirecto (tcnica de programacin mediante la cual accedemos al contenido de una variable mediante su nmero de direccin en memoria y no a travs de un nombre con el mtodo tradicional del CBLOCK) es de utilidad declarar una o ms variables en una direccin especfica de la RAM. Por ejemplo: si el usuario necesita declarar 200 variables tipo byte en las direcciones 1000 a 1199 podra pegar el siguiente cdigo al inicio del bloque 3 de LPM:
41 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: el nombre de la constante debe escribirse en la primera columna como si fuera una etiqueta. BANDERA (FLAG): Una bandera podra verse como una variable booleana (slo toma dos valores: 0,1). En LPM y ASSEMBLER una bandera del programa de usuario se declara con la MACRO BANDERA y se asigna a un BIT de una variable definida por el usuario. El nombre de la bandera es escogido por el diseador y usualmente su significado est relacionado con la funcin que cumplir en el programa. Por ejemplo, si se est diseando una alarma y se desea dejar constancia (para posteriores verificaciones) que la alarma est activada, podra definirse un Flag de la siguiente forma en el bloque 4 de LPM: BANDERA FLAG_ALARMA_ON FLAG1,0
Donde FLAG_ALARMA_ON es el nombre arbitrario que el programador define para el Flag, FLAG1,0 alude al bit 0 (LSB) de una variable de 8 bit llamada FLAG1 y declarada en el bloque 3 de LPM. La variable FLAG1 debe ser necesariamente tipo byte. Con la directiva MACRO se define una MACRO llamada PULSO_LUZ, es decir, del bloque 6 en adelante al escribir en la segunda columna (columna de instrucciones y macros) la palabra PULSO_LUZ, automticamente se insertarn los tres renglones que componen la macro. Ntese que una macro es diferente a una subrutina la cual se invoca con CALL y se regresa con RETURN.
42 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
43 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
44 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Observe que adems de garantizar un estado en en puerto C (PTC) inicialmente, tambin se resetea la variable VAR1, se enva el mensaje BIENVENIDOS A LPM al LCD y se reproduce el mensaje 1 en modo interrumpido (MI) del ISD 25XXX; todo esto slo suceder una vez, es decir, al energizar o resetear el microcontrolador. En el recuadro azul de la ilustracin anterior se observan 5 renglones (lnea 5757 a 5762) en los cuales se configuran las condiciones iniciales de 5 funciones muy importantes del PIC, a saber: WATCH DOG (control del perro guardian) PULL UP (control de la resistencia pull up de 3kohm aproximadamente a +vcc en los pines de entrada del puerto B) PRIORITY INTERRUPTION (activacion/desactivacion de la prioridad de interrupciones) INT HIGH PRIORITY (control de interrupciones de alta prioridad high priority) INT LOW PRIORITY (control de interrupciones de baja prioridad low priority)
45 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
46 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Note el uso de la macro OUT_IF para terminar un ciclo de comparacin con la macro IF y el uso de la macro OUT_INT la cual es imprescindible para salir de cada fuente de interrupcin. El gestor automtico de interrupciones de LPM controla los bit de habilitacin y banderas de cada interrupcin.
47 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
En la figura anterior se ilustra la creacin de 2 subrutinas (SUBRUTINA1 Y SUBRUTINA2), note que deben terminar con la instruccin RETURN de assembler. TABLA1 y TABLA2 son dos tablas en memoria de programa realizadas con la directiva DATA. La directiva DATA es ms ptima que la directiva DT (Data Table).
48 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
El bloque 10 es el ltimo bloque del modelo de programacin modular, est seguido de la directiva END que indica el fin total del programa.
49 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
50 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
INSTALACION DEL APLICATIVO SOFTWARE LIBRE CARGADOR DE CODIGO EN MICROCONTROLADORES WINPIC 800
51 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
52 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
53 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
54 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
55 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
56 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
57 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
58 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
15. Las instrucciones de assembler y directivas del editor son de color azul 16. Mediante "CONTROL F" del teclado se busca los bloques del 0 al 10: por ejemplo,para saltar al bloque 0 se escribe BK0 y enter. Para buscar las macros de un modulo se escribe la letra m seguida del nombre del modulo, por ejemplo, para buscar un mdulo llamado Teclado se escribe mteclado y enter. Para buscar las instrucciones de assembler se escribe "iass" y enter. 17. Mediante "CONTROL G" del teclado se busca una lnea. Por ejemplo,para saltar a la linea 2000 escriba este nmero en la caja de texto emergente y presione enter. 18. Para ensamblar el codigo fuente, es decir, crear el archivo .hex que se cargara en el microcontrolador se presiona (F5), si no se presentan errores entonces el compilador MPASM de MPLAB IDE mostrar el mensaje: "BUILD SUCCEEDED", (lase biold saccirid) de lo contrario mostrar el mensaje "FAILLED BUILD" (lase fild biold) y el usuario debe corregir los errores mediante edicion del FORMATO GENERAL.ASM 19. Si activa el modulo UART,RECEPTOR IR,TMR0/1,PWM,POWER AC, MOTOR PASO PASO O TEC_PC se debe deshabilitar el modo SLEEP en bloque 7. 20. No usar la instruccion GOTO BRA con la directiva ($ + contante) para saltar a un rengln anterior o posterior despus de una macro, pues el usuario no tiene conocimiento de cuntas instrucciones de assembler componen la macro. 21. Al ensamblar se genera una pantalla de salida (output) en la cual se generan mensajes, warning y/o errores. Solo los errores impiden la generacin del archivo .HEX (codigo de mquina hexadecimal que se cargara en la memoria de programa del microcontrolador y se denomina firmware). Los mensajes son informes generales, los warning son advertencias que si bien no son errores, si deben corregirse pues el ensamblador podra interpretar los argumentos de un comando o macro de una forma inesperada para el usuario. 22. La configuracin automatica que realizan los modulos de LPM sobre los registros especiales SFR del pic tiene prioridad sobre la configuracin manual que realice el usuario en el bloque 5. 23. Tener precaucin al invocar un mismo mdulo o perifrico en baja y alta prioridad simultneamente, por ejemplo, si el puntero de programa est en la subrutina de escritura en lcd en main programa o baja prioridad y se desencadena un llamado de interrupcion de alta prioridad entonces el usuario no debera escribir en la lcd desde la alta prioridad pues interrumpira el proceso de escritura iniciado en baja prioridad y como consecuencia se presenta un conflicto o perdida de datos en el proceso. Lo mismo es aplicable al teclado PS2, BUS I2C, RECEPTOR INFRAROJO,SIPO 4015B, PISO 4021B, UART, CAD, ISD 25XXX. 24. Para saber el nmero de memoria de programa consumido en un programa primero debe compilar exitosamente para obtener el archivo ".hex" con la tecla F5. A continuacin dirjase a: menu view -> program memory, desplcese por la primera columna (line) de la ventana emergente y en la columna disassembly observe cuando inicia la serie repetitiva de instrucciones "nop" lo cual implica el inicio de las direcciones desocupadas en la memoria de programa del pic.
59 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
60 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
61 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
62 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
17. Todo circuito requiere un filtro para la fuente de alta capacitancia (mayor de 1000 uf), la ausencia de dicho filtro da lugar a una infraccion. 18. Integrados en diferente disposicin u orientacin con respecto a un observador. infracccin. cada caso genera una
19. Fuente sin regulador de voltaje a 5 voltios da lugar a una infraccion. 20. Fuente sin tabulacin de voltaje y corriente de cada una de sus terminales. Cada caso genera una infracccin. 21. El no usar las lneas verticales del protoboard para los terminales de alimentacin +vcc, gnd genera una infraccin 22. Cada puente o conexin en el protoboard con conductores cruzados formando ngulos diferentes a 0 90 grados, demasiado largo o demasiado corto da lugar a una infraccin.
63 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
25. El no llevar un hardware cargador de codigo en microcontroladores (jdm por ejemplo) a proyecto da lugar a una infraccin. 26. La ausencia de fuente de alimentacin, extensin elctrica multitoma, elemento o propio del proyecto en el momento de la sustentacin da lugar a una infraccin.
dispositivo de hardware
27. La no implementacin cabal u operacin incorrecta de alguna funcin del proyecto estipulada por el docente, da lugar a una sancin equivalente a 5 puntos entre el nmero total de funciones asignadas inicialmente por el docente . Por ejemplo si el docente asigno 10 funciones para un proyecto entonces la sancin es de 5/10 = 0.5 puntos por cada funcion no implementada o con mal funcionamiento. 28. Enchufes, tomacorrientes o conductores en mal estado dan lugar a una infraccin 29. Dispositivos o elemetos electronicos con terminales exageradamente largos pueden causar efecto antena (mayor susceptibilidad al ruido electromagntico),por ejemplo una resistencia o condensador con terminales extra largos cercanos a una etapa de alta frecuencia como el xristal oscilador del microcontrolador. Cada caso genera una infracccin. 30. Cada uno de los conductores, alambres o puentes de protoboard por encima o debajo de circuitos integrados genera una infraccin. 31. Fuente sin switch general de encendido o con terminales al aire con la posibilidad de corto circuito genera una infraccin. 32. Cada error ortogrfico en el texto digitado en el formato general por parte de los diseadores genera una sancion de 0.2 dcimas, es decir, cada 5 errores ortogrficos da lugar a una infraccin. 33. Grupo de trabajo sin razn social, nombre de empresa, estructura jerrquica (presidente, gerente financiero, gerente tcnico) da lugar a una infraccion. 34. Da lugar a infraccin todo nombre de subrutina, etiqueta, bandera o contador sin la estructura correcta. Por ejemplo, toda subrutina debe empezar por "sub", las etiquetas por "LBL", los contadores por "cnt", las banderas por "f_". 36. Da lugar a una infraccion los protoboard's endebles por no estar unidos con una plataforma resistente. 37. el mensaje de bienvenida en lcd y/o isd debe expresar el nombre de la empresa, nombre del proyecto, nombre de integrantes con estructura jerarquica (presidente, gerente tcnico, gerente comercial, gerente financiero). 38 LCD sin back light activado con resitencia limitadora. 39 Proyecto sin ayuda interactiva por LCD o ISD. 40 El no traer caja de herramientas con multimetro, cautin, pinzas, puentes, etc a la sustentacin.
64 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
6. Reduccion de espacio de hardware en mas del 30% 7. Aumento del tiempo de garanta del hardware mediante la seleccin o diseo meticuloso de los elememtos que lo integran en mas del 50%. 8. Aumento de posibilidades comerciales mediante la implementacin de opciones especificas a una aplicacin o cliente en particular. 9. Mejoramiento significativo de la interfaz hombre maquina amigable mediante texto, audio o video. 10. Consultar al docente que tipo(s) de mejora considera podra implementarse.
65 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SOLUCIN
DE PROBLEMAS DE HARDWARE
FUENTE DE ALIMENTACION EN MAL ESTADO: verifique con un voltimetro en el protoboard o circuito impreso que la tensin entre los pines de alimentacion del pic (vdd = 11,32 y gnd=12,31) es aproximadamente +5vdc debe encender el led_power conectado entre +vcc y gnd con una resistencia de 470 a 1k. REALIZAR PRUEBA DE FILTROS DE FUENTE: al medir continuidad entre tierra y +vcc el multimetro debe sonar beep por un segundo aproxiamdamente, luego al invertir los pines de multimetro debe sonar nuevamente y as suesivamente, esto demuestra el buen estado de los filtros o condensadores de alta capacitancia VERIFIQUE CONDENSADOR DE FILTRO CON POLARIDAD INVERTIDA ENTRE VCC Y GND MICROCONTROLADOR EN MAL ESTADO: inserte el pic en el programador o cargador de codigo JDM SERIAL O USB y verifique que el software WIN PIC O IC-PROG lo reconoce. Tambin puede cargar nuevamente el codigo de maquina para garantizar que el pic esta en buen estado y que est grabado el codigo fuente (firmware) en la memoria de programa. PINES DEL PIC EN MAL ESTADO, probar con led o con pulsador MCLR,_PTB6,_PTB7, VCC, GND PINES DE PIC DOBLADOS O PARTIDOS IMPRESO EN MAL ESTADO PROTOBOARD O PISTA DE CIRCUITO IMPRESO EN MAL ESTADO FUENTE CON POCA CORRIENTE el voltaje se cae. ERRONEA O FALSA CONEXION DE PUENTES ENTRE PIC Y PERIFERICOS
66 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
67 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
68 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
69 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
BRA LABEL CALL LABEL CLRWDT DAW GOTO LABEL NOP POP
70 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
L4 L8 L8 L8 L8 L8
MUEVE L4 A REGISTRO DE SELECCION DE BANCO BSR MUEVE CONSTANTE L8 A W MULTIPLICA L8 x W Y GUARDA EN PRODH:PRODL RETORNO DE LLAMADO DE SUBRUTINA POR CALL O RCALL CON W=L8 RESTA L8 - W Y GUARDA EN W REALIZA OPERACION OR EXCLUSIVA ENTRE L8 Y W, GUARDA EN W
71 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
72 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
bloque 8)
OUT_IF :salida de interrupcin en comando de comparacion IF (slo en bloque 8). Esta macro no puede emplearse si la interrupcin se desencaden por finalizacin de un ciclo pwm o fin de movimiento o reposo de un motor paso paso. MODULO_INTERRUPCION_MANUAL SI/NO :activacion/desactivacion en bloque 1, si se activa entonces todas las interrupciones se dirigen al vector org_vector_low_priority_18h o org_vector_high_priority_18h en bloque 8. El usuario deber seleccionar manualmente la interrupcion segn la bandera activada. BANCO L4 :selecciona banco de operacion (0 a 5)
73 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
74 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
75 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
76 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Declare var 1 tipo byte en bloque 3, en bloque 5 configure bit 0 a bit3 de porta como entrada y bit3 a bit 0 de porta como entrada. En este ejemplo se carga var1 con el estado de las entradas porta y portb asi: A los bit 7 a 4 de var1 se asign el valor de los bit 3 a 0 de portb respectivamente. A los bit 3 a 0 de var1 se asign el valor de los bit 3 a 0 de porta respectivamente. INP_PORT_BYTE VAR1,PTB3,PTB2,PTB1,PTB0,PTA3,PTA2,PTA1,PTA0
77 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
VAR1
EJ: ROTLF
VAR1
EJ: SWAPFF EJ: ANDFL EJ: ANDFF EJ: IORFL EJ: IORFF EJ: XORFL EJ: XORFF EJ: INV_BIT EJ: INV EJ: ON EJ: OFF
VAR1
intercambia los nibbles de var1 y guarda cambio en VAR1 = VAR1 AND 15 VAR1 = VAR1 AND VAR2 VAR1 = VAR1 IOR 512 VAR1 = VAR1 IOR VAR2 VAR1 = VAR1 XOR 1024 VAR1 = VAR1 XOR VAR2 : invierte el bit 4 de var1, var1 es un puerto o variable : invierte los 8 16 bit de VAR1, var1 es una variable : establece en 1 el bit 3 de var1, var1 es una : establece en 0 el bit 3 de var1, var1 es una
VAR1,15 VAR1,VAR2 VAR1,512 VAR1,VAR2 VAR1,1024 VAR1,VAR2 VAR1,4 VAR1 VAR1,3 VAR1,3
ON F8,BIT variable byte o un puerto OFF F8,BIT variable byte o un puerto SET_INP SET_OUT PUERTO,BIT PUERTO,BIT
: configura ptc3 como entrada : configura ptc4 como salida e inicializa en cero
78 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
RELE1,PTC5
F_SIRENA MAX_TEMP
;inicia un bucle indefinido solo interrumpido por un reset o interrupcin ;resetea (pone en cero) todos los puertos configurados como salida ;resetea (pone en cero) todos los registros de la ram de dir 0 a 1535 de 18f452
CLEAR_RAM
FILL_RAM
DIRECCION1,DIRECCION2,CONSTANTE L12 ,L12 ,L8 ;llena las variables de dir1 a dir2 con la constante L8 DIRECCION1,DIRECCION2,VALOR L12 ,L12 ,F8 ;llena las var de dir1 a dir2 con el dato de F8
FILL_RAMF
79 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
HABILITAR_PUSH_POP_INC_DECVAR
EJEMPLO Active la interrupcin de PTB0 y PTB1 en bloque1 ORG1_INT_PTB0 INCVAR IF_MAX_INC VAR1,100,2000,50 LBL1 ;incrementa de 100 a 2000 en pasos de 50
LBL1
------ var1 llego al maximo valor = 2000 --------------- var1 esta entre 100 y 1999 ---------OUT_INT DECVAR IF_MIN_DEC VAR1,100,2000,50 LBL2 ;decrementa de 100 a 2000 en pasos de 50
ORG2_INT_PTB1
------ var1 llego al minimo valor = 100 ---------LBL2 ------ var1 esta entre 100 y 1999 ---------OUT_INT
80 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(MMATH)
Nota1: la operacion de SUMA, RESTA Y MULTIPLICACION se guarda en la variable llamada "RESULTADO" tipo word. Nota2: la operacion de divisin se guarda en la variable "COCIENTE" Y "RESIDUO" tipo word. Si el usuario emplea la macro: C_BCDF RESULTADO ;entonces convierte el registro resultado en bcd
BCD5 = DECENA DE MIL BCD4 = UNIDAD DE MIL BCD3 = CENTENA BCD2 = DECENA BCD1 = UNIDAD MACROS SUMFL SUMFF RESTFL RESTLF RESTFF MULTFL MULTFF DIVFL DIVLF DIVFF ARGUMENTOS F8/16,L16 EJ: SUMFL F8/16,F8/16 EJ: SUMFF F8/16,L16 EJ: RESTFL L16,F8/16 EJ: RESTLF F8/16,F8/16 EJ: RESTFF F8/16,L16 EJ: MULTFL F8/16,F8/16 EJ: MULTFF F8/16,L16 EJ: DIVFL L16,F8/16 EJ: DIVLF F8/16,F8/16 EJ: DIVFF
VAR1,500 VAR1,VAR2 VAR1,5 495,VAR1 VAR1,VAR2 VAR1,2500 VAR1,VAR2 VAR1,5 412,VAR1 VAR1,VAR2
: RESULTADO(16BIT) = VAR1 + 500 : RESULTADO(16BIT) = VAR1 + VAR2 : RESULTADO(16BIT) = VAR1 - 5 : RESULTADO(16BIT) = 495 - VAR1 : RESULTADO(16BIT) = VAR1 - VAR2 : RESULTADO(32BIT) = VAR1 x 2500 : RESULTADO(32BIT) = VAR1 x VAR2 : COCIENTE(16BIT) = VAR1 / 5 : COCIENTE(16BIT) = 412 / VAR1 : COCIENTE(16BIT) = VAR1 / VAR2 : RESIDUO(16BIT)
EJEMPLO 1 debe crear una subrutina llamada SUB_RESET en bloque 9 FOR_SUB 5,SUB_RESET :LLAMA 5 VECES LA SUB SUB_RESET EJEMPLO 2 debe crear una subrutina llamada sub_reset en bloque 9, declare var1 tipo byte en bloque 3 MOVLF FOR_SUBF 200,VAR1 VAR1,SUB_RESET ;VAR1 = 200 :llama 200 veces la sub sub_reset
81 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(MIF)
= IGUAL <> DIFERENTE > MAYOR QUE < MENOR QUE todas las macros de comparacion "if" saltan al siguiente rengln si se cumple la condicin, de lo contrario salta a la etiqueta label. la etiqueta label puede estar en cualquiera de los 16384 renglones de la memoria de programa MACROS ARGUMENTOS EXPLICACION IF1 IF0 IFF255 IFF0 IFPAR IFIMPAR IFFIL IFFDL IFFMAL IFFMEL IFFIF IFFDF IFFMAF IFFMEF F8,BIT,LABEL F8,BIT,LABEL F8,LABEL F8,LABEL F8/16,LABEL F8/16,LABEL F8/16,L16,LABEL F8/16,L16,LABEL F8/16,L16,LABEL F8/16,L16,LABEL F8/16,F8/16,LABEL F8/16,F8/16,LABEL F8/16,F8/16,LABEL F8/16,F8/16,LABEL EJEMPLO 1 IF1 VAR1,3,LABEL1 CLR_LCD LABEL1 EJEMPLO 2 IFPAR VAR1,LABEL2 :SI VAR1 ES PAR ENTONCES LIMPIA LCD CLR_LCD :SINO SALTA A LABEL2 LABEL2 EJEMPLO 3 IFFMAL VAR1,200,LABEL2 :SI VAR1 > 200 ENTONCES LIMPIA LCD CLR_LCD :SINO SALTA A LABEL3 LABEL3 :SI... F8,BIT ES UNO ENTONCES...
:SI... F8,BIT ES CERO ENTONCES... :SI... F8=255 ENTONCES... :SI... F8=0 ENTONCES... :SI... F8/16 ES PAR ENTONCES... :SI... F8/16 ES IMPAR ENTONCES... :SI... VAR1 = CONSTANTE ENTONCES... :SI... VAR1 <> CONSTANTE ENTONCES... DIFERENTE :SI... VAR1 > CONSTANTE ENTONCES... :SI... VAR1 < CONSTANTE ENTONCES... :SI... VAR1 = VAR2 ENTONCES... :SI... VAR1 <> VAR2 ENTONCES... 'DIFERENTE :SI... VAR1 > VAR2 ENTONCES... :SI... VAR1 < VAR2 ENTONCES... :SI EL BIT 3 DE VAR1 EST EN 1 LIMPIA :LA LCD SI NO SALTA A LABEL1
82 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
IFFIL CLR_LCD LABEL4 IFFIL TX_UART TX_UART TX_UART TX_UART LABEL5 IFFIL CHAR_LCD CHAR_LCD CHAR_LCD CHAR_LCD LABEL6 LABEL7
:SINO SALTA A LABEL4 VAR1,5,LABEL5 :SI VAR1 = 5 ENTONCES ENVIA "HOLA" AL PC "H" :SINO SALTA A LABEL5 "O" "L" "A" VAR2,"B",LABEL6 :SI VAR1 = "B" ENTONCES ENVIA "LPM" A LCD "L" :SINO SALTA A LABEL6 "P" "M" "2" VAR5,5467,LABEL7 ;si var1 = 5467 entonces envia reproduce 4,MI ;mensaje 4 del isd1, sino salta a label7
IFFIL PLAY_ISD1
SIMBOLOGIA MAX_DIGITOS
83 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
IFCLAVE IFCLAVEF
DIR_CLAVE1, DIR_CLAVE2, DIR_CLAVE3, DIR_CLAVE4, DIR_CLAVE5, DIR_CLAVE6, DIR_CLAVE7, LABEL IFCLAVE_EEPROM L8 , L8 , L8 , L8 , L8 , L8 , L8 , ETIQUETA IF_PRIMER_ON_MED LABEL ;si es la primera vez que se reinicia el pic despus de cargarle el firmware lee la dir 255 de la eeprom y si el dato es diferente de 254 indica que es la primera vez que se reinicia el pic
84 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
_________________________________________________________________________________________ CONFIGURE EN BLOQUE 2: LA FUNCION ACEPTAR CON LA TECLA ENTER DEL TECLADO LA FUNCION CANCELAR CON LA TECLA ESCAPE DEL TECLADO LA FUNCION BORRAR CON LA TECLA RETROCESO DEL TECLADO CONFIG_CLAVE TEC_ENTER,TEC_ESCAPE,TEC_BACK _________________________________________________________________________________________ DECLARE EN BLOQUE 3: CNT_ERROR,FLAG_CAMBIO_CLAVE _________________________________________________________________________________________ DEFINA BANDERAS EN BLOQUE 4: (NOTA: PARA AGREGAR USUARIOS DEBE CREAR MS BANDERAS F_WAIT_CLAVE_US) BANDERA F_PUK_OK FLAG_CAMBIO_CLAVE,0 ; declara un flag en flag_cambio_clave BANDERA F_WAIT_ENTER_CLAVE FLAG_CAMBIO_CLAVE,1 ; declara un flag flag_cambio_clave BANDERA F_WAIT_CLAVE_US1 FLAG_CAMBIO_CLAVE,2 ; declara un flag en flag_cambio_clave BANDERA F_WAIT_CLAVE_US2 FLAG_CAMBIO_CLAVE,3 ; declara un flag en flag_cambio_clave el bit 0 de la var en el bit 1 de la var el bit 2 de la var el bit 3 de la var
;_________________________________________________________________________________________ ;PROGRAME EN BLOQUE 8: ESTRATEGIA PARA QUE FUNCIONE CON TECLADO PS2 TAMBIEN ORG20_INT_1_TECPS2: MOVFFF REG_TECPS2,REG_RXUART GOTO ORG14_INT_RXUART ORG14_INT_RXUART: en caulquier clave CAPTURAR_CLAVE REG_RXUART,MAX_DIG_7 ;max 7 digitos
85 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
IF1 F_PUK_OK,LBL_UART2 IF_TECLA_ACEPTAR LBL_UART5 IF1 F_WAIT_CLAVE_US1,LBL_UART6 IFFIL POINTER_CLAVE,4,LBL_UART7 CLEAR FLAG_CAMBIO_CLAVE CLEAR POINTER_CLAVE WRITE_EEDLF 0,REG_CLAVE1 WRITE_EEDLF 1,REG_CLAVE2 WRITE_EEDLF 2,REG_CLAVE3 WRITE_EEDLF 3,REG_CLAVE4 MENS_LCD "CAMBIO EXITOSO",L1,C1,0 MENS_LCD "USUARIO 1 ",L2,C1,0 BLINK_LCD 2 OUT_INT MENS_LCD "INSERTE 4 DIGITO",L1,C1,0 MENS_LCD "EN CAMBIO DE US1",L2,C1,0 BLINK_LCD 2 CLEAR POINTER_CLAVE MENS_LCD "CAMBIO CLAVE US1",L1,C1,0 MENS_LCD "ENTER 4 DIGITOS",L2,C1,0 BLINK_LCD 2 OUT_INT IF1 F_WAIT_CLAVE_US2,LBL_UART8 IFFIL POINTER_CLAVE,5,LBL_UART9 CLEAR FLAG_CAMBIO_CLAVE CLEAR POINTER_CLAVE WRITE_EEDLF 4,REG_CLAVE1 WRITE_EEDLF 5,REG_CLAVE2 WRITE_EEDLF 6,REG_CLAVE3 WRITE_EEDLF 7,REG_CLAVE4 WRITE_EEDLF 8,REG_CLAVE5 MENS_LCD "CAMBIO EXITOSO",L1,C1,0 MENS_LCD "USUARIO 2 ",L2,C1,0 BLINK_LCD 2 OUT_INT MENS_LCD "INSERTE 5 DIGITO",L1,C1,0 MENS_LCD "EN CAMBIO DE US2",L2,C1,0 BLINK_LCD 2 CLEAR POINTER_CLAVE MENS_LCD "CAMBIO CLAVE US2",L1,C1,0 MENS_LCD "ENTER 5 DIGITOS",L2,C1,0 BLINK_LCD 2 OUT_INT MENS_LCD "ANTES DE ACEPTAR",L1,C1,0 MENS_LCD "SELECCION US 1-2",L2,C1,0 BLINK_LCD 2
LBL_UART7
LBL_UART6
LBL_UART9
LBL_UART8
86 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LBL_UART5
IF_TECLA_CANCELAR LBL_UART3 CLEAR FLAG_CAMBIO_CLAVE MENS_LCD "CAMBIO DE CLAVE",L1,C1,0 MENS_LCD "CANCELADO POR US",L2,C1,0 BLINK_LCD 2 OUT_INT IF0 F_WAIT_ENTER_CLAVE,LBL_UART4 IFFIL REG_RXUART,"1",LBL_UART4 ON F_WAIT_CLAVE_US1 OFF F_WAIT_CLAVE_US2 ON F_WAIT_ENTER_CLAVE RESET_CLAVE MENS_LCD "CAMBIO CLAVE US1",L1,C1,0 MENS_LCD "ENTER 4 DIGITOS",L2,C1,0 BLINK_LCD 2 OUT_INT IF0 F_WAIT_ENTER_CLAVE,LBL_UART16 IFFIL REG_RXUART,"2",LBL_UART16 ON F_WAIT_CLAVE_US2 OFF F_WAIT_CLAVE_US1 ON F_WAIT_ENTER_CLAVE RESET_CLAVE MENS_LCD "CAMBIO CLAVE US2",L1,C1,0 MENS_LCD "ENTER 5 DIGITOS",L2,C1,0 BLINK_LCD 2 OUT_INT IF_TECLA_SIGUIENTE LBL_UART17 TLCD "DIGITANDO CLAVE" SHOW_AST_CLAVE L2,C5 OUT_INT IF_TECLA_BORRAR OUT_IF TLCD "DIGITANDO CLAVE" SHOW_AST_CLAVE L2,C5 OUT_INT
LBL_UART3
LBL_UART4
LBL_UART16
LBL_UART17
LBL_UART2
IFCLAVE_EEPROM 0,1,2,3,DIR_NADA,DIR_NADA,DIR_NADA,LBL_UART10 MENS_LCD "CLAVE CORRECTA" ,L1,C1,0 MENS_LCD "USUARIO 1 ",L2,C1,0 BLINK_LCD 2 CLEAR CNT_ERROR OUT_INT IFCLAVE_EEPROM 4,5,6,7,8,DIR_NADA,DIR_NADA,LBL_UART11 MENS_LCD "CLAVE CORRECTA" ,L1,C1,0 MENS_LCD "USUARIO 2 ",L2,C1,0 BLINK_LCD 2 CLEAR CNT_ERROR
LBL_UART10
87 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LBL_UART11
IF_TECLA_CANCELAR LBL_UART12 MENS_LCD "SISTEM SEGURIDAD",L1,C1,0 MENS_LCD "INTRODUZCA CLAVE",L2,C1,0 OUT_INT IF_TECLA_SIGUIENTELBL_UART13 TLCD "DIGITANDO CLAVE" SHOW_AST_CLAVE L2,C5 OUT_INT IF_TECLA_BORRAR TLCD "DIGITANDO CLAVE" SHOW_AST_CLAVE L2,C5 OUT_INT IF_TECLA_MAX TLCD "EXCEDIO NUM DIG" OUT_INT LBL_UART14
LBL_UART12
LBL_UART13
LBL_UART14
LBL_UART15
LBL_UART15
IF_TECLA_ACEPTAR OUT_IF RESET_CLAVE MENS_LCD "CLAVE INCORRECTA",L1,C1,0 MENS_LCD "VUELVA INTENTAR",L2,C1,0 BLINK_LCD 3 MENS_LCD "SISTEM SEGURIDAD",L1,C1,0 MENS_LCD "INTRODUZCA CLAVE",L2,C1,0 INCRE1 CNT_ERROR IFFMAL CNT_ERROR,2,OUT_IF ;MAS DE 2 ERRORES MENS_LCD "EXCEDIO INTENTOS",L1,C1,0 MENS_LCD "SISTEMA BLOQUEADO",L2,C1,0 BLINK_LCD 3 MENS_LCD "SISTEM SEGURIDAD",L1,C1,0 MENS_LCD "INTRODUZCA CLAVE",L2,C1,0 CLEAR CNT_ERROR OUT_INT
EJEMPLO 2 El ejemplo a continuacin permite identificar el acceso de 2 usuarios con clave predefinida en memoria de programa, se puede ingresar por teclado PS2 o por recepcin de dato UART. ORG20_INT_1_TECPS2: ORG14_INT_RXUART MOVFFF GOTO CAPTURAR_CLAVE IFCLAVE TLCD MENS_LCD CLEAR OUT_INT REG_TECPS2,REG_RXUART ORG14_INT_RXUART REG_RXUART,MAX_DIG_7 "O","S","C","A","R",NADA,NADA,LBL_UART_1 "CLAVE CORRECTA" "USUARIO 1",L2,C4,0 CNT_ERROR
88 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LBL_UART_2
LBL_UART_3 IF_TECLA_SIGUIENTE LBL_UART_4 TLCD "INTRODUCIENDO CLAVE" SHOW_AST_CLAVE L2,C5 OUT_INT LBL_UART_4 IF_TECLA_BORRAR LBL_UART_5 TLCD "BORRANDO DIGITO" SHOW_AST_CLAVE L2,C5 OUT_INT LBL_UART_5 IF_TECLA_MAX LBL_UART_6 TLCD "MAXIMO 7 DIGITOS" OUT_INT LBL_UART_6 IF_TECLA_ACEPTAR OUT_IF ;clave errnea RESET_CLAVE TLCD "CLAVE INCORRECTA" MENS_LCD "VUELVA A INTENTARLO",L1,C4,0 INCRE1 CNT_ERROR IFFMAL CNT_ERROR,2,OUT_IF TLCD "SUPERO 3 INTENTOS" CLEAR CNT_ERROR OUT_INT
89 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DELAYF F8/16,UNIDAD DELAYF TIEMPO,UNIDAD TIEMPO ;variable tipo byte/word UNIDAD US,MS,DS,SEG ;base de tiempo DELAYF F8,SEG ; pausa del valor guardado en F8 segundos DELAYF F16,US ; pausa del valor guardado en F16 microsegundos
(MPULSO)
PUL_HIGH PTE0,5,SEG
:cualquier pin del pic :constante/variable con dato entre 1 a 65535 ;US/MS/DS/SEG base de tiempo EJEMPLO 1 :genera un pulso con flanco de subida en pte0 por 5 segundos EJEMPLO 2
(MBLINK)
genera un nmero de pulsos con periodo high y periodo low programable control de servomotor, pwm para motor dc, generador de frecuencia programable,oscilacion de led BLINK PIN,NUM_PULSOS,TIEMPO1,UNIDAD1,TIEMPO2,UNIDAD2 ARGUMENTOS
90 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
En el siguiente ejemplo se genera por el pin PTD0 37 pulsos con perodo en 1 lgico igual a 100us y perodo en cero lgico igual a 1ms, es decir, genera una frecuencia de 1/(100us+1ms) --> f = 1/1100us : f = 909hz. Si fuese una seal pwm entonces el voltaje promedio que genera esta seal si el PIC est alimentado a 5VDC es: Vprom = 5v * 100us(1/1100us) = 0.45v BLINK PTD0,37,100,US,1,MS
91 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
El buzzer emitir un sonido correspondiente a la frecuencia estipulada por el microcontrolador. R2 es una resistencia de acoplamiento requerida por e buzzer. D1 sirve de proteccin al transistor y al PIC contra picos de voltaje generados por el buzzer.
RANDOMF SBCD_LCDF
VAR1,VAR2 REG_RANDOM
MACROS DE DISPLAY CRISTAL LIQUIDO LCD 2X16, 2X20, 2X24, 2X40 (MLCD)
SIMBOLOGIA: SIMBOLOGIA: SIMBOLOGIA: SIMBOLOGIA: LINEA : L1,L2 :LINEA O FILA DE LA LCD COL : C1 A C40 :COLUMNA DE LA LCD FACTOR: X1, X10, X100 :FACTOR DE MULTIPLICACION DE VOLTAJE AL CONVERTIR DELAY_MENSAJE: 0 A 255 :PAUSA ENTRE CARACTERES EN DCIMAS DE SEGUNDO D4_P11_PTC0 = dato4 pin 11 de lcd se conecta al bit 0 de portc D5_P12_PTC1 = dato5 pin 12 de lcd se conecta al bit 1 de portc D6_P13_PTC2 = dato6 pin 13 de lcd se conecta al bit 1 de portc D7_P14_PTC3 = dato7 pin 14 de lcd se conecta al bit 1 de portc RS_P4_PTC4 = RS pin 4 de lcd se conecta al bit 1 de portc ENA1_P6_PTC5= ENABLE pin 6 de lcd1 se conecta al bit 1 de portc ENA2_P6_PTNN= ENABLE pin 6 de lcd2 se conecta al bit 1 de portc ENA3_P6_PTNN= ENABLE pin 6 de lcd3 se conecta al bit 1 de portc
SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B: SIMBOLOGIA EN MACRO CONFIG_LCD4B:
92 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota1: LPM puede controlar hasta 4 LCD simultneamente (lcd1 a lcd4), en la conexin por hardware las 4 LCD comparten los 4 pines de datos y el pin RS, nicamente se independiza el pin ENABLE. Si slo se requiere una LCD, se rellenan con PTNN (pin virtual) los enables de LCD2 A LCD4.
Nota2: al iniciar en programa en el bloque 6 siempre todas las lcd reciben automticamente es decir, est todo en blanco y posicionadas en linea1 columna 1. MACROS ARGUMENTOS
el comando CLR_LCD,
CONFIG_LCD4B D4_P11_PTC0,D5_P12_PTC1,D6_P13_PTC2,D7_P14_PTC3,RS_P4_PTC4,ENA1_P6_PTC5,ENA2_P6_PT NN,ENA3_P6_PTNN,ENA4_P6_PTNN ;asignacion de pines de control en bloque 2 SELEC_LCD (L4) :selecciona la lcd a controlar segn el peso binario. Si no emplea esta macro por defecto selecciona LCD1. Para seleccionar todas las LCD utilice la constante nmero 15. TEXTO_LCD MENSAJE :muestra un mensaje de max 40 caracteres en la posicion actual TLCD MENSAJE :limpia pantalla y muestra un mensaje de max 40 caracteres en linea1, col1 MENS_LCD MENSAJE,LINEA,COL,DELAY_MENSAJE :muestra un mensaje de max 40 caracteres en la linea, columna y con la pausa entre caracteres estipulada en dcimas de segundo DELAY_LCD L8 :estipula la pausa en (ds) entre cada caracter de la lcd DELAY_LCDF F8 :estipula la pausa en (ds) entre cada caracter de la lcd LINE_COL_LCD LINE_COL_LCDF PRINT_LCD PRINT_LCDF LINEA,COL LINEA,F8 :asigna la linea y columna del siguiente caracter :asigna la linea y columna del siguiente caracter
CHAR,LINEA,COL :muestra un caracter en la linea y columna asignada F8,LINEA,COL :muestra un caracter en la linea y columna asignada
PRINT_LCDAF F8,LINEA,COL :muestra el valor numrico de una variable de 0 a 9 en la linea y col asignada PRINTBCD_LCD L8,LINEA,COL :muestra el bcd de un caracter en la linea y col asignada PRINTBCD_LCDF F8,LINEA,COL CHAR_LCD L8 muestra un caracter en lcd CHAR_LCDF F8 CHAR_LCDAF F8 BLINK_LCD BLINK_LCDF RR_LCD RR_LCDF RL_LCD RL_LCDF CMD_LCD CMD_LCDF SBIT_LCD SBIT_LCDF SBCD_LCD SBCD_LCDF SED_LCD L8 F8 L8 F8 L8 F8 L8 F8 L8 F8 L16 F8/16 L8 muestra un caracter en lcd muestra el valor numrico de una variable de 0 a 9 prende y apaga la lcd el nmero de veces programada prende y apaga la lcd el nmero de veces programada rota a la derecha todo el mensaje el nmero de veces prog rota a la derecha todo el mensaje el nmero de veces prog rota a la izquierda todo el mensaje el nmero de veces prog rota a la izquierda todo el mensaje el nmero de veces prog envia un comando a lcd envia un comando a lcd muestra el nmero binario (0,1) de una constante en lcd muestra el nmero binario (0,1) de una variable en lcd muestra el bcd de 5 digitos de una constante max 16bit MUESTRA EL BCD DE 5 DIGITOS DE UNA VARIABLE DE 16BIT MUESTRA EL DATO DE LA DIRECCION DE EEPROM DE DATO
93 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SLM35_LCD :muestra temp en c de lm35 despues de una conversion cad SVOLT_LCD FACTOR :muestra voltaje en (volt) multiplicado por un factor en lcd despues de una conversion SMVOLT_LCD FACTOR :muestra voltaje en (mvolt)multiplicado por un factor en lcd despues de una conversion CLR_LCD :limpia las 2 lineas de la lcd CLR_LCDL1 CLR_LCDL2 OFF_BLINK_CURSOR ON_BLINK_CURSOR OFF_CURSOR_LCD ON_CURSOR_LCD CURSOR_HOME_LCD CURSOR_R_LCD CURSOR_L_LCD SCREEN_R_LCD :Limpia Linea 1 De Lcd Y Se Posiciona En Linea 1 Columna 1 :limpia linea 2 de lcd y se posiciona en linea 2 columna 1 :desactiva parpadeo de cursor y caracter :ACTIVA PARPADEO DE CURSOR Y CARACTER OCULTA EL CURSOR DE LCD MUESTRA EL CURSOR DE LCD ENVIA EL CURSOR A LINEA1 COLUMNA1 ROTA EL CURSOR UNA COLUMNA A LA DERECHA ROTA EL CURSOR UNA COLUMNA A LA IZQUIERDA ROTA LA PANTALLA UNA COLUMNA A LA DERECHA
SCREEN_L_LCD ROTA LA PANTALLA UNA COLUMNA A LA IZQUIERDA DIR1 , DIR2 ,PAUSA SV0_LCD 0-1535,0-1535,L16 ;muestra elementos del vector0 a lcd desde dir1 de la ram hasta dir2 de la ram con pausa en dcima de segundos cada caracter
DIR1 , DIR2 ,PAUSA SRAM_LCD 0-1535,0-1535,L16 ;muestra elementos de la ram a lcd desde dir1 de la ram hasta dir2 de la ram con pausa en dcima de segundos cada caracter EJEMPLO 1 1 ;selecciona la lcd nmero 1 de 4 ;limpia pantalla de lcd "MENSAJE1",L1,C1,2 ;linea 1, columna1, 2 dcimas de segundo entre caracteres "MENSAJE2",L2,C3,0 ;linea 2, columna 3, sin pausa entre caracteres 5 ;parpadea 5 veces la pantalla 17 ;rota 17 col a la derecha 2,SEG ;pausa de 2 segundos 3 ;parpadea 3 veces la pantalla 17 ;rota 17 col a la izquierda "MENSAJE1",L1,C1,2 ;mensaje en lnea 1, columna1, pausa de 2 ds entre caracter "MENSAJE2",L2,C1,1 ;mensaje en lnea 2, columna1, pausa de 2 ds entre caracter
SELEC_LCD CLR_LCD MENS_LCD MENS_LCD BLINK_LCD RR_LCD DELAY BLINK_LCD RL_LCD MENS_LCD MENS_LCD
94 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;parpadea 2 veces la pantalla ;convierte por canal 0 (pta0) ;muestra temperatura de lm35 en lcd ;convierte por canal 1 (pta1) ;muestra voltaje en (volt)en lcd multiplicado x 10 EJEMPLO 2 SELEC_LCD 7 ;selecciona la lcd 1, 2 y 3 MOVLF 35,VAR1 ;guarda 35 decimal en var1 SAED_LCDF VAR1 ;muestra en lcd el ascci del dato de la memoria eeprom de dato en la dir 35 SELEC_LCD 15 ;selecciona las 4 lcd's SBCDED_LCD 200 ;muestra en las 4 lcd el bcd (nmero entero) de la memoria eeprom de dato en la dir 200
95 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
96 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Remitirse a la SECCION 6 - PERIFERICOS DEL MICROCONTROLADOR.DOC para profundizar en la programacin y protocolo de comunicacin de una LCD.
POSICION,TIEMPO_REC(SEG) graba un mensaje en una posicion L8 ,L8 programada por un tiempo prog F8 ,F8 posicion del mensaje:1 a 255 genera un pulso en stop de isd
97 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
EJEMPLO ;reproduce el primer mensaje de isd1 en mc ;reproduce el sexto mensaje de isd2 en mi ;graba un mensaje de 5 seg en posicion 2 ;play mensaje1 y no pasa al sig rengln hasta terminar de reproducirlo ;reproduce el sexto mensaje de isd1 y continua al siguiente rengln sin esperar ; que termine mensaje 6
PLAY_ISD2 PLAY_ISD2F
98 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
P_R_ISD2 M0_ISD2
REC/PLAY NORMAL/SALTAR
EJEMPLO ;reproduce el primer mensaje de isd2 en mc ;reproduce el sexto mensaje de isd2 en mi ;graba un mensaje de 5 seg en posicion 2 ;play mensaje1 y no pasa al sig rengln hasta terminar de reproducirlo
6,MI ;reproduce el sexto mensaje de isd2 y continua al siguiente rengln sin esperar que termine mensaje 6
99 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
, EOM_P25_PTA4, P_R_P27_PTA5
, EOM_P25_PTNN, P_R_P27_PTNN
100 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE CONEXIN GENERAL DE CONTROL DEL ISD 25XXX MEDIANTE MICROCONTROLADOR O MANUALMENTE (PLANO ISD)
101 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE CONEXIN SIMPLIFICADO PARA GRABACION DE SEAL DE AUDIO PROVENIENTE DE UN PC O MICROFONO CON PREAMPLIFICADOR (PLANO ISD)
Para simular el ISD 25XXX se emplea el control COUNTER TIMER de PROTEUS configurado como COUNTER y slo se requieren las salidas START, RESET. Para mejorar la calidad de grabacin del audio directo del PC se puede conectar la salida de audio del PC
102 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
El esquema anterior es un econmico amplificador de audio de 8 Watt de potencia RMS suficiente para escuchar un mensaje de la ISD en una habitacin o casa.
103 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
104 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
105 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
106 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
MACROS DEL VECTOR0_TIPO_BYTE, VECTOR0_TIPO_WORD MACROS DEL VECTOR1_TIPO_BYTE, VECTOR1_TIPO_WORD MACROS DEL VECTOR2_TIPO_BYTE, VECTOR2_TIPO_WORD
(MVECTOR)
REGISTROS DESTINO DEL MODULO VECTORES MODULO VECTOR0 :REG_V0,REG_V0:2 MODULO VECTOR1 :REG_V1,REG_V1:2 MODULO VECTOR2 :REG_V2,REG_V2:2 Nota1: Todas las macros relacionadas con el mdulo VECTOR0 tambin existen para VECTOR1 y VECTOR2 Nota2: El mdulo decodificador infrarrojo, transceiver TRF 2.4 y las macros: CLEAR_RAM, CLR_ALL_RAM_GPR, FILL_RAM, FILL_RAMF,SRAM_LCD y TXRAM_UART alteran en puntero del VECTOR 2. Nota3: para manipular un elemento de un vector se escribe la direccion + offset y se trata como una variable normal. Por ejemplo para limpiar el quinto elemento; del vector 0 se escribe: clear (org_v0 + 5). para comparar si el dcimo elemento del vector 1 es igual a el caracter "m" se escribe: IFFIL (ORG_V1 + 10),"M",LABEL. Nota4: el registro seleccionado del vector se comportar en la macro dependiendo de la direccin en que se encuentre, por ejemplo, si el elemento seleccionado queda en la direccin 5 absoluta de la memoria ram, entonces est entre la dir 0 y 99, por lo tanto lpm2 lo tratar como tipo byte. MACROS ARGUMENTOS
VECTOR0_TIPO_BYTE SI/NO ;activacin/desactivacin en bloque 1 VECTOR0_TIPO_WORD SI/NO ;activacin/desactivacin en bloque 1 VECTOR1_TIPO_BYTE SI/NO ;activacin/desactivacin en bloque 1 VECTOR1_TIPO_WORD SI/NO ;activacin/desactivacin en bloque 1 VECTOR2_TIPO_BYTE SI/NO ;activacin/desactivacin en bloque 1 VECTOR2_TIPO_WORD SI/NO ;activacin/desactivacin en bloque 1 SI/NO ;activacin/desactivacin en bloque 1 CONFIG_ORG_VECTOR0 DIR ;dir 0 a 1535 en bloque 2 SET_V0 DIR ;establece posicion del vector con constante SET_V0F REGISTRO ;establece posicion del vector con variable FILL_V0 CONSTANTE,DIR_INICIO,DIR_FIN ;llenar vector0 con limites constantes y dato en constante FILL_V0F REGISTRO,DIR_INICIO,DIR_FIN ;llenar vector0 con limites constantes y dato en variable R_V0 leer RI_V0 ;leer e incrementar RD_V0 ;leer y decrementar W_V0 CONSTANTE ;escribir constante W_V0F REGISTRO ;escribir var WI_V0 CONSTANTE ;escribir constante e incrementar WI_V0F REGISTRO ;escribir var e incrementar WD_V0 CONSTANTE ;escribir constante y decrementar WD_V0F REGISTRO ;escribir var y decrementar IFCIV0 CADENA,DIR_INICIO,LABEL ;compara si la cadena de caracteres coincide con los elementos del vector tipo byte a partir del elemento dir_inicio, sino coincide salta a label
107 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
FILL_V0FF LBL1
PROM_V0F LBL2
MOVFFF CLEAR W1 SET_V0F RI_V0 INCREF INCRE1 IFFMAF RESTFF INCRE1 DIVFF MOVFFF
VAR1,VAR3 VAR1
SUM_V0F
LBL3
MOVFFF VAR1,VAR3 ;hace la sumatoria de var1 a var2,la respuesta;esta en w1 CLEAR W1 SET_V0F VAR1 RI_V0 INCREFW1,REG_V0 INCRE1 VAR3 IFFMAF VAR3,VAR2,LBL3
FIND_V0F
LBL7
;si encuentra var4 en el vector salta a LBL_BINGO ; y en var3 esta la posicion sino llega a LBL_NOFIND
108 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LBL7A
LBL6A MIN_V0F
LBL7D
LBL6D
EJEMPLO2 ;en bloque 1: VECTOR0_TIPO_BYTE SI ;en bloque 2: CONFIG_ORG_VECTOR0 768 SET_V0 WI_V0 WI_V0 WI_V0 WI_V0 WI_V0 SV0_LCD TXV0_UART IFCIV0 50 "A" "B" "C" "D" "E" 50,54,2 52,54,100 "CDE",52,LBL1 ;activa vector 0 tipo byte (no funciona con vector tipo word) ;establece direccion inicial en ram del vector 0
;establezco direccin inicial en vector0 ;guardo "a" en posicion 50 de vector0 ;guardo "b" en posicion 51 de vector0 ;guardo "c" en posicion 52 de vector0 ;guardo "d" en posicion 53 de vector0 ;guardo "e" en posicion 54 de vector0 ;envia "ABCDE" a lcd con pausa de 2 dec de seg entre cada letra ;envia "CDE" por uart con pausa de 100 ms entre cada caracter ;compara el elemento 52 con "C", compara el elemento 53 con "D" ;compara el elemento 54 con "E", si coincide toda la cadena salta al ;siguiente rengln, sino salta a LBL1
109 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DIR,DATO WRITE_EEDF F8 ,F8 ;escribe un dato en la direccion estipulada WRITE_EEDLF SED_LCD SED_LCDF SAED_LCD SAED_LCDF SBCDED_LCD SBCDED_LCDF TXED_UART TXED_UARTF TXAED_UART TXAED_UARTF TXBCDED_UART TXBCDED_UARTF DIR,DATO L8 ,F8 ; escribe un dato en la direccion estipulada L8 F8 L8 F8 L8 F8 L8 F8 L8 F8 L8 F8 ;muestra el dato de la direccion de eeprom de dato ;muestra el dato de la direccion de eeprom de dato ;muestra el ascii del dato de la direccion de eeprom de dato ;muestra el ascii del dato de la direccion de eeprom de dato ;muestra el bcd de la direccion de eeprom de dato ;muestra el bcd de la direccion de eeprom de dato ;transmite por UART el dato de la direccin en L8 ;transmite por UART el dato de la direccin en F8 ;transmite por UART el dato ASCII 0-9 de la direccin en L8 ;transmite por UART el dato ASCII 0-9 de la direccin en F8 ;transmite por UART el dato BCD de la direccin en L8 ;transmite por UART el dato BCD de la direccin en F8 EJEMPLO 1
READ_EED 45 lee el dato de la dir 45 de la eeprom y lo muestra en la lcd l1 col 5 PRINT_LCDAF REG_EEDATO,L1,C5 WRITE_EED 45,"A" escribe el ascci de la letra a en la direccion 45 de la eeprom de dato EJEMPLO 2 Declaracin de tabla en memoria eeprom de dato maximo 256 datos tipo byte en bloque 10 DE "LPM" DIR 0 = "L", DIR1 = "P", DIR2 = "M", DIR3 = "2"
110 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
111 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
112 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
113 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
WRITE_TIMEK
COMPARACION DE HORA Y FECHA EN TIME KEEPER DS1307 inserte el siguiente codigo el la interrupcion de timer0 en low priority configurado con periodo de 1 seg nota:la comparacion debe realizarse con constantes decimales ORG12_INT_TMR0: READ_TIMEK ;lee la fecha y hora del ds1307 IFFIL AO_TK,8,LBL1 IFFIL MES_TK,1,LBL1 IFFIL DIA_MES_TK,5,LBL1 IFFIL HORA_TK,17,LBL1 IFFIL MINUTO_TK,30,LBL1 IFFIL SEGUNDO_TK,25,LBL1
... inserte aqu el cdigo a ejecutar a las 5:30:25 pm del da 5 de enero de 2008 ... LBL1 .... todava no ha llegado la fecha y hora programada .... OUT_INT
114 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Remitirse a la carpeta data sheet del CD DIGIBOOK para profundizar en el protocolo I2C del Time Keeper DS1307. Hasta la fecha solo hay Macros de LPM2 para el DS1307, no para el DS1302.
115 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
116 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(MC9DIG)
BCD9,BCD8,BCD7,BCD6,BCD5,BCD4,BCD3,BCD2,BCD1 LOAD_C9DIG L8 ,L8 ,L8 ,L8 ,L8 ,L8 ,L8 ,L8 ,L8 LOAD_C9DIGF F8 ,F8 ,F8 ,F8 ,F8 ,F8 ,F8 ,F8 ,F8 ;nota: el usuario puede acceder a cada digito de las 9 cifras del contador ; mediante los registros destino. por ejemplo, si el usuario desea visualizar ; el numero 729 al iniciar el programa puede cargar en el bloque 6 los registros ; c9dig3:c9dig2:c9dig1 asi: ; ; ; MOVLF MOVLF MOVLF 7,C9DIG3 2,C9DIG2 9,C9DIG1
;_________________________________________________________________________________________ ; EJEMPLO ;incrementa el contador desde 0 a 999'999.999 cada segundo y lo muestra en la lcd configurar interrupcion de tmr0 cada 1 seg en high or low priority ;_________________________________________________________________________________________ ; inserte el siguiente codigo en bloque 8: ;INCREMENTA COUNTER EN 1 L1,C1 ;POSICIONA LCD ;MUESTRA CONTADOR 9 DIGITOS ;SALIR DE INTERRUPCION
117 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;REGISTROS DESTINO: C9DIG9:C9DIG8:C9DIG7:C9DIG6:C9DIG5:C9DIG4:C9DIG3:C9DIG2:C9DIG1 ;NOTA: EL USUARIO PUEDE ACCEDER A CADA DIGITO DE LAS 9 CIFRAS DEL DISPLAY 7 SEGMENTOS ; MEDIANTE LOS REGISTROS DESTINO. POR EJEMPLO, SI EL USUARIO DESEA VISUALIZAR ; EL NUMERO 729 AL INICIAR EL PROGRAMA PUEDE CARGAR EN EL BLOQUE 6 LOS REGISTROS ; C9DIG3:C9DIG2:C9DIG1 ASI: ; ; ; MOVLF MOVLF MOVLF 7,C9DIG3 2,C9DIG2 9,C9DIG1
EJEMPLO ;contador de 0 a 999'999.999 que se incrementa cada 1 segundo y lo muestra en display 7 seg ;digite la macro barrido_7seg en bloque 7 en forma de bucle indefinido y configure la ;interrupcion de tmr0 cada 1 seg en bloque 2 ; inserte el siguiente codigo en bloque 7: BARRIDO_7SEG ;BARRIDO CCLICO DE DISPLAYS 7 SEGMENTOS BRA MAIN_PROG
;MAIN_PROG: ;
inserte el siguiente codigo en bloque 8: INC_C9DIG OUT_INT ;INCREMENTA COUNTER EN 1 CADA SEGUNDO ;SALIR DE INTERRUPCION
;ORG12_INT_TMR0: ;
Por ejemplo, la configuracin en bloque 2 CONFIG_DISP_7SEG MODO_CC,PORT_SEG_PTD, COM9_PTC7, COM8_PTC6,COM7_PTC5,COM6_PTC4, COM5_PTC3, COM4_PTC2, COM3_PTC1,COM2_PTC0,COM1_PTE0 Significa que los 9 displays de 7 segmentos (9 display es el mximo 1 es el mnimo) son de ctodo comn (CC) , que
118 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
; EJEMPLO ;contador de 0 a 999'999.999 que se incrementa cada 1 segundo y lo muestra en display 7 seg digite la macro barrido_7seg en bloque 7 en forma de bucle indefinido y configure la interrupcion de tmr0 cada 1 seg en bloque 2 ;Inserte el siguiente codigo en bloque 7: ;MAIN_PROG: BARRIDO_7SEG ; BRA MAIN_PROG ; ;BARRIDO CCLICO DE DISPLAYS 7 SEGMENTOS
La macro CLR_PUNTO desactiva la visualizacin de todos lo puntos de los display 7 segmentos Mediante las banderas F_PUNTO1 a F_PUNTO9 se controlan los puntos de cada uno de los display 7 segmentos, para activar la visualizacin del punto se levanta la bandera, por ejemplo si se desea visualizar el numero 3.1415 se activa F_PUNTO5 as: ; ON F_PUNTO5
119 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(Este circuito es vlido si no se requiere gran luminosidad en los displays, recuerde que los PIC mximo pueden proporcionar 25mA en modo sink/source)
120 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Para incrementar la luminosidad en los displays se pueden agregar etapas amplificadoras de corriente mediante transistores en colector comn como lo ilustra la siguiente figura.
121 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
L8 F8 L8 F8 L8 F8 L8 F8
122 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE EXPANSION DE PUERTOS DE SALIDA CON REGISTRO DE DESPLAZAMIENTO SIPO (4015B 74LS164)
(PLANO SIPO)
Nota1: LPM controla hasta 4 registros SIPO en cascada (expansin a 32 salidas con 4 SIPO de 8 bit en cascada). La conexin en cascada de 2 ms SIPO consiste en mandar todas las entradas RESET (R) a tierra, unir todas las entradas CK, conectar la salida Q7 de cada SIPO con la entrada DATO del siguiente. Sobra decir que slo se requieren 2 pines del PIC (CK, DATO) para controlar las 32 salidas. Los pines de control (CK, DATO) son seleccionados por el programador en el bloque 2 con la siguiente macro: CONFIG_SIPO_4015B DATO_P15_PTC1,CK_P1_9_PTC0 2 Nota2: Aunque LPM controla indistintamente el 4015B 74LS164, se recomienda trabajar con tecnologa CMOS (40XXB) por efecto de Fan In, impedancia de entrada y baja disipacin de potencia. Nota3: LPM2 permite multiplexar el pin DATO_P15 del registro SIPO con cualquiera de los pines de salida del teclado matricial o de la LCD (D4,D5,D6,D7,RS) excepto ENABLE.
123 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
REGISTROS DESTINO DEL MODULO PISO: REG_PISO1,REG_PISO2,REG_PISO3,REG_PISO4 MACROS ARGUMENTOS CONFIG_PISO_4021B GET_PISO DATO_P3_PTE1,CK_P10_PTA5,LOAD_P9_PTA4 asignacion de pines en bloque 2
:obtiene el estado de los 4 reg piso y lo muetra en las variables REG_PISO1, REG_PISO2, REG_PISO3, REG_PISO4 EJEMPLO ; obtiene estado de entradas piso ; pregunta si el bit 5 del piso4 =1 ; muestra letra a en lcd si inp_piso30 =1
124 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE EXPANSION DE PUERTOS DE ENTRADA CON REGISTRO DE DESPLAZAMIENTO PISO (4021B 74LS165)
(PLANO PISO)
Nota1: LPM controla hasta 4 registros PISO en cascada (expansin a 32 entradas con 4 PISO de 8 bit en cascada). La conexin en cascada de 2 ms PISO consiste en unir todas las entradas CK y LOAD de los registros PISO como se aprecia en la siguiente figura en la cual se realiza una expansin a 16 entradas con 2 registros PISO 4021B de bajo costo. La salida serial de datos del ltimo PISO (pin 3 del 4015B PISO 2) es la que se conecta con el pin entrada de datos del microcontrolador (PTC7. Sobra decir que slo se requieren 3 pines del PIC (CK, DATO, LOAD) para leer las 32 entradas (si conecta 4 PISO de 8 bit). Los pines de control (CK, DATO, LOAD) son seleccionados por el programador en el bloque 2 con la siguiente macro: CONFIG_PISO_4021B DATO_P3_PTD0,CK_P10_PTE1,LOAD_P9_PTE2 Nota 2: Aunque LPM2 controla indistintamente el 4021B 74LS165, se recomienda trabajar con tecnologa CMOS (40XXB) por efecto de Fan In, impedancia de entrada y baja disipacin de potencia. Nota 3: LPM2 permite multiplexar el pin DATO_P3 del registro PISO con cualquiera de los pines de salida del teclado matricial 4x4 o de la LCD (D4, D5, D6, D7, RS) excepto ENABLE.
125 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
ETIQUETA ,F16 ;lee datos tipo word de una tabla y devuelve el resultado en "REG_TABLAW ;lee el siguiente dato de la tabla y devuelve el resultado en "REG_TABLA" ;lee el siguiente dato de la tabla y devuelve el resultado en "REG_TABLAW"
READ_TABLA_SIG READ_TABLAW_SIG
EJEMPLO 1 LECTURA DE TABLA TIPO BYTE Nota:declare una variable llamada var1 tipo word en bloque 3 y la tabla1 en bloque 9 MOVLF 1,VAR1 READ_TABLA TABLA1,VAR1 reg_tabla ;muestra el dato de la tabla en la lcd ;dato en formato ascii EJEMPLO 2 LECTURA DE TABLA TIPO WORD Nota:declare una variable llamada var1 tipo word en bloque 3 y la tabla2 en bloque 9 MOVLF 2,VAR1 ;mueve la constante 2 a var1 TABLA1 READ_TABLAW SBCD_LCDF TABLA2 DATA DATA DATA DATA TABLA2,VAR1 ;extrae el tercer dato (letra c) de la tabla2 y lo guarda en la ;variable reg_tabla ;muestra el dato de la tabla en la lcd ;primer dato tipo word en decimal ;segundo dato tipo word en hexadecimal ;tercer dato tipo word en ascii ;cuarto dato tipo word en binario SBCD_LCDF REG_TABLA DATA "LPM2" ; mueve la constante 1 a var1 ;extrae el segundo dato "p" de la tabla1 y lo guarda en la variable
126 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(MTMR0)
;es un registro especial de 8 bit que controla la parte alta ;del periodo de timer0 ;es un registro especial de 8 bit que controla la parte baja ;del periodo de timer0 EXPLICACION ;act/des interrupcion tmr0 en baja prioridad en bloque 1 ;act/des interrupcion tmr0 en alta prioridad en bloque 1 ;asignacion de periodo de tiempo en bloque 2
;REGISTRO DESTINO:TMR0L
MACROS
ARGUMENTOS
INTERRUPCION_LP_TMR0 SI/NO INTERRUPCION_HP_TMR0 SI/NO CONFIG_INT_TMR0 BASE_TIEMPO PREESCALA,VALOR L3,L16 LOAD_TMR0 BASE_TIEMPO F3,F8/16 LOAD_TMR0F PREESCALA,VALOR RESET_TMR0 ACT_INT_TMR0 DES_INT_TMR0 CFITMR0 HPITMR0 LPITMR0 LOAD_TMR0
;carga un nuevo periodo de tiempo en timer0 e inicia conteo ;carga un nuevo periodo de tiempo en timer0 e inicia conteo
;reinicializa el timer0 y lo habilita para iniciar conteo ;habilita la interrupcion por timer0 ;deshabilita la interrupcion por timer0 ;acostar bandera de interrupcion tmr0 ;activar modo alta prioridad de interrupcion tmr0 ;activar modo baja prioridad de interrupcion tmr0 EJEMPLO 1 TMR0_500US ;carga nueva base de tiempo en timer0 segn tabla de constates TMR0
127 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;_________________________________________________________________________________________ EJEMPLO 3 ;CONFIGURAR EL TIMER A UN PERIODO PERSONALIZADO QUE NO SE ENCUENTRA EN LA TABLA DE CONSTANTES ;_________________________________________________________________________________________ ;POR EJEMPLO SI SE DESEA GENERAR UN PERIODO DE TIMER1 IGUAL A 10uS con cristal de 20MHz ;XTAL = 20Mhz ;CM=4/XTAL = 200nS ;TIEMPO DESEADO=10uS ;PREESCALA VALIDA de TIMER1 (0 A 3) ;SI TOMAMOS PREESCALA = 0 ENTONCES... ;VALOR DEL TIMER1 = {65536 - [TIEMPO DESEADO/(CM * 2^PREESCALA)]} ;VALOR DEL TIMER1 = {65536 - [10uS/(200nS * 2^0)]} ;VALOR DEL TIMER1 = {65536 - [10uS/(200nS * 2^0)]} ;VALOR DEL TIMER1 = 65486 Si el usuario requiere cargar este perodo puede usar la macro LOAD_TMR1 de la siguiente forma: LOAD_TMR1 0, 65486 ;donde 0 es la preescala y 65486 el valor de carga del timer1
128 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Significa que la interrupcin de Timer0 ocurrir cada 1 segundo y la interrupcin de Timer 1 cada 100 micro segundos. En las siguientes tablas se muestran los tiempos permitidos para cada uno de los timer (Timer 0, Timer 1). Observe que no todos los tiempos estn disponibles para todas las frecuencias de oscilacin del cristal. Por ejemplo no es correcto seleccionar un perodo de interrupcin de 2 segundos para el timer 0 con una frecuencia de oscilacin de 40 MHz (10MHz x 4 PLL).
129 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(MTMR1)
;es un registro especial de 8 bit que controla la parte alta ;del periodo de timer1 ;es un registro especial de 8 bit que controla la parte baja ;del periodo de timer1 EXPLICACION SI/NO SI/NO ;act/des de interrupcion por tmr1 en baja prioridad en bloque 1 ;act/des de interrupcion por tmr1 en alta prioridad en bloque 1 ;asignacion de periodo de tiempo en bloque 2
;REGISTRO DESTINO:TMR1L
MACROS
ARGUMENTOS
INTERRUPCION_LP_TMR1 INTERRUPCION_HP_TMR1
CONFIG_INT_TMR1 BASE_TIEMPO
PREESCALA,VALOR L2 , L16 LOAD_TMR1 BASE_TIEMPO ;carga un nuevo periodo de tiempo en timer1 e inicia conteo F2 ,F8/16 LOAD_TMR1F PREESCALA,VALOR ;carga un nuevo periodo de tiempo en timer1 e inicia conteo RESET_TMR1 ACT_INT_TMR1 DES_INT_TMR1 CFITMR1 HPITMR1 LPITMR1 LOAD_TMR1 ;reinicializa el timer1 y lo habilita ;habilita la interrupcion por timer1 ;deshabilita la interrupcion por timer1 ;acostar bandera de interrupcion tmr1 ;activar modo alta prioridad de interrupcion tmr1 ;activar modo baja prioridad de interrupcion tmr1 EJEMPLO TMR1_500US ;carga nueva base de tiempo en timer1 segn tabla de constantes TMR1
130 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
131 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
HABILITAR_PUSH_POP_TABLA SI/NO HABILITAR_PUSH_POP_INC_DECVAR SI/NO HABILITAR_PUSH_POP_LCD HABILITAR_PUSH_POP_ISD1 HABILITAR_PUSH_POP_ISD2 SI/NO SI/NO SI/NO
132 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CONTROL DE VELOCIDAD DE 8 MOTORES DC U 8 SERVOMOTES POR TIMER1 EN BAJA PRIORIDAD Nota1: el modulo PWM1 A PWM8 toma los tiempos de la int de TIMER1 en alta o baja prioridad aunque se recomienda baja prioridad para no cancelar el resto de int del pic debido a los periodos de tiempo tan pequeos que suele configurarse en timer1 al operar para el modulo modulo_servo_motor_dc_pwm_tmr1. Nota2: el parametro periodo_total se multiplica por la base de tiempo establecida en timer1 y este tiempo constituye el periodo de la seal pwm. Nota3: el parametro duty_cicle se multiplica por la base de tiempo establecida en timer1 y este tiempo constituye el ciclo util (tiempo en alto) de la seal pwm. Nota4: si el parametro num_pulsos en la macro setup_pwm es 65535 entonces se generarn pulsos indefinidamente. Nota5: si el parametro num_pulsos en la macro setup_pwm es 0 entonces se supender la generacin de pulsos. Nota6: cuando un ciclo pwm finaliza se desencadena una interrupcin en bloque 8. por ejemplo: si configura el canal pwm1 para generar 1000 pulsos con un periodo de 1ms, entonces despus de 1 seg el puntero de programa del microcontrolador se dirige a la etiqueta org_fin_pwm1 en el bloque 8, lo cual indica que puede cargar una nueva configuracin al canal pwm1. es importante que el usuario salga de esta interrupcin con la macro out_int_pwm1 y no con la macro out_int. tampoco puede emplear la macro OUT_IF para salir de esta interrupcin con una macro de comparacin IF. REGISTROS DESTINO DEL MODULO PWM, SERVOMOTOR Y MOTOR DC POR TIMER1 PWM1_PTD0 PWM2_PTD1 PWM3_PTD2 PWM4_PTD3 PWM5_PTD4 PWM6_PTD5 PWM7_PTD6 PWM8_PTD7 MACROS OUT_PWM1_PTD0 OUT_PWM2_PTD1 OUT_PWM3_PTD2 OUT_PWM4_PTD3 OUT_PWM5_PTD4 OUT_PWM6_PTD5 OUT_PWM7_PTD6 OUT_PWM8_PTD7 SETUP_PWM1 SETUP_PWM2 SETUP_PWM3 SETUP_PWM4 SETUP_PWM5 :PER_PWM1:2, CU_PWM1:2, PUL_PWM1:2 :PER_PWM2:2, CU_PWM2:2, PUL_PWM2:2 :PER_PWM3:2, CU_PWM3:2, PUL_PWM3:2 :PER_PWM4:2, CU_PWM4:2, PUL_PWM4:2 :PER_PWM5:2, CU_PWM5:2, PUL_PWM5:2 :PER_PWM6:2, CU_PWM6:2, PUL_PWM6:2 :PER_PWM7:2, CU_PWM7:2, PUL_PWM7:2 :PER_PWM8:2, CU_PWM8:2, PUL_PWM8:2 ARGUMENTOS EXPLICACION SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 SI/NO activacion/desactivacion en bloque 1 L16,L16,L16 L16,L16,L16 L16,L16,L16 L16,L16,L16 L16,L16,L16 ;num_pulsos, periodo_total, duty_cicle ;num_pulsos, periodo_total, duty_cicle ;num_pulsos, periodo_total, duty_cicle ;num_pulsos, periodo_total, duty_cicle ;num_pulsos, periodo_total, duty_cicle
133 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM1 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM2 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM3 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM4 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM5 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM6 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM7 ;SALIDA DE INT POR FIN DE CICLO EN CANAL PWM8 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM1 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM2 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM3 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM4 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM5 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM6 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM7 ;ETIQUETA ORIGEN DE INT POR FIN DE CICLO PWM8
134 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LBL1
LBL2
LBL3
LBL4 ORG28_FIN_PWM1:
135 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
para efectos prcticos puede afirmarse que la tensin que percibira un voltmetro en directa conectado entre el pin PTD0 y tierra de un PIC alimentado con VCC = 5V sera :
136 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Cu = Ciclo til = 100 uS Cm = Ciclo muerto = 400 uS T = Periodo = Cu + Cm = 500uS F= Frecuencia = 1/T = 2KHz VCC = Voltaje Positivo del PWM = 5V GND = Tierra = 0V
V PWM = VCC x Cu / T
Despejando
Cu = V PWM x T/ VCC
El perodo T es un tiempo que depende de la carga a controlar con el PWM, est en funcin de la inercia (mecnica de los motores u ptica de los dispositivos emisores de iluminacin como bombillas incandescentes o led), valores generalmente aceptados son: 100 uS para controlar motores de directa, 1mS para controlar led o bombillas incandescentes, 10mS para servomotores FUTABA FP-S148, FUTABA S3003, Hitec HS-300 y HOBBICO COMMAND CS-51.
137 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DEL CONTROL DE VELOCIDAD POR PWM DE DIRECTA DC OPTOACOPLADO Y DIRECCION MEDIANTE RELE DE DOBLE CONTACTO CONTROL DE MOTOR DC OPTOACOPLADOS (PLANO PWM)
La funcin de D1, D3 y D2 es proteger al transistor mosfet de posibles picos de tensin inversa generados por el rel y el motor. Se puede emplear cualquier MOSFET canal N o transistor bipolar NPN que tolere la potencia del motor. Se pueden conectar 2 mosfet en paralelo para duplicar la capacidad de corriente soportada. Importante: Se debe separar la tierra de alimentacin del PIC de la tierra de la etapa de potencia que alimenta al rele y el motor.
138 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SECCION 19 -
139 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
140 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Este circuito emplea un clsico de la electrnica conectado de tal forma de generar un tren de pulsos ajustable por medio del potencimetro del 10K. El transistor conectado a la salida amplia la capacidad de manejo de corriente. A medida que se gira el cursor del potencimetro el tren de pulsos es modificado con lo que se logra alterar el estado del servo el cual desplaza su eje en funcin del potencimetro. Es recomendable emplear un potencimetro lineal, para que el efecto sea igual en cualquier parte del recorrido del mismo. El circuito debe ser alimentado con 6v de corriente continua.
141 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Para mayor informacin de MOTORES SERVOS, DC, AC y PASO PASO referirse a SECCION 19 de la carpeta SECCIONES DIGIBOOK
142 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota1: el modulo_motor_paso_paso_tmr1 toma los tiempos de la int de timer1 en alta o baja prioridad, aunque funciona en los dos modos se recomienda operar en baja prioridad para no cancelar el resto de int del pic debido a los periodos de tiempo tan pequeos que suele configurarse en timer1 al operar para el modulo MOTOR_PASO_PASO. Nota2: el minimo tiempo entre pasos depende del motor paso a paso, pruebe inicialmente con 4ms Nota3: el modo burst activado (ametrallamiento de bobinas activada) implica que el eje del motor permanecer esttico y frenado, el motor comsumir energa. Nota4: el modo burst (lase berst) desactivado (ametrallamiento de bobinas desactivada) implica que el eje delmotor permanecer libre y no consumir energa el motor. Nota5: en condiciones iniciales las 4 bobinas estan en off y el modo burst est desactivado Nota6: cuando un ciclo de movimiento o reposo finaliza se desencadena una interrupcin en bloque 8. por ejemplo: si configura el motor paso paso1 para dar 200 pasos a la derecha con un tiempo entre pasos de 1 segundo, entonces despus de 200 segundos el puntero de programa del microcontrolador se dirige a la etiqueta ORG_FIN_M_PASO1 en el bloque 8, lo cual indica que puede cargar un nuevo movimiento o reposo al motor paso paso1. es importante que el usuario salga de esta interrupcin con la macro OUT_INT_M_PASO1 y no con la macro OUT_INT. tampoco puede emplear la macro OUT_IF para salir de esta interrupcin con una macro de comparacin if.
REGISTROS DESTINO DEL MODULO MOTOR PASO PASO POR TIMER1 FLAG_SENTIDO_MOTOR_PASO :sentido de giro de los 8 motores (0->izquierda, 1->derecha) FLAG_MODE_STOP_MOTOR_paso :estado stop de los 8 motores (0->girando, 1->parado) FLAG_BURST_MOTOR_PASO :modo burst de los 8 motores (0->burst desacativado, 1->burst activado) MOTOR_PASO1 :POINTER_M_PASO1,STEP_M_PASO1:2,DELAY_M_PASO1:2,FLAG_DIR_M_PASO1,FLAG_BURST_M_PASO1,FL AG_STOP_M_PASO1 MOTOR_PASO2 :POINTER_M_PASO2,STEP_M_PASO2:2,DELAY_M_PASO2:2,FLAG_DIR_M_PASO2,FLAG_BURST_M_PASO2,FL AG_STOP_M_PASO2 MOTOR_PASO3 :POINTER_M_PASO3,STEP_M_PASO3:2,DELAY_M_PASO3:2,FLAG_DIR_M_PASO3,FLAG_BURST_M_PASO3,FL AG_STOP_M_PASO3 MOTOR_PASO4 :POINTER_M_PASO4,STEP_M_PASO4:2,DELAY_M_PASO4:2,FLAG_DIR_M_PASO4,FLAG_BURST_M_PASO4,FL AG_STOP_M_PASO4 MOTOR_PASO5 :POINTER_M_PASO5,STEP_M_PASO5:2,DELAY_M_PASO5:2,FLAG_DIR_M_PASO5,FLAG_BURST_M_PASO5,FL AG_STOP_M_PASO5 MOTOR_PASO6 :POINTER_M_PASO6,STEP_M_PASO6:2,DELAY_M_PASO6:2,FLAG_DIR_M_PASO6,FLAG_BURST_M_PASO6,FL AG_STOP_M_PASO6 MOTOR_PASO7 :POINTER_M_PASO7,STEP_M_PASO7:2,DELAY_M_PASO7:2,FLAG_DIR_M_PASO7,FLAG_BURST_M_PASO7,FL AG_STOP_M_PASO7 MOTOR_PASO8
143 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
MODO_BURST : ACT_BURST / DES_BURST :se controla con la bandera flag_burst_m_paso1 a flag_burst_m_paso8 SI FLAG_BURST_M_PASO1 = 1 --> burst activado de motor1 SI FLAG_BURST_M_PASO1 = 0 --> burst desactivado de motor1 NMERO DE PASOS : este parametro es una constante en la macro setup_m_paso1 y es una variable en la macro setup_m_paso1f, determina el nmero de pasos del motor seleccionado. si este parametro es cero entonces el motor se detendr, si es 65535 el motor girar indefinidamente. TIEMPO ENTRE PASOS: este parametro es una constante en la macro setup_m_paso1 y es una variable en la macro setup_m_paso1f, determina el tiempo entre cada paso del motor seleccionado. el tiempo real obedece a la multiplicacin de este parametro por el periodo de tiempo de timer1. TIPO_MOTOR : motor_unipolar / motor_bipolar :se configura en config_motor_paso de bloque 2 TIEMPO_PAUSA : este parametro es una constante en la macro pausa_m_paso1 y es una variable en la macro pausa_m_paso1f, determina el tiempo que durara el motor seleccionado en estado de reposo. el tiempo real obedede a la multiplicacion de este parametro por el parametro base_tiempo por el periodo de tiempo en timer1 BASE_TIEMPO este parametro es una constante en la macro pausa_m_paso1 y es una variable en la macro pausa_m_paso1f, determina el tiempo que durara el motor seleccionado en estado de reposo. el tiempo real obedede a la multiplicacion de este parametro por el parametro tiempo_pausa por el periodo de tiempo de timer1.
MACROS EN BLOQUE 1 MOTOR_PASO1 MOTOR _PASO2 MOTOR_PASO3 MOTOR_PASO4 MOTOR_PASO5 MOTOR_PASO6 MOTOR_PASO7 MOTOR_PASO8 MACROS EN BLOQUE 2: CONFIG_MOTOR_PASO1 CONFIG_MOTOR_PASO2 CONFIG_MOTOR_PASO3 CONFIG_MOTOR_PASO4 CONFIG_MOTOR_PASO5 CONFIG_MOTOR_PASO6 CONFIG_MOTOR_PASO7 CONFIG_MOTOR_PASO8
EXPLICACION
:ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1 :ACTIVACION /DESACTIVACION EN BLOQUE 1
SI/NO :ACTIVACION /DESACTIVACION EN BLOQUE 1 ARGUMENTOS OUT_A_PTA5,OUT_B_PTE0,OUT_C_PTE1,OUT_D_PTE2,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR OUT_A_PTD0,OUT_B_PTD1,OUT_C_PTD2,OUT_D_PTD3,TIPO_MOTOR
144 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST TIEMPO_PAUSA,BASE_TIEMPO,MODO_BURST
145 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DETIENE TODOS LOS MOTORES CON BURST DESACTIVADO DETIENE TODOS LOS MOTORES CON BURST ACTIVADO
STOP_M_PASO1 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO1 : 1=MOTOR STOP STOP_M_PASO2 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO2 : 1=MOTOR STOP STOP_M_PASO3 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO3 : 1=MOTOR STOP STOP_M_PASO4 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO4 : 1=MOTOR STOP STOP_M_PASO5 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO5 : 1=MOTOR STOP STOP_M_PASO6 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO6 : 1=MOTOR STOP STOP_M_PASO7 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO7 : 1=MOTOR STOP STOP_M_PASO8 MODO_BURST DETIENE EL MOVIMIENTO DEL MOTOR CON UN MODO DE AMETRALLAMIENTO SE CONTROLA CON LA BANDERA FLAG_STOP_M_PASO8 : 1=MOTOR STOP CLEAR_ALL_M_PASO MOTORES CLEAR_M_PASO1 CLEAR_M_PASO2 CLEAR_M_PASO3 CLEAR_M_PASO4 CLEAR_M_PASO5 CLEAR_M_PASO6 CLEAR_M_PASO7 CLEAR_M_PASO8 ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS DE TODOS LOS 8
ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTABLECE EN OFF EL ESTADO DE LAS 4 BOBINAS ESTADO ESTADO ESTADO ESTADO DE DE DE DE LAS LAS LAS LAS BOBINAS BOBINAS BOBINAS BOBINAS EN EN EN EN REGISTRO REGISTRO REGISTRO REGISTRO
SET_STEP_M_PASO1 L2 ESTABLECE EL POINTER_M_PASO1 EL VALOR VLIDO ES DE 0 A 3 SET_STEP_M_PASO2 L2 ESTABLECE EL POINTER_M_PASO2 EL VALOR VLIDO ES DE 0 A 3 SET_STEP_M_PASO3 L2 ESTABLECE EL POINTER_M_PASO3 EL VALOR VLIDO ES DE 0 A 3 SET_STEP_M_PASO4 L2 ESTABLECE EL
146 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DE DE DE DE
EN EN EN EN
DE DE DE DE DE DE DE DE
EN EN EN EN EN EN EN EN
OUT_INT_M_PASO1 OUT_INT_M_PASO2 OUT_INT_M_PASO3 OUT_INT_M_PASO4 OUT_INT_M_PASO5 OUT_INT_M_PASO6 OUT_INT_M_PASO7 OUT_INT_M_PASO8 ORG_FIN_M_PASO1 ORG_FIN_M_PASO2 ORG_FIN_M_PASO3 ORG_FIN_M_PASO4 ORG_FIN_M_PASO5 ORG_FIN_M_PASO6 ORG_FIN_M_PASO7 ORG_FIN_M_PASO8
SALIDA DE INT POR FIN DE CICLO EN CANAL PWM1 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO2 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO3 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO4 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO5 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO6 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO7 SALIDA DE INT POR FIN DE CICLO EN CANAL M_PASO8 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO1 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO2 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO3 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO4 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO5 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO6 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO7 ETIQUETA ORIGEN DE INT POR FIN DE CICLO M_PASO8
147 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
148 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
(PLANO MPPB)
Nota: En los puntos OUT PIC A, B, C, D se conectan las salidas del PIC que controlarn al motor, se recomienda que +V del motor sea independiente de +5VDC del PIC. SECUENCIA MOTOR BIPOLAR Estos motores necesitan la inversin de la corriente que circula en sus bobinas en una secuencia determinada. Cada inversin de la polaridad provoca el movimiento del eje en un paso, cuyo sentido de giro est determinado por la secuencia. Para revertir el sentido de giro simplemente se deben ejecutar las secuencias en modo inverso. PASO 1 2 3 A 1 1 0 TERMINALES B C 0 1 0 0 1 0
D 0 1 1
149 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: En los puntos OUT PIC A, B, C, D del driver ULN 2803 se conectan las salidas del PIC que controlarn al motor, este driver puede controlar hasta 2 motores paso a paso unipolares. Otra opcin es emplear el driver ULN 2003 que solamente tiene 7 compuertas internamente, es decir, slo maneja un motor paso a paso unipolar.
150 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
151 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SECUENCIA WAVE DRIVE (BAJO TORQUE) MOTOR UNIPOLAR En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento ms suave. La contrapartida es que al estar solo una bobina activada, el torque de paso y retencin es menor. PASO 1 2 3 4 Bobina A 1 0 0 0 Bobina B 0 1 0 0 Bobina C 0 0 1 0 Bobina D 0 0 0 1
152 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
COMO SELECCIONAR UN MOTOR PARA UNA APLICACION? Un MOTOR es un transductor de electricidad a movimiento, En el momento de seleccionar un motor para una aplicacin especfica se deben considerar aspectos tales como: 1. PAR (TORQUE) kg/cm oz/in: El torque o fuerza de un motor es la capacidad de arrastrar mayor o menor peso a una determinada velocidad. 2. VELOCIDAD (RPM): Alude al nmero de vueltas en una unidad de tiempo, suele expresarse en rpm (revoluciones o vueltas por minuto) o rps (revoluciones por segundo). 3. ARRANQUE: Est relacionado con la forma de control y corriente inicial que demanda el motor en el arranque o encendido inicial. 3. FRENADO: Alude a la forma, tiempo o caractersticas de frenado del motor. 4. INERCIA: La inercia mecnica de un motor tiene que ver con el tiempo para arrancar si se encuentra en reposo o el tiempo en detenerse totalmente si se encuentra en movimiento. 5. MODO DE CONTROL: Alude al nmero de terminales de control y al proceso como tal para variar parmetros tales como velocidad, sentido de giro, arranque y frenado. 6. VIDA UTIL: Es el tiempo promedio de vida del motor. 7. COSTO Y MANTENIMIENTO: Relacionado con el valor comercial, disponibilidad comercial del motor y modos de mantenimiento preventivo y/o correctivo que requiera. 8. CONSUMO DE ENERGIA (Watt): Relacionado con la potencia (corriente y voltaje) que consume en una unidad de tiempo. 9. TAMAO: Son las dimensiones del motor, usualmente en robtica microcontrolada se prefieren pequeos, mas eso depende de la aplicacin. 10. RUIDO ACUSTICO Y ELECTROMAGNTICO: Al emplear bobinas, todo motor genera un ruido electromagntico que puede afectar el comportamiento del dispositivo de control (uC). 11. PRECISION: Alude a la capacidad de precisar el nmero de vueltas o grados desde su posicin inicial a la final. MOTORES EN ROBOTICA 1. MOTORES DE DC LOW POWER: Son motores de corriente directa con dos terminales (positivo y negativo) que suelen trabajar mximo a 12VDC y hasta 1 amperio de corriente dependiendo del Par (torque o fuerza). Suelen ser econmicos, tienen alta velocidad y bajo torque. Se encuentran en los juguetes, grabadoras, etc.
153 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
154 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
MACROS DE CONTROL DE POTENCIA DE ALTERNA MONOFASICA PAC1 A PAC8 CON BASE DE TIEMPO EN TIMER1
CONVERSOR AC AC CONTROLADO POR ANGULO DE DISPARO DE TRIAC PARA TENSIONES MONOFSICAS DE 120VAC Y 220VAC A 50/60 Hz
(MPAC)
Nota1: Los mdulos PAC1 a PAC8 toma los tiempos de la int de timer1 en alta o baja prioridad, aunque funciona en los dos modos se recomienda operar en baja prioridad para no cancelar el resto de int del pic debido a los periodos de tiempo tan pequeos que suele configurarse en timer1 al operar para el modulo pac1 a pac8. Nota2: El tiempo muerto TOFF se controla a travs de los registros o variables tipo byte TOFF_PAC1 a TOFF_PAC8. El dato de esta variable se multiplica por la base de tiempo establecida en timer1 y esto constituye el tiempo muerto del semiciclo en el gate del triac de cada una de las 8 salidas PAC. Nota3: Si el valor de la variable TOFF_PAC es 255 entonces el triac permanecer en estado off indefinidamente pues es el tiempo off mximo. Nota4: si el valor de la variable TOFF_PAC es 0 entonces el triac permanecer en estado ON (mxima tensin de salida) durante todo el semiciclo. Nota5: Mientras se asigne el timer1 al control PAC no estar disponible la interrupcin ORG13_INT_TMR1 ni la interrupcin ORG2_INT_PTB1 en bloque 8. Nota6: Dado que la seal de cross over es inyectada al PIC por el pin PTB1 el mdulo PAC configura automticamente esta interrupcin. Nota7: El usuario debe desactivar manualmente el pull up del puerto B debido a la seal de cross over que se inyecta al pin PTB1. Esto se logra mediante la macro DES_PULL_UP en el bloque 6. MACROS ASOCIADAS AL MODULO PAC MACROS : OUT_PAC1_PTD0 OUT_PAC2_PTD1 OUT_PAC3_PTD2 OUT_PAC4_PTD3 OUT_PAC5_PTD4 OUT_PAC6_PTD5 OUT_PAC7_PTD6 OUT_PAC8_PTD7 INTERRUPCION_LP_TMR1 CONFIG_INT_TMR1 DES_PULL_UP ARGUMENTOS : EXPLICACION SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 SI/NO :activacion /desactivacion en bloque 1 PERIODO_TIMER :periodo del timer en bloque2 :desactivacion pull up en bloque 6 EJEMPLO Active timer1 en low priority con una base de tiempo = 1mS con xristal de 20 a 40 MHz preferiblemente (tambin funciona con otros cristales inferiores para lo cual se recomienda operar el tiempo de timer1 a mnimo 500uS). En el bloque 6 de condiciones iniciales desactive pull up de portb. Con una base de tiempo en timer1 = 1mS se obtiene mximo 8 pasos de voltaje de salida (8.33mS/1mS). Para modificar mediante pulsadores externos en tiempo de ejecucin el ngulo de disparo o tiempo muerto TOFF, activamos la interrupcin de PTB4 y PTB5 con flanco de bajada y alta prioridad y programamos en bloque 8 de la siguiente forma:
155 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;_________________________________________________________________________________________ ORG4_INT_PTB4_FL: INCVAR TOFF_PAC1,0,9,1 ;incrementa tiempo muerto, es decir, ;disminuye el promedio de voltaje ;de salida OUT_INT ;_________________________________________________________________________________________ ORG6_INT_PTB5_FL: DECVAR TOFF_PAC1,0,9,1 ;decrementa tiempo muerto, es decir, ;aumenta el promedio de voltaje de ;salida OUT_INT
(POWER AC - PAC)
(MPAC)
Con el mdulo Power AC (PAC) de LPM2 se puede controlar y regular la tensin de hasta 8 cargas monofsicas de 120VAC 220VAC de alterna como motores, ventiladores, taladros, licuadoras, cargas resistivas como planchas, bombillas incandescentes (no se puede controlar la luminosidad de lmparas fluorescente pues operan con otro principio de funcionamiento). La tensiones que se pueden controlar son monofsicas bifilar, es decir, una fase y el neutro a 120VAC 2 fases pero una de las dos se toma como el neutro. El mdulo PAC (POWER AC) CONTROL DE POTENCIA DE ALTERNA POR PWM genera un pulso (TOFF Tiempo de apagado del TRIAC) programable de 0 a 8.33mS (semiciclo de la seal de la red de 60Hz) por los pines PTD0 a PTD7, en total son 8 salidas PAC configurable para control de ngulo de conduccin de un TRIAC optoacoplado para seales de 120VAC 220VAC. Cada una de las 8 salidas puede tener un tiempo de apagado del TRIAC diferente mltiplo entero de la base de tiempo programada en Timer 1 en un rango de 0 a 255 (8 bit tipo byte). Las 8 salidas del mdulo POWER AC son compartidas con el mdulo PWM DC, es decir, si el usuario activa OUT_PWM1_PTD0 en el bloque 1 entonces no podr activar OUT_PAC1_PTD0 pues ambas comparten el PIN de salida PTD0.
156 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Por ejemplo, si configura INTERRUPCION_LP_TMR1 SI OUT_PAC1_PTD0 SI CONFIG_INT_TMR1 TMR1_1MS DES_PULL_UP MOVLF 4,TOFF_PAC1
;activacin Timer 1 en bloque1 ;activacin pac en bloque1 ;base de tiempo, en bloque 2 ;desactivacin pull up portb en bloque 6 ;programacin de tiempo muerto de la ;seal en cualquier banco del 6 al 9 PTD0 genera un pulso con flanco de bajada (TOFF) cada vez que el circuito cross over (detector de cruce por cero de la seal senoidal de 120VAC 220VAC por interrupcin de PTB1 en baja prioridad) presenta un cambio de flanco. La seal del cross over entra al microcontrolador por el pin PTB1 configurado automticamente como interrupcin. El Pulso generado por PTD0 controla el gate de un TRIAC. El ancho o tiempo del pulso de apagado TOFF para este ejemplo se calcula as: TIEMPO DEL PULSO TOFF POR PTD0: TOFF = 4 x 1mS = 4mS
157 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Vpwm(AC) = Vrms x TON / PERIODO SEMICICLO Vpwm(AC) = 120Vrms x 4.33 mS / 8.33mS Vpwm(AC) = 62.3 VAC
Si TOFF es programado con un tiempo superior a 8.33 mS el TRIAC estar siempre apagado (corte) y se obtendr la mnima tensin de salida. Si TOFF es programado con un tiempo = 0 el TRIAC estar siempre encendido y se obtendr la mxima tensin de salida.
158 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CROSS ZERO)
159 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
La tensin umbral de los led comerciales de 3 5mm es de 2 voltios aproximadamente, la tensin umbral de los led internos de los optotriac MOC 30XX es de 1.2 a1.5 Voltios. La corriente que se recomienda a travs del led interno del optrotriac es de 10mA aproximadamente. En los optotriac serie 30XX la primera X indica el voltaje mximo soportada en la salida, por ejemplo 3040 significa que soporta hasta 400V, la segunda X indica la corriente que puede circular por la salida, por ejemplo 3040 soporta 30mA, 3041 soporta 15mA, 3042 soporta 10mA y 3043 soporta 5mA. Como norma general compre MOC 30X0 si todos valen lo mismo. La red snubber se utiliza para proteger los elementos activos de conmutacin (MOSFET, IGBT, TRIAC etc.) de las
160 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
161 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
162 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
163 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CONV_ANALOGO_DIGITAL_8BIT SI/NO CONV_ANALOGO_DIGITAL_10BIT SI/NO CONFIG_CAD A1_D7,FM_4 CAD CH0-CH7 CADF F8 CAD_FAST SLM35_LCD SVOLT_LCD SMVOLT_LCD CFIADC IFLM35IL IFLM35DL IFLM35MAL IFLM35MEL IFLM35IF IFLM35DF FACTOR FACTOR
;acuesta bandera de conversin a/d :L8 (0 A 100C) SI TEMP = L8->SIGUIENTE RENGLON :L8 (0 A 100C) SI TEMP <> L8->SIGUIENTE RENGLON :L8 (0 A 100C) SI TEMP > L8->SIGUIENTE RENGLON :L8 (0 A 100C) SI TEMP < L8->SIGUIENTE RENGLON :F8 (0 A 100C) SI TEMP = F8->SIGUIENTE RENGLON :F8 (0 A 100C) SI TEMP <> F8->SIGUIENTE RENGLON
164 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
:convierte convercad en temperatura en grados centigrados y lo devuelve en la variable REG_GCENT DE 0 A 500 grados centigrados con un sensor LM35
EJEMPLO Conversor A/D como voltmetro y termmetro con sensor LM 35, configurar interrupcin por Timer0 cada segundo en baja prioridad, conversor CAD: A3_D5,FM_4 en bloque 2. ORG12_INT_TMR0 LINE_COL_LCD L2,C1 CAD CH0 SLM35_LCD CHAR_LCD "g" CHAR_LCD "-" IFLM35MAL 33,LBL_TMR0_1 CLR_LCD T_LCD ALARMA TEMP BLINK_LCD 3 LBL_TMR0_1 CAD CH1 SVOLT_LCD X1 CHAR_LCD "-" IFMVOLTMAL 4500,LBL_TMR0_2 TLCD ALARMA VOLT BLINK_LCD 3 LBL_TMR0_2 CAD CH3 SBCD_LCDF OUT_INT
;convierte por ch1 ;muestra voltaje real X1 (mutiplicado por 1) ;compara si volt real > 4500mv ;si es mayor de 4500 mV llega aqui
CONVERCAD
165 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
166 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
167 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
A4_D2_RPN: Seleccin de 4 canales analgicos, es decir, se puede conectar hasta 4 sensores o seales analgicos. D2 implica que 2 pines sern I/O digitales, RPN implica que PTA2 ser el voltaje de referencia negativo y PTA3 ser el voltaje de referencia positivo. La mxima diferencia de potencial entre Vref- y Vref+ ser +VCC (5.5V) FM_1: Seleccin de velocidad de conversin: es la velocidad ms alta. La seleccin de resolucin de conversin (10 bit) u (8 bit) se realiza directamente en el bloque 1. Cuando selecciona B10 en bloque 1 la resolucin es 10 bit y el resultado de la conversin es guardado en el registro de 16bit tipo Word llamado CONVERCAD y en dos registros tipo byte llamados CADH Y CADL. CONVERCAD = CADH:CADL (en CADH los 2 bit mas significativos MSB, en CADL los 8 bit menos significativos LSB). Cuando selecciona B8 en bloque 1 la resolucin es 8 bit y el resultado de la conversin es guardado en el registro CONVERCAD que esta vez se comporta como un registro tipo byte. CONVERCAD = CADL Cuando no se selecciona Voltaje de referencia entonces por defecto VrefNeg = GND y Vref Pos = +VCC
Donde n es el nmero de bit de resolucin del conversor (8 10), por ejemplo: Si Vref Neg = 0, Vref Pos= 5V y n= 10bit Rv = 5/1023 = 4.88mV Si Vref Neg = 0, Vref Pos= 5V y n= 8bit Rv = 5/255 = 19.6mV El objetivo del mdulo conversor anlogo-digital es generar un nmero decimal equivalente a la seal analgica aplicada en la entrada. Por ejemplo, si en una entrada analgica (AN0 = CH0 = PTA0) se introduce una tensin de 2.5 Voltios entonces el conversor configurado a 10 bits y el PIC alimentado a 5 Voltios proporciona un nmero decimal = 512: #Decimal = 2.5V / Rv #Decimal = 2.5V/4.88mV #Decimal = 512.29 (se toma la parte entera) #Decimal = 512
168 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Vr LSB = Rvol = (|Vref Neg| + Vref Pos) / (2n 1) Rvol= 5/255 = 19,6mV a 8 bit y VCC =5V Rvol= 5/1023 = 4.88mV a 10 bit y VCC =5V
Donde n es el nmero de bit de salida del conversor (8, 10, 12, 16)
Vref+ y Vref- son tensiones impuestas por el diseador, recuerde que la diferencia de potencial entre ellas no puede exceder la alimentacin positiva del uC. Ntese que la resolucin de voltaje puede mejorarse (disminuir su valor) decrementando la diferencia de potencial entre los voltajes de referencia positivo y negativo, esto puede ser til para algunos sensores cuya salida vara en el orden de 1 a 10 mV tales como electrodos en aplicaciones de biomedicina o sensores de deformacin de materiales (strain gauges). Si el diseador no desea modificar el rango predefinido de voltaje de entrada de un uC (0 a 5V) puede optar por acondicionar la seal de los sensores antes de introducirlas al conversor del PIC. Esto puede hacerse mediante etapas con amplificador operacional o por medio de WheaStone Bridge (lase puente wiston) que convierten leves cambios de resistencia en voltaje. 5. Tiempo de Conversin (Tc): Tiempo en uS mS que tarda un ADC en un ciclo de conversin. Inicia con la orden Star Convertion y finaliza con el evento End of Convertion. Lo ideal es que este tiempo tienda a cero, pues aplicaciones tales como procesamiento de audio y video requieren altas frecuencias de muestreo. Por ejemplo, en el PIC 18FXXXX este tiempo es configurable y depende de la frecuencia del cristal, temperatura ambiente, tiempo de propagacin de los dispositivos internos del conversor, etc. El tiempo de conversin depende de: 1. Amplifier Settling Time (TAMP) (Tiempo de establecimiento del amplificador del sample and holder del SAR) 2. Holding Capacitor Charging Time (TC) (Tiempo de carga del condensador del sample and holder) 3. Temperature Coefficient (TCOFF) (Coeficiente de Temperatura) TIEMPO MINIMO DE CARGA DEL CONDENSADOR DEL SAMPLE AND HOLDER CHOLD = 120 pF
169 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Tc =32.06 uS
la Frecuencia de muestreo o conversin mxima es Fm= 1/Tc Fm = 1/32,06 uS
Fm = 31.191 KHz
6. Frecuencia mxima de muestreo (Fm): Est determinada por el tiempo de conversin Fmax=1/Tc. Lo ideal es que tienda a infinito, esto determinar la capacidad del ADC de procesar y convertir seales anlogas de alta velocidad, tales como audio, vdeo, voz en tiempo real, radiofrecuencia, microondas, etc. Para el PIC 18F452 esta frecuencia es configurable y depende del tiempo de conversin, bit de resolucin y la frecuencia del cristal. La frecuencia mxima es Fm = 31 KHz 7. Error de Exactitud (E): Es un error que indica la variacin positiva o negativa expresada en LSB. Este valor alude al rango mximo de error que el fabricante garantiza que puede existir en una conversin. Por ejemplo el PIC 18FXXXX tiene un error de exactitud de +- LSB. Esto implica que el valor digital de salida podra desviarse mximo +- LSB por debajo o por encima del valor binario ideal. Es decir, si el valor anlogo en la entrada (Vin) es 1 voltio, el nmero binario de salida (Nb) debera ser
DIGIBOOK - SECCION 2 TUTORIAL LPM2 GAMA ALTA 18FXX2 Nb = Vin/ Rv Nb ideal = 1V / 0.0196V = 51,02 = 51 (se toma la parte entera) Para este caso, la salida binaria real podra oscilar entre 50 y 52
8. Impedancia de entrada (Zin): Alude a una resistencia virtual conectada a tierra que percibira la seal o tensin aplicada al pin de entrada del conversor A/D. Los uC se caracterizan por tener una alta impedancia de entrada (Tecnologa CMOS en el orden de los M) lo cual garantiza que no representar una carga (load) para la seal que se aplique, es decir, toda la tensin de la seal se transferir al conversor A/D. Por otro lado, una alta impedancia de entrada incrementa la sensibilidad al ruido elctrico ambiental lo cual puede distorsionar la medicin de la seal, esto se puede evitar mediante el blindaje de conductores desde el sensor hasta el PIC. 9. Capacitancia de Entrada (Cin): Alude a un condensador virtual conectado a tierra que percibira la seal o tensin aplicada al pin de entrada del conversor A/D. Para los uC 18FXXXX es de 5pF. Entre ms pequeo sea el condensador mayor ser la frecuencia de corte de la seal de entrada, es decir, mayor frecuencia de entrada admitida al conversor. 10. Corriente de Fuga (I Leakage): Alude a una corriente muy pequea por lo general (+-100nA para el PIC 18F) que circula desde la entrada del conversor A/D hacia tierra debido a que la impedancia de entrada no es infinita. Nota: Para una mayor informacin acerca de teora de conversores A/D y D/A referirse a la SECCIN 5 de la carpeta SECCIONES DIGIBOOK. Un listado comercial de dispositivos sensricos de bajo costo se encuentra en la SECCIN 1. Para obtener mayor informacin acerca de la teora y funcionamiento de sensores remitirse a la SECCION 11.
A continuacin se ilustra la conexin de dos sensores de temperatura (LM35 / LM335), un sensor de luminosidad LDR (fotorresistencia) y un sensor de presin Motorola a un PIC 18F452. Note los condensadores y resistencias que funcionan como filtros pasabajos de la seal proporcionada por los sensores. La alimentacin de todos estos sensores es de +5V pero el rango de tensin de salida vara desde 0 Volts a 2 Volts para los sensores de temperatura y desde 0.2V 4.8 Volts para el sensor de presin, por lo cual no es necesario activar los voltajes de referencia del PIC (pin PTA2 y PTA3). Los data sheet pdfs de cada uno de estos sensores se encuentra en la carpeta DATA SHEET contenida en el CD DIGITAL BOOK.
171 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
172 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
173 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
174 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LPM2 decodifica hasta 5 receptores infrarrojos integrados. Considerando que el pin para el pulsador y led indicador de grabacin no requiere entrada por interrupcin del PIC entonces puede ser asignado manualmente por el programador mediante la macro CONFIG_INFRAROJO en el bloque 2: CONFIG_INFRAROJO MAX_TECLAS_5,PUL_LED_IR_PTA4, CONTROL_TV_EMERSON
Significa MAX_TECLAS_5: Se pueden grabar hasta 5 cdigos IR en la memoria EEPROM de dato, el mximo de cdigos o teclas que se pueden grabar es 51. PUL_LED_IR_PTA4: Se asigna el pin PTA4 para la conexin simultnea del led indicador de grabacin y pulsador de grabacin. Se sugiere seleccionar PTA4 debido a la limitacin que presenta por la salida de drenador abierto pues el led indicador se conecta en modo sink (enciende con ceros). CONTROL_TV_EMERSON: Alude a la marca comercial del control remoto, la versin agosto/2007 slo decodifica la marca emerson. PRINCIPIO DE FUNCIONAMIENTO: Al presionar cualquier tecla del control remoto IR el gestor automtico de interrupciones (handler interruptions) dirigir el puntero de programa (pointer program) hacia la etiqueta (ORG15_INT_1_IR, ORG16_INT_4_IR_1, ORG17_INT_4_IR_2, ORG18_INT_4_IR_3 u ORG19_INT_4_IR_4) del bloque 8 y en la variable REG_TECIR encontrar el valor (1 a 51) de la tecla presionada dependiendo del orden de grabacin en la EEProm de dato. Considerando que no es posible independizar la activacin/desactivacin de la interrupcin por los pines RB4 RB7 (el PIC controla estas 4 interrupciones con una sola orden o bit de habilitacin RBIE/RBIF del registro especial INTCON) el usuario debe saber que si se activa en el bloque1 INTERRUPCION_HP_4_IR_PTB4_7 INTERRUPCION_LP_4_IR_PTB4_7 entonces los pines PTB4 A PTB7 quedarn configurados como entradas por interrupcin esperando que se conecte el dato de los 4 receptores infrarrojos. Si la aplicacin slo requiere 1 receptor IR entonces no active INTERRUPCION_4_IR_PTB4_7 si no INTERRUPCION_1_IR_PTB1 y utilice la entrada PTB1 como entrada de DATO. Si la aplicacin requiere 4 receptores IR entonces no active INTERRUPCION_1_IR_PTB1 si no INTERRUPCION_4_IR_PTB4_7 y utilice las entradas PTB4 a PTB7 como entrada de dato. Si la aplicacin requiere de 5 receptores IR entonces active INTERRUPCION_1_IR_PTB1 y INTERRUPCION_4_IR_PTB4_7 y utilice las entradas PTB2 y PTB4 a PTB7 como entrada de dato
175 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
176 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
El sensor IR Sharp metlico tiene los pines ilustrados en la figura anterior mirndolo de frente, es decir, mirando al fotodiodo o fototransistor interno de la cpsula. Lo mismo es aplicable al sensor con encapsulado plstico. Algunos sensores con encapsuado plstico tienen una estructura metlica exterior, en este caso, los pines del mismo corresponden al orden del encapsulado totalmente metlico. Se debe conectar a tierra la estructura metlica que cubre los sensores infrarrojos para evitar interferencia electromagntica.
177 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
178 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
179 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;LPM2 decodifica hasta 5 receptores infrarrojos integrados de seales provenientes de ;cualquier control remoto infrarrojo de uso domstico como TV, equipo de sonido,etc. ;El dato decimal (1 a 51) de la tecla recibida est en la variable REG_TECIR. ;Nota: El dato en la variable REG_TECIR es decimal (No ASCII), por lo tanto no va entre ; comillas. ;Nota: la constante MAX_TECLAS es de MAX_TECLAS_1 a MAX_TECLAS_51 ; cada tecla ocupa 5 bytes de memoria eeprom de dato iniciando en la dir 0
;_________________________________________________________________________________________ ; EJEMPLO 1 ;El siguiente ejemplo decodifica e identifica la tecla presionada desde un control remoto ;infrarrojo de TV cualquier electrodomstico y lo muestra en LCD ;Active INTERRUPCION_HP_1_IR_PTB1 en bloque 1. ;Active Pull Up de PORTb en bloque 6 (si no puede activar pull up de portb entonces debe ;emplear resistencia de pull up externas de 4.7K en la entrada dato del receptor IR) ; cdigo en bloque 8 de interrupciones
;ORG18_INT_1_IR IFFIL REG_TECIR,1,LBL1 ;SI Tecla 1 del control ; TLCD " TECLA 1 " ;LBL1 IFFIL REG_TECIR,2,LBL2 ;SI Tecla 2 del control ; TLCD " TECLA 2 " ;LBL2 IFFIL REG_TECIR,10,LBL3 ;SI Tecla 10 del control ; TLCD " TECLA 10 " ;LBL3 OUT_INT
180 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
--------------------------------------------------
;ORG18_INT_1_IR IFFIL REG_TECIR,1,LBL1 ;SI Tecla 1 del control ; TLCD " TECLA 1 " ;LBL1 IFFIL REG_TECIR,2,LBL2 ;SI Tecla 2 del control ; TLCD " TECLA 2 " ;LBL2 IFFIL REG_TECIR,10,LBL3 ;SI Tecla 10 del control ; TLCD " TECLA 10 " ;LBL3 OUT_INT
181 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LPM2 decodifica hasta 5 teclados PS2 sincrnico (NO teclado USB) de computadora. Decodifica todas las teclas del 0 al 9, de la A mayscula hasta la Z mayscula, F1 A F12, ESCAPE, SPACE, BACK, TAB. Considerando que la lnea DATO de cada uno de estos teclados no requiere entrada por interrupcin del PIC entonces puede ser asignada manualmente por el programador mediante la macro CONFIG_TECPS2 en el bloque 2: CONFIG_TECPS2 DATO_TEC1_PTB3,DATO_TEC2_PTNN,DATO_TEC3_PTNN,DATO_TEC4_PTNN, DATO_TEC5_PTNN Significa DATO_TEC1_PTB3: la lnea de dato del teclado PS2 nmero 1 se conecta al pin PTB3 (no tiene interrupcin) del pic. Recuerde que si selecciona un pin que no pertenezca al puerto B entonces deber conectar una resistencia de Pull Up externa de 4.7K. DATO_TEC2_PTNN: la lnea de dato del teclado PS2 nmero 2 a PS2 nmero 5 se conecta al pin PTNN, es decir, no se asigna al PIC pues slo se conectar un teclado PS2 al PIC (el teclado nmero 1). La lnea CK de cada teclado PS2 est predeterminada (NO SE PUEDE MODIFICAR) de la siguiente manera: CK DEL PRIMER TECLADO: PTB2 CK DEL SEGUNDO TECLADO: PTB4 CK DEL TERCER TECLADO: PTB5 CK DEL CUARTO TECLADO: PTB6 CK DEL QUINTO TECLADO: PTB7 Nota: Todas las entradas del Teclado PS2 (dato y ck) rquieren resistencias de pull up, por ello debe activar Pull Up de PORTB en bloque 6 mediante la macro ACT_PULL_UP. Si no puede activar pull up de portb (por ejemplo si activ el mdulo Potencia de AC PAC) entonces debe emplear resistencia de pull up externas de 4.7K en la entrada dato y ck de cada teclado) Al presionar cualquier tecla el gestor automtico de interrupciones (handler interruptions) dirigir el puntero de programa (pointer program) hacia la etiqueta (ORG20_INT_1_TECPS2, ORG21_INT_4_TECPS2_1, ORG22_INT_4_TECPS2_2, ORG23_INT_4_TECPS2_3 u ORG24_INT_4_TECPS2_4) del bloque 8 y en la variable REG_TECPS2 encontrar el valor (en ascii) de la tecla presionada. Considerando que no es posible independizar la activacin/desactivacin de la interrupcin por los pines RB4 RB7 (el PIC controla estas 4 interrupciones con una sola orden o bit de habilitacin RBIE/RBIF del registro especial INTCON) el usuario debe saber que si se activa en el bloque1 INTERRUP_HP_4_TECPS2_CK_PTB4_7 INTERRUP_LP_4_TECPS2_CK_PTB4_7 entonces los pines PTB4 A PTB7 quedarn configurados como entradas por interrupcin esperando que se conecte el CK de 4 teclados PS2. Si la aplicacin slo requiere 1 teclado PS2 entonces no active INTERRUP_4_TECPS2_CK_PTB4_7 si no INTERRUP_HP_1_TECPS2_CK_PTB2 y utilice la entrada PTB2 como entrada de reloj y se sugiere PTB3 como entrada de la lnea de dato (debido al pull up interno). Si la aplicacin requiere de 4 teclados PS2 entonces no active INTERRUP_HP_1_TECPS2_CK_PTB2 si no active INTERRUP_4_TECPS2_CK_PTB4_7 y utilice las entradas PTB4 a PTB7 como entrada de reloj respectivamente. Si la aplicacin requiere de 5 teclados PS2 entonces active INTERRUP_HP_1_TECPS2_CK_PTB2 y
182 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
183 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
184 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
5 Pin DIN
PS/2
NOTA: Este diagrama de pines corresponde al plug (macho) del teclado de PC, NO equivale a los pines del Jack conector hembra. Invertir los pines VCC con GND daa irremediablemente el microcontrolador interno del teclado.
185 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
186 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Si requiere mayor informacin del Teclado PS2 remitirse a la SECCION 6 del DIGIBOOK.
187 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;_________________________________________________________________________________________ ; EJEMPLO 1 ;El siguiente ejemplo decodifica e identifica la tecla presionada desde un teclado PS2 ;de computadora y lo muestra en LCD. ;Active INTERRUP_HP_1_TECPS2_CK_PTB2 en bloque 1. ;Active Pull Up de PORTb en bloque 6 ( si no puede activar pull up de portb entonces debe ;emplear resistencia de pull up externas de 4.7K en la entrada dato y ck del teclado) ; ; -------------------------------------------------cdigo en bloque 8 de interrupciones
;ORG23_INT_1_TECPS2 LINE_COL_LCD L1,C1 ;POSICIONA LCD CHAR_LCDF REG_TECPS ;MUESTRA TECLA PRESIONADA ; IFFIL REG_TECPS2,"A",LBL1 ;SI RECIBE LETRA A ; TLCD " LETRA A " ;LBL1 IFFIL REG_TECPS2,"1",LBL2 ;SI RECIBE NUMERO 1 ; TLCD " NUMERO 1" ;LBL2 IFFIL REG_TECPS2,TEC_ESCAPE,LBL3 ;SI TECLA ESCAPE
188 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;_________________________________________________________________________________________ ; EJEMPLO 2 ; SIMULACION EN PROTEUS DEL TECLADO PS2 DE COMPUTADORA ;El siguiente ejemplo permite detectar datos provenientes de un teclado PS2 y conexin UART ;RS232 para simulacin de teclado PS2 desde Proteus. Con el control "virtual terminal" de ;Proteus el PIC recibir datos UART desde el teclado conectado al PC y simularn los datos ;recibidos de un teclado PS2 conectado al PIC. ;Active INTERRUP_HP_1_TECPS2_CK_PTB2 e INTERRUPCION_HP_RXUART_PTC7 en bloque 1. ;Active Pull Up de PORTb en bloque 6 (si no puede activar pull up de portb entonces debe ;emplear resistencia de pull up externas de 4.7K en la entrada dato y ck del teclado) ;Configure la velocidad de transmisin de datos del mdulo UART de LPM2 y el ;"virtual terminal" de proteus a la misma tasa de baudios. ; ; ;ORG14_INT_RXUART: MOVFFF ; GOTO ; -------------------------------------------------cdigo en bloque 8 de interrupciones REG_RXUART,REG_TECPS2 ;cargar dato uart en reg_tps2 ORG23_INT_1_TECPS2 ;salto a interrupcion ps2 --------------------------------------------------
;ORG23_INT_1_TECPS2 IFFIL REG_TECPS2,"A",LBL1 ;SI RECIBE LETRA A ; TLCD " LETRA A " ;LBL1 IFFIL REG_TECPS2,"1",LBL2 ;SI RECIBE NUMERO 1 ; TLCD " NUMERO 1 " ;LBL2 IFFIL REG_TECPS2,TEC_F2,LBL3 ;SI TECLA F2 ; TLCD " TECLA F2 " ;LBL3 OUT_INT ;Nota: La tecla F1 no puede ser simulada en proteus pues abre las ayudas del mismo ;
189 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;ORG28_INT_TEC_MAT IFFIL REG_TECMAT,1,LBL1 ;SI Tecla 1 del TECLADO ; TLCD " TECLA 1 " ;LBL1 IFFIL REG_TECMAT,2,LBL2 ;SI Tecla 2 del TECLADO ; TLCD " TECLA 2 " ;LBL2 IFFIL REG_TECMAT,10,LBL3 ;SI Tecla 10 del TECLADO ; TLCD " TECLA 10 " ;LBL3 OUT_INT
190 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LPM2 soporta la programacin de pines I/O con funciones simultneas. Por ejemplo si en un proyecto se requiere conectar un teclado matricial con una o ms LCD se recomienda compartir los 4 pines de datos de la LCD con los 4 pines de salida del teclado matricial como se aprecia en la siguiente figura. Al presionar cualquier tecla el algoritmo gestor automtico de interrupciones (handler interruptions) dirigir el puntero de programa (pointer program) hacia la etiqueta ORG_28_INT_TEC_MAT del bloque 8 y en la variable REG_TECMAT encontrar el valor (1 a 16 1 a 12) de la tecla presionada, luego se ejecuta una pausa de 300mS (para eliminar el efecto antirrebote del teclado).
191 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE CONEXIN DE LCD Y TECLADO MATRICIAL COMPARTIENDO CIERTOS PINES DE CONTROL (PLANO TMAT)
192 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
MACROS TRANSCEIVER TRF2p4 HP DR1 PTB1 EN MODO SHOCK BURST TRF 2.4 GHZ (MTRF)
El transceiver TRF de 2.4GHz emplea modulacin GFSK (modulacion por desplazamiento de frecuencia gaussiana), protocolo: IEEE 802.15.4 alcance maximo: 280m en exteriores y 50m en interiores a 250kbps, tasa de transferencia:1mbps/250kpbs, se seleccion 250kbps por mayor alcance. El codigo recibido y transmitido (payload) de 25 byte se encuentra en los registros REG_TRF1 a REG_TRF25 tipo byte. Se debe desactivar pull up de portb en bloque 6 pues la interrupcion por el pin DR1 del transceiver se activa con flanco de subida, es decir, el estado idle (reposo) de la entrada dr1 del pic debe estar en cero lgico. La limitacin radica en la baja corriente en alto y bajo de la salida DR1 del transceiver (Io = 0.5ma), la cual no vence el nivel de voltaje impuesto por el pull up interno del pic mediante una resistencia de aproximadamente 3kohm. CONFIGURACIN TRF 2.4 (PARA CAMBIAR ESTA CONFIGURACIN VER EL ARCHIVO MACROS DE LPM) en la configuracin actual se activa un canal de rx, 40 bit de direccion, 200 bit de payload, velocidad 250kbps, maxima potencia de salida (0db), xristal = 16mhz,direccion destino de receptor1 = 5,4,3,2,1, direccion destino de receptor 2 = 10,8,6,4,2. crc activo a 16 bit, modo shock burst activado, canal 10 de transmision a 2410 mhz (2.41ghz). #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE #DEFINE BYTE_18_TEST3 BYTE_17_TEST2 BYTE_16_TEST1 BYTE_15_DATA2_W BYTE_14_DATA1_W BYTE_13_ADD2_5 BYTE_12_ADD2_4 BYTE_11_ADD2_3 BYTE_10_ADD2_2 BYTE_9_ADD2_1 BYTE_8_ADD1_5 BYTE_7_ADD1_4 BYTE_6_ADD1_3 BYTE_5_ADD1_2 BYTE_4_ADD1_1 BYTE_3_ADDR_CRC 142 H'8E' B'10001110' VALOR DEFAULT 8 B'00001000' VALOR DEFAULT 28 B'00011100' VALOR DEFAULT 200 B'11001000' # BITS DE DATOS PAYLOAD RX2 200 B'11001000' # BITS DE DATOS PAYLOAD RX1 10 8 6 4 2 5 4 3 2 1 163 ;B'101000-11' BIT 7-2 = # BITS ADDR1 Y ADDR2=40 ;BIT1= CRC 16B(1) / CRC 8BIT (0) ;BIT0= ENABLE CRC(1) / DISABLE(0) ;DIRECCION DE RX 2
;DIRECCION DE RX 1
#DEFINE
BYTE_2_VARIOS B'01001111' BIT7=2CH RX(1)/1CH RX(0) BIT6=MODE SHOCK BUTRST(1)/DIRECT MODE(0), BIT5=1MBPS(1)/250KBPS(0) BIT 4-2 SELEC FRECUENCY XTAL BIT 1-0=POWER TX BYTE_1_CHANNEL B'00010100' BIT 7-1= SELEC CHANNEL TX 1 A 128 BIT1 = RX(1)/TX(0)
#DEFINE
193 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
: EN BLOQUE 2
INIT_TRF inicializa modulo trf MODE_RX_TRF establece modo recepcion de un canal START_TX_TRF configura inicio de tx en modo shock burst STAND_BY_TRF establece modo stand by del trf TX_TRF L8 transmite constante de 8 bit TX_TRFF F8 transmite variable tipo byte DIR5,DIR4,DIR3,DIR2,DIR1 SET_DIR_TRF L8 ,L8 ,L8 ,L8 ,L8 ;establece la direccion del transceiver destino DIR5,DIR4,DIR3,DIR2,DIR1 SET_DIR_RX_TRFF F8 ,F8 ,F8 ,F8 ,F8 TX_PAYLOAD_TRF ;establece la direccion del transceiver destino
;transmite la direccion destino y la trama payload establecida en los 25 bytes reg_trf1 a ;reg_trf25 al transceiver con la direccion destino establecida previamente en la macro ;set_dir_trf set_dir_trff
194 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;invoca sub de tx de payload ;establece modo recepcin DE S U B R U T I N A S EN BLOQUE 9 ;establece la direccion del transceiver destino ;transmite direccion destino y payload establecido ;en REG_TRF1 a REG_TRF25
5,4,3,2,1
195 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
REG_TRF25 REG_TRF24 REG_TRF23 REG_TRF22 REG_TRF21 REG_TRF20 REG_TRF19 REG_TRF18 REG_TRF17 REG_TRF16 REG_TRF15 REG_TRF14 REG_TRF13 REG_TRF12 REG_TRF11 REG_TRF10 REG_TRF9 REG_TRF8 REG_TRF7 REG_TRF6 REG_TRF5 REG_TRF4 REG_TRF3 REG_TRF2 REG_TRF1
196 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE CONEXIN ENTRE PIC Y TRANSCEIVER TRF 2.4 GHZ (PLANO TRF)
197 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
MACROS DTMF DECODIFICADOR DE TONOS DUAL MULTIFRECUENCIA CON CIRCUITO INTEGRADO MT 8870 (MDTMF)
MACRO : ARGUMENTOS : EXPLICACION
INTERRUPCION_DTMF1_HP_STD_PTB0 SI/NO :act de decodificador dtmf 1 por ptb0 en alta prioridad INTERRUPCION_DTMF2_HP_STD_PTB1 SI/NO :act de decodificador dtmf 2 por ptb1 en alta prioridad INTERRUPCION_DTMF2_LP_STD_PTB1 SI/NO :act de decodificador dtmf 2 por ptb1 en baja prioridad CONFIG_DECOD_DTMF1 Q1_P11_PTA2,Q2_P12_PTA3,Q3_P13_PTA4,Q4_P14_PTA5 CONFIG_DECOD_DTMF2 Q1_P11_PTA2,Q2_P12_PTA3,Q3_P13_PTA4,Q4_P14_PTA5 CONSTANTES DEL DECODIFICADOR DTMF MT8870 CODIGO DTMF_1 DTMF_2 DTMF_3 DTMF_4 DTMF_5 DTMF_6 DTMF_7 DTMF_8 DTMF_9 DTMF_0 DTMF_A DTMF_N VALOR EQUIVALENTE 1 2 3 4 5 6 7 8 9 10 11 12
| | | | | | | | | | | |
;LPM2 decodifica datos DTMF de un MT8870, el dato DTMF (1 a 12) recibido se encuentra ;en la variable REG_RXDTMF1 REG_RXDTMF2. ;El dato en la variable REG_RXDTMF1 es decimal (No ASCII), por lo tanto no va entre ;comillas. ;Active Pull Up de PORTb en bloque 6 (si no puede activar pull up de portb entonces debe ;emplear resistencia de pull up externas de 4.7K en la entrada de PTB0 PTB1). ;_________________________________________________________________________________________ ; EJEMPLO 1 ;El siguiente ejemplo identifica el dato DTMF recibido desde un decodificador MT8870 ;y lo muestra en LCD.
198 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;ORG29_INT_DECOD_DTMF1 IFFIL REG_RXDTMF1,DTMF_AST,LBL1 ;SI DTMF ASTERISCO ; TLCD " ASTERISCO " ;LBL1 IFFIL REG_RXDTMF1,DTMF_8,LBL2 ;SI DTMF 8 ; TLCD " DTMF 8 " ;LBL2 IFFIL REG_RXDTMF1,DTMF_NUM,LBL3 ;SI DTMF NUMERAL ; TLCD " NUMERAL " ;LBL3 OUT_INT ;Proteus simula directamente un decodificador MT8870 implementado con swich y pulsador.
199 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Al presionar cualquier tecla del telfono fijo o celular el gestor automtico de interrupciones (handler interruptions de
200 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
TECLA PRESIONADA 0 1 2 3 4 5 6 7 8 9 * #
CDIGO GENERADO 1010 0001 0010 0011 0100 0101 0110 0111 1000 1001 1011 1100
201 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
202 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
203 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
204 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
205 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
TXED_UARTF F8 ;envia el dato de la dir establecida por f8 por uart TXAED_UART L8 ;envia el ascii 0-9 de la dir establecida por l8 por uart TXAED_UARTF F8 ;envia el ascii 0-9 de la dir establecida por f8 por uart TXBCDED_UART L8 ;envia el bcd de la dir establecida por l8 por uart TXBCDED_UARTF F8 ;envia el bcd de la dir establecida por f8 por uart ; CADENA ,PAUSA ;MENS_UART MENSAJE,L16 ;envia cadena de caracteres por uart con pausa en milisegundos entre cada caracter ; ;TEXTO_UART ; ;TUART ;ENTER_UART CADENA MENSAJE CADENA MENSAJE ;envia cadena de caracteres por uart sin pausa entre CARACTERES
;envia cadena de caracteres por uart sin pausa entre ;caracteres y envia enter al final para cambio de linea ;enviar el ascii 13 equivalente al enter por uart
206 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DIR1 ,DIR2 ,PAUSA TXRAM_UART 0-1535,0-1535,L16 ;envia elementos de la memoria ram por uart desde dir1 de la ram hasta dir2 de la ram con pausa en milisegundos entre cada caracter SMVOLT_UART FACTOR ;transmite por uart voltaje en (mvolt)multiplicado por un factor despues de una conversion SMVOLT_UART FACTOR ;transmite por uart voltaje en (mvolt)multiplicado por un factor despues de una conversion DIR1 ,DIR2 ,PAUSA TXV0_UART 0-1535,0-1535,L16 ;envia elementos del vector0 por uart desde dir1 de la ram hasta dir2 de la ram con pausa en milisegundos entre cada carcter. ;ACT_INT_UART ;activar interrupcion del receptor uart por ptd7 ;DES_INT_UART ;desactivar interrupcion del receptor uart por ptd7 ;CFIRXUART ;acuesta bandera interrupcion uart ;SFIRXUART ;levanta bandera interrupcion uart ;HPIRXUART ;establece int uart en alta prioridad ;LPIRXUART ;establece int uart en baja prioridad
; EJEMPLO 1 ; SIMULACION EN PROTEUS DE RECEPCIN DE DATOS UART RS232 ;El siguiente ejemplo decodifica e identifica el dato proveniente de una conexin UART a ;un PC u otro perifrico con este protocolo como un enlace ZigBee, GPS, GPRS, etc. ;Active INTERRUPCION_HP_RXUART_PTC7 en bloque 1. ;Configure la velocidad de transmisin de datos del mdulo UART de LPM2 y el ;"virtual terminal" de proteus a la misma tasa de baudios. ; ; -------------------------------------------------cdigo en bloque 8 de interrupciones
;ORG14_INT_RXUART IFFIL REG_RXUART,"A",LBL1 ;SI RECIBE LETRA A ; TLCD " LETRA A " ;LBL1 IFFIL REG_RXUART,"1",LBL2 ;SI RECIBE NUMERO 1 ; TLCD " NUMERO 1 " ;LBL2 IFFIL REG_RXUART,TEC_F2,LBL3 ;SI TECLA ESCAPE ; TLCD "TECLA F2" ;LBL3 OUT_INT ;Nota: Otra forma opcional de detectar la letra "A" es mediante su cdigo ASCII 65, es decir, ;en el ejemplo anterior : IFFIL REG_RXUART,65,LBL1
207 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CONFIGURACIN DEL MODULO UART RS 232 PARA COMUNICACIN HALF DUPLEX PC-PIC Por ejemplo, la configuracin CONFIG_UART BAUDIOS_19200 ;en bloque 2 significa que Selecciona 19200 baudios de velocidad de transmisin, es decir, transmite hasta 1920 bytes o caracteres en un segundo: Nmero de Bit de cada trama = 10: BIT START en formato 8N1.
CONFIGURACION PERSONALIZADA DE TASA DE BAUDIOS PARA MODULO UART INTERNO DEL PIC POR PTC6 Y PTC7
Si una aplicacin especfica requiere una tasa de transmisin en baudios que no est disponible en las tabla anterior entonces se puede calcular la configuracin de la macro CONFIG_UART en el bloque 2 de la siguiente manera: CONFIG_UART BRGH,X
Donde BRGH puede ser BRGH0 BRGH1 dependiendo de si la solucin a X es la ecuacin 1 2 en la siguiente figura.
208 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
En el ejemplo anterior X en modo BRGH = 0 (Ecuacin 1 ) = 25 X en modo BRGH = 1 (Ecuacin 2 ) = 103 Los valores vlidos de X estn comprendidos entre los enteros de 0 a 255 y se toma el que tenga menor parte decimal pues sta constituye el error de transmisin UART. Por ejemplo, si se aproxima 25.042 se toma la parte entera 25 y la parte decimal es .042 y este valor es menor que la parte decimal de 103.166. Por lo tanto lo correcto es X = 25 y modo BRGH0. Los argumentos de la macro en bloque 2 quedan as: CONFIG_UART BRGH0,25
En el ejemplo anterior ambas ecuaciones podran ser tiles pues al reemplazar el 103 de la ecuacin en modo BRGH1 tambin se obtendra una tasa de baudios de 9615 lo cual implica un error del 0.16%, es decir, que otra forma alternativa de configuracin es: CONFIG_UART BRGH1,103
209 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
FUNCIONAMIENTO DE LA INTERRUPCION UART: Al enviar cualquier dato desde el PC hacia el PIC el gestor automtico de interrupciones (handler of interruptions) ( lase hndoel of interruptions) dirigir el puntero de programa (pointer program) hacia la etiqueta ORG14_INT_RXUART del bloque 8 y en la variable REG_RXUART encontrar el valor ASCII del dato recibido. En la carpeta Proyectos Visual Basic 6.0 del CD DIGITAL BOOK se encuentra la carpeta UART Visual PIC, en la cual est el cdigo fuente y archivo ejecutable .exe de un programa en Visual Basic 6.0 que se comunica con un microcontrolador por el puerto serial. En la comunicacin entre un microcontrolador y un PC por el puerto serial con el protocolo RS232 y con el conector DB9 slo se emplean 3 pines: GND (PIN5 DEL CONECTOR DB9 PUERTO SERIAL) CON (GND PIN 12,31 DEL PIC) TX (PIN 3 DEL CONECTOR DB9 PUERTO SERIAL) CON (RX PIN 26 DEL PIC MEDIANTE UN MAX 232) RX (PIN 2 DEL CONECTOR DB9 PUERTO SERIAL) CON (TX PIN 25 DEL PIC MEDIANTE UN MAX 232)
210 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
19200,N,8,1
211 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
SIGNIFICADO DE LOS PINES DE CONECTOR DB9 DEL PUERTO SERIAL PIN 4: DTR: (Data Terminal Ready) El DTE indica que est preparado. PIN 6: DSR: (Data Set Ready) El DCE indica que est preparado. PIN 7: RTS: (Request to Send) Solicita permiso para transmitir. PIN 9: RI: (Ring Indicator) Deteccin de llamada. PIN 8: CTS: (Clear to Send) El DCE autoriza la transmisin solicitada. PIN 3: TXD: (Transmit Data) Lnea de transmisin de datos serie.
212 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Para mayor informacin del puerto serial y protocolo RS232 referirse INTERFACES DEL COMPUTADOR.DOC en la carpeta SECCIONES DIGIBOOK.
a SECCION 7 - PUERTOS E
213 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO DE CONEXIN HALF DUPLEX RS232 ENTRE PIC Y PC MEDIANTE UART MAX232 (PLANO UART)
214 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PLANO ECONOMICO OPCIONAL DE CONEXIN HALF DUPLEX RS232 ENTRE PIC Y PC MEDIANTE TRANSISTORES SIN USAR MAX 232
(PLANO UART)
215 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
216 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CONEXIN USB SERIAL UART ENTRE PIC Y PC MEDIANTE CONVERTIDOR DE CABLE DE CELULAR (PLANO USB UART)
EL CABLE CA42 de nokia tiene incorporado un integrado (FT232 por ejemplo) convertidor de USB a Serial UART pero no trabaja con los niveles RS232 convencionales (+15V a -15V). El puerto usb del PC poporciona 5VDC a 100mA mximo con lo cual se alimenta el microcontrolador interno del cable. La salida serial UART del integrado internos es de 0 a 3.3VDC la cual se puede acoplar directamente al PIC sin necesidad de MAX232. Para ciertas aplicaciones de bajo consumo de potencia es posible alimentar el PIC y sus perifricos con la misma tensin de puerto USB del PC, siempre y cuando consuma menos de 100mA. Tenga precaucin de no hacer un cortocircuito pues podra averiar el puerto USB del PC o en su defecto la misma board. No olvide pedir el CD del driver para windows del cable CA42 de nokia, esto es necesario para crear un puerto COM virtual en el administrador de dispositivos de windows. El nmero del COM virtual puede cambiar dependiendo de en cual puerto USB se inserte. Una vez creado el COM virtual cualquier lenguaje como visual Basic, C++ puede enviar y recibir datos como lo hara con un COM fsico del PC. La conexin de cable del celular USB se puede hacer con cualquier salida UART de las 4 que LPM2 dispone en el PIC 18F452: UART, UART0,UART1,UART2
217 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
NOTA: TAMBIN PUEDE USARSE EL CABLE DKU5 COMO REEMPLAZO DEL CA-42
218 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
XBP - PIC
VDD 2 RX 3 TX 4 5 6 7 8 9 10
VDD DOUT DIN/CONFIG DO8 RESET PWM0/RSSI PWM1 RESERVED DTR/SLEEP_RQ/DI8 GND XBee - Pro
AD0/DIO0 AD1/DIO1 AD2/DIO3 AD3/DIO3 RTS/AD6/DIO6 ASSOC/AD5/DIO5 VREF ON/SLEEP CTS/DIO7 AD4/DIO4
20 19 18 17 16 15 14 13 12 11 220
TX/PWR
219 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Los comandos AT son instrucciones codificadas que conforman un lenguaje de comunicacin entre el hombre y un terminal modem. Se denominan as por la abreviatura de attention. La finalidad principal de los comandos AT es la comunicacin con mdems, aunque la telefona mvil GSM tambin ha optado este lenguaje como estndar con el fin de comunicarse con sus terminales. Este juego de instrucciones permite realizar acciones tales como realizar llamadas de datos o de voz, leer y escribir en la agenda de contactos, mandar y recibir mensajes SMS, y otras configuraciones del terminal.
baudios=4800 Paridad=Ninguna Num Bit datos= 8 Bit Stop = 1 ------------------- Configuracin del control MSCOMM de visual basic 6.0 ----------------------------------Mscomm1.setting = 115200,N,8,1 PARA PROTOCOLO FBUS Mscomm1.setting = 9600,N,8,1 PARA PROTOCOLO MBUS MSComm1.InputLen = 1 MSComm1.RThreshold = 1 MSComm1.CommPort = Numero del Puerto virtual creado en administrador de dispositivos al conectar el CELULAR al puerto USB puerto serial mediante el conector pop-port de nokia CA-42 DKU5
Nota1: Todo COMANDO AT finaliza con el dato hexadecimal 0D 0A, es decir, CR LF (retorno de carro y feed line cambio de lnea) lo cual equivale al enter. Nota2: Para enviar un mensade de texto con el nokia debe terminar en Ctrol+Z que es el dato decimal 26
Trama_Inicio_Nokia = "55-55-55-55-55-55-55-55-1E-00-10-D7-00-08-00-01-00-12-04-00-01-43-0B-8F" EN HEXADECIMAL ------------------- COMANDOS AT BASICOS ---------------------------- RESPUESTA DEL CELULAR ---------AT Comando ms bsico ATI FABRICANTE ATA Respuesta de llamada. ATH Colgado de llamada de voz AT+CHUP Colgado de llamada de dato y voz para nokia AT+CBC Nivel de carga de la batera. 95% de carga. 1,95 cargador conectado, 95% de carga AT+CPAS Estado del telfono MARCANDO, LLAMADA ACTIVA AT+CGMI Identificacin del fabricante OK NOKIA OK OK OK 0,95 cargador desconectado,
COLGADO/DESCOLGADO,
FABRICANTE
220 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
el celular envia "" cuando se cuelga la llamada. el celular envia "RING" cuando llega una llamada.
NO CARRIER RING
ENVIAR MENSAJES DE TEXTO A UN NUMERO AT+CMGF=1 ESTABLECER MODO DE SMS (0= MODO PDU, 1 = MODO TEXTO) AT+CMGS="3107295940" ESTABLECER NUMERO DESTINO una vez al darle enter queda el siguente prompt ">" y luego se escribe el mensaje CONTROL Z = ENVIAR EL DECIMAL 26, EN VISUAL ES MSCOMM1.OUTPUT = Chr(26) Y LO ENVIA EL CELULAR RESPONDE +CMGS: 52 DONDE 52 ES EL NUMERO DE CARACTERES A ENVIAR
AT+CMGF=1 ESTABLECER MODO DE SMS (0= MODO PDU, 1 = MODO TEXTO) AT+CMGW="3107295940" ESTABLECER NUMERO DESTINO una vez al darle enter queda el siguente prompt ">" y luego se escribe el mensaje CONTROL Z = ENVIAR EL DECIMAL 26, EN VISUAL ES MSCOMM1.OUTPUT = Chr(26) EL CELULAR RESPONDE +CMGW: 11 DONDE 11 ES LA POSICION EN LA CARPETA
BORRAR MENSAJE DE LA CARPETA ENVIADOS AT+CMGF=1 AT+CMGD=1 ATZ&F ESTABLECER MODO DE SMS (0= MODO PDU, 1 = MODO TEXTO) ESTABLECER POSICION DE MENSAJE A BORRAR LEER MENSAJES DE TEXTO EN LA CARPETA RECIBIDOS LEIDOS reset a celular para cancelar error de recepcion de mensajes de texto
establecer modo de sms (0= modo pdu, 1 = modo texto) GRUPO DE MENSAJES QUE SE QUIEREN LEER ("REC UNREAD"(RECIBIDOS NO LEIDOS) "REC READ"(RECIBIDOS LEIDOS) "STO UNSENT"(ALMACENADOS SIN ENVIAR) "STO SENT"(ENVIADOS)
221 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
LEER MENSAJES DE TEXTO NUEVO MANUALMENTE RESET A CELULAR PARA CANCELAR ERROR DE RECEPCION DE ESTABLECER MODO DE SMS (0= MODO PDU, 1 = MODO TEXTO) DEVUELVE: +CMGL: 8,"REC UNREAD","3107374112",,"08/05/27,22:00:25DONDE HOLA ES EL MENSAJE, AUTOMATICAMENTE CONVIERTE EL
LEER MENSAJES DE TEXTO NUEVO AUTOMATICO RESET A CELULAR PARA CANCELAR ERROR DE RECEPCION DE
AT+CMGF=1 ESTABLECER MODO DE SMS (0= MODO PDU, 1 = MODO TEXTO) AT+CNMI=1,2,0,0,0 HABILITA EL MODO AUTOMATICO DE RECEPCION DE MENSAJES. AL LLEGAR UN MENSAJE AUTOMTICAMENTE SE MUESTRA CON LA FECHA Y EL NUMERO. AL APAGAR EL CELULAR SALE DE ESTE MODO.
AT+CCFC: [Call Forwarding Number] - Gestiona el Desvo de Llamadas. Permite redireccionar llamadas entrantes a otro nmero de telfono. - Sintaxis: AT+CCFC=<razn>,<modo>,<nmero>,<tipo>,<clase>,[<subaddr>,<satype>,[<time>]]
<razn> Razn por la cual entra en accin el desvo de llamada. 0 - incondicional 1 - si telfono ocupado 2 - si no obtiene respuesta 3 - si inalcanzable 4 - todos los desvos de llamadas 5 - todos los desvos de llamadas condicionales <modo> Estado del desvo de llamada. 0 - desahabilitado 1 - habilitado 2 - query status 3 - registro
222 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
## Comandos de Control del Telfono ## AT+CPAS: [Phone Activity Status] 1) AT+CPAS=? - Muestra la implementacin del comando. - Sintaxis: AT+CPAS=? | +CPAS: (lista de estados soportados) 0 - Ready (Encendido pero inactivo) 1 - Unavailable (No disponible) 2 - Unknown (Desconocido) 3 - Ringing (Llamada entrante en proceso) 4 - Call in progress (Llamada saliente en proceso) 5 - Asleep (Dormido) - Respuesta: +CMGD: (0,2,3,4) 2) AT+CPAS - Informa del estado de actividad del telfono. - Sintaxis: AT+CPAS | +CPAS: <estado> - Respuesta: +CPAS: 0, en estado normal de inactividad. +CPAS: 3, si el telfono atacado est sonando a causa de una llamada entrante. Microcontroladores y celulares Nokia GSM. La mayora de celulares Nokia tienen conexiones F-Bus y M-Bus que permiten la conexin al PC e incluso a un microcontrolador. Esto permite realizar control de algunas funciones del telfono o tambin la actualizacin de nuevo firmware. Por medio del bus se pueden mandar y recibir SMS. Protocolo M-Bus. M-Bus es un bus bi-direccional para transmitir y recibir datos desde el telfono. Es muy lento (9600bps) and only half-duplex. Solamente utiliza dos pines del celular, uno de tierra y otro de datos. El M-Bus corre a 9600bps, 8 bits de datos, paridad impar y un bit de parada.
223 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Se pudo establecer que algunos celulares de marcas Siemens, Sony, Sagem, Nokia entre otros respondan a comandos AT. La primera prctica que se hizo para probar los comandos AT fue con un Nokia 3220. Para esto se tuvo que adquirir un cable de datos CA42 o DKU5 fabricados para los celulares Nokia con conector PopPort.
Este cable de conexin USB lleva internamente un integrado que genera un puerto COM Virtual en el equipo para comunicarse con el celular siguiendo el protocolo RS232. VB6 interactuara directamente con el celular a travs del control MSComm el cual deba ser configurado para trabajar a una velocidad de transferencia de 115.000 bps, un bit de parada, 8 bits de datos, ningn bit de paridad y control de flujo XON-XOFF. Para la prctica con el A56, se tom un cable de datos CA42 y se parti ya que el conector era Pop-port especialmente diseado para Nokia. Ese cable lleva al celular tres hilos; uno de transmisin, otro de recepcin y la referencia GND. Cables CA42
224 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Despus de haber analizado la conexin de pines con un manos libres se hicieron las conexiones para los datos. Cable de datos para siemens.
Cuando entra una llamada se recibe la palabra RING. Cuando esto pasaba se enviaba el comando ATA + Enter ante el cual el celular contestaba la llamada. El NO CARRIER al final significa que el usuario que inici la llamada colg. Algo importante que debe ser especificado aqu es que a diferencia de los celulares Nokia, la velocidad de transmisin para los Siemens es 9.600 bps. Prueba comandos AT con siemens A56
Dentro de los comandos que fueron probados exitosamente se encuentran: AT ATA ATH AT+CBC AT+CGMI AT+CGMM AT+CGMR AT+CGSN Comando ms bsico. Respuesta de llamada. Colgado de llamada. Nivel de carga de la batera. Identificacin del fabricante. Identificacin del modelo. Identificacin de la revisin. Identificacin del serial del equipo.
225 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
1. Unir pines 2 y 3 para reconocimiento de manos libres. 2. La salida de audio del PC (jack verde usualmente) se conecta al pin 9 y 10 del Pop-Port (tierra al 9 y cualquiera de los 2 canales stereo al 10). 3. La entrada de audio del PC (jack rosado usualmente) se conecta al pin 11 y 12 (tierra al 11 y cualquiera de los 2 canales stereo del micrfono al 12) TRAMA INICIAL PARA ACTIVAR COMANDOS AT EN CELULARES NOKIA POP-PORT #55#55#55#55#55#55#55#55#1E#00#10#DA#00#06#00#01#00#00#01#60#0F#BD se debe enviar estos datos hexadecimales a 115200 baudios. EL CELULAR RESPONDE : #1E#10#00#7F#00#02#DA#00#C4#6D indicando que se activ el modo comandos AT Nota: Los celulares siemes A56 no requieren la trama de inicio, entran en modo AT automticamente.
226 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Nota: Los recomendados son Nokia 6070, 6020, se han presentado inconvenientes con el nokia 3220, pierde seal.
227 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
;ACTIVO MODO VEL EN KM/H PARA QUE ENVIE LA TRAMA ;DESACTIVO MODO VEL EN KM/H PARA QUE NO ENVIE LA TRAMA ;TRAMA INICIAL ENVIADA POR EL GPS
El sistema de posicionamiento global mediante satlites GPS supone uno de los ms importantes avances tecnolgicos de las ltimas dcadas. Diseado inicialmente como herramienta militar para la estimacin precisa de posicin, velocidad y tiempo, se ha utilizado tambin en mltiples aplicaciones civiles. Por razones de seguridad, las seales GPS generadas para uso civil se someten a una degradacin deliberada (error), al tiempo que su emisin se restringe a una determinada frecuencia. El Sistema de Posicionamiento Global es un sistema de localizacin, diseado por el Departamento de Defensa de los Estados Unidos con fines militares para proporcionar estimaciones precisas de posicin, velocidad y tiempo; operativo desde 1995. El sistema consta de una constelacin de 24 satlites cada uno dotado con relojes automticos, computadoras, emisores y receptores de radio, estaciones terrenas que monitorean constantemente a cada uno de ellos. Los satlites artificiales del Sistema de Posicionamiento Global permiten que un receptor de GPS conozca de forma exacta los puntos de referencia para calcular la latitud, longitud, altitud y tiempo exacto con aproximaciones del orden de metros, incluso centmetros con el uso de estaciones diferenciales en tierra. Los receptores, a partir de los mensajes que provienen de cada satlite visible, calculan distancias y proporcionan una estimacin de posicin y tiempo.
2
El receptor mide el tiempo que tardan en llegar las seales enviadas desde los diferentes satlites (A, B y C); se necesitan tres satlites para determinar la latitud y la longitud, mientras que un cuarto satlite (D) es necesario para determinar la altitud y velocidad; (Fig.1). Esto es posible porque en todo momento cualquier punto de la Tierra recibe cobertura de los satlites.
228 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
PRINCIPIO DE FUNCIONAMIENTO DEL SISTEMA GPS El sistema GPS funciona gracias a la constelacin NAVSTAR, formada por 24 satlites situados a unos 20.000 kilmetros de altura. Este sistema tiene por objetivo calcular la posicin de un punto cualquiera en un espacio de coordenadas (x,y,z)3, partiendo del clculo de las distancias del punto a un mnimo de tres satlites cuya localizacin es conocida. La distancia entre el usuario (receptor GPS) y un satlite se mide multiplicando el tiempo de vuelo de la seal emitida desde el satlite por su velocidad de propagacin. Para medir el tiempo de vuelo de la seal de radio es necesario que los relojes de los satlites y de los receptores estn sincronizados, pues deben generar simultneamente el mismo cdigo. La desviacin en los relojes de los receptores aade una incgnita ms que hace necesario un mnimo de cuatro satlites para estimar correctamente las posiciones (Fig. 2). Figura 2. Principio de funcionamiento del sistema GPS.
Estos satlites llevan a bordo un reloj atmico de gran precisin y emiten seales personalizadas que indican la hora en que fueron emitidas. El receptor en tierra reconoce el satlite que ha emitido la seal, determina, el tiempo que ha tardado en llegar y calcula as la distancia que le separa de l. Una vez que el receptor GPS se ha contactado con cuatro satlites, es capaz de determinar su posicin y altura. Dado que el viaje de la seal es tan rpido y el control de su retardo debe ser tan preciso (un error de un milisegundo genera desviaciones de cientos de kilmetros), exige una crucial sincronizacin perfecta entre satlite y receptor. Los receptores GPS no cuentan con relojes atmicos pero son capaces de ajustar los desfases mediante una medicin adicional sobre otro satlite, que al final de todas los convierte en relojes de precisin atmica. Cada satlite transmite su posicin y el tiempo exacto 1000 veces por segundo a la tierra, donde cada milisegundo un receptor computarizado puede calcular a qu distancia se encuentra de un satlite en particular que se encuentra a la vista, multiplicando la velocidad de la luz por el tiempo transcurrido de la seal del satlite al receptor GPS y al combinar las seales de varios satlites, el receptor puede establecer con "exactitud" su propia posicin, altitud y velocidad. La idea bsica de la determinacin de la posicin se basa en la triangulacin de los satlites. Para "triangular" un receptor GPS calcula la distancia con base al tiempo de travesa de la seal a travs de las capas de la atmsfera conociendo de antemano la velocidad de la luz. Para calcular el tiempo de travesa, los receptores GPS necesitan calcular los tiempos en ambos relojes el del receptor y el del satlite de una manera muy precisa.
3
G. J. Sonnenberg, The Global Positioning System, Radar and Electronic Navigation, Butterworths.
229 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
GPS DIFERENCIAL Se llama GPS diferencial (DGPS) al sistema modificado, desarrollado por los fabricantes de receptores civiles, que pretende conseguir o aproximarse a la precisin ofrecida por el cdigo militar. Para conseguir este aumento de la precisin es necesario acoplar al receptor GPS, mediante una conexin interface especial, otro tipo de receptor. Este receptor complementario (debe ser compatible) capta las seales emitidas por una red de radiobalizas situadas en estaciones costeras. Un aparato que disponga de la funcin DGPS, interconectado con un receptor adecuado, puede "burlar" la disponibilidad selectiva impuesta por el Departamento de Defensa de USA, al disponer de otra serie de datos complementarios, ofreciendo de esta manera, una precisin en las coordenadas de posicin que oscila entre los cinco y los diez metros. Cada marca de GPS facilita los parmetros de compatibilidad entre los receptores con funcin DGPS y los receptores que captan las seales de las radiobalizas. La utilizacin del sistema DGPS solo es aplicable en la navegacin marina, siendo especialmente til en las maniobras de poca visibilidad.
NMEA
NMEA4 (National Marine Electronics Association) es una asociacin sin fines de lucro de fabricantes, distribuidores, instituciones educacionales y otros interesados en equipos perifricos marinos. La definicin estndar NMEA 0183 es una interfaz elctrica y un protocolo de datos para la comunicacin entre instrumentos marinos. NMEA se establece como un grupo de trabajo para el desarrollo de nuevos estndares de comunicacin de datos para dispositivos marinos a bordo de las embarcaciones. Protocolo NMEA El protocolo NMEA es usado para la comunicacin entre dispositivos de uso marino para transmitir datos. La salida NMEA es EIA-422A, pero para la mayora de los propsitos puede considerarlo RS-232 compatible. Todos los datos son trasmitidos a travs de sentencias con caracteres ASCII5, cada sentencia comienza con $ y termina con <CR><LF> (CR: Carriage Retun retorno de carro, LF: Line Feed fin de lnea ENTER). Los primeros dos caracteres despus de $ son los que identifican el equipo o dispositivo (por ejemplo GP que se usa para identificar los datos GPS), y los siguientes tres caracteres es el identificador del tipo de formato o sentencia que se est enviando. Los tres tipos de sentencias NMEA que existen son los de envo (Talker Sentences), Origen del equipo (Proprietary Sentences) y consulta (Query Sentences). En la siguiente tabla se presentan algunos tipos de identificadores de equipos. UTC/GMT El tiempo universal coordinado, o UTC, tambin conocido como tiempo civil, es la zona horaria de referencia respecto a la cual se calculan todas las otras zonas del mundo. Es el sucesor del GMT (Greenwich Mean Time: tiempo promedio del Observatorio de Greenwich, en Londres) aunque todava coloquialmente algunas veces se le denomina as. La nueva denominacin fue acuada para eliminar la inclusin de una localizacin especfica en un estndar internacional, as como para basar la medida del tiempo en los estndares atmicos, ms que en los celestes.
4 5
230 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Sentencia
Latitud (ddmm.mmmm) (Campo 2) Indicador N/S latitud (N = Norte, S = Sur) (Campo 3) Longitud ( dddmm.mmmm) (Campo 4) $GPGGA Total de Campos(14) Indicador E/W long ( E = Este, W = Oeste) (Campo 5) Indicador de la Calidad del GPS(0 = No Valido, 1 = Valido SPS, 2 = Valido DGPS, 3 = Valido PPS ) (Campo 6) Satlites Usados ( Numero de Satlites en Uso (0-12) (Campo 7) Altitud ( Altitud en metros de acuerdo al elipsoide WGS-84) (Campo 9) Unidad Altitud( M = Metros) (Campo 10)
PDOP( Position dilution of precision (error de la precisin)) (Campo 15) $GPGSA Total de Campos(17) HDOP( Horizontal dilution of precision) (Campo 16) VDOP( Vertical dilution of precision) (Campo 17)
231 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
232 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
Tabla 3. Formato de sentencia NMEA GPGGA. Campo Sentencia ID Tiempo UTC Latitud Indicador N/S Longitud Indicador E/W Indicador de la Calidad del GPS Satlites Usados HDOP Altitud Unidad Altitud Separacin Geoidal Unidad Separacin DGPS Intervalo DGPS Estacin ID Checksum Terminador 0000 *1F CR/LF Suma de verificacin Retorno de carro y cambio de lnea (Enter) Ejemplo $GPGGA 092204.999 4250.5589 S 14718.5084 E 1 04 24.4 19.7 M hhmmss.sss tiempo universal coordinado UTC ddmm.mmmm N = Norte, S = Sur dddmm.mmmm E = Este, W = Oeste 0 = No Valido, 1 = Valido SPS, 2 = Valido DGPS, 3 = Valido PPS Numero de Satlites en Uso (0-12) Dilucin Horizontal de la Posicin Altitud en metros de acuerdo al elipsoide 84 M = Metros Separacin Geoidal en metros de acuerdo al elipsoide WGS-84 M = Metros Intervalo en segundos DGPS desde la ultima actualizacin de una estacin de referencia ID WGSComentarios
233 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
GSA = Modo de operacin de receptor GPS, SV empleados para navegacin y valores DOP. Ejemplo (seal no adquirida): $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 Ejemplo (seal adquirida): $GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A Tabla 4. Formato de sentencia NMEA GPGSA Campo Sentencia ID Modo 1 Modo 1 Satlite usado 1 Satlite usado 2 Satlite usado 3 Satlite usado 4 Satlite usado 5 Satlite usado 6 Satlite usado 7 Satlite usado 8 Satlite usado 9 Satlite usado 10 Satlite usado 11 Satlite usado 12 PDOP HDOP VDOP Checksum Terminador 40.4 24.4 32.2 *0A CR/LF Ejemplo $GPGSA A 3 01 20 19 13 A = Automtico 2D/3D, M = Manual forzado 2D/3D 1 = No disponible, 2 = 2D, 3 = 3D Satlite usado en canal 1 Satlite usado en canal 2 Satlite usado en canal 3 Satlite usado en canal 4 Satlite usado en canal 5 Satlite usado en canal 6 Satlite usado en canal 7 Satlite usado en canal 8 Satlite usado en canal 9 Satlite usado en canal 10 Satlite usado en canal 11 Satlite usado en canal 12 Position dilution of precision (error de la precisin) Horizontal dilution of precision Vertical dilution of precision Suma de verificacin Retorno de carro y cambio de lnea (Enter) Comentarios
234 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
235 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
14718.5084 dddmm.mmmm E 0.00 0.00 211200 E = Este, W = Oeste Nudos Grados verdaderos DDMMYY = 21 DE DICIEMBRE DE 2000 Grados E = Este, W = Oeste Suma de verificacin Retorno de carro y cambio de lnea (Enter)
236 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
237 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
238 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
CONVERSOR_CAD DECOD_RX_UART DECOD_RX_UART0 DECOD_RX_UART1 DECOD_RX_UART2 DECOD_TECLADO_PS2 DECOD DTMF1_PB0 DECOD DTMF2_PB1 RECEPTOR_IR grabadas TEC MATRICIAL 4X4, 4X3 TRANSCEIVER_TRF2p4 SIPO_4015B 32 BIT PISO_4021B 32 BIT COMUNICACION_SPI BUS_I2C TIME_KEEPER_DS1307_I2C MEMORIA_24256_I2C TABLA EEPROM_DATO RELOJ (TIMER1) RANDOM 8 BIT COUNTER_BCD_9_DIGITOS DISPLAY_7SEG SUMA 16 BIT RESTA 16 BIT
:REG_RXDTMF1 (DATO VLIDO: DTMF_0 A DTMF_9, DTMF_A, DTMF_N) :REG_RXDTMF2 (DATO VLIDO: DTMF_0 A DTMF_9, DTMF_A, DTMF_N) :REG_TECIR (DATO VLIDO: 1 A 51) :POINTER_REC_IR (DATO VLIDO: 1 A 51), devuelve el nmero de teclas :REG_TECMAT (DATOS VLIDO: 1 a 16) :25 BYTES: REG_TRF1 A REG_TRF25 :REG_SIPO1:REG_SIPO2:REG_SIPO3:REG_SIPO4 :LAS SALIDAS SON:OUT_SIPO1 A OUT_SIPO32, (RELLENAR CON VARNN) :REG_PISO1:REG_PISO2:REG_PISO3:REG_PISO :LAS ENTRADAS SON:INP_PISO1 A INP_PISO32 :REG_SPI :REG_I2C :SEG_TK,MIN_TK,HORA_TK,DIA_SEMANA_TK,DIA_MES_TK,MES_TK,AO_TK :REG_M24XXX,DIR_LOW_M24XXX,DIR_HIGH_M24XXX,DIR_M24XXX:2 :REG_TABLA (0 A 255) :REG_EEDATO (0 A 255) :HORA:MINUTO:SEGUNDO :REG_RANDOM (0 A 255) :C9DIG9:C9DIG8:C9DIG7:C9DIG6:C9DIG5:C9DIG4:C9DIG3:C9DIG2:C9DIG1 :C9DIG9:C9DIG8:C9DIG7:C9DIG6:C9DIG5:C9DIG4:C9DIG3:C9DIG2:C9DIG1 :RESULTADO:2 :RESULTADO:2
Nota: SI RESULTADO < 0 ENTONCES: F_OVER_FLOW_MATH = 1 RESULTADO=0 MULTIPLICACION 16 BIT DIVISION 16 BIT :RESULTADO:4 :COCIENTE:2 :RESIDUO:2
239 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
240 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
REGISTROS DESTINO DEL MODULO CLAVE F_CLAVE_MAXIMA FLAG_KEY,0 ;despus de introducir una tecla indica que se introdujeron ms digitos de los programados en la macro capturar_clave F_CLAVE_CORRECTA FLAG_KEY,1 ;despus de la tecla aceptar indica que la clave introducida es correcta F_CLAVE_INCORRECTA FLAG_KEY,2 ;despus de la tecla aceptar indica que la clave introducida es incorrecta F_CLAVE_BORRAR FLAG_KEY,3 ;indica que se presion la tecla borrar ultimo digito introducido F_CLAVE_CANCELAR FLAG_KEY,4 ;indica que se presion la tecla cancelar clave F_CLAVE_ACEPTAR FLAG_KEY,5 ;indica que se presion la tecla aceptar clave F_CLAVE_SIGUIENTE FLAG_KEY,6 ;indica que se presion una tecla diferente a aceptar, cancelar y borrar ltimo digito REG_CLAVE1,REG_CLAVE2,REG_CLAVE3,REG_CLAVE4,REG_CLAVE5,REG_CLAVE6,REG_CLAVE7 ;registros de la clave introducida temporalmente POINTER_CLAVE ;devuelve y establece el nmero de digitos que se han ingresado de la clave
241 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DIGIBOOK - SECCION 2 TUTORIAL LPM2 GAMA ALTA 18FXX2 TRANSMISOR X10 CON DETECTOR DE CRUCE POR CERO NO AISLADO ELECTRICAMENTE ENTRE PIC Y 120VAC (TIERRA DE PIC UNIDO A NEUTRO)
242 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
DIGIBOOK - SECCION 2 TUTORIAL LPM2 GAMA ALTA 18FXX2 RECEPTOR X10 CON DETECTOR DE CRUCE POR CERO NO AISLADO ELECTRICAMENTE ENTRE PIC Y 120VAC (TIERRA DE PIC UNIDO A NEUTRO)
243 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
244 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
245 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010
246 de 246
DigiBook - Gua de Proyectos Microcontrolados
Versin Marzo/2010