^ MITA hvsrrrur zxrcAivp f+. ; E crvvtf rJ .: r;.:. ;` A(MiA RD-0604 Tecnologías para la Medición del Agua en Canales Sensor Ultrasónico de Nivel Programa para la integración de datos de aforo U9A URA U i'<A 7404N CON1 U7 JHO-152ASTN v7^rr-. mmtt.^.:: RBIAFIC V00 XTAL1 R071PSPí — Rq5'P9Pti — RC51PSP5 RUFP5P6 — R5,11 nX10T hL6/15:CR:. ~ , C;: 96 CS_VCLKI lFo53riIW., RUAX,F1 Ri:1:CL'.P: RC30:P1 fi]:EY.A'.L RCGJPSW R011F5P7 CV H:ey =a 10K_LIN ,.^,. —_— R"..81G110 1 5_4'5'01'5CA. 70% 61 R55'PSF5 RCGP5F2 54 IN3 74 T 470 Chin UT4 uUr OUT2 OLIT1 O 1112 V R3 Ua R4 1k0hm 240'15 P 2623 ^9 .• p..^ ... -^... ., : ... l! . . L AGUA .. ., f^•: +JJ. .... RD-0604 Tecnologías para medir el agua en canales SISTEMA DE CÓMPUTO PARA LA INTEGRACIÓN DE DATOS DE AFORO INICIAR LA PROGRAMACIÓN DE CIRCUITOS, PRIMERA ETAPA, DEL PROTOTIPO DE UN DISPOSITIVO ULTRASÓNICO PARA MEDIR EL NIVEL DEL AGUA. Conclusiones Se ha realizado el programa que permite hacer la integración de datos de aforos. El sistema permite dar de alta las instituciones de usuarios y puntos de control. El sistema permite la importación de la información de las variables hidráulicas de interés principalmente el nivel del agua, la velocidad media, la sección hidráulica, la fecha y sobretodo el volumen en función del tiempo de muestreo. El análisis de estadísticos simples como la media y desviación estándar (varianza) se puede realizar en intervalos de tiempo definidos por el usuario del sistema de cómputo. Se han generado los circuitos y las rutinas necesarias a la interpretación de la información del sensor ultrasónico de nivel. El microcontrolador utiliza un CAD de 8 bits. .444A 4-.fl RlAIAO n , 1R 4^ Jl ^er y► S► /Lt . • ,! r!lwrrh rl^A^l: j, • : :r n r,l.!4!19 R l# ! , r ! .E I 31 .1 ! ! 1 j r e. JF !! * e.:l.s^! dA^°'^ •. .• . . • ^u.+.R .+4R, a! Wra► a .f.r ^ N ' r3!:' . .. . . .. ^. r 1 ^ -w .11 EF i! *.***141*****, Jl.r,sdtsúik41A1oAlió6,4::!' :eaWi8 M *aour4NW*A aas msa-t*** e4:ca:F .: :^Vk *:Eáa¢*A *1¢:Rt Xx m 81 kL 8 44Y ^H:R;A ^f^^21 ;^^^.;FB nE^ 3, b5 dR8iVl$ ^,; 3^.^ ,► A^3&8 ''^ VRF1Yy^^A . . .d Las pruebas realizadas indican una posible mejora de los resultados mediante la adaptación del CAD de 12 o 16 bits. Debido al error presentado en los datos analizados se puede concluir que el equipo permite medir carga sobre aforadores de garganta larga del orden (inferior o igual) de los 0.7 metros. Para cargas mayores el sensor puede ser utilizado para el monitoreo de nivel con fines de mejoramiento de la operación manual de canales. RD-0604 Tecnologías para la Medición del Agua en Canales /NS 77 rV TO MF,1''!:4N0 'ECr''.' :'. ::?3,1A DEL AGUA CIRCUITOS Y PR O GRA MA CIÓN DE SENSOR ULTRASÓNICO DE NIVEL LISA 2 511 F.'6 014 1141 IN2 11J3 IN4 t Akohm 'UT4 0LIT3 0UT2 0UT1 24016 USA >;W Vial" F:2 • --c+ 9 L. ^-'>t7 74046 74046 ^ ^ —O —0 --O U11R --0 _^ Yy U1^H 1 -0 -0 7404 N 74046 U12.A 2 1 t0 kohm 74046 7404N -l^ p . --4 _.^ --^ GON1 6411i WM.41,16 GS'41T LRe 04_1CLM11 0 3C'30LHO FL.341SP1 RCmcP2 RCal.ZP1 FI:.1:3_.L RCt11PSW RG1lPSPi RDVINf VGD iree RGNP9P1 RC5'PSPfi Rpi1PSF5 RC4.6SP4 R'.T1FNDT IniTYCK R".S1GiLl :10.301.0 04. 00064,3 RCGiPSP2 160h Sensor de Nivel Ultrasónico LOS CIRCUITOS INTEGRADOS PROGRAMABLES (PIC) Introducción Características de Algunos Procesadores PIC Algunos tipos de PIC Utilidad de un Kernel de Tiempo-Real Kernel Multitarea Sección Crítica Recursos Compartidos Interrupción de Contexto/Interrupción de Tarea Entorno No-Prioritario Entorno Prioritario Planificador en Rueda Prioritario vs. No-Prioritario Reentradas Prioridad de Tarea Inversiones de Prioridad y Prioridades Estáticas vs. Dinámicas Semáforos (banderitas) Exclusión Mutua Detención Sincronización Comunicación entre Tareas Señales de Evento Casillas de Correo para Mensajes Colas de Mensaje Interrupciones Recuperación, Respuesta y Estado latente de Interrupción Tiempo de Procesamiento ISR Interrupciones No-Ocultables Contraseña de Reloj PROGRAMAR UN PIC Estructura de un Programador de PIC Programar un PIC de Microchip Inc. Programación del PIC Transmisión de Datos a Través de un PIC Transmisión de Datos RS-232 desde el PIC Recepción de Datos RS-232 por el PIC Generación del bit de Paridad Hardware El Circuito Del Programador Instruyendo Al Micro Señales de Programación de un Pic Predisposicion de un Pic LOS MICROCONTROLADORES DE NACIONAL Y PHILIPS La Serie Cop De National Prestaciones destacables de hardware Prestaciones destacables de software 1 1 2 3 4 6 6 7 7 8 8 9 9 9 9 10 10 10 11 11 11 11 11 11 12 12 12 13 13 14 14 15 17 21 21 22 23 24 25 27 27 30 32 32 32 34 Sensor de Nivel Ultrasónico Características Fundamentales de la Serie COP Características del CPU Características I/O Diseño CMOS Estático Completo Rangos de Temperatura Soporte de Desarrollo Arquitectura Juego de Instrucciones Herramientas Clave del Juego de Instrucciones Ejecución de Código de Ciclo Simple/Byte Simple Multifunción, Muchos Byte Simples Los Microcontroladores De Philips Memoria de Programa Memoria de Datos El Set de Instrucciones del 80051 Modos de Direccionamiento Timing de la CPU Ciclo de Máquina Estructura de Interrupciones Habilitación de Interrupciones Prioridades de Interrupción SENSOR DE DISTANCIA ULTRASÓNICO Modo 1 - Compatible con SRFO4 - Señal ce Activación y Eco Independientes Conexión Otro Conector de 5 Pines Diagrama de Tiempos Modo 2 - Pin ÚnicopPara la Señal de Activación y Eco Cálculo de la Distancia Cambiar el Patrón y el Ancho del Haz DESCRIPCIÓN GENERAL SENSOR DE TEMPERATURA LM35 Características Conexión Típica Diagrama de Conexiones Conclusiones ANEXOS Ic-Prog Elección De Idioma Configurar El Hardware Explicación De Los Menús Ajustes Programación De Un PIC Programar El Pic Otra Alternativa De Comprobación Errores Frecuentes En La Programación El Mplab Instalación Del Programa Como Empezar 36 37 37 38 38 38 39 39 40 40 40 41 43 45 47 48 53 54 55 55 55 56 56 56 57 57 57 58 59 61 61 62 63 81 82 82 82 83 83 85 86 88 88 88 91 91 95 Sensor de Nivel Ultrasónico Nuestro Primer Proyecto El Editor La Barra De Menús Codigo Fuente Del Sensor De Nivel Ultrasonico 96 98 98 99 Desarrollo de Sensor de Nivel Ultrasónico LOS CIRCUITOS INTEGRADOS PROGRAMABLES (PIC) Introducción Los circuitos integrados programables (Programmable Integrated Circuits = PIC) son componentes sumamente útiles en la Electrónica de Consumo. Aún cuando son conocidos desde hace más de veinte años, existen en la actualidad nuevos tipos que cumplen con una serie de requisitos y características sumamente útiles. 13 Program Counter 1 4 POR'A Bus RAC:AP.0 ^ Flash Program Memo- y Program, Bus Dala I', ^ i Rr Fa Registers 8 Leve l Stack {13-ttt} / RAM Aidr' r; • ^ 7 7ireaA.dr J II3 direct .^.c:dr + PtSR-' 1 FSR reg ^ ,^ Status reg 8 ^ —I. Power- i imer ns Pu, tion 7emde & -r y C,. r -: I Timing -,1--;-̀ Generation `'í— OSC1rC_Kl OSC2:C_Kr^l Osalllator Start-up Timer Power-on Reset Watchdo '^ ^ L t/ \\ ..y..—,%. ALJ 8 I¡ IM L, 51 ', II , :^ ,% ^ I ^=,,!;h,` ® R?^.- ^f .i ^ R?4 ^ R.P.! M^1 P.H7.rPGD' PORTC 1M1reg ^ 1 Brown-out Rese H-C r- ; 7eb•.4„er cv:':c agc Prc,ran• ^^ °a ^ R"1.^tG!GIP21 O5 1 ^ RC_:C ,3= ^ R3:SC r: S C_ 1 ; M¡ ..RC4f5DI:S1A y1 RC51S77 ^ Rü' P, T?' • ^ ^ ' 1'1G 'RC?,Rk r..T ' l:i W76. V Ea R1;:LR I a gg ! r iA?iti\^•:'P. EF ^ :'^.' REF RA3tAN3NREFi ^ RA4 T7Ct:IlC 10:.7 `.A_"'.d. 3.C201JT ^ .T;.odr 1AJt ^ tnst.:: ^n reg TimerC ® RA I: A":1 1 0 {yitAiD. Trner1 Tunes,? 11 II' llr• aIr II ,Il,• _ i}ataEEPROb.1 CCP1,2 ° ^hronous Port Sena/ II. C_r a:.t: JSA.RT II ^ la= Reference Device Program Flash Data Me Data EEPROM PIC:8 = 873A P IC 18= 878A 4K words 8iK words 192 Bytes es 128 Bytes 258 Bytes Note 1: Higner order bits are from the Status register. Figura 1 1 Desarrollo de Sensor de Nivel Ultrasónico Los microcontroladores PIC son en el fondo procesadores similares a otros tipos, como por ejemplo la familia de los microprocesadores X86, 80486, Pentium y muchos otros que usan una arquitectura interna del tipo Von Neumann. En este tipo de arquitectura los datos y la memoria del programa se encuentran en el mismo espacio de direcciones. Los PIC's son microcontroladores, es decir, una unidad que posee en su interior al microprocesador y a los elementos indispensables para que pueda funcionar como una minicomputadora en un solo chip. Esta circunstancia da lugar a una gran pérdida de tiempo porque los datos tienen que ser retirados de la memoria y llevados a la CPU (Central Processor Unit) y viceversa. Esto significa que la computadora dedica la mayor parte del tiempo al transporte de datos de ida (Figura 1) o de vuelta, en lugar de usar este tiempo para trabajar sobre los datos. Otra característica de los procesadores PIC es el uso de un conjunto de instrucciones del tipo RISC (Reduced Instruction Set Computer). Con el RISC se suele ejecutar la mayoría de las instrucciones con un solo pulso del reloj. Con las instrucciones que se usan en otros equipos del tipo CISC (Complex Instruction Set Computer), se logran instrucciones más poderosas, pero a costa de varios ciclos del reloj. En el bien conocido procesador 68HC11 de Motorola se requieren a veces hasta 5 ciclos del reloj para ejecutar una instrucción. Características de Algunos Procesadores PIC Para ilustrar mejor el concepto usado en los PIC, vemos en la figura 1 un esquema en bloques de los procesadores de la familia PIC 16F87XA. En este esquema se observa claramente los dos tipos de bus: un data bus (arriba a la derecha) y un program bus (arriba a la izquierda hacia abajo). En este data bus se observa otra característica inusitada: su capacidad es de 14 bits. Esta cifra no es divisible por 8 y por lo tanto la CPU debe considerarse como de 8 bits, pero las instrucciones usan palabras de 14 bits. Este número por cierto no es único ni obligatorio: en la serie de procesadores 16C5X se usan palabras de 12 bits y en la serie PIC 17CXX se usan palabras de 16 bits. Sin embargo ambos siguen siendo microcontroladores de 8 bits. En los procesadores PIC se usa sólo un registro de trabajo, el registro W. Esto parece ser poco común, pero se explica por el hecho que muchas de las operaciones que el RISC ejecuta, almacenan su resultado en la RAM o en el registro W, lo que aumenta su capacidad. Otros registros son el registro STATUS, el registro FSR (Feedback Shift Register) y el contador de programas. No existe en el PIC un registro stack (registro de pila), 2 Desarrollo de Sensor de Nivel Ultrasónico lo que limita el número de subrutinas que se pueden ejecutar. Existe sin embargo un stack de 13 bits y de 8 niveles que funciona en conjunto con el contador de programas. Una consecuencia de la arquitectura RISC es la reducida cantidad de instrucciones simples que llega sólo a 35. Estas instrucciones pueden, sin embargo, combinarse para formar instrucciones más complejas que solucionen los problemas satisfactoriamente. El set de instrucciones de un PIC se compone de sólo 35 parámetros de los cuales suelen emplearse con asiduidad solamente 15. En el Assembler suministrado por el fabricante de los procesadores PIC se usa una serie de macros que ayudan a crear un conjunto de instrucciones muy abundante. Como en todas las memorias programables, el gran secreto del éxito reside en el software de la programación que debido a la arquitectura RISC es sumamente amplio. El esquema de la figura 1 corresponde también a diferentes integrantes de la familia PIC, a saber: PIC 16C83, PIC 16R83 con una capacidad de 512 x 14 bits y PIC 16C84, PIC 16C84A y PIC 16R84 con 1k x 14 bits. Para superar exitosamente todos los problemas eventuales que puedan surgir en la programación de los PIC's, el fabricante provee también una herramienta adecuada llamada MPLAB que es un /DE (Integrated Development Environment = ambiente de desarrollo integrado). En el mismo se incluye el software para un ensamblador, editor, simulador y programador, todo en un paquete dedicado. Algunos tipos de PIC Un representante típico de los PIC's es el 16C84, cuya base se observa en la figura 2. Se trata de un procesador con una memoria de programas EEPROM de 1k x 14. Tiene 64 bytes de memoria de datos EEPROM y 36 bytes de RAM de uso general. PDIP, SOIC RA2 +—► =.A3 +—^ RF.».TOCKI ^r f3 d^_R —► C.S ^ RB 3ANT •1 18 .--. RA1 2 17 RAO 3 16 CBC1/CLKIN 4 5 n ^ 15 14 CJ) 6 —^ 0.^ °C2/CLKCUT ^ Voo 13 RB7 12 +—t RB6 RB1 +--r 7 RB2 ^. 8 11 +—. RB5 R63 +—► 9 10 RB4 Á La memoria de programa del EEPROM puede ser programada en serie en el circuito de aplicación. Se dispone de 13 pines de I/O con control de dirección individual. Se dispone de 4 fuentes de El interno/externo. interrupt un es de 8 bits con temporizador/contador pre-escalador programable. La frecuencia de operaciones es de DC a 10MHz. El integrado viene con una base PDIP de 18 pines o SOIC. Figura 2 3 Desarrollo de Sensor de Nivel Ultrasónico Una variante del anterior es el integrado PIC 16C61 con base similar y con una memoria de programa EEPROM de 1K x 14, un stack de hardware de 8 niveles, 13 líneas bidireccionales I/O, 3 fuentes de interrupt, temporizador de 8 bits de tiempo real con un pre-escalador programable de 8 bits y una frecuencia operativa de DC a 20MHz. El integrado viene también en una versión de montaje en superficie (surface mount). Part Number I, Package I- satures rI'.:wsI:aulr.b:i i(-.brucncri5li'Cn8) P1C16084 18 Lead • Unique 1K x 14 EEPROM program mernory • 64 trytes EEPRCeil data rrernory • 3E bytes yer>=.i I purpose RAM • EEPROM proprarn rrienwry ran be serially program-Ed in he application Cirwil Timers • 13 110 pins with Ir,droidua! direction control • 4 irrtemallextemal irarrnrpt sources • 8-iait timericounter with prctjrarnmable CP+t! pre:zaler Cl!erat,ng hPqutnc,es DC to 111A1Mz • Peu;kaaing ophons FDI(',nti °:C7tC Figura 3 El esquema básico de este procesador surge de la figura 3 y es similar al del PIC 16C84. Un procesador de mayor envergadura y mayor tamaño es el tipo PIC 16C74, cuyo esquema interno básico vemos en la figura 4. Este procesador posee una memoria de programa del EPROM de 4 K x 14, una RAM de uso general de192 bytes y 33 pines de I/O con dirección individual. Esta memoria es del tipo EPROM con una ventan que deja pasar los rayos ultravioletas y por lo tanto puede borrarse con el borrador típico de la serie 68HC11. En este aspecto es similar a los procesadores anteriores. Se recomienda especialmente para aplicaciones en robótica. El PIC 16F74 tiene una base de 40 pines tipo PDIP o CERDIP (con ventana) o de 44 pines tipo PLCC o QFP. Otros tipos de PIC salen al mercado con mucha frecuencia y ya se dispone de la serie PIC 12CXX con base de 8 pines y la serie PIC 17CXX de instrucciones de 16 bits que es más potente aun. Utilidad de un Kernel de Tiempo-Real Kernel es la palabra que se utiliza para describir parte de "un sistema operativo" o el sistema operativo completo con el que opera un microcontrolador o una computadora. En muchos artículos, en lugar de emplear el término "Kernel" empleo la palabra "entorno", sin embargo, aquí emplearemos el término en inglés que no posee traducción directa. 4 Desarrollo de Sensor de Nivel Ultrasónico Figura 4 Fea,ttqEx 4r.K„ero1 PI0110+1 40i4.1 • 4d c 14 EPROM pnxgnm ,nereory Lcoa • tyrtes general mpa5e 11LUu1 • 33 II_ti,{5ns vAY" ircivittlfel dreno'', calme • 12 r,x1C7n41 bl i7 ros Ir9I Irit9Ti4i l9:taces • i r:artrJ ár. nM:parR4i4'drt4 TOáti:.3 • C-ixt, di-iTtarritl fJL: latrycrtar • Syrr}wcrwus Se1ri 1 or: (SSP)11w Ik° an o 3 vlra áPI oalx partiala • SrCz171 C.Oramu`.licdlorrSIrílClr603 [5L:',i OrUrids r.I:fiNRT 1m[linhd w rcr•an:l alor, Not • 3 c]u'R9r21M e's, anotan be 18UBn tiüe 1i ollrng SIG.; Nodo via w .•aeid dpelr • t Feral" rejFloquenri es. LX: lu 1L7r1r1t.1uw ionaadlaGa odien • 1Frvc i y nrrm•:Jw4nrrrgoc Cvnmar^aL, I c1 Vlrral eroawiarrraEve CERdaIP • Peal ron:: n[tl:ns: 4134e®d P DO.-) f,nht^,.^),a4 laas V1.tX. A.tlnan cyP 11111111 n Figura 4 En la Nota AN585 de Microchip (gran parte de la bibliografía consultada para redactar este texto es de la empresa Microhip) se incluyen dos ejemplos primordiales: uno basado en el PIC16C54 y otro en el más poderoso PIC16C64. Se implementó una "Alarma Remota" con el PIC16C54 como un ejemplo de un Kernel No Prioritario, con dos fuentes de entrada series asincrónicas capaces de ejecutar hasta 19,200 baud junto con siete sensores que deben estar "indicados" como entradas. Se debe manejar otra línea de entrada que cause un "reconteo" del software interno. Para la salida, este ejemplo tiene un LED que muestra ocho estados internos diferentes de la "Alarma Remota", la cual titila a diferentes promedios y secuencias. Esta salida serie y asincrónica es capaz de ejecutarse a 38,400 baud y las entradas pasan a la siguiente estación de la alarma remota. Se incluyen distintos temporizadores cortos y largos para cumplir con las nueve tareas cooperativas de este ejemplo. Por si no recuerda, se denomina baud a la transmisión de un byte por segundo. El segundo ejemplo se implementó con un PIC16C64 para formar un Kernel Semi Prioritario conducido por interrupción. Este ejemplo transforma las rutinas series de entrada y salida del primer ejemplo en 'Rutinas de Servicio de Interrupción (ISR) para obtener mayor velocidad y precisión Las técnicas de diseño de tiempo-real permiten al "técnico" superar problemas complicados para afrontar tareas más simples. Estas unidades de código más simples permiten una respuesta más rápida a eventos importantes y, a la vez, priorizan los trabajos a realizar en un formato 5 Desarrollo de Sensor de Nivel Ultrasónico probado y estructurado. El kernel hace el trabajo de conservar el tiempo, la armonía y una comunicación fluida entre todas las tareas. Se pueden hacer más actividades en el mismo tiempo, ya que es posible realizar determinadas tareas mientras que otras aguardan que ocurra un evento específico. Las técnicas de "estado-conducido" también permiten códigos más pequeños, ya que se condensa más información en las variables de estado y la estructura del código. Kernel Multitarea Es posible "atender" varias tareas al mismo tiempo (en apariencia). Cada tarea cree que es la propietaria de la CPU, pero esta apariencia es controlada por el kernel. Sólo se puede ejecutar una tarea a la vez, pero otras tareas no bloqueadas pueden estar operando mientras se esté ejecutando una determinada. Para que sea "Multi-tareas" se ensamblan interrupciones, eventos, comunicaciones, datos compartidos y debe existir sincronismo para realizar un trabajo. La Programación de Tiempo-Real es un conjunto de ideas, conceptos y técnicas que permiten dividir problemas en unidades de código basadas en unidades de tiempo, o eventos que conducen una tarea de un estado a otro. Sección Crítica Una sección crítica es una estructura de datos compartidos, un recurso compartido, una sección de tiempo crítico de código, o una sección no-reentrante de código que sólo puede tener un "dueño" que pueda ver, cambiar o usar esta sección en cualquier tiempo específico. Estas secciones no deben ser interrumpidas durante el proceso de actualización. Deben ser protegidas para que no puedan acceder a ellas otras tareas que cambien los indicadores o los datos o modifiquen el hardware al mismo tiempo. Si dos tareas acceden a una sección crítica al mismo tiempo, los datos cambiarán a tal punto que se originará un "soberano desastre". Cuando se realice una aplicación debe asegurarse que las secciones críticas sean pequeñas, y que tengan tiempo para que sean "atendidas" las interrupciones pendientes. Los programadores RT tendrán muchos problemas si no comprenden las secciones críticas. Aun sin interrupciones, debe proteger las variables que cambian fuera de tiempo, como la variable de byte conformado xmt byte. Esta variable cambia cada vez que el ESTADO cambia para la Tarea que está fuera de la Serie. Para coordinar diferentes tareas que intentan controlar una sección crítica se usan dos técnicas: "Semáforos (banderitas) e Interrupciones Inhabilitadas". En la figura 5 se da un diagrama de transición de "tarea /proceso de estado". 6 Desarrollo de Sensor de Nivel Ultrasónico Recursos Compartidos Las estructuras de datos, las pantallas, el hardware I/O, y las rutinas noreentrantes son ejemplos de recursos. Si dos o más tareas usan estos recursos, entonces se llamarán Recursos Compartidos y deberá protegerlos de posibles corrupciones. Sólo pueden tener un dueño, una manera de indicarle a las otras tareas que deben esperar, y posiblemente una lista de espera para futuros usuarios del recurso. Un ejemplo raro de recurso compartido sucede en una secuencia de sincronización crítica de operaciones de entrada y salida para controlar un hardware determinado. Debe inhabilitar las interrupciones antes de comenzar esta secuencia, y rehabilitarlas luego de su finalización. Tarea #1 funciona como una rutina "no-reentrante" que debe ser finalizada por su poseedor actual antes de que otra tarea pueda usarla. Interrupción de Contexto/Interrupción de Tarea Cuando una tarea se hace cargo de otra tarea, los valores actuales de los registros de la CPU para la tarea en ejecución serán guardados y los viejos registros guardados para la nueva tarea serán realmacenados. La nueva tarea continúa donde fue recogida. Todo esto lo realiza la parte "Interrupción de Contexto del Kernel de Tiempo-Real". Usualmente cada tarea tiene una "área de almacenaje para interrupción de contexto". Cada SP de una tarea (Indicador de Acumulación que indica su propia acumulación) se guarda allí junto con todos los otros registros importantes guardados. El del PIC16C64 usa un concepto similar, y conserva la cantidad de registros guardados por cada tarea que se va cumpliendo. Usamos un viejo concepto llamado "de donde provengo". La variable "FROM" se usa para indicarle al director que debe iniciar la tarea donde se interrumpió. Esto se debe a que no se puede manejar la acumulación en la familia PIC16CXXX. Por esta razón también tenemos un kernel "Semi-Prioritario" en el PIC16C64. Cuanto más rápida sea la interrupción de contexto, mejor será su operación. Planificador El planificador es la parte de un kernel que decide cuál es la siguiente tarea a ejecutarse. En esta sección nos referiremos a distintos tipos comunes de planificadores. Es aquí donde se realiza la planificación antes de iniciar la construcción de un nuevo dispositivo. Al comprender los diferentes tipos de planificadores, y sus características y problemas específicos, podrá saber cuál es el que más se ajusta a sus necesidades. Se pueden implementar otras técnicas más creativas, pero asegúrese de permitir que todas las tareas se ejecuten a su debido tiempo. 7 Desarrollo de Sensor de Nivel Ultrasónico Vea en la Figura 5 cómo cada tarea debe estar en "Estado Preparado" o "Estado en Ejecución " para que pueda ser considerada por el planificador a fin de que tenga el control temporario de la siguiente CPU. Eilat+a do totoclo EPOCOO4n 1.i1 l*á.CIT to t^^ t oto di=.n1.:1 Q 61 dar dar Figura 5 Entorno No-Prioritario El Kernel No-Prioritario también es llamado "Kernel Cooperativo", ya que con su uso las tareas sólo abandonan el control cuando necesitan estar en coordinación con otras tareas y eventos. Así se demuestra que a pesar de ser un tipo de kernel simple, se pueden hacer muchas cosas con él. El tipo de Kernel No-Prioritario es adecuado para los PIC16C5Xs de tipo "no-interrupción". La pulsación central del PIC16C54 es el contador TMRO interno que atraviesa de un valor alto a uno bajo del contador. Use el pre escalímetro para ajustar las unidades de tiempo. Las tareas muy rápidas leen de continuo y directamente el TMRO en comparación con el delta de tiempo necesario para ver si se enciende. Entorno Prioritario En un Kernel Prioritario, una tarea en ejecución puede ser permutada para que otra tarea prioritaria más importante se ejecute en su lugar. El Kernel Prioritario se basa más en las interrupciones que en su fuerza de conducción. La interrupción de contexto se encuentra en el centro de este tipo de Kernel. Para implementar un verdadero Kernel Prioritario, debe ser capaz de manejar su acumulación. Esta es la causa por la cual implementamos un kernel "SemiPrioritario" en el PIC16C64, con las mejores características de ambos tipos de kernels. En el PIC16C54 se trasladan algunas tareas a las /SRs para manejar las I/Os. Esta técnica opera muy bien, ya que las ISRs suelen ser muy breves, y realizan la mayor parte del trabajo. La interrupción del TIMERO es la pulsación central en el ejemplo del PIC16C64. Debe tener una interrupción de reloj para activar un verdadero Kernel Prioritario. 8 Desarrollo de Sensor de Nivel Ultrasónico Planificador en Rueda Cuando el planificador encuentra tareas que tienen las mismas prioridades en la fila de "preparadas", usa una técnica llamada Planificación en Rueda para asegurarse que se cumplan todas las tareas. Esta técnica requiere mucho cuidado, y es una de las más creativas que puede usar su planificador para ajustarse a sus necesidades, todas las tareas están programadas para ejecutarse apenas después de su tiempo asignado. Esto implica que ninguna tarea dominará a las otras bajo este abordaje simple. En los viejos tiempos de los sistemas Operativos de Tiempo-Real, este término se usaba para designar "partición de tiempo". Los actuales Kernels Prioritarios, con sus esquemas de prioridad y sus capacidades de comunicación entre tareas, implican un desarrollo en este sentido. Prioritario vs. No-Prioritario El Kernel Prioritario es más difícil de desarrollar, pero más fácil de usar, a pesar de que suele utilizarse de manera incorrecta. Le llevará más tiempo configurar el Kernel No-Prioritario pero es mejor para los microcontroladores más contraídos. Con el No-Prioritario obtendrá un mejor tiempo de respuesta entre una causa y la respuesta para este evento. El Kernel Prioritario es más predecible en sus tiempos de respuesta, y puede ser calculado al tiempo máximo para completar un trabajo determinado. El Kernel Prioritario es más caro. Reentradas En un Kernel Prioritario, dos o más tareas pueden pretender la utilización de una misma subrutina. El problema es que no se puede controlar cuándo se remueve una tarea para que otra tome su lugar. Cuando una subrutina usa sólo variables locales o almacenadas en las acumulaciones de cada tarea, este proceso se denomina reentrada o "rutina pura". En una rutina pura no se pueden usar variables o hardware globales. Este requerimiento de la reentrada conduce a considerar toda la subrutina como una sección crítica. Prioridad de Tarea Todas las tareas no se crean de la misma manera. Ciertos trabajos deben realizarse a tiempo para que no se pierdan determinados datos. Por lo tanto, debe seleccionar según este criterio cuáles son las tareas de mayor prioridad para hacer una escala de mayor a menor. 9 Desarrollo de Sensor de Nivel Ultrasónico Algunos kernels hacen que la prioridad de cada tarea sea diferente. La determinación de la prioridad requiere una cuidadosa planificación antes de la codificación del trabajo de diseño. Inversiones de Prioridad y Prioridades Estáticas vs. Dinámicas Para los kernels de Tiempo-Real más complicados, se usan tareas y prioridades estáticas. Algunas veces se usan prioridades dinámicas para solucionar detenciones y otras situaciones complejas que pueden surgir de una mala comprensión de los problemas y las técnicas de Tiempo-Real. Si llega a necesitar prioridades dinámicas, deberá revisar cómo dividió el problema, y hacer subdivisiones hasta incluir los recursos en cuestión bajo una "banderita". También podría dividirlo más para tener más tareas que no necesiten dos o más recursos para completar su trabajo, y mejorar la comunicación entre las tareas nuevas. Con respecto a las tareas dinámicas, debería definir el problema de tal forma que sepa, al comienzo de la codificación, el uso continuo de todas las tareas. Necesitará más tiempo en la etapa de planificación para establecer una buena comunicación entre las tareas, pero es un buen método para mantener las tareas y prioridades dinámicas fuera del diseño del kernel. La Inversión de Prioridad es un truco usado para manejar un sistema mal diseñado, que invierte las prioridades de modo que permite la ejecución de las tareas más bajas que pudieran estar bloqueadas. Este es un truco muy barato, y no debiera considerarse en el diseño de un Kernel de Tiempo-Real. Use las otras técnicas descriptas en esta sección para solucionar este tipo de problema. Semáforos (banderitas) Hay básicamente dos tipos de semáforos: binario y contador. El semáforo binario permite únicamente un usuario, y todas las tareas que desean acceder a él deberán esperar. El semáforo contador tiene una lista de usuarios que necesitan acceso. Los semáforos se pueden usar de muchas maneras. Puede implementar semáforos contadores con semáforos binarios. Exclusión Mutua La Exclusión mutua es un método para excluir tareas a partir de la ganancia del acceso a secciones críticas. La Exclusión mutua es el proceso de excluir otras tareas del acceso a recursos compartidos. La creación de un semáforo es un proceso muy complicado. Su construcción debe ser atómica. Esto implica que luego de iniciarse el proceso, no puede ser interrumpido hasta que haya guardado el nombre del nuevo usuario. Desde este punto en adelante, sabe que nadie podrá desalojar y cambiar a los poseedores (usuarios). 10 Desarrollo de Sensor de Nivel Ultrasónico Detención La detención es una condición en la cual dos o más tareas tienen recursos que otras tareas necesitan para completar su asignación, y éstas no liberan sus propios recursos a menos que las primeras tareas no los liberen primero. A esto se llama falta de cooperación. Estos problemas surgen por la falta de comprensión del problema original. Sincronización Los semáforos pueden usarse para sincronizar tareas con el propósito de que se intercambien mensajes. Los semáforos también pueden iniciar tareas, detenerlas o comenzarlas juntas. Son los elementos fundamentales de la programación de Tiempo-Real. Una vez que construya un semáforo binario para su kernel, podrá construir semáforos más complejos para sincronizar lo que desee. Comunicación entre Tareas En los kernels más grandes se pueden incluir métodos de comunicación más complejos para intercambiar datos entre tareas. La mayor parte de la comunicación se realiza dentro del kernel. Se requiere mucho más espacio y velocidad de ejecución para implementar estos métodos en un sistema operativo. Señales de Evento Normalmente se implementan bits simples en dos estados (on y off) como Señales de Evento. Se puede almacenar más información por cada Señal de Evento de acuerdo al tiempo en que fue grabada, quién la grabó, a quién pertenece el evento y cuales fueron los datos perdidos. Casillas de Correo para Mensajes Esta es una característica útil si tiene espacio RAM. Las casillas de correo le permiten al diseñador intercambiar mensajes entre tareas, revisar los mensajes cuando la tarea está preparada y responderle al remitente que el mensaje ha sido recibido. Se puede enviar un mensaje a varias tareas al mismo tiempo. Colas de Mensaje Esta característica también es muy buena si tiene tiempo de ejecución y RAM para implementarla. Las colas están relacionadas con las Casillas de Correo. Pueden guardar distintos mensajes, aun después de su lectura, para procesarlos más tarde. También puede operar en los mensajes de mayor prioridad antes de manejar el resto. Puede crear varias opciones con las Casillas de Correo y las Colas. 11 Desarrollo de Sensor de Nivel Ultrasónico Interrupciones Las interrupciones son uno de los mejores "inventos" para solucionar problemas de Tiempo-Real. Con ellas puede obtener una respuesta muy rápida a sus necesidades y retornar a lo que estaba haciendo. El único problema es que pueden ocurrir en los peores momentos. Esto implica que deberá aprender a activarlas y desactivarlas para proteger sus secciones críticas. Advierta que antes de manejar una interrupción, deberá guardar todos los registros importantes para que pueda restaurarlos a fin de que el kernel pueda reiniciar la tarea donde fue interrumpida. Este proceso se asemeja a la interrupción de contexto, pero en estas interrupciones (interrupts), siempre deberá guardar y restaurar. En el PIC16C64, los registros Status, W y FSR se guardan en RAM debido a la interrupción. El registro PC se guarda en la acumulación por el hardware. Recuperación, Respuesta y Estado latente de Interrupción El Estado latente de Interrupción se define como el período de tiempo más largo en el que las interrupciones son desactivadas, más el tiempo que le lleva a la ISR iniciar su ejecución. Para un sistema No-Prioritario, el Tiempo de Respuesta de Interrupción se define como Estado latente de Interrupción más el "tiempo de guardado del contexto". Para un sistema Prioritario, debe agregar el tiempo de ejecución en el cual el kernel graba la interrupción. Para un sistema No-Prioritario, el Tiempo de Recuperación de Interrupción se define como el tiempo que lleva restaurar el contexto guardado más el reinicio de la tarea interrumpida. Para un sistema Prioritario, la Recuperación es similar a la del sistema NoPrioritario más el tiempo que le lleva al kernel en el planificador la decisión de cual será la siguiente tarea a ejecutarse. Estas mediciones sirven para comparar la mayoría de los kernels. Tiempo de Procesamiento ISR El Tiempo de Procesamiento ISR (Rutina de Servicio de Interrupción) se define como el tiempo en el cual una ISR controla la CPU. El tiempo debiera ser breve, y si necesitara realizar un procesamiento extenso en una ISR, debería quebrar la ISR. La nueva ISR almacenará los datos nuevos y el retorno. Luego debería crear una nueva tarea y trasladar el código extra de la vieja ISR a la nueva tarea. Recuerde que cuanto más tiempo le demande una interrupción, más tiempo tardará en responder a otra interrupción apremiante. El "alojamiento de interrupciones" es el espacio donde una interrupción de alta prioridad puede interrumpir a otra de prioridad más baja. Debe ser cuidadoso al hacer esta operación, ya que distintas interrupciones también pueden tener secciones críticas, y debiera desactivar interrupciones para proteger estas 12 Desarrollo de Sensor de Nivel Ultrasónico secciones. Muchos microcontroladores no tienen este alojamiento de interrupciones, entre ellos la familia PICI6CXXX. Interrupciones No-Ocultables En algunos microprocesadores, como en los de la familia PlCmicro, puede activar y desactivar interrupciones seleccionadas. Esta es una herramienta muy útil para controlar la corriente de datos dentro y fuera del sistema. Algunos sistemas tienen Interrupciones No-Ocultables (enmascarables). En este caso no las puede desactivar mediante un ocultamiento de software. Estas NMIs (abreviatura de Interrupciones No-Enmascarables) se usan como contraseñas de reloj, para evitar problemas con las secciones criticas de una interrupción que no pueda desactivar. La familia PICI6CXXX no tiene NM/s. Estas interrupciones no son tan útiles como las ocultables. Contraseña de Reloj La Contraseña de Reloj es la pulsación central del sistema. Es la forma en la que el Kernel controla el tiempo (relativo y absoluto). También determina cómo el Kernel se reinicia para ver si ha finalizado una demora, a fin de que la tarea pueda ser trasladada al estado preparado. En nuestros ejemplos se usó el reloj Timer O. Debe tener una interrupción de reloj para crear un verdadero Kernel Prioritario. Esta es otra razón por la cual implementamos un Kernel No-Prioritario en el PIC16C54, ya que no tiene interrupción de reloj. 13 Desarrollo de Sensor de Nivel Ultrasónico PROGRAMAR UN PIC Estructura de un Programador de PIC Es muy fácil construir productos electrónicos con bajo costo, espacio reducido y con características multifuncionales; de hecho, son muchos los circuitos decodificadores de señales de TV construidos con pequeños controladores programables integrados que contienen programas sencillos. El objetivo es que se pueda programar un PIC con la ayuda de una computadora, sin que para ello se necesiten complicados circuitos adicionales. Se necesita un dispositivo de programación para incorporar el software de los chips que venimos describiendo, los PIC's. El costo de un dispositivo de estas características suele ser muy alto, razón por la cual se prefiere omitir para el diseño de sistemas electrónicos con estos componentes. Obviamente, el programador PIC necesita algunos componentes accesorios para ser construido pero resulta una solución ideal para quienes poseen computadora. El rasgo más importante de esta unidad es que no necesita partes especializadas y es un circuito muy simple. Luego de armado se lo conecta al po rt (puerto) de la impresora de cualquier PC (el puerto no necesita ser bidireccional), y ejecutar un software (programa) para iniciar la programación de los microcontroladores. Se hará referencia a la serie PIC 16F84, 16F83 y 16C84, por ser componentes de que se consiguen con facilidad. Se puede considerar el microcontrolador como un circuito integrado que puede ser "personalizado" si se escribe un programa en lenguaje de máquina (assembly). Dicho de otra manera, cargando el programa en el área ROM del microcontrolador, obtendremos un circuito integrado específico para nuestras necesidades. Algunas veces el programa está diseñado para ser algo más que un oscilador o una llave lógica, pero lo importante es que el PIC realizará exactamente lo que se le indique. La familia PIC de la empresa Microchip Inc. es muy simple de operar, es de bajo costo y gran parte del software utilizado para crear el código de programa necesario para la programación del PIC está disponible en el website de Microchip. De los tipos de PIC's disponibles, los más fáciles para trabajar, son el 16F83, el 16F84 y el 16C84. Su ROM es eléctricamente borrable, de modo que no necesita una luz ultravioleta para borrar y reprogramar los dispositivos. El 16F84 es el más empleado, tiene 68 bytes de RAM y 1.024 palabras de memoria de programa. La memoria de programa es un EEPROM tipo flash, que puede ser reescrito más de un millón de veces. Cualquier información almacenada será preservada por más de cuarenta años, sin alimentación alguna o señal de refresco. El 16C84 es muy similar, pero utiliza un tipo de EEPROM más viejo. El 16F83 puede ser considerado "e/ hermano menor", ya que tiene sólo la mitad de memoria; aunque tiene a su favor que es el de costo más bajo costo. Estos 14 Desarrollo de Sensor de Nivel Ultrasónico PIC's requieren de un cristal de cuarzo o un resonador para los circuitos de reloj, También se puede emplear un resistor o un capacitor para fijar la frecuencia de oscilación. La tensión de alimentación para el 16F84 puede ser de 4 a 6V pero existe una versión de este integrado que puede operar inclusive, con 2V. Tiene 13 pines de entrada/salida, cada uno de los cuales puede ser configurado individualmente para que sea una salida o una entrada. Programar un PIC de Microchip Inc. Programar los chips PIC mencionados es muy sencillo: 1. Se debe aplicar 5V a la pata 14 (con la pata 5 conectada a tierra). 2. Eleve la tensión de la pata 4 a 12V). 3. Coloque los datos en la pata 13; dichos datos serán enviados a la ROM de a un bit por vez en concordancia con la señal de reloj. Los datos serán enviados al conector 13 y en el momento de ser grabado, se eleva la tensión de la pata 12 a 5V durante al menos 0,1ps antes de ser bajado de nuevo a nivel tierra. Los datos que se dirigen al chip contienen comandos que especifican los numerosos pasos del proceso de programación y los datos que serán guardados en la ROM del chip. Para verificar que el PIC ha sido programado correctamente, compruebe que el PIC también pueda enviar los datos contenidos hacia el exterior a través de la pata 13. El diagrama esquemático del Programador para PIC que se ha venido mencionando, se muestra en la figura 6. El circuito está diseñado para adaptarse al port de la impresora de cualquier PC. 1 AII I '. Va. llt A M` I Il. o IM 90GKC1 Boom A)'.'•.YWCi PON/FA TO PC AAIV.IiCL FORT Figura 6 15 Desarrollo de Sensor de Nivel Ultrasónico Los datos de programación y las señales de sincronismo se aplican al PIC a través de R2 y R3. Los diodos D1, D2 y el resistor R1 dejan que el pin 13 del PIC pueda ser utilizado como una entrada para la programación y una salida para la verificación (Una misma pata de I/O puede ser empleado tanto como entrada o salida). Cuando la pata 17 del conector en el po rt de la impresora está en estado alto, la PC puede leer los datos desde la pata 13 del PIC a través de la pata 11 del conector de la impresora. De este modo, R1 y D2 se encargan de detener la señal de datos. Cuando la pata 11 del conector de la impresora está bajo, D1 conduce. El ánodo de D2 es bajado a tierra para bloquear la señal de datos. El chip PIC estará libre para recibir datos desde la pata 14 del po rt de la impresora. La conexión que crea D1 entre las patas 11 y 17 del conector de la impresora permite que el software de programación detecte si el programador está conectado al port de la impresora. Los capacitores Cl y C2 eliminan el ruido que pueden producir los cables que llevan la corriente DC. La tensión necesaria para que se produzca la programación es comandada por Q1 a través del pin 2 del po rt de la impresora. Se requieren dos suministros de tensión para poner en marcha el Programador PIC; 5V para la pata 14 y 12V para la pata 4. Estas tensiones pueden ser tomadas desde la misma PC o desde una fuente externa. La tensión a aplicar en la pata 4 debe estar comprendida entre 12V y 14V. Asegúrese de que la línea de 12V tenga realmente 12V como mínimo. Si desea emplear fuentes externas puede utilizar el esquema de suministro de tensión mostrado en la figura 7. Figura 7 El circuito del programador es tan simple que puede ser construido fácilmente en una pequeña placa de circuito impreso con uso de técnicas de construcción estandarizadas. El montaje por separado del conector del cable hace que el Programador PIC sea más fácil de utilizar, simplemente se lo conecta al po rt de la impresora de la PC con un multicable. 16 Desarrollo de Sensor de Nivel Ultrasónico Programación del PIC La manera más fácil de aprender a utilizar el Programador PIC es escribir un programa simple e incorporarlo a un chip. Este modo de aprender las características del programador, también le brindará la oportunidad de verificar su hardware y software. Figura 8 Si embargo, también podemos hacer el circuito con un PIC, tal como se muestra en la figura 8. Si bien este circuito puede costar más caro que un circuito digital tradicional, es más pequeño y no necesita tanto espacio físico para contener todos sus componentes. De todos modos, hay otro argumento para utilizar el PIC en una tarea de estas características: su inteligencia. Se pueden generar diferentes modelos o seleccionar múltiples modelos con la adición de un simple mecanismo interruptor. Con componentes discretos, el circuito debiera ser descartado y rediseñado para adaptarse a este tipo de cambios. Con un PIC, sólo es cuestión de modificar el programa, borrar el PIC y reprogramarlo. Para programar un PIC desde una PC hace falta un programa y conocer el set de instrucciones de microcontrolador. De esta manera, el programa, escrito en lenguaje Assembly PIC, se muestra en la Tabla 1. La parte más importante de cualquier programa es la documentación. Si deja notas en el programa, recordará qué es lo que estaba intentando hacer cuando revise el programa, la vez siguiente. En el programa, estas notas aparecen en cualquier renglón que se inicie con punto y coma. Estos renglones serán ignorados por el software, mediante un montador que convierte el texto del programa en números binarios que el PIC reconoce como instrucciones. Las primeras tres instrucciones son: processor, 16f84 17 Desarrollo de Sensor de Nivel Ultrasónico include <p16f84.inc>L _config. :COdigo kssembly para mio`roo>ntrolador PIC16 84 como :circuito secuencia'. .Encendido de Led en secuencia rotativa. .Con una frecuencia de 75kHz, cada led permanecerá ;encen:iolo durante 0.5segundos, Conflgr.rracitA de la CPU (se trata de un 16F84 con oscilador RC y grabado con tension positiva durante el pulso en estadr, alto ) procesor 1034 include- <p16f84.lnc:r _config _RC_cs. & t^I}I OFF & P+4RTE _ON sea, variables las dos direcciones cle memoria equ equ = dlre:clán hexa 1 F = dirección hexa lE H'1F H'1E Ptopfama org 0 ; comienzo en la olueo:hon Elijo al Port B corno salida y la inJclalizo mroEdu•B'00000000' t^is PORTB Bl100 0 000 1' n,oVwf F'OF'TE, w:= 00000' ii bina nog ;porte. ctrl register '_ w w:= 00000))1 binario port B itself w Pote el bit del port B hacia la izquierda mlaol n •rif PpkTP.f Espere un tiempo para ejecutar nuevamente la subrutina o loop J1oop: kocp moclw movxf movwf decfsz godo •Jectsz. goto Estas son instrucciones para el técnico. La primera instrucción le indica al técnico que utilice las instrucciones del 16F84. La segunda le indica que debe incluir un constantes conjunto de un en predeterminadas archivo llamado p16F84.INC. Finalmente, la tercera establece varios bits de configuración en el PIC para activar o desactivar determinadas características del hardware. En este ejemplo, el chip utilizará su oscilador RC, su WDT (cronómetro "vigilante") será desactivado y el PWRTE (reloj automático de reseteado) será activado. De este modo, el PIC "rebooteará" (se pondrá en marcha) con cualquier tensión que se le aplique, pero no "rebooteará" automáticamente muchas veces por segundo. d'50' w = 50 en decimal J K J:= w kf';f kk,op ji jlc•:ip ':lo hace' +?s nuevamente gano mloop K := w :K= K-1. salte stK =0 J=J1, salte siJ =^ Es importante darle uso a la instrucción _config en todos los programas utilizados con el Programador PIC. El programa del técnico no realizará la programación real, sólo creará un archivo con los números que serán transferidos al chip PIC como un segundo paso. end Tabla 1 18 Desarrollo de Sensor de Nivel Ultrasónico Las dos instrucciones que reservan espacio de memoria en el RAM de los PIC's para dos variables, que se llamarán "J" y "K". El proceso es similar a estipular variables en BASIC, con la diferencia de que se deben determinar las ubicaciones físicas de RAM que se utilizarán. En este caso, las ubicaciones (en una numeración hexadecimal) son 1E y 1 F. Estas ubicaciones serán utilizadas para almacenar calculadores que registren la cantidad de veces que una subrutina (loop) ha sido repetida. La instrucción org le indica al montador que el programa se inicia en la ubicación O de la memoria de programa y que el programa real será el próximo. La primera instrucción real del PIC es una instrucción movlw que borra el contenido del registro W. Ese número es luego copiado en el registrador de control TRIS para el Po rt B y establece que las patas 6 a13 (que son manejadas por el Po rt B) sean terminales de salida en vez de serlo de entrada. Si hubiese querido que todas fuesen entradas debiera haber copiado en el po rt B la palabra "11111111" Volviendo a nuestro programa, seguidamente se introduce el número binario 00000001 en el registrador W y lo copia al Po rt B. Esta acción enciende el LED conectado a la pata 6, dado que ahora, el terminal Pata O pin 6, que es de salida, tiene un nivel "1", es decir, un nivel alto. Pero antes de que tenga tiempo de visualizar la llegada del pulso al LED, el programa ejecutará una instrucción rlf que rota los contenidos del Po rt B a la izquierda y cambia los datos a 000000-10. Esta acción encenderá el segundo LED conectado al conector 7. La repetición de la instrucción producirá 00000100, luego 00001000, y así sucesivamente, esto hará que los diferentes leds se enciendan en secuencia. Entre rotaciones, el programa necesita esperar 1/2 segundo aproximadamente, de modo que la acción no es tan rápida como para que no se la pueda apreciar. Esa es la causa por la cual aparece en el programa una subrutina de demora. El programa almacena el número decimal 50 en las ubicaciones de memoria "J" y "K", utilizando la instrucción decfsz para la cuenta regresiva de 50 a 0. Las instrucciones condicionales del PIC son inusuales, y el descfsz no es una excepción. Esta instrucción significa: "Decrementar y omitir la instrucción siguiente si la variable es igual a cero". Normalmente, el resultado no es cero y la parte "ir a" de la instrucción no es omitida. De tal modo, la subrutina (loop) se ejecuta repetidamente hasta que K llega a cero. El programa real utiliza dos loops (subrutina), una incrustada dentro de la otra. 19 Desarrollo de Sensor de Nivel Ultrasónico Finalmente, ir a mloop envía la ejecución al comienzo del programa. La instrucción end no es una instrucción para el microcontrolador (CPU); sólo le indica al montador que el programa ha finalizado. El 16F84 tiene 35 instrucciones CPU diferentes. Como puede ver a partir del programa simple que hemos creado, no debe dominarlas a todas para escribir programas útiles. 20 Desarrollo de Sensor de Nivel Ultrasónico Transmisión de Datos a Través de un PlC Tal como lo dice MICROCHIP en sus páginas Web, los microcontroladores PIC16CXXX son de alto rendimiento y están basados en EPROM de 8 bits. Algunos de los miembros de esta serie (como PIC16C71 y PIC16C84) no tienen un port (puerto) serie asincrónico. A continuación describiremos la implementación del software que permite la comunicación con el exterior por medio de las interrupciones de la I/O Serie Asincrónicas (Half Duplex RS-232 Communications). Los PIC's pueden operar a altas velocidades con un mínimo de 250ns de tiempo de ciclo (con una frecuencia de reloj de entrada de 16MHz). Figura 9 Transmisión de Datos RS-232 desde el PIC El modo de transmisión se puede implementar en forma directa a través del software. Una vez que se conocen la frecuencia de reloj de entrada y el promedio de información a transmitir (baud), se puede calcular la cantidad de ciclos de reloj por bit. El cronómetro del chip TimerO, con su pre-escalímetro, puede ser usado para generar una interrupción en el desbordamiento de TMRO. Esta interrupción del desbordamiento TMRO puede ser usada como regulación de tiempo para enviar cada bit. La frecuencia de reloj de entrada (_Clkln) y el Promedio Baud LBaudRate) pueden ser programados por el usuario y el valor de tiempo límite de TMRO (el período para cada bit) es calculado en el tiempo de ensamble. En el tiempo de ensamble también se determina si debe asignarse o no el preescalímetro aTimerO. Este cálculo se realiza en el archivo de encabezado rs232.h. Se pueden obtener transmisiones de muy alta velocidad si se realiza con "demoras de software" en lugar de ser conducida "a cada interrupción"; de cualquier modo, el procesador se dedicará totalmente a cumplir con este trabajo. La transmisión de un byte se realiza apelando a la función PutChar y luego se transmite el byte de datos en el TxReg. Antes de apelar a esta función (PutChar), los datos deben cargarse en TxReg, y debe asegurarse que el puerto serie esté 21 Desarrollo de Sensor de Nivel Ultrasónico libre. El puerto serie está libre cuando los bits _txmtProgress y _rcvOver se encuentran despejados. La función PutChar permite lo siguiente: Asegurarse que los bits _txmtProgress & _rcvOver estén despejados. Cargar TxReg con datos a ser transmitidos. Llamar a la función PutChar. Recepción de Datos RS-232 por el PIC La implementación del modo de recepción difiere poco del modo de transmisión. A diferencia del pin de transmisión (TX en el código del ejemplo es RB7, pero podría ser cualquier pin I/O), el pin de recepción (RX) debe conectarse al pin RA4/TOC-KI. Esto se debe a que en la recepción, el Bit de Inicio, que es asincrónico por naturaleza, debe ser detectado. Para detectar el bit de Inicio, cuando se coloca en el modo Recepción, el módulo TimerO es configurado en el modo Contador. El registro OPTION es configurado de modo que el módulo TimerO sea colocado en el modo Contador (incremento en el reloj externo del Pin RA4/TOCKI) y ajustado para que aumente en el extremo de caída del pin RA4/TOCKI sin asignarle el pre-escalímetro. Luego de realizar esta configuración, TMRO (Archivo Reg 1) es cargado con OxFF. Un cambio de nivel en TOCKI hace que TMRO gire desde OxFF hasta Ox00, así genera una interrupción que produce un Bit de Inicio. El pin RA4/TOCKI es probado nuevamente para asegurar que la transición en TMRO sea la correcta. Luego de detectar el bit de inicio, se reconfigura el módulo TimerO para que se incremente en el reloj interno y se le asigna un preescalímetro de acuerdo a la frecuencia de reloj y al promedio del "baud" (configurados de la misma manera que en el modo transmisión). El puerto serie de software es colocado en el modo recepción cuando se hace un llamado a la función GetChar Antes de llamar a esta función, asegúrese que el puerto serie esté libre (por ejemplo, los bits de status _txmtProgress y _rc-vOver deben estar en "O"). Para concluir la recepción de un byte, deben guardarse los datos en RxREg y despejarse el bit rcvOver. Resumen de la función GetChar: 1. Asegurarse que los bits _txmtProgress & _rcvOver estén despejados. 2. Llamar a la función GetChar. 3. El Byte recibido debe estar en TxReg luego de despejarse el bit _rcvOver. 22 Desarrollo de Sensor de Nivel Ultrasónico Generación del bit de Paridad Se puede activar la paridad en el tiempo de ensamble, si se configura la señal "_PARITY-ENABLE" a TRUE. Si se activa, la paridad puede configurarse en paridad PAR o IMPAR. En el modo de transmisión, si se activa la paridad, el bit de paridad es calculado y transmitido como el noveno bit. En recepción, la paridad es calculada y comparada con el noveno bit recibido. Si no son iguales, se debe ajustar el bit de error de paridad en el Registro de Status/Control del RS-232 (el bit ParityErr del SerialStatus reg). El bit de paridad se calcula usando el algoritmo mostrado en la figura 10. Este algoritmo es altamente eficiente usando las instrucciones SWAPF y XORWF del PIC16CXXX (con capacidad de llevar al destino, como así también al mismo registro de archivo o al registro W). La subrutina (llamada GenParity) se encuentra en el archivo txmtr.asm. Brt ^ Paridad Figura 10 Opciones de Tiempo de Ensamble El "firmware" está escrito como una rutina de propósito general, y el usuario debe especificar los parámetros que se muestran en la Tabla 2 antes de ensamblar el programa. El registro Status/Control se describe en la Tabla 3. Tabla 2 LISTAQ DE OPCIONES DE TIEMPO DE ENSAMBLE _Clkln: Frecuencia de reloj de entrada del procesador _Baud Rate: Promedio de información a transmitir (baud) deseado. Puede usar cualquier valor válido. El máximo promedio "baud" posible dependerá de la frecuencia de reloj de entrada. Se debe probar de 600 a 4800 Baud cuando se usa un Reloj de Entrada de 4MHz. Se puede emplear un valor entre 600 a 19.200 Baud cuando la frecuencia del reloj de entrada es de 10MHz. Se pueden emplear promedios más altos usando frecuencias de reloj de Tabla 3 ASIGNACION DE BITS DE STATUS SERIE/ REGISTRO DE CONTROL Bit #: O Nombre: _txmtProgress Descripción: 1 = Transmisión en progreso - O = Transmisión por línea libre Bit #: 1 Nombre: txmtEnable Descripción: Configure este bit en inicialización para permitir la transmisión. Este bit se usa para abortar la transmisión. Se debe abortar la transmisión si en medio de ella (por ejemplo, cuando el bit _txmtProgress es "1") el bit _txmtEnable se encuentra despejado. Este bit se ajusta automáticamente cuando se llama a la función PutChar. Bit #: 2 Nombre: _rcvProgress 23 Desarrollo de Sensor de Nivel Ultrasónico entrada más altas. Luego de especificar _BaudRate & _CIKin, el programa seleccionará automáticamente todos los registros de tiempo apropiados. _DataBits: Puede especificar de 1 a 8 bits de datos. _StopBits: Limitado a 1 Bit de Detención. Debe ser configurado. _PARITY_ENABLE: Señal de activación de paridad. Configúrela en VERDADERA o FALSA. Si usa PARIDAD, configúrela a VERDADERA, de otro modo en FALSA. Vea la descripción siguiente de la señal "_IMPAR_PARIDAD". _ODD_PARITY: Configúrela en VERDADERA o FALSA. Si lo hace en VERDADERA, entonces usará la PARIDAD IMPAR, de otro modo usará el Esquema de Paridad PAR. Esta señal se omitirá si _PARITY_ENABLE se configura en FALSA. USE RTSCTS: Señales de Hardware RTS & CTS. Si las configura en FALSO, no usará hardware. Si las configura en VERDADERO, RTS & CTS usarán hasta 2 Pins I/O del PORTB. Descripción: 1 = Mitad de una recepción de byte; O = Se ha completado la recepción de un byte (en RxReg) y se ajusta cuando se detecta un bit de inicio válido en el modo recepción. Bit #: 3 Nombre: _rcv0ver Descripción: O = Culminación de la recepción de un byte. El código del usuario puede registrar este bit luego de llamar a la función GetChar y verificar su configuración. Luego de hacerlo, el byte recibido estará en RxReg. Otros bits de status también deberían revisarse por si aparecen errores en la recepción. Bit #: 4 Nombre: _ParityErr Descripción: 1 = Error de paridad en la recepción (no relacionado con el tipo de paridad elegido). No es aplicable si no usa la Paridad. Bit #: 5 Nombre: FrameErr Descripción: 1 = Error de composición en la recepción. Bit #: 6 : No se usa. Bit #: 7 Nombre: _parityBit Descripción: El noveno bit de transmisión o recepción. En el modo transmisión, el bit de paridad del byte a ser transmitido se guarda en el mismo bit. En el modo recepción, el noveno bit (o bit de paridad) recibido se guarda en el mismo bit. No es aplicable si no usa la Paridad. Hardware El hardware está primariamente relacionado con la transmisión de tensiones según el protocolo RS-232 con niveles CMOS y viceversa. Microchip sugiere tres circuitos entre los cuales el usuario puede elegir el que mejor se aplique a su equipamiento. La diferencia fundamental entre cada solución es el costo en relación a la cantidad de componentes. Los circuitos de las figuras 11 y 12 son más económicos pero tienen más componentes que el circuito de la figura 1. Este circuito transmite y recibe datos por medio de una línea RS-232, que usa un chip simple (MAX-232A) alimentado con una tensión simple de +5V. El circuito de la Figura 11 es una 24 Desarrollo de Sensor de Nivel Ultrasónico interfase RS-232 de bajo costo pero requiere dos chips y una fuente de tensión simple de +5V. a:c n 743•2121 ITd Itch C^T g 1Nc.,¡.32"I 4 --^- ,CTS Figura 11 La Figura 12 muestra una interfase muy económica RS-232 que permite la comunicación con una PC-AT sin requerimientos de potencia externa. El circuito se alimenta desde una línea RS-232 (DTR) y requiere una corriente menor que 5mA. De este modo, para comunicarse, el anfitrión deberá mantener.la línea DTR alta y la RTS baja. La tensión se obtiene de la línea DTR, y se requiere que la DTR se mantenga alta y sea de por lo menos 7V. La negativa -5 a -10V requerida por LM301 se obtiene desde la línea RTS y, por consiguiente, el anfitrión debe mantener la RTS baja. Este circuito es posible por el bajo consumo de corriente del PIC16C71 (típicamente 2mA). Figura 12 El Circuito Del Programador Un circuito con PIC siempre se compone de dos secciones. El circuito del dispositivo deseado y los componentes periféricos necesarios imprescindibles para que el PIC funcione, a saber clock y reset (la primer sección cambia con cada proyecto, en tanto que la segunda puede ser común a muchos proyectos). Ambos circuitos periféricos tienen diferentes opciones: el clock puede ser a cristal cuando se requiera precisión, o a RC cuando sólo se requiere que la secuencia de 25 Desarrollo de Sensor de Nivel Ultrasónico encendido tenga un tiempo aproximado. En cuanto al reset, éste puede ser externo con un pulsador o interno y automático, cada vez que se conecta la alimentación de 5V. Una vez definidas estas cosas se puede dibujar el circuito completo, tal como lo mostramos en la figura 13. Figura 13 Observemos primero la sección periférica imprescindible. El clock está generado por un oscilador RC realizado con el PIC, R1 y C1, en tanto que el reset se realiza en forma automática, cada vez que se enciende el equipo, por intermedio de R6. Nuestro circuito de aplicación no puede ser más sencillo, sólo utilizamos cuatro LEDs sobre las patas RAO a RA3 (puerto "A" tomado parcialmente) y sus correspondientes resistores de pull up (resistores a fuente). Nada más simple y fácil de armar en un panel protoboard. Si se armara el circuito y se probara directamente no va a funcionar porque como el PIC no está instruido para realizar ninguna función y los LEDs van a permanecer todos encendidos. El PIC tiene una memoria interna que debe cargarse con números binarios de 8 dígitos; exactamente tiene 48 posiciones de memoria (numeradas desde el O hasta el 2F en números hexadecimales), en donde se le indicará que tarea debe realizar o qué datos fijos debe cargar para ejecutar esas tareas. En nuestro caso activar transistores internos en algunas patas del puerto "A" (predispuestas como salidas) de modo de generar cortocircuitos momentáneos a masa en forma secuencia!. Figura 14 26 Desarrollo de Sensor de Nivel Ultrasónico Instruyendo Al Micro El maestro de nuestro PIC recién comprado es nuestra PC, ella le va a enseñar a realizar su trabajo. Pero la PC no tiene un zócalo para PIC, entonces como la pc no cuenta con esta conexión prevista para el PIC se debe construir. El dispositivo con un zócalo para conectar el PIC e instruirlo se llama genéricamente "Programador de PIC's", y es como un accesorio mas de nuestra PC, conectado con un cable al puerto paralelo o serial de la misma. En algunos casos se necesitan dos programas, a saber: el driver del dispositivo y un programa de aplicación que utilice dicho dispositivo. En el caso de dispositivos que se conectan en el puerto paralelo o serial, el programa driver no es necesario porque dicho puerto ya está debidamente habilitado para usar la impresora. Lo que sí se requiere obligatoriamente, es un software de aplicación del programador. Programadores y software de aplicación de los mismos hay muchos. Algunos son muy simples y económicos y otros son muy complejos y caros. La diferencia entre unos y otros suele ser la posibilidad de aceptar más tipos de PIC's e inclusive microprocesadores o memorias de otras marcas. También se diferencian en la velocidad a la cual cargan el PIC; los hay de alta productividad que trabajan con un elevado flujo de datos y otros más lentos que sólo sirven para tareas de aprendizaje. En nuestro caso vamos a trabajar, con un software que se llama NOPPP, que es absolutamente gratuito y se puede bajar desde Internet. Este software está previsto para ser usado sólo con los PIC16C84, PIC16C83 y PIC16F84 que son los más utilizados El NOPPP es suficientemente sencillo como para implementarlo en un panel protoboard. Señales de Programación de un Pic Si se está acostumbrado a trabajar con memorias serie, no se va a tener inconvenientes para entender cómo se programa un PIC. El PIC, como una memoria, tiene una pata que predispone el dispositivo para leer o para escribir. Si la pata 4 del PIC está a un potencial comprendido entre 13 y 14V, el PIC está preparado para escribir los datos que provienen de la PC. Si la pata 4 está por debajo de 6V, el dispositivo está previsto para ser leído. Los datos a leer o escribir se ponen/obtienen de la pata 13 del PIC con la pata 12 del mismo que opera como clock. Un PIC se lee/escribe accediendo a las diferentes posiciones de memoria por la misma pata por la que se obtienen/ingresan los datos (la pata 13). La señal primero elige la posición de memoria a ser leída/escrita, y luego que esa posición está accesible se escriben/leen los datos. El clock que se coloca en la pata 12 27 Desarrollo de Sensor de Nivel Ultrasónico sirve para indicar en qué momento se debe transferir la información. Los datos pueden estar sobre la pata 13 todo el tiempo que desee, ya que no serán ni leídos ni escritos por la PC hasta que se produzca un cambio de estado (de alto para bajo) en la pata 12. Figura 15 En la figura 15 mostramos las formas de señal indicadas por Microchip para leer/grabar un PIC. Se observa que dentro del comando existe una primera sección de 6 bits que indica la posición de memoria a ser leída/escrita y luego la línea de datos permanece en estado de alta impedancia por un intervalo de tiempo que depende de la operación (durante ese tiempo el clock está apagado). Por último ingresan/egresan los datos. Las conexiones de fuente y las señales deben ser aplicadas según una secuencia predeterminada que debe respetarse invariablemente. Los nombres de las señales se aclaran en la figura 16. Figura 16 28 Desarrollo de Sensor de Nivel Ultrasónico • • • • • • • • • • • El primer paso es colocar el P/C en e/ zócalo del programador con señales y fuentes a potencial de masa. Levantar la tensión de fuente VDD a un potencial de 5V ± 0,2V por la pata 14 (VDD). Levantarla tensión de fuente VPP a un potencial de 13V ± 0,3V por la pata 4 (MCLR NEGADO). Esperar en esas condiciones un tiempo superior a 1 mS. Posicionar el primer dato en la pata 13 (R87) con un potencial alto (mayor a 4 V) o bajo (menor a 1V). Cuando la pata 12 (R86) pase a un estado bajo, inferior a 1V, el dato se carga en la memoria. Continuar cargando los datos con el mismo criterio a un ritmo tal que el dato esté presente por lo menos durante 100nS. Cuando todos los datos fueron cargados se debe esperar 1 segundo. Desconectarla fuente de 13V. Desconectarla fuente de 5V. Retirar el micro grabado. Por sobre todas las cosas debe respetarse el criterio de no sacar un PIC de su zócalo con las fuentes conectadas, porque puede desprogramarse o, peor aun, dañarse definitivamente. También es muy importante respetar las tensiones de fuente y no demorar la llegada de datos, luego conectar VPP (porque podrían cargarse datos falsos por interferencias electromagnéticas). Como se puede entender de la descripción anterior la entrada RB6 es utilizada como clock y la RB7 como entrada de datos en una clásica operación de transferencia de datos en serie. Observe que hay un tiempo entre el momento en que MCLR NEGADO sale de la condición de reset hasta que aparece el primer dato o el primer pulso de clock. También hay un tiempo mínimo para la permanencia de un dato en la entrada (la representación usada para un dato significa que el mismo puede ser alto o bajo, depende del bit que se esté grabando). Lo que no hay es un tiempo máximo pero evidentemente cuando mayor es este tiempo más lenta será la carga del programa. El tiempo más adecuado depende de factores tales como el largo del cable utilizado para conectar el programador a la PC. Si el cable es largo, los pulsos tienden a deformarse y atenuarse, sobre todo cuando son de corta duración (100nS equivalen a una frecuencia de 10MHz). Para evitar problemas, todos los programadores trabajan a velocidades inferiores a la máxima, sobre todo considerando que la capacidad de memoria no es muy grande y para el uso no comercial no son imprescindibles grandes velocidades de grabación. 29 Desarrollo de Sensor de Nivel Ultrasónico Predisposicion de un Pic Un cargador de PIC debe permitir también una operación de verificación para cuando el usuario tiene dudas respecto de la condición de un determinado PIC (vacío o lleno). Solo que el programa almacenado debe ser inviolable en caso de que la persona que lo cargó así lo haya dispuesto. Esto se llama predisponer el PIC y no sólo se lo predispone para hacerlo inviolable, sino que además se determinan otros importantes parámetros de funcionamiento como por ejemplo que esté predispuesto para un clock a RC o que contenga un temporizador de reset interno. Las predisposiciones no forman parte del programa del PIC aunque pueden incluirse junto con éste. Algunos cargadores de PIC's preguntan sobre la predisposición antes de grabar el PIC. La pregunta sobre la predisposición deseada aparece en la pantalla de la PC y uno elige de un menú de opciones. En otros casos, las predisposiciones se escriben antes del programa en una secuencia perfectamente predeterminada que debe respetarse a ultranza. Las predisposiciones son tres y las vamos a analizar por orden: a) La prohibición de lectura. El PIC se programa pero el programa no puede ser leído. b) Habilitación del timer de reset. En el pin up del PIC se puede observar que la pata llamada MCLR negado (4) tiene un doble uso. En principio sirve para predisponer el PIC en grabación o lectura, como ya fuera comentado; pero cuando su tensión cae por debajo de 1V, el PIC se resetea y comienza la lectura del programa por el principio. Este tipo de reset se llama reset a pulsador y se utiliza para provocar alguna acción como, por ejemplo, comenzar una secuencia de encendidos de LEDS o encender un LED por un tiempo predeterminado. Este modo de funcionamiento requiere una acción externa de reset (apretar un pulsador). La misma acción de reset se puede conseguir en forma automática cada vez que se conecta la fuente de 5V. Este modo de trabajar sólo requiere que la pata MCLR (pata 4) esté permanentemente conectada a 5V (con un puente o un resistor de 1K0) y que el PIC esté predispuesto con el Power-up Timer en ON (temporizador de encendido conectado). Cuando el temporizador está habilitado, luego de conectar la fuente de 5V, comienza un conteo interno (que dura 72ms) durante el cual el PIC pone todas sus compuertas internas en cero (reset) y recién después comienza a efectuar los pasos que le indica el programa. A propósito, el nombre MCLR proviene de MASTER CLEAR (literalmente, limpiador maestro). c) Circuito de vigilancia (perro guardián). En realidad el PIC tiene un reset extra que opera luego de un cierto tiempo si no se realiza la operación final del programa. Es como una especie de rutina automática de descongelamiento que opera en caso de falla del programa. Eventualmente puede ingresar algún pulso de energía al sistema que envíe al programa a un loop (rizo) eterno (una derivación o camino cerrado sobre sí mismo). Una vez que el programa ingresó en ese camino no puede salir de él salvo 30 Desarrollo de Sensor de Nivel Ultrasónico que se produzca un reset. Si pasa un tiempo considerable sin que se llegue a la última sentencia del programa, el PIC analiza su predisposición y si el Watchdog timer (literalmente perro guardián) está habilitado provoca un reset programado. En los programas más simples y donde se producen loops infinitos a propósito (de los que sólo se sale tocando un pulsador), se suele dejar el perro guardián desconectado para evitar un funcionamiento errático. 31 Desarrollo de Sensor de Nivel Ultrasónico LOS MICROCONTROLADORES DE NACIONAL Y PHILIPS La Serie Cop De National Los microcontroladores COPSAx7 OTP son miembros de la familia de los COP8 y utilizan como "corazón" una arquitectura con un chip de 8 bits. Estos dispositivos fueron fabricados bajo el proceso EPROM de alta densidad, de la National Semiconductor, y ofrecen una gran variedad de chips, con amplia gama de temperatura y rangos de tensión de trabajo, con la finalidad de satisfacer un vasto número de aplicaciones. Las características "clave" incluyen arquitectura mapeada de memoria de 8 bits, un contador y un timer de 16 bits con dos registros de 16 bits que se vinculan con tres selectores (Generación PWM de Procesador Independiente, Contador Externo de Eventos y Disponibilidad de Captura de Entradas), dos selectores HALT/IDLE con capacidad para guardar y con la posibilidad de la presencia de un interruptor multimedia para despertarse, un oscilador R/C tipo chip, salidas de corriente elevadas, opciones seleccionables para el usuario, tales como WATCHDOG, configuración del Oscilador y potencia de reseteo. Prestaciones destacables de hardware La línea COP ofrece varios elementos destacables de hardware, tanto en lo que hace a la arquitectura interna del núcleo de CPU como en los periféricos incorporados en el chip. • La línea COP emplea una arquitectura interna tipo Harvard (con buses de instrucciones y datos separados), que permite que la mayor parte de las instrucciones (el 77%) puedan ser ejecutadas en un único ciclo de instrucción de un microsegundo, al realizarse simultáneamente el acceso al espacio de instrucciones (EPROM) y al espacio de datos (memoria RAM y periféricos), determinan con ello una performance estadística próxima a 1 MIPS (un millón de instrucciones por segundo). A diferencia entre la línea COP y otros microcontroladores obtenibles en plaza que también presentan arquitectura Harvard, la complejidad propia de este tipo de arquitectura ha sido adoptada sin limitar, por ello, la cantidad y versatilidad de las instrucciones disponibles, ni eliminar periféricos. 32 Desarrollo de Sensor de Nivel Ultrasónico • Dentro de todos los COP, incluso los más pequeños, existen dos timers, llamados TO y T1: el timer TO es un contador simple de 12 bits que opera en modo libre y descendente y es usado sólo para la salida controlada de los modos de bajo consumo, y operación del Watch-Dog-Clock; el timer T1, de 16 bits, ofrece en cambio una versatilidad realmente destacable, al poder ser operado en 8 modos distintos, que en sus variaciones permiten el conteo de eventos externos (External Event Counter), detección de flancos (Input Capture) y un modo de generación de señales de PWM que opera en forma independiente al procesador. Figura 18 • • • • • • • Los COP (figuras 17 y 18) vienen en versiones con EPROM borrable (encapsulado cerámico con ventana) y en versiones OTP de bajo costo, y ofrecen desde 1K de EPROM y 64 bytes de RAM (COP8SAA7), hasta 4K de EPROM y 128 bytes de RAM (COP8SAC7). El empleo de tecnología CMOS estática le permite operar en frecuencias que van desde continua hasta 1MIPS, con tensiones desde 2,7V a 5,5V y ofrecer un modo de consumo reducido (IDDLE) y un modo de muy bajo consumo (HALT). La salida de los modos de bajo consumo (WAKE UP) puede ser activada desde múltiples patas, o desde el timer TO y generará, si así se lo desea, las interrupciones consiguientes. Los COP incorporan en forma estándar una interfase de entrada/salida serie sincrónica Microwire PLUS (SPI compatible) que les permite su fácil conexión con periféricos serie, tales como conversores A/D, conversores D/A, etc. Los COP poseen un monitor de operación (Watch dog) y un monitor de clock. Poseen abundantes pines de entrada/salida paralela (16 I/O en los chips de 20 patas y 24 I/O en los de 28 patas), donde ciertas entradas son de tipo SCHMITT Trigger y pueden ser programadas para incorporar internamente una resistencia de pullup y operarán como salidas; ciertas patas poseen una capacidad importante de manejo de corriente de hasta 10mA. Posee varias opciones de oscilador que van desde una fuente externa, un oscilador RC interno al que se le puede alterar la frecuencia mediante un 33 Desarrollo de Sensor de Nivel Ultrasónico • capacitor externo, hasta un oscilador a cristal/resonador en donde la inclusión o no de la resistencia de polarización es programable. Finalmente, el diseño total de los COP ha sido realizado con un control de velocidad de transistores (slew rate) y niveles de señal internos al chip, orientados a la generación de bajos niveles de irradiación electromagnética (EMI: electro magnetic inte rference), lo que lo hace ideal para su uso en el área de comunicaciones e instrumentación. Esta tecnología permite hablar de reducciones en el nivel de generación de interferencias en el orden de 20dB respecto a procesadores similares que operan en la misma frecuencia. Prestaciones destacables de software Los pequeños COP no sólo ofrecen recursos notables de hardware, sino que también tienen características de software propias de procesadores más elaborados, que permiten generar fácilmente estructuras de código propias de lenguajes de alto nivel. • Manejo de RAM como registros a través de dos registros de indirección B y X: la disponibilidad de dos registros que pueden ser operados como índices y programados para su post incremento o su post decremento automático permite el manejo de tablas en RAM en forma eficiente. • Carga inmediata de memoria: esta capacidad permite la carga de datos constante en memoria sin necesidad de pasar por el acumulador y la memoria. • Exchange: esta instrucción permite el intercambio de valores entre el acumulador y la memoria, sin necesidad de pasos intermedios. • Con instrucciones especiales para uso de la indirección en el espacio de memoria de programa: a) JID (Jump Indirect): salto indexado ideal para crear estructuras tipo SWITCH o CASE. b) VIS (Vector Interrupt Select): ideal para la realización de Interrupt Dispatchers. c) LAID (Load Acumulator Indirect): para el acceso indexado a tablas en EPROM. • Swap nibbles y Ajuste decimal: (operación en BCD): estas instrucciones son de gran utilidad para operar con números en BCD. • Manejo del stack (PUSH y POP): para la salvaguarda de valores intermedios sin necesidad de definir áreas de almacenamiento estático y para el pasaje de parámetros y devolución de resultados de subrutinas. • Manejo de bits (set reset test): para el manejo de los po rt s y registros internos a nivel de bit. • Comparación de los COP con otros procesadores de plaza de costo similar Quizás, quien analice las prestaciones de los COPS, si ha trabajado previamente con microprocontroladores de mayor performance y costo, no resulte sorprendido, pues encontrará en los COP lo que parecía natural en aquellos. Lo sorprendente de las prestaciones de los COP surge cuando se los compara con microcontroladores de similar pinout y costo. 34 Desarrollo de Sensor de Nivel Ultrasónico • Diferencias más notables con e/ MC68HC705K1: este microcontrolador de 16 patas y arquitectura Von Neumann ofrece la mitad de EPROM (504 bytes) y la mitad de RAM (32 bytes) que el COP más pequeño (COP8SAA7 de 20 pines). Tiene sólo 10 pines de I/O frene a los 16 del COP y, aunque su ciclo de instrucción más rápido es de 2 MIPS para algunas instrucciones, la mayor parte de ellas requiere 2 ciclos de reloj, con lo que su máxima performance está también alrededor de 1 MIPS; asimismo, el hecho de que la mayor parte de las instrucciones sea de 2 bytes hace que el aprovechamiento de su escasa EPROM sea aun menor. El Timer del MC68HC705K1 es uno elemental, de tipo free-run y de lectura solamente, siendo su única fuente de reloj el oscilador interno del chip, y sólo puede generar interrupciones por Ove rflow y cuatro opciones de división adicionales (llamadas Real Time Interrupt). Cualquier señal de PWM o captura de eventos que se desee realizar debe ser por software, con dedicación casi total de la CPU. El acceso a periféricos serie debe simular la interfase SPI por software. En cuanto al software, sólo posee un registro índice sin opciones de autoincremento o decremento, no permite el uso del Stack, la carga inmediata de datos en memoria, el intercambio entre acumulador y memoria, ni posee instrucciones para manejo de datos BCD. • Diferencias más notables con el MC68HC705J1A: este microcontrolador de 20 patas y arquitectura Von Neumann posee EPROM (1.240 bytes) y Ram (64 bytes) en cantidad comparable al COP más pequeño (COP8SAA7 de 20 pines), y tiene 14 pines de I/O (frente a los 16 del COP). En el resto de sus características es idéntico al MC68HC705K1. • Diferencias más notables con el PIC16C54: este microcontrolador de 18 patas posee arquitectura RISC tipo Harvard, 512 palabras de EPROM y 25 bytes de RAM, en cantidad comparable al COP más pequeño (COP8SAA7 de 20 pines), sólo 12 pines de I/O (frente a los 16 del COP) y un costo similar. Su subsistema de Timer es algo más elaborado que el de los chips de Motorola, aunque más elemental que el de los COP; en él, el contador es legible y la escritura se hace por software, puede recibir su señal de clock reloj del reloj interno o de una pata externa, y posee un prescaler programable. Sin embargo, al igual que los procesadores de Motorola, cualquier generación de señales de PWM, o acceso a periféricos serie (donde debe simularse la interfase SPI) deba ser realizada por software, con dedicación casi total de la CPU. No tiene mecanismos de interrupción (ni internos, ni externos), posee un único registro de indirección (FSR) y un Stack mínimo de sólo dos niveles sin posibilidad de accesos tipo PUSH/POP que limita seriamente la posibilidad de anidamiento de subrutinas. La velocidad de los PIC es notable (5 MIPS), pero la ausencia de interrupciones, y el reducido set de instrucciones disponible (33 instrucciones) hacen que su performance neta sea comparable a la de los 35 Desarrollo de Sensor de Nivel Ultrasónico otros microcontroladores analizados; la ausencia de interrupciones, por su parte, hace que la detección de eventos sólo pueda ser realizada a costa de ocupar totalmente la CPU, o con inclusión de test "salpicados" en el código, con una pésima latencia de atención y disminución en la eficiencia del código. Otras serias diferencias de hardware con los COP y los chips de Motorola es la inexistencia de pullup/down, programables en las patas de I/O y un modo de bajo consumo (SLIIP) del que sólo se sale por RESET. • • Diferencias más notables con el P/C16C56: es totalmente similar al PIC 16C54, sólo que posee 1K palabras de programa. Diferencias más notables con el P/C16C58: es totalmente similar al PIC 16C54, sólo que posee 2K palabras de programa y 72 bytes de RAM. Características Fundamentales de la Serie COP Damos a continuación las características más "atractivas" que suelen darse sobre esta familia. Tenga en cuenta que algunos conceptos ya fueron vertidos en el informe que hemos dado al comienzo; reseñamos, en este caso, la "versión" del fabricante. • • • • • • • • • • • • • Son microcontrolador tipo OTP de 8 bits y bajo costo. Poseen espacios de programa OTP con protección para lectura y escritura. Son diseñados para que tengan emisiones de poca radiación. El kit se provee con conectores Multi-po rt para "despertar" (permiten su funcionamiento en forma versátil), con interruptores opcionales de 4 a 8 pines. Tienen 8 bits de espacio de almacenamiento en EFROM. El operador puede optar por relojes seleccionables por el usuario: Reloj controlado por Cristal/Resonador Opción Cristal/Resonador con resistencia sobre chip. Oscilador Externo Oscilador R/C Interno Poseen Reseteo Interno, seleccionable por el usuario. Están provistos con la posibilidad WATCHDOG y Lógica de Reloj de Monitor. Tienen 12 salidas altas de corriente. 36 Desarrollo de Sensor de Nivel Ultrasónico El cuadro 1 resume algunas características a tener en cuenta. Características del CPU • • • • • • • • • • • • • • • • • • • • • • • Versatilidad en las instrucciones de configuración, las cuales son de muy fácil utilización. Tiempo cíclico de instrucciones. Posee ocho Interruptores de servicio de fuentes múltiples con vector: Interruptor Externo Timer de inactividad TO Un timer con dos interruptores. Interfaz Serial MICROWIRE/PLUSTM. Despertador de puertos múltiples. Trampa de Software VIS de fábrica (interruptor de fábrica). El puntero SP es de 8 bits (en RAM). Tiene dos Punteros Indirectos de Memoria de Datos, 8 bits. Manejo de Bit Real. Mapeo de Memoria I/O. Instrucciones aritméticas BCD. Características Periféricas Lógica de Despertador de Entradas Múltiples. Posee un timer de 16 bits con dos registros de 16 bits que soportan: Un selector PWM de Procesador Independiente. Un contador para eventos externos. Un selector contador de Captura de Entrada. Posee un timer de inactividad La interfaz es Serial MICROWIRE/PLUS (Compatible con SPI) Características I/O • • • Opciones I/O de software seleccionable: Salida TRI-STATE Salida para tirar y presionar 37 Desarrollo de Sensor de Nivel Ultrasónico • • • • • Entrada Débil para tirar Entrada de Impedancia Alta Entradas Schmi tt en puertos G y L Hasta 12 salidas de corriente elevada. Eficiencia de Pin (ej. En un paquete de 44 pines, 40 son destinados a I/O). Diseño CMOS Estático Completo • Drenaje Bajo de Corriente (normalmente <4 pA). • Operación simple de abastecimiento: 2 .7V a 5.5V. • Dos selectores para guardar: HALT y IDLE. Rangos de Temperatura • 0°C a +70°C, -40°C a +85°C, y de -40°C a +125°C Soporte de Desarrollo Paquete con ventanas para DIP y PLCC Emulación en tiempo real y eliminación de funciones erróneas, por completo, de programa ofrecido por MetalLink Development System. En la figura 19 se da el diagrama en bloques del integrado COP8SAx7. Figura 19 La familia COPSAx7 de dispositivos incorpora circuitos que brindan protección contra interferencias electromagnéticas, es decir, un problema que se incrementa en los diseños de los microcontroladores, de hoy en día. La tecnología de reducción, patentada por EMI, de National, ofrece circuitos de reloj EMI, drivers de salida de encendido gradual (GTO) y filtros internos, que ayudan a circunscribir muchas de las ediciones EMI que influencian los diseños de control incorporados. National logró la reducción 15dB-20dB en las transmisiones EMI, cuando los diseños ya incorporaron su circuito de reducción de patente EMI. 38 Desarrollo de Sensor de Nivel Ultrasónico Arquitectura La familia COPSAx7 está basada en una arquitectura de hardware, que permite a las tablas de datos tener un acceso directo hacia la memoria de programas. Esto es realmente importante para las aplicaciones modernas que se ubicaban en los microcontroladores, ya que la memoria de programa, usualmente, es ROM o EPROM, mientras que la memoria de datos, normalmente, es RAM. Como consecuencia, las tablas de datos regularmente, deben ser contenidas en ROM o EPROM, en consecuencia, no se pierden cuando el microcontrolador tiene un corte de electricidad. En una arquitectura modificada de Hardware, tanto la ida y venida de instrucciones como la transferencia de datos de memoria pueden extenderse, con dos líneas de escenario, lo cual permite que la próxima instrucción se desplace de la memoria de programa mientras la instrucción actual está siendo ejecutada, por medio de la utilización de la memoria de datos. Esto no es posible con una arquitectura de dirección simple tipo Von Neumann. La familia COPSAx7 soporta un esquema de multitudes de software que permite al usuario incorporar muchos llamados de subrutinas. Esta capacidad es importante cuando se utilizan Lenguajes de Nivel Elevado. Con una pila de hardware, el usuario está limitado a un número pequeño y fijo de niveles de pilas. Juego de Instrucciones En el terreno vinculado al costo/beneficio, de los microcontroladores de 8 bits, de hoy en día, la flexibilidad y el tiempo son varios de los temas claves, para el mercado, que los diseñadores de sistemas enfrentan al tratar de construir un producto de muy buena ingeniería que pueda competir perfectamente en el mercado. Muchos de estos temas pueden tratarse de manera tal que el juego de instrucciones del microcontrolador se ocupe de las tareas de procesamiento. Y esa es la razón por la cual la familia del COPS ofrece un conjunto de instrucciones único y una eficiencia de código que requieren los microcontroladores de hoy día, para suministrar flexibilidad, funcionalidad, costos reducidos y tiempo rápido para su arribo al mercado. La eficiencia de código es importante ya que permite a los diseñadores empacar, en chip, de una forma más funcional en menos espacio de memoria de programa (ROM/OTP). Seleccionando un microcontrolador con menos tamaño de memoria de programa, podemos obtener costos más bajos de sistema, como así también, la seguridad de saber que se pueden empaquetar más en el espacio de memoria de programa disponible. 39 Desarrollo de Sensor de Nivel Ultrasónico Herramientas Clave del Juego de Instrucciones La familia del COPSAx7 incorpora una combinación única de herramientas vinculada al juego de instrucciones, las cuales proveen a los diseñadores, eficiencia de código óptima y, también, utilización de memoria de programa. Ejecución de Código de Ciclo Simple/Byte Simple La eficiencia se debe al hecho de que la mayoría de las instrucciones pertenecen a la variedad de byte simple. Debido a que el código compacto no ocupa una suma sustancial de espacio de memoria de programa, los diseñadores pueden integrarle atracciones adicionales, así como funcionalidad en el espacio de memoria de programa del microcontrolador. Además, la mayoría de las instrucciones ejecutadas por el dispositivo son de ciclo simple, lo cual conduce a un tiempo mínimo de ejecución de programa. En realidad, el 77% de las instrucciones son de byte simple, ciclo simple, y proveen un código mayor, así también, como eficiencia de tipo I/O, además de una ejecución de código más veloz. Multifunción, Muchos Byte Simples El juego de instrucciones COPSAx7 utiliza muchas instrucciones multifunción, byte simples. Esto permite que una instrucción simple logre realizar funciones múltiples, tales, como DRXZ, DCOR, JIK y Carga/Cambio, con post incremento y post decremento, para nombrar algunos ejemplos. En muchos de los casos, el conjunto de instrucciones puede ejecutar, en forma simultánea, tres funciones con la misma instrucción de bite simple. JID: (Salto Indirecto). Instrucción de byte simple, eventos externos de decodificación y saltos a rutinas de servicios correspondientes (frases simples hasta otros niveles de lenguaje más elevados). LAID: (Carga de Acumulación Indirecta) Tabla de instrucción de Byte simple provee un sendero de datos eficiente desde la memoria de programa hasta el CPU. Esta instrucción puede ser utilizada para la búsqueda de tabla y para leer la memoria de programa completa, en caso de necesitar verificación de cálculos. RETSK: (Salto de Retorno) La instrucción de byte simple permite retornar desde la rutina y, así, saltar a la próxima instrucción, la decisión puede ser realizada en la subrutina misma y guardar el código. AUTOINC/DEC: (Auto Incremento/Auto Decremento). Estas instrucciones utilizan los dos punteros de memoria B y X para hacer procesar, de modo más eficiente, el bloque de datos. 40 Desarrollo de Sensor de Nivel Ultrasónico Los Microcontroladores De Philips La familia de microcontroladores y periféricos que tienen por base el 8051 está basada totalmente en el patrón industrial para 8 bits, de alta performance, que tienen una arquitectura optimizada para aplicaciones en control secuencia) en tiempo real. Los componentes de esta familia encuentran aplicaciones que van desde el control de máquinas industriales y de instrumentación hasta el control automotriz. Los dispositivos de la serie pueden obtenerse en versiones con ROM o EPROM internas o, solamente, con la CPU. Con excepción de la 83C751, todos los dispositivos de esta familia pueden manejar hasta 64 bytes, tanto de programa como de memoria de datos. En la tabla 4 tenemos los dispositivos que componen esta familia de microcontroladores. El 8051, que es el elemento básico, • • • • • • • • • • • • contiene las siguientes funciones: CPU de 8 bits optimizada para aplicaciones de control. Capacidad de procesamiento "Booleana extensiva" (álgebra de Boole), lógica de bit único. 32 líneas bidireccionales e individualmente dirigibles de entrada y salida (I/O). RAM de datos de 128 bytes on-chip. Dos temporizadores / contadores de 16 bits. UART dúplex completa. 5 entradas de interrupciones con dos niveles de prioridad. Oscilador de clock on-chip. Memoria de programa de 4K bytes on-chip. programa en la memoria de 64 Espacio para direccionamiento de bytes. Espacio para direccionamiento de la memoria de datos de 64K bytes Disponible tanto en cubierta DIL de 40 pines como en cubierta PLC de 44 pines. El microcontrolador 80051 es la versión CMOS del 8051, siendo totalmente compatible con el 8051 en términos de funcionamiento. Sin embargo, como se trata de un dispositivo CMOS (a diferencia del 8051, que es NMOS) el consumo es mucho menor. En la figura 20 tenemos el diagrama en bloques del 80051, a partir del cual haremos el análisis. Todos los miembros de esta serie poseen espacios separados para direccionamiento y programa de datos, según muestra el diagrama de estructuras de la memoria en la figura 21. 41 Desarrollo de Sensor de Nivel Ultrasónico 8051 Familia de microcontroladores Nombre Versión sin ROM 8051 8031 80051 80C31 8052 8032 80052 800O53 83C1.410 83C451 80C32 830528: 830550. 83C552 830562 830652 830654 830751 830752 83C851 Versión con EPROM 87C'51 ^ 87C52 87CO54 87C451 87C528 87C550 87C552 870652 87C654 87C751 87C762 800851 BYTES RAM 4k 4k 8k 8k 8k 128 128 2k 2K 4K ^ 2 3 ^ 2 2 128 128 512 32k 4k 16k ^ 192 4k 8k 8k 8k Tipo de Circuito TIMERS 16 bits 256 256 4k 80C1A410 80C451 800528 800550. 800532 800526 800652 ^ BYTES ROM 3 + WD 2+ WD 3 WD 3 WD 2 128 256 ^^256 256 64 64 128 + ^ 2 2 CMOS NMOS CMOS CMOS CMOS CMOS CMOS C.MOS CAOS + 256 NMOS CMOS CMOS ^^ CMOS CMOS CMOS CMOS Tabla 4 NREMCPDICNES EXTERNAS OSEN Figura 21 Esta separación permite que los datos de la memoria sean accesados por una dirección de 8 bits, lo que da como resultado un almacenamiento y manipulación más rápidos que los efectuados por una CPU de 8 bits. Sin embargo, direcciones de 16 bits también pueden ser usadas, generadas por el registrador DPTR. La memoria de programa (ROM o EPROM) puede ser leída, pero no grabada. Tenemos disponibles 64K bytes de espacio para la memoria de programa. En el 80051, los 4K bytes inferiores están on-chip. En las versiones sin ROM, toda la memoria de programa es externa. El "strobe" para la lectura de la memoria es el PSEN (Program Store Enable). 42 Desarrollo de Sensor de Nivel Ultrasónico La memoria de datos (RAM) ocupa un espacio separado para el direccionamiento, a partir del programa de memoria. En el 80051, los 128 bytes de la memoria de datos están sobre el chip. El espacio de la memoria de datos externa puede dirigir hasta 64K bytes de una RAM externa). En la versión sin ROM, los 128 bytes inferiores son on-chip. Una CPU genera las señales de lectura y grabación (RD y WR), según se necesite, durante los accesos a la memoria externa. Las memorias de datos externa pueden combinarse con memorias de programas, si se lo desea, a través de la aplicación de señales RD y PSEN en las entradas de una puerta AND, se utilizará su salida como "strobe" de lectura para la memoria de datos / programa externa. Memoria de Programa En la figura 22 tenemos el diagrama en bloques de la memoria de programa. DIRECCIONES DE INSTRUCCIONES 8 BYTES 0023k 0011311 - .-^ 0013k CQCeh I 0003k 0000h Figura 22 Después de reseteada, la CPU inicia la ejecución del programa a partir de la dirección 0000h. Tal como se muestra en la figura 22, cada interrupción es designada por una dirección fija en la memoria de programa. La interrupción se origina cuando la CPU salta hacia la dirección correspondiente, donde tiene su inicio la rutina de servicio (rutina de tratamiento de interrupción). Una interrupción O externa, por ejemplo, determina una dirección 0003h. 43 Desarrollo de Sensor de Nivel Ultrasónico Si se usara una interrupción O externa, la rutina de servicio debería comenzar por la dirección 0003h. Si la interrupción no se usara, la dirección estaría disponible como memoria de programa de uso general. Las direcciones de las subrutinas de tratamiento de interrupción están separadas por intervalos de 8 bytes: 0003h para la interrupción externa 0; 000Bh para el timer 0; 0013h para la interrupción externa 1; 001 Bh para el timer 1, etc. Si una rutina de tratamiento de interrupción fuera lo suficientemente corta (como en el caso de aplicaciones para control), puede permanecer totalmente en el intervalo disponible de 8 bytes. Rutinas de servicio más largas pueden usar una instrucción de salto para evitar direcciones de interrupciones subsiguientes, si otras interrupciones no estuvieran en uso. Los 4K bytes inferiores de la memoria de programa pueden estar tanto en la ROM on-chip como es una ROM externa. El pin EA (External Access) permite hacer la selección. En el 80051, si el pin EA fuera conectado al Vcc, el programa iría a buscar las direcciones de 0000h hasta OFFFh en la ROM interna, y de 1000h hasta FFFFh en la ROM externa. Si el pin EA fuera conectado al Vss, entonces el programa trabajaría como las direcciones de la ROM externa. La figura 23 muestra el hardware pone la ejecución de trabajos externos. 60E51 PO A \ \ \\ \ \ \ \ \ \ \ \ ^ `\ ^`^,^_ . .^ .^ _ \ ^ ^\ :\\. \ / EP lE ! ^\ Figura 23 Observe que las 16 líneas de I/O (po rts O y 2) están dedicadas a la cancelación de instrucciones durante las acciones externas de la memoria de programa. El port O (PO, en la figura 23) sirve como multiplexor de direcciones y datos. Ella emite el byte inferior del contador de programa (PCL) como una dirección y, entonces, permanece en un estado fluctuante en espera de la llegada del byte de código de la memoria de programa. Durante el intervalo en el que el byte inferior del contador de programa fue válido en el port 0, la señal ALE (Address Latch Enable) juega este byte en un latch (cerrojo) de direccionamiento. 44 Desarrollo de Sensor de Nivel Ultrasónico Mientras tanto, el po rt 2 (P2 en la figura 23) emite un byte superior del contador de programa (PCH). Entonces, PSEN, a través del "strobe" permite que el microcontrolador lea el byte del código en la EPROM. Las direcciones de memoria de programa son siempre 16 bits, aun cuando se use un espacio real de menos de 64 bytes. En estas condiciones, la ejecución del programa externo sacrifica dos po rt s de 8 bits, PO y P2, para funcionar en la dirección de la memoria de programa. Memoria de Datos La mitad derecha de la figura 21 muestra los espacios internos y externos de la memoria de datos disponible en el 80051. En la figura 24 tenemos una configuración de hardware que permite accesar hasta 2K bytes de una memoria RAM externa. En este caso, la CPU opera a partir de la ROM interna. La CPU genera las señales RD y WR, a medida que sean necesarias durante el acceso a RAM externa. Pueden usarse hasta 64K bytes de memoria externa. Las direcciones para accesar los datos de la memoria externa pueden utilizar tanto 1 como 2 bytes de extensión. Las direcciones de 1 byte también son usadas en conjunto con una o más líneas de I/O para paginar la RAM, según muestra la misma figura 24. Figura 24 En el caso de que la parte más alta sea emitida por el po rt 2, pueden usarse direcciones de dos bytes. 45 Desarrollo de Sensor de Nivel Ultrasónico La memoria interna de datos está graficada en la figura 25. El espacio de la memoria está dividido en 3 bloques que son referidos como: 128 inferiores, 128 superiores y espacio del SFR (Special Function Register). ACCESIBLE POR DiRECCIONAMIENTO DIRECTOS INDIRECTO ACCESIBLE SOLAMENTE POR DIRECCIONAMIENTO INDIRECTO FFH SFR 80b BOA t DF ACCESIBLE POR DIREC. DIRECTO Las direcciones de la memoria de datos interna son siempre de 1 byte de extensión, lo que implica un direccionamiento de sólo 256 bytes. 00A 128 BYTES INFERIORES REGISTROS ESPECIALES DE FUNCION .-128 BYTES SUPERIORES i PUERTAS. STATUS. B ITS DE CONTROL. TIMERS. REGISTROS; PUNTERO DE PILA. CONTADOR. ETC. Además de eso, los modos de direccionamiento de la Figura 25 RAM interna pueden, de hecho, acomodar 384 bytes, utilizan un truco simple: las direcciones directas, por encima de 7Fh, accesan un espacio de memoria y las direcciones superiores a 7Fh accesan un espacio diferente. La figura 25 muestra los 128 superiores y el SFR ocupados por el mismo bloque de direcciones: de 80h hasta FFh, mientras que, en realidad, son entidades físicamente diferentes. Los 128 bytes inferiores de la RAM están presentes en todos los dispositivos 80051, como se grafica en la figura 26. NINGUN ESPACIO DIRECCIONABtE POR BITS Los 32 bytes inferiores están agrupados en 4 bancos de 8 registradores. Las instrucciones del programa llaman a estos registradores externamente de RO a R7. Dos bits del PSW (Program Status Word) seleccionan del banco de registradores cuál va a ser usado. Figura 26 B ITS DE SEtEC. DE BANCO NA PSW } ESPACIO DIREC. POR BITS (00a7F) n{ 10{ j^j¡z^1:AM# 01 1 4 BANCOS DE S REGISTROS 00 VALOR DE RESET DEL PUNTERO DE PILA Figura 27 Este procedimiento permite una utilización más eficiente del espacio para código, ya que las instrucciones son más cortas que las que usan direccionamiento directo. Los 16 bytes siguientes, por encima de los bancos de registradores, forman un bloque de espacio de memoria dirigible por bit. El set de instrucciones del 80051 incluye una amplia selección de instrucciones de bit único, y los 128 bits de esta área pueden ser directamente dirigidos por estas instrucciones. Las direcciones de bits en esta área van de OOh a 7Fh. Todos los bytes en los 128 - inferiores 46 Desarrollo de Sensor de Nivel Ultrasónico resultan accesibles tanto por direccionamiento directo como indirecto. Los 128 - superiores, tal como muestra la figura 27, sólo son accesibles por direccionamiento indirecto. En la figura 28 tenemos una visión del Special Function Register (SFR) y del espacio que ocupa. LOB RECOSTAOS Oh oeE LASOWECONJNFBTERMNNMBENPN SONT LBNBiSE1LGG0'üBLESPN16R6 Esta estructura incluye latches (cerrojos) de puertas, timers, Figura 26 controles, periféricos, etc. Estos registradores pueden ser accesibles, solamente, por direccionamiento directo. Dieciséis direcciones en el espacio SFR son accesibles tanto por byte como por bit. Los SCF pueden accesarse por bit y son los que tienen direcciones terminados en Oh u 8h. A través de la segunda parte de esta nota, los proyectistas podrán tener una mejor visión de cómo y dónde usar el microcontrolador 80051 y sus periféricos. El Set de Instrucciones del 80051 El Set de Instrucciones del 80051 está especialmente confeccionado para su utilización en aplicaciones de control con 8 bits. Proporciona gran variedad de modos de direccionamiento rápido para acceder a la RAM interna, con lo que se facilitan las operaciones con bytes en pequeñas estructuras de datos. El Set de Instrucciones prevé, además, un soporte extensivo para variables de 1 bit, como los del tipo de datos separados, así permite la manipulación directa del bit en sistemas lógicos y de control que requieran un procesamiento booleano. Program Status Word (PSW) El Program Status Word (PSW) contiene diversos bits de status que indican el estado corriente de la CPU. El PSW, que se muestra en la figura 29, reside en el espacio de la SFR. • PEW? • FLAG DE CARAY QUE RECIBE EL CARRY OUT DEL BITS DE LOS OPERANDOS DE LA ALU 1 PMSDAD CG. ACUMULADOR SESEADO POR HARDWARE PSWB CARRY AUMUAR QUE RECIBE EL CARAY OVt DEL BIS 3 DE LOS OPERANJOS DE LA SUMA FLAG DE USO DETERMINADO POR ELUSUAWO PSWE FLAG CE STATUS DE USO GEWRAL FLAG DE OVRFLOW OPERADO POR OPERADORES ANIMEMOS PSWS$ o err DE BANCO DE SELECCION DEL REGISTRADOR SR 1 DEL BANCO DE SELECCION DEL REGISTRADOR Figura 27 47 Desarrollo de Sensor de Nivel Ultrasónico El PSW contiene el bit de carry , o carry auxiliar (para operaciones en BCD), los dos bancos de registradores para selección de bits, el aviso de overflow, un bit de paridad y dos flags de uso que puede ser definido por el usuario. El bit de carry, además de servir para su función específica, también actúa como acumulador para un cierto número de operaciones booleanas. El bit de paridad indica el número de "uns" no acumulados. Si P=1, entonces el acumulador contiene un número impar de "uns". Si P=O, el acumulador contiene un número par de "uns". Vemos así que si tenemos en cuenta el número de "uns" en el acumulador sumado al valor de P, tendremos siempre un resultado par. Modos de Direccionamiento En el 80051 tenemos los siguientes modos de direccionamiento: a) Modo Directo: En esta modalidad de direccionamiento, el operando está especificado por una dirección de 8 bits en la instrucción. Sólo la RAM interna de datos y la SFR pueden ser directamente direccionadas. b) Modo Indirecto En el direccionamiento indirecto, la instrucción especifica un registrador que contiene una dirección del operando. Tanto la RAM interna como la externa pueden ser indirectamente direccionadas. c) Instrucciones del Registrador: Los bancos de registradores que contienen los registradores de RO a R7 pueden ser accedidos por ciertas instrucciones que lleven una especificación de registrador de 3 bits conjuntamente con el código de la instrucción (opcode). Las instrucciones que acceden los registradores en esta forma son "code efficient", ya que así se elimina la necesidad de un byte de dirección. 7^ 1 X X A. A+ +byt + X X ADD ibyá.r Cuando la instrucción es ejecutada, A . A++byte+ + C X ADOC A.+Dyte+ X 1 X X uno de los ocho registradores del A . A • +by1++ - C 8Ue8 A.+byta+ X , X X , X _ AaemN.tor ony 1 A. A ♦ 1 INC A banco seleccionado es accedido myte+ .cbyta+.1 INC.byte+ X 1 I X mientras que uno de los cuatro DMe Polnter only DPTR . OPTA + 1 tNC DPTR y Aoounutatur only ,. A. A•, OEC A bancos es seleccionado en el , d^yte+ .^ 1 ar^ .byr.+ x x x T I I tiempo de ejecución por los dos bits 4 ACC and B only B'A • BXA MUt. A8 ACC and a only d ON AB 10:tá 401 de selección de bancos en el PSW 1 AtxrerwWor only DA A O.tirn.t Adust (Tabla 5). MODOS DE DIRECGOtiAAiIENTO 4N8AONC0 CM 11E4tPOWy OPERAgON INO. REO e+ Tabla 5 48 Desarrollo de Sensor de Nivel Ultrasónico d) Instrucciones Específicas de Registradores: Algunas instrucciones son específicas para ciertos registradores como, por ejemplo, las que siempre operan en el Acumulador o en el Data Pointer, de modo que para ellas no se necesita bit alguno de direccionamiento para su uso. El opcode lo hace por sí solo. e) Constante Inmediata: El valor de una constante puede seguir el opcode en la Memoria de Programa. Por ejemplo: MOV A, 100 Carga el acumulador con el número decimal 100.EI mismo número puede especificarse en dígitos hexadecimales como 64 h. f) Direccionamiento Indexado: Sólo la Memoria de Programa puede ser accedida con direccionamiento indexado, siendo, después, sólo posible la lectura. Este modo de direccionamiento está destinado a la lectura de tablas de consulta en la Memoria de Programa. Otro tipo de direccionamiento indexado se usa para el caso de una instrucción JUMP. En este caso, el direccionamiento de destino de una instrucción JUMP es computado como la suma de los datos del acumulador con el Data Pointer. g) Instrucciones Aritméticas: El menú de las instrucciones aritméticas del 80051 está listado en la tabla 6, donde están indicados los modos de direccionamiento que pueden usarse con cada instrucción para acceder el <byte> operando. Los tiempos de ejecución en la lista de la tabla 1 son para una frecuencia de clock de 12MHz. Todas las instrucciones aritméticas son ejecutadas en 1 ps, excepto la INC DPTR, que lleva 2ps, y las instrucciones de multiplicación y división, que llevan 4ps.Obsérvese que cualquier byte en el espacio interno de la Memoria de Datos puede ser incrementado sin pasar por el Acumulador. 1111111n11115". ,..._.. ... ......:...: .... . :...... ............ . .. . .MÓnoso .... ^fl>;cáqwm .o.: ADD sbytas A . A + abyjaas ADDCA.<bytar A..A+ •cbyho+ S1)68 A abytas A. A - <bytaa -C 1NC A A.A INC <byte. <byte,. • <byte> + INC DPTR DPTR . DATA r DEC A A . A -1 DEC .bytes sbytas . MULAS 8v1 . BitA a • ¡la wa DV AB DA A C x x x x x x x Aoc srwtataa only +1 1 X I 1 X X x 1 x 1 1 I 1 s Dala Pointer any Aatmwtatar only alta> -1 IX ACC x I and B any li-atol Mlal ACC antl Decimal Ad'jw,t Aavoadator x B col I d 4 only s-391111•1111MIZI n Tabla 6 49 Desarrollo de Sensor de Nivel Ultrasónico h) Instrucciones Lógicas: La tabla 7 muestra la lista de instrucciones lógicas disponibles en el 80051. Las instrucciones que realizan operaciones booleanas (AND, OR, Exclusive OR, NOT) con bytes utilizan bit por bit. Los modos de direccionamiento que pueden usarse para acceder el operando están listados en la misma tabla. Todas las instrucciones lógicas que están en el Acumulador son ejecutadas en 1 ps, con base en un clock de 12MHz. Las otras demoran 2ps. Si la operación se origina como respuesta a una interrupción, el hecho de no utilizarse el Acumulador economiza tiempo y esfuerzo en el sentido de la introducción de datos en la pila de ejecución de la rutina de servicio. ftnleeMer.;.:•A1011111MM=e, ....... ....:: ......:...:.:.. ............ ... .. ..... ^us a^ »^^tc^r^►win^.^r^ ,orca Y ^^ cbytg . ^yta> ANP.A ^^^n^ _ • . . 111=111111111 SWAP A _ . Ruleta Right th ro ugh ^ Cary ^ Aocunulator ooy AOGaYY1laLir Swap Nibbles in A ® only A ,,,.,.^^:^-^^ Tabla 7 i) Transferidores de Datos: La tabla 8 muestra el menú de instrucciones que están disponibles para el movimiento de datos por los espacios disponibles en la Memoria Interna. En ella también tenemos los modos de direccionamiento que pueden utilizarse con cada instrucción. Con un clock de 12MHz, todas estas instrucciones son ejecutadas tanto en 1 ps como en 2ps. La instrucción MOV <dest>, <src> permite la transferencia de datos entre cualquier locación de la RAM o SFR, sin pasar por el Acumulador. Recuérdese que hasta 128 bytes de datos de la RAM pueden accederse sólo por direccionamiento indirecto, y que el espacio de la SFR solamente puede ser accedido por direccionamiento directo. 50 Desarrollo de Sensor de Nivel Ultrasónico iroñc a ean.4466 MOV A, oro MOV cdesD,A MOV cdest>, cares MOV OPTA ,#data 16 PUSH cero> INC SP:MOV•/I/SP.,csrd POP cdosb MOV •dosb, • @SP•.DEC SP XCH A, cbtrs> ACC and cbylea exchange data XCHO A, @RI ACC and A RI exchanoo low nibbles 011111111111111111111111 Tabla 8 En la tabla 9 puede observarse una lista de instrucciones para transferencia de datos accediendo la Memoria Externa de Datos. Sólo pueden utilizarse direccionamientos indirectos, y la elección puede recaer tanto por direccionamientos de 1 bit, tipo Ri, donde Ri puede ser RO o R1 del banco seleccionado, como también de dos bits, del tipo DPTR. 1strui :,:kov-^:.W" b:, ^Q^l+â . .. .DÉ ^ ;., , ., l^^^GG..; ^ C TRMIt. 4+s7 UPl9}il 11 bit s MOV A, (áJ Ri Read axioma] RAM e n bits MOVX Idi Ri, A Wnite oriental RAM 0 MOVX A. f$ DP7R Read external RAM I 6 bib 16 bits T MOVX e DPrR A RI 2 Ri 2 e DP71i 2 White axlemal RAM Qa? I7PTR 2 Tabla 9 La desventaja de la utilización de direccionamientos de 16 bits, en caso de que pocos k bytes de la RAM externa estén comprometidos en un solo control, es que los direccionamientos de 16 bits usan todos los 8 bits del po rt 2 y, también, el barrido de direccionamientos. Por otro lado, direccionamientos de 8 bits permiten el direccionamiento de pocos bytes de la RAM sin sacrificar todo el port 2. Todas estas instrucciones son ejecutadas en 2ps con un clock de 12MHz. Nótese que en todos los accesos a la RAM externa el Acumulador está funcionando como origen y destino de los datos. La tabla 10 muestra las dos instrucciones que están disponibles para la lectura de tablas de consulta en la Memoria de Programa. 51 Desarrollo de Sensor de Nivel Ultrasónico 0~11111112.1-'3 .,_ *Z1,:k .^,^`- O; E lvtOVC A.A+DPiR Asad program rnomo,y at (A + DP B) MOVC i,,DA+PC Head pecgnrn msrnay at (A + PC) :i;{li^^' 2 2 Tabla 10 Como estas instrucciones acceden solamente la Memoria de Programa, las tablas de consulta sólo pueden ser consultadas y no actualizadas. j) Instrucciones Booleanas: Los dispositivos 80051 contienen un procesador completo para instrucciones booleanas (bit único). La RAM interna contiene 128 bits direccionables, y el espacio SFR puede aceptar hasta 128 bits direccionables. Todas las líneas de po rt s son direccionables por bit, y cada una puede ser tratada como un po rt de bit único. Las instrucciones que acceden estos bits no tienen una única función: también pueden operar un menú completo de opciones, tales como descolocación, fijación, apagado, complementación, puerta OR, AND, etc. Estas operaciones de bit único no se obtienen fácilmente en otras arquitecturas sin la ayuda de una buena cantidad de software orientado para esta finalidad. El Set de Instrucciones para el procesador booleano se observa en la tabla 11. n, ,121111111111111111WW.,s2. _ -..... 411111=a, N£lditilli AML C.bk :.. 0PEEAC1O t;;~ EJEC.OS1 G = C.ANO.b:t JWL Cr`st C . C.AND..NCT.bít 2 CRL C,bR C . C.OR.bi 2 ORL GJ4Et C = C.OR. .NOT .bil 2 A1OV C,blt C = bit MOV bit,C DI CLR C c. 2 O CLR bM bB=O SETS C C SEi6 bit bt.1 CPL C C . .NCT.0 1 CPL bit bit JC nt Jump it C., 2 JNC td JunpifC.o 2 Ja Jump it bit . 1 2 JNB bit rai Ju+ttpNbR.O 2 JBC btt,ret Jump H bit . 1: CLR bit 2 ti+Lrel ^HSJkt^.^.I-... • T. ü - Tabla 11 52 Desarrollo de Sensor de Nivel Ultrasónico Los direccionamientos de los bits de OOh hasta 7Fh están en los 128 inferiores, y los de 80h hasta FFh se encuentran en el espacio SFR. Nótese que el Set de Instrucciones booleanas incluye operaciones ANL y ORL, pero no la operación XRL (Exclusive OR). Una operación XRL resulta fácil de implementar mediante el software. Offset relativo: Los direccionamientos de destino para estos saltos están especificados al dispositivo por medio de un archivo o por un direccionamiento real en la Memoria de Programa. k) Instrucciones de Salto (JUMP): En la tabla 12 vemos una lista de jumps incondicionales al tiempo de ejecución para un clock de 12 MHz. La distancia del salto está limitada a la banda de -128 a +127 bytes relativos a la instrucción que sigue el JMP. JMP es el modo mnemónico de la instrucción. La tabla 13 muestra la lista de jumps disponibles en el 80051. Todos estos jumps especifican el direccionamiento de destino por el método de offset relativo, y, por eso, están limitados a una distancia de -128 a +127 bytes a partir de la instrucción que determina el salto. Es importante observar que el usuario especifica el assembler (ensamblador) o direccionamiento real de destino de la misma forma que en los jumps comunes: como un archivo de constantes de 16 bits. Otra aplicación para esta instrucción está en las comparaciones del tipo "menor que". -^ ¡ M M E ►x o :teExACKLN JNP aa @AfOPT Jura te NI* , , oE ES; InSt ^c .1010íA uaPIaxIcO _ 2 09133AnoE ^ 0. ẁ^°i` ^ r row ^ Jun-is to A• OPTA 2 JZ ul Jump a A. 0 *rumia« only 2 GALL .dar Can auh.wMa 2 JNZ rM Junp w A i 0 A.aarxrl.tor only 2 RET Rotura PAN 2 DJNZ<hyY>M O.N.m.M And yanPwnM yore x REll RaNm han Inhnupt 2 CENE A myb>.ral JunP a No aprtticn t CENE PoYI»,lW.yrN AA* a •u/la>/faala JNP NOP I I al .ddr w AweON.s iNyxyNep u, x 2 a 1 x x 2 2 w...... .. Tabla 12 Tabla 13 Timing de la CPU 53 Desarrollo de Sensor de Nivel Ultrasónico Todos los microcontroladores 80051 poseen un oscilador on-chip que puede utilizarse como fuente de señal de clock para la CPU. Figura 28 Para usar el oscilador on-chip conecte un cristal al resonador cerámico entre los pines XTAL1 y XTAL2 del microcontrolador y capacitores a tierra, tal como muestra la figura 30 En la figura 31 tenemos ejemplos de cómo utilizar un oscilador externo como generador de clock. Figura 29 Ciclo de Máquina Un ciclo de máquina consiste en una secuencia de 6 estados, numerados desde S1 hasta S6. Cada estado exige, por lo menos, dos períodos del oscilador, lo que significa que un ciclo de máquina demora 12 ciclos del oscilador, correspondientes a 1 ps si la frecuencia del clock fuera de 12 MHz. Cada estado está dividido en mitades que corresponden a Fase 1 y Fase 2. La figura 32 muestra la secuencia de estados y fases para diversos tipos de instrucciones. Las secuencias descriptas son las mismas tanto para la utilización de una Memoria de Programa interna como externa. El tiempo de ejecución también es independiente del uso de las memorias usadas. ^ SS t S. , SS ¡nPO^nPOJTPH¡nPO' AO 1 51 1 SY CSC ''TALO f, , 1 S: S] : S. 1 tH 1 H. E HT ^mm ^P2 14T P E^n P E'PEPO^nPO}nP S yOP F' 1 fH , AL[ LEONM CE L^ OE USL PgO1C GPC00 Hal0312112141® 1 An VOS epLp OF WBTRYttWN. INCA "flM4^ oPCOO . {FCIORA ^ r Ven 1E0TVN111EL Nqlo•Nl pPCOp 121l0012®itl/ 0-00000, CMLOOFwHfIWCCgµACOA. (TAU PRD%AM LECTURA OH OPC00 IKt,HMOC .GOD OUfVIEe1CRA A DEL^ smosa N [^ ^y Il^ IMiMaI®Ili^1®1® ®®.:S.S ..)H C- 1 BYTE 1OCLODEINSON000M, NC OPTO Np AL[OOIIN D PpW'Np SFM -PFTCN' LECTORADE plá Op• LOC OAO00 'PÉTCN' L ECTURA DEL rSCMALE 1 I ES®lMI®CO®®ENCIUMICA L 1p 0O ^ amorNO•RTIEiC1C L01 DAT. ACCEN0A MEN0IMDITFWU Figura 30 54 Desarrollo de Sensor de Nivel Ultrasónico Estructura de Interrupciones El 80051, en su versión sin ROM y con EPROM, posee 5 fuentes de interrupción: 2 externas, 2 por timer y el po rt serial de interrupción. A continuación damos una visión general de la estructura de interrupciones del dispositivo, ya que una profundización mayor sólo sería posible con un análisis más detallado del manual del componente. Habilitación de Interrupciones Cada fuente de interrupción puede ser habilitada o inhabilitada individualmente por la colocación o el retiro de un bit en la parte de la SFR denominada IE (Interrupt Enable). Este registro contiene, también, un bit de inhabilitación global que permite la habilitación o inhabilitación de todas las interrupciones al mismo tiempo. Prioridades de Interrupción Cada fuente de interrupción puede programarse individualmente para presentar uno o dos niveles de prioridad por la utilización de un bit en la SFR denominado IP (Interruptor Priority). Una interrupción de baja prioridad puede detenerse por una interrupción de alta prioridad pero NO por otra de baja prioridad. En caso de recibirse dos pedidos de interrupción al mismo tiempo, será atendido el de mayor nivel de prioridad. Si fueran recibidas dos instrucciones de interrupción de igual prioridad al mismo tiempo, una secuencia interna de evaluación determina cuál es la que deberá ser atendida. Simulando un Tercer Nivel de Prioridad Vía Software: Algunas aplicaciones exigen más que los dos niveles de prioridad disponibles en el 80051. En estos casos, un software relativamente simple puede utilizarse para tener el mismo efecto de un tercer nivel de prioridad. Este software aumenta un tiempo de 10ps (con 12MHz) para las interrupciones de prioridad 1. 55 Desarrollo de Sensor de Nivel Ultrasónico SENSOR DE DISTANCIA ULTRASÓNICO SRFO5 es un sensor de distancias pensado para ser una actualización del clásico SRFO4 con el que es compatible, pero además añadiendo nuevas funciones y características. En el modo estándar, el SRFO5 se comporta igual que el SRFO4 con la diferencia de que el rango de trabajo se ha aumentado de 3 a 4 metros. Esto significa que todo el software que funciona con el SRF04, funciona con el SRF05. Por otro lado, el SRFO5 cuenta con un nuevo modo de trabajo que emplea un solo pin para controlar el sensor y hacer la lectura de la medida. Lo que se hace es mandar un impulso para iniciar la lectura y luego poner el pin en modo entrada. Después basta con leer la longitud del pulso devuelto por el sensor, que es proporcional a la distancia medida por el sensor. El SRFO5 es mecánicamente igual al SRF04, por lo que puede ser un sustituto de este. El sensor SRFO5 incluye un breve retardo después del pulso de eco para dar a los controladores más lentos como Basic Stamp y Picaxe el tiempo necesario para ejecutar sus pulsos en los comandos. El sensor SRFO5 tiene dos modos de funcionamiento, según se realicen las conexiones. Modo 1 - Compatible con SRFO4 - Señal ce Activación y Eco Independientes Este modo utiliza pines independientes para la señal de inicio de la medición y para retorno del eco, siendo el modo más sencillo de utilizar. Todos los ejemplos de códigos para el sensor SRFO4 funcionarán para SRFO5 en este modo. Para utilizar este modo, simplemente deberá dejar sin conectar el pin de modo - el SRFO5 integra una resistencia pull-up en este pin. Conexión El módulo emplea tan sólo 5 conexiones que se pueden realizar soldando directamente 5 cables o bien mediante un conector de 5 vías con paso de 2.54mm. Estas se muestran en la figura siguiente. +5Vcc ECO Tensión positiva de alimentación Salida del pulso cuya anchura determina el tiempo del recorrido de la señal ultrasónica Disparo Modo (N.C.) Entrada de inicio de una nueva medida. Se aplica un pulso con una duración mínima de 1 Ops se conexión Sin selecciona el modo 1 de compatibilidad con 56 Desarrollo de Sensor de Nivel Ultrasónico SRF04. Conectado a GND se selecciona el modo 2 de trabajo Tierra de alimentación. GND Entradas utilizada para la programación en fabrica. NO CONECTAR OV No conectar Entrada Eco Salida Eco *5V Otro Conector de 5 Pines Los 5 pines marcados como "programming pins" (pines de programación) se utilizan sólo una vez durante el proceso de fabricación para programar la memoria Flash en el chip del PIC16F630. Los pines de programación de PIC16F630 se utilizan también para realizar otras funciones en el SRF05, por lo que deberá asegurarse de que nada esté conectado a ellos o se interrumpirá el funcionamiento de los módulos. El módulo SRF05 viene perfectamente ajustado y calibrado de fábrica, por lo que no necesita de ningún tipo de ajuste. Su funcionamiento se puede verificar aplicando una serie de pulsos por la entrada de disparo. Con ayuda de un osciloscopio se puede medir la anchura de la señal eco de salida. Esta anchura, representada en pS y dividida entre 58.30 nos permite calcular la distancia del objeto. Diagrama de Tiempos A continuación se muestra el funcionamiento del sensor a través de un diagrama de tiempos. Diagrama de Tiempos del SRFO5 en Modo 1 Pu ls o de inicic 10 uS Entrada Pulso de Inicio ebISRF05 J Mínimo L Tren de impulsos de8 ciclos Secuencia de Pulsa URrassoniccs emifidcs pa el S RF 05 Pulso de Eco- 1 00u5 a25 mS, Espera mcíctma de 30 mS si nose dete ct a un objeta Pulso de sacia del SRF05 Modo 2 - Pin ÚnicopPara la Señal de Activación y Eco Este modo utiliza un único pin para las señales de activación y eco, y está diseñado para reducir el número de pines en los microcontroladores. Para utilizar este modo, conecte el pin de modo al pin de tierra de Ov. La señal de eco aparecerá en el mismo pin que la señal de activación. El SRF05 no elevará el nivel 57 Desarrollo de Sensor de Nivel Ultrasónico lógico de la línea del eco hasta 700uS después del final de la señal de activación. Dispone de ese tiempo para cambiar el pin del disparador y convertirlo en una entrada para preparar el código de medición de pulsos. El comando PULSIN integrado en la mayor parte de los controladores del mercado lo hace automáticamente. Entradas utilizadas para la programación en fábrica. NO CONECTAR Diagrama de tiempos del SRFO5 en Modo 2 d:;. ! Pulso de Eco . I.'+i.r u 25rrsS, Tle r r;r cus espera rrrdtrrrro de 3U mi s sl no se c:k:Hecrr; u: d.: xsiCiO . ir,5 r if "f CS :r';lracia de p.bCF3 :7C; Inicio y' s•:.71 C;1 y rr p UIaÚ de i)c'._ ; .. uarÍo., Tierra . ; t_r. • .. de 8 C:cS?,. s. Secue7G..J ,i ;J;JIsos ult asor.c i..; ernllidos por el Sltr';5 {. , C1,417 a!, Cn,., ..'S Azul : El usuario cantrda d pin de entrada salida Rcija El iRF ccrrtrda d pin cje entrada salida Cálculo de la Distancia A continuación, se muestran todos los diagramas de tiempo para el sensor de distancias por ultrasonido SRFO5 para cada modo. Deberá suministrar un breve pulso de al menos 10uS para disparar la entrada de comienzo del cálculo de distancia. El SRFO5 transmitirá una ráfaga de 8 ciclos de ultrasonidos a 40khz elevando el nivel lógico de la señal del eco (o la línea de activación en el modo 2). Entonces el sensor "escucha" un eco, y en cuanto lo detecta, vuelve a bajar el nivel lógico de la línea de eco. La línea de eco es por lo tanto un pulso, cuyo ancho es proporcional a la distancia respecto al objeto. Registrando la duración del pulso es posible calcular la distancia en pulgadas/centímetros o en cualquier 58 Desarrollo de Sensor de Nivel Ultrasónico otra unidad de medida. Si no se detectase nada, entonces el SRFO5 baja el nivel lógico de su línea de eco después de 30mS. El SRFO5 proporciona un pulso de eco proporcional a la distancia. Si el ancho del pulso se mide en uS, el resultado se debe dividir entre 58 para saber el equivalente en centímetros, y entre 148 para saber el equivalente en pulgadas. uS/58=cm o uS/148=pulgadas. El SRFO5 puede activarse cada 50mS, o 20 veces por segundo. Debería esperar 50ms antes de la siguiente activación, incluso si el SRFO5 detecta un objeto cerca y el pulso del eco es más corto. De esta manera se asegura que el "bip" ultrasónico ha desaparecido completamente y no provocará un falso eco en la siguiente medición de distancia. 43.3 22,85 Cambiar el Patrón y el Ancho del Haz No puede hacerlo. Los usuarios de este sensor nos plantean esta consulta muy frecuentemente; sin embargo no existe ninguna manera sencilla de reducir o cambiar el ancho del haz. El patrón del haz del sensor SRFO5 es cónico mientras que el ancho del haz es una función del área de la superficie de los transductores y es fijo. El patrón del haz de los transductores utilizados en el SRF05, según la hoja de datos de los fabricantes, es la siguiente: 59 Desarrollo de Sensor de Nivel Ultrasónico Diagrama de bloques del funcionamiento de sensor de distancias. Ln -ÍI ^ W T T _ f(d) ^ -n ó -4 n• Interface de salida Juego de display's La entrada al PIC pueden ser: teclados, señales de red, señales de otros sensores, etc. Para iniciar el sensado se envía al sensor un voltaje en alto en un lapso mínimo de 10 microsegundos. Una vez enviado el sensor hace su parte correspondiente y entregando un voltaje en alto, el ancho de este pulso depende directamente del la distancia sensada por el sensor. Una vez recibida esta señal el PIC hará lo que se deseé por el usuario para mostrar la distancia sensada por el sensor o bien alguna otra operación que se deseé y este previamente programada en el PIC. Para este caso particular se utiliza el Modo de operación 1 antes ya explicado en este documento, El PIC se dedicará a estar activando el sensor ultrasónico cada cierto tiempo necesario, a su vez el resultado que el PIC reciba lo va a enviar al puerto B, donde habrá en cada pin del puerto un LED, esta barra de led's que forma a la salida del puerto se encenderá dependiendo de la distancia sensada. 60 Desarrollo de Sensor de Nivel Ultrasónico DESCRIPCIÓN GENERAL SENSOR DE TEMPERATURA LM35 La serie LM35 son circuitos integrados; sensores de temperatura de precisión, que el voltaje de salida es lineal proporcional a la temperatura en grados centígrados. El LM35 tiene la ventaja de que la temperatura es lineal calibrado en grados Celsius. El LM35 no requiere ninguna calibración o ajuste externa proporciona exactitudes típicas de ± 1/4 °C en la temperatura ambiente. El rango de temperaturas censadas va de -55 a 150°C. La impedancia baja de la salida de LM35, la salida lineal, y la calibración inherente exacta hacen la interconexión del control del circuito especialmente fácil. Puede ser utilizado con una sola fuente de alimentación, o con más. El LM35 se clasifica para funcionar sobre un rango de temperaturas de -55°C a 150°C, mientras que el LM35C es clasificado para un rango de -40°C a 110aC. La serie LM35 está disponible en encapsulado de tipo transistor TO-46, mientras que los LM35C, los LM35CA, y los LM35D están disponibles en el encapsulado tipo transistor de plástico TO-92. El LM35D está también disponible en un paquete pequeño de montaje superficial de 8 pines y un paquete del plástico TO-220. TO-46 Metal Can Package' SO-8 Small Outline Molded Package y our t B .y5 N.C. N.C. GND 5 4 N.C. BOTTOMVIEW ; 'Case is connected to negoc n Oo (GNDI N.C. = No Connection Order Number LM35H, LM36AH, LM36CH, LM35CAH or LM36DH See NS Package Number H03H Top View Order Number LMSSDM See NS Package Number MOSA TO-92 Plastic Package 10-220 Plastic Package ' 35Dr Order Number LM36CZ, LM35CAZ or LMSSDZ See NS Package Number Z03A sol) `Tab is connected to the nega tivo pin (GND). Note: The LM35DT pinout is different than the áscsttinued LM35DP Order Number LM36DT See NS Package Number TA03F Características • • • • • • Calibrado directamente en Centígrados Factor de de conversión Lineal +10 mV/°C Conveniente para lo usos alejados Bajo costo debido a que no requiere calibración Funciona a partir de 4 a 30 volts Baja salida de Impedancia, 0.1 S2 por 1 mA de carga 61 Desarrollo de Sensor de Nivel Ultrasónico Conexión Típica +vs (4V TO 20 . OUTPUT O mV+10,0 mV/°C F Las conexiones para este componente son relativamente simples, solo basta con energizar el pin Vs con un voltaje que va de los 4 hasta los 20 volts, aterrizar GND y esperar el voltaje de salida por Vout, que es equivalente a la siguiente regla de correspondencia: D6G0551&2 Order Number LM35CZ, LM35CAZ or LM35DZ See NS Package Number ZO3A Vout =10 ^ 62 Desarrollo de Sensor de Nivel Ultrasónico Diagrama de Conexiones Los componentes utilizados para la construcción del circuito electrónico para el sensor de nivel ultrasónico son los siguientes Microcontrolador PIC16F877A Sensor Ultrasónico SRFO5 Sensor de Temperatura LM35 Pantalla de Cristal Liquido JHD-162ASTN Potenciómetro de 10 KC) Oscilador de cristal de cuarzo de 4 MHz. U 7 J1-10-16244714 000 G WM II -C 115 01 ItiLRIVpp Key - .`+^.:3-=e R44 4Nn re 4111 R,-^-?< 1 1 0EI;L_CR4'ST?L RBT1it.6 REFRY_ ftFFi 5R6 RM41741 . RE1 RENINf 'DO „ge I .. .. . `JCC %TlL1 Key , d 0K L 1N RFL15 VCC _L_ U0 IN1 IN' IN=' 114 0034 C1UT3 0UT2 0071 P3 ^ JW VCC. 470 Ohre P.+7. 140611 24016 El funcionamiento de este circuito se basa principalmente en el microcontrolador PIC16F77A, ya que es este componente el que se encarga de hacer y dirigir todas las operaciones de control, como lo son el convertir el voltaje analógico de la salida del sensor de temperatura LM35 a una señal digital para poder ser procesada y ser mostrada en el LCD, también de controlar el sensor ultrasónico SRFO5 en los tiempos para emitir y recibir la señal ultrasónica, convertir o procesar de manera digital el tiempo que tarda en ir y regresar dicha señal, para poder ser mostrada también en el LCD, hasta el momento en lo que se lleva de avance en este proyecto todas las lecturas hechas por el sensor ultrasónico son almacenadas en una memoria EEPROM 24C16 de 16K a través del bus PC del microcontrolador a la memoria; los datos almacenados se leen a través del puerto paralelo de la PC mediante un pequeño software que se desarrollo para dicho fin, 63 Desarrollo de Sensor de Nivel Ultrasónico todas las operaciones de lectura y escritura de los datos sensados se hacen al ritmo o a la velocidad del oscilador o cristal, en este caso es un cristal de 4 MHz, el potenciómetro tiene como única función la de regular el contraste del LCD. El diagrama de la derecha es la interfaz para la conexión de la memoria con la PC, es el utilizado para la recuperación de los datos almacenados en la memoria EEPROM 24C16 La siguiente figura corresponde al software desarrollado para la adquisición de los datos almacenados en la memoria, estos datos son almacenados en un archivo con extensión .txt para poder ser manipulados o procesados en Excel o algún otro software. nsor SRF• Grafica de distancias almacenadas en memoria eeprour24c16 utilizando el sensor ulaasonico srf05 60 E 20 0 300 100 Mediclon Nun. Gralicai Bloque ,0 Bbque ,0 : Du: SALIR Adquiere Decimal 3 Dist '61.05 En la siguiente sección se muestra el procesamiento de la información recolectada por el sensor, las primeras tres graficas son pruebas que se hicieron en distancias menores a un metro, y por cuestiones prácticas, solo se considero el primer bogue de almacenamiento de la memoria es decir solo los primeros 250 datos almacenados, la última prueba muestra un análisis en la cual se sensaron y almacenaron 2000 datos, en las todas las graficas se observa que el dispositivo construido se mantiene estable y es consistente en cuanto a la misma distancia sensada, con solo unos pequeños saltos o irregularidades. 64 Desarrollo de Sensor de Nivel Ultrasónico Estas irregularidades están relacionadas con el programa instalado en el microcontrolador, al cual le hace falta afinarlo más en cuestiones de dejar más espacio entre medida y media y algunas rutinas que procesan la información proveniente del sensor ultrasónico, otra causa de estas irregularidades están ligadas muy estrechamente con las características físicas de los dispositivos electrónicos en el procesamiento de la información ya que solo se pueden hacer operaciones a 8 bits. Todos los datos que se muestran más adelante fueron leídos y almacenados a una velocidad de 4 datos por segundo en una memoria EEPROM 24C16 de 16K, esta velocidad es controlada a través del programa instalado en el microcontrolador. 65 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No.1 Dato No. Dato Error con respecto a ala Media 0.000400 201 24.75 0.000400 0.000400 202 24.75 0.000400 24.75 0.000400 203 24.75 0.000400 154 24.75 0.000400 204 24.75 0.000400 0.000400 155 24.75 0.000400 205 24.75 0.000400 24.75 0.000400 156 24.75 0.000400 206 24.75 0.000400 107 24.75 0.000400 157 24.75 0.000400 207 24.75 0.000400 0.000400 108 24.75 0.000400 158 24.75 0.000400 208 24.75 0.000400 24.75 0.000400 109 24.75 0.000400 159 24.75 0.000400 209 24.75 0.000400 60 24.75 0.000400 110 24.75 0.000400 160 24.75 0.000400 210 24.75 0.000400 24.75 0.000400 " 61 24.75 0.000400 111 24.75 0.000400 161 24.75 0.000400 211 24.75 0.000400 12 24:75 0.000400 62 24.75 0:000400 112 2475 0.000400 162 24.75 0.000400 212 2415 0.000400 13 24.75 0.000400 63 24.75 0.000400 113 24.75 0.000400 163 24.75 0.000400 213 24.75 0.000400 14 2475 0.000400 64 24.75 0.000400' 114 2475 0.000400 164 24.75 0.000400 214 2475 0.000400 15 24.75 0.000400 65 24.75 0.000400 115 24.75 0.000400 165 24.75 0.000400 215 24.75 0.000400 16 24.75 0.000400 66 24.75 0.000400 116 24.75 0.000400 166 24.75 0.000400 216 24.75 0.000400 17 24.75 0.000400 67 24.75 0.000400 117 24.75 0.000400 167 24.75 0.000400 217 24.75 0.000400 18 24.75 0.000400 68 24.75 0.000400 118 24.75 0.000400 ` 168 24.75 0.000400 218 24.75 0.000400 19 24.75 0.000400 69 24.75 0.000400 119 24.75 0.000400 169 24.75 0.000400 219 24.75 0.000400 20 24.75 0.000400 70 24.75 0.000400 120 24.75 0.000400 170 24.75 0.000400 220 24.75 0.000400 21 24.75 0.000400 71 24.75 0.000400 121 24.75 0.000400 171 24.75 0.000400 221 24.75 0.000400 22 24.75 0.000400 72 24.75 0.000400 122 24.75 0.000400 172 24.75 0.000400 222 24.75 0.000400 23 24.75 0.000400 73 24.75 0.000400 123 24.75 0.000400 173 24.75 0.000400 223 24.75 0.000400 24 2415 0.000400 74 24.75 0.000400 124 24.75 0.000400 174 2475 0.000400 224 2475 0.000400 25 24.75 0.000400 75 24.75 0.000400 125 24.75 0.000400 175 24.75 0.000400 225 24.75 0.000400- 26 2475 0.000400 76 24.75 0.000400 126 24.75 0.000400 176 2475 0.000400 226 24.75 0.000400 27 24.75 0.000400 77 24.75 0.000400 127 24.75 0.000400 177 24.75 0.000400 227 2475 0.000400` 28 24.75 0.000400 78 24.75 0.000400 128 24.75 0.000400 178 24.75 0.000400 228 24.75 0.000400 29 24.75 0.000400 79 24.75 0.000400 129 24.75 0.000400 179 24.75 0.000400 229 24.75 0.000400 30 24.75 0.000400 80 24.75 0.000400 130 24.75 0.000400 180 24.75 0.000400 230 24.75 0.000400 31 24.75 0.000400 81 24.75 0.000400 131 24.75 0.000400 181 24.75 0.000400 231 24.75 0.000400 32 24.75 0:000400 82 24.75 0.000400 132 2475 0.000400 182 24.75 0.000400 232 2475 0.000400' 33 24.75 0.000400 83 24.75 0.000400 133 24.75 0.000400 183 24.75 0.000400 233 24.75 0.000400' 34 24.75 0.000400 84 24.75 0.000400 134 24.75 0.000400 184 24.75 0.000400 234 24.75 0.000400 35 24.75 0.000400 85 24.75 0.000400 135 24.75 0.000400 185 24.75 0.000400 235 24.75 0.000400 36 24.75 0.000400 86 24.75 0.000400 136 24.75 0.000400 186 24.75 0.000400 236 24.75 0.000400 37 24.75 0.000400 87 24.75 0.000400 137 24.75 0.000400 187 24.75 0.000400 237 24.75 0.000400 38 24.75 0.000400 88 24.75 0.000400 138 24.75 0.000400 188 24.75 0.000400 238 24.75 0.000400 39 24.75 0.000400 89 24.75 0.000400 139 24.75 0.000400 189 24.75 0.000400 239 24.75 0.000400 40 24.75 0.000400 90 24.75 0.000400 140 24.75 0.000400 190 24.75 0.000400 240 24.75 0.000400 41 24.75 0.000400 91 24.75 0.000400 141 24.75 0.000400 191 24.75 0.000400 241 24.65 -0.099600 42 24.75 0.000400 92 24.75 0.000400 142 24.75 0.000400 192 24.75 0.000400 242 24.75 0.000400 43 24.75 0.000400 93 24.75 0.000400 143 24.75 0.000400 193 24.75 0.000400 243 24.75 0.000400 44 24.75 0.000400 94 24.75 0.000400 144 24.75 0.000400 194 24.75 0.000400 244 24.75 0.000400 45 24.75 0.000400 95 24.75 0.000400 145 24.75 0.000400 195 24.75 0.000400 245 24.75 0.000400 46 24.75 0.000400 96 24.75 0.000400 146 24.75 0.000400 196 24.75 0.000400 246 24.75 0.000400 47 24.75 0.000400 97 24.75 0.000400 147 24.75 0.000400 197 24.75 0.000400 247 24.75 0.000400 48 24.75 0.000400 98 24.75 0.000400 148 24.75 0.000400 198 24,75 0.000400 248 24.75 0.000400 49 2475 0.000400 99 24.75 0.000400 149 2415 0.000400 199 2475 0.000400 249 2415 0.000400 50 24.75 0.000400 24.75 0.000400 150 24.75 200 24.75 0.000400 250 24.75 0.000400 Dato Error con respecto a ala Media 151 24.75 0.000400 152 24.75 24.75 0.000400 153 104 24.75 0.000400 0.000400 105 24.75 24.75 0.000400 106 57 24.75 0.000400 0.000400 58 24.75 24.75 0.000400 59 10 24.75 0.000400 11 Dato No. Dato Error con respecto a ala Media 1 24.75 2 Error con respecto a ala Media Dato No. Dato Error con respecto a ala Media 0.000400 51 24.75 0.000400 101 24.75 0.000400 24.75 0.000400 52 24.75 0.000400 102 24.75 3 24.75 0.000400 53 24.75 0.000400 103 4 24.75 0.000400 54 24.75 0.000400 5 24.75 0.000400 55 24.75 6 24.75 0.000400 56 7 24.75 0.000400 8 24.75 9 100 Dato Dato N0 ' 0.000400 Dato N0' 66 Desarrollo de Sensor de Nivel Ultrasónico 24.76 24.74 24.72 24.7 24.68 24,66 24.64 24.62 24.6 Valores en centímetros Datos Media Desv. Est. Val. Max. Val. Min. 24.7496 0.00632456 24.75 24.65 Error con respecto a la Media 2.6148E-15 0.00632456 0.0004 -0.0996 67 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No. 2 Dato Error con respecto a ala Media 0.004297 201 61.05 0,004297 0.004297 202 61.05 0.004297 61.05 0.004297 203 61.05 0.004297 154 61.05 0.004297 204 61.05 0.004297 0.004297 155 61.05 0.004297 205 61.05 0.004297 61.05 0.004297 156 61.05 0.004297 206 61.05 0.004297 107 61.05 0.004297 157 61.05 0.004297 207 61.05 0.004297 0.004297 108 61.05 0.004297 158 61.05 0.004297 208 61.05 0.004297< 61. 05 0.004297 109 61.05 0.004297 159 61.05 0.004297 209 61.05 0.004297 60 61.05 0.004297 110 61.05 0.004297 160 61.05 0.004297 210 61.05 0.004297 0.004297 61 61.05 0.004297 111 61.05 0.004297 161 61.05 0.004297 211 61.05 0.004297 61.05 0.004297 62 61.05 0.004297 112 61.05 0.004297 162 61.05 0.004297. 212 61.05 0.004297 13 61.05 0.004297 63 61.05 0.004297 113 61.05 0.004297 163 61.05 0.004297 213 61.05 0.004297 14 61.05 0.004297 64 61.05 0.004297 114 61. 05 0.004297 164 61.05 0.004297 214 61.05 0.004297 15 61.05 0.004297 65 61.05 0.004297 115 61.05 0.004297 165 61.05 0.004297 215 61.05 0.004297 16 61.05 0.004297 66 61.05 0.004297 116 61. 05 0.004297 166 61.05 0.004297 216 61.05 0.004297 17 61.05 0.004297 67 61.05 0.004297 117 61.05 0.004297 167 61.05 0.004297 217 61.05 0.004297 18 61.05 0.004297 68 61.05 0.004297 118 61.05 0.004297 168 61.05 0.004297 218 61.05 0.004297 19 61.05 0.004297 69 61.05 0.004297 119 61.05 0.004297 169 61.05 0.004297 219 61.05 0.004297 20 61.05 0.004297 70 61.05 0.004297 120 61.05 0.004297 170 61.05 0.004297 220 61.05 0.004297 21 61.05 0:004297 71 61.05 0.004297 121 61.05 0.004297 171 61.05 0.004297 221 61.05 0.004297 22 61.05 0.004297 72 61.05 0.004297 122 61.05 0.004297 172 61.05 0.004297 222 61.05 0.004297 23 61.05 0.004297 73 61.05 0.004297 123 61.05 0.004297 173 61.05 0.004297 223 61.05 0.004297 24 61.05 0.004297 74 61.05 0.004297' 124 61.05 0.004297 174 61.05 0.004297 224 61.05 0.004297 25 61.05 0.004297 75 61.05 0.004297 125 61.05 0.004297 175 61.05 0.004297 225 61.05 0.004297 26 61.05 0.004297 76 61.05 0.004297 126 61.05 0.004297 176 61.05 0.004297 226 61.05 0.004297 27 61.05 0.004297 77 61.05 0.004297 127 61.05 0.004297 177 61.05 0.004297 227 61.05 0.004297 28 61.05 0.004297 78 61.05 0.004297 128 61.05 0.004297 178 61.05 0.004297 228 61.05 0.004297 29 61.05 0.004297 79 61.05 0.004297 129 61.05 0.004297 179 61.05 0.004297 229 61.05 0.004297 30 61.05 0.004297 80 61.05 0.004297 130 61.05 0,004297 180 61.05 0.004297 230 61.05 0.004297 31 60.5 -0.545703: 81 61,05 0.004297 131 61.05 0.004297 181 61.05 0.004297 231 61.05 0.004297 '. 32 61.05 0.004297 ` 82 61.05 0.004297 132 61.05 0.004297 182 61.05 0.004297 232 61.05 0.004297 33 61.05 0.004297 83 61.05 0.004297 133 61.05 0.004297 183 61.05 0.004297 233 61.05 0.004297 34 61.05 0.004297 84 61.05 0.004297 134 61.05 0.004297 184 61.05 0.004297 234 61.05 0.004297 35 61.05 0.004297 85 61.05 0.004297 135 61.05 0.004297 185 61.05 0.004297 235 61.05 0,004297 36 61.05 0.004297 86 61.05 0.004297 136 61.05 0.004297 186 61.05 0.004297 236 61.05 0.004297 37 61.05 0.004297 87 61.05 0.004297 137 61.05 0.004297 187 61.05 0.004297 237 61.05 0.004297 38 61.05 0.004297 88 61.05 0.004297 138 61.05 0.004297 188 61.05 0.004297 238 61.05 0.004297 39 61.05 0.004297 89 61.05 0.004297 139 61.05 0.004297 189 61.05 0.004297 239 61.05 0.004297 40 61.05 0.004297 90 61.05 0.004297 140 61.05 0.004297 190 61.05 0.004297 240 61.05 0.004297 41 61.05 0.004297 91 61.05 0.004297 141 61.05 0.004297 191 61.05 0.004297 241 61.05 0.004297 42 61.05 0.004297 92 61.05 0.004297 142 61.05 0.004297 192 61.05 0.004297 242 61.05 0.004297 43 61.05 0.004297 93 61.05 0.004297 143 61.05 0.004297 193 61.05 0.004297 243 61.05 0.004297 44 61.05 0.004297 94 61.05 0.004297 144 61.05 0.004297 194 61.05 0.004297 244 61.05 0.004297 45 61.05 0.004297 95 61.05 0.004297' 145 61.05 0.004297`- 195 61,05 0.004297 245 61.05 0.004297 46 60.5 -0.545703 96 61.05 0.004297 146 61.05 0.004297 196 61.05 0.004297 246 61.05 0.004297 47 61.05 0.004297 97 61.05 0.004297 147 61.05 0.004297 197 61.05 0.004297 247 61.05 0.004297 48 61.05 0.004297 98 61.05 0.004297 148 61.05 0.004297 198 61.05 0.004297 248 61.05 0.004297 49 61.05 ' 0.004297 99 61.05 0.004297 149 61.05 0.004297 199 61.05 0.004297 249 61.05 0.004297 50 61.05 0.004297 100 61.05 0.004297 150 61.05 0.004297 200 61.05 0.004297 250 61.05 0.004297 Dato No. Dato Error con respecto a ala Media 1 61.05 2 Error con respecto a ala Media Dato Error con respecto a ala Media Dato No. Dato 0.004297 151 61.05 0.004297 152 61.05 61.05 0.004297 153 104 61.05 0.004297 0.004297 105 61.05 61.05 0.004297 106 57 61.05 0.004297 0.004297 58 61.05 61.05 0.004297 59 10 61.05 0.004297 11 61.05 12 Dato No. Dato Dato 0.004297 51 61.05 0.004297 101 61.05 61.05 0.004297 52 61.05 0.004297 102 61,05 3 61.05 0.004297 53 61.05 0.004297 103 4 61.05 0.004297 54 61.05 0.004297 5 61.05 0.004297 55 61.05 6 61.05 0.004297 56 7 61.05 0.004297 8 61.05 9 No ' Error con respecto a ala Media Dato No. 68 Desarrollo de Sensor de Nivel Ultrasónico 61.1 61 60.9 60.8 60.7 60.6 60.5 60.4 60.3 60.2 Hi HI Hi Hi HI H <1. Lr) H co HI Hi HI HI HI HI 0 m •<( (N HI Hi H LÇ ÇO H H.1 N 00 Hi HI CF, H (N Hi r,.1 rsi M NNNN Series1 Valores en centímetros. Datos Media Desv. Est. Val. Max. Val. Min. 61.0456 0.04909461 61.05 60.5 Error con respecto a la Media 2.6688E-13 0.04909461 0.0044 -0.5456 Histograma 300 200 1,0 F eClICOCI. 100 50 69 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No. 3 Dato No. Dato Error con respecto a ala Media Dato No. Dato Error con respecto a ala Media Dato Dato Error con respecto a ala Media N0 ' Dato No. Dato Error con respecto a ala Media Dato No. Dato Error con respecto a ala Media 1 69.3 0.005469 51 69.3 0.005469 101 69.3 0.005469 151 69.3 0.005469 201 69.3 0.005469 2 69.3 0.005469 52 69.3 0.005469 102 69.3 0.005469 152 69.3 0.005469 202 69.3 0.005469 3 69.3 0.005469 53 69.3 0.005469 103 69.3 0.005469 153 69.3 0.005469 203 69.3 0.005469 4 69.3 0.005469 54 69.3 0.005469 104 69.3 0.005469 154 69.3 0.005469 204 69.3 0.005469 5 69.3 0.005469 55 69.3 0.005469 105 69.3 0.005469 155 69.3 0.005469 205 69.3 0.005469 6 69.3 0.005469 56 69.3 0.005469 106 69.3 0.005469 156 69.3 0.005469 206 69.3 0.005469 157 69.3 0.005469 207 69.3 0.005469 7 69.3 0.005469 57 69.3 0.005469 107 69.3 0.005469 8 69.3 0.005469 58 69.3 0.005469 108 69.3 0.005469 158 69.3 0.005469 208 69.3 0.005469 9 69.3 0.005469 59 69.3 0.005469 109 69.3 0.005469 159 69.3 0.005469 209 69.3 0.005469 10 69.3 0.005469 60 69.3 0.005469 110 69.3 0.005469 160 69.3 0.005469 210 69.3 0.005469 11 69.3 0.005469 61 69.3 0.005469 111 69.3 0.005469 161 69.3 0.005469 211 69.3 0.005469 12 693 0.005469 62 693 0.005469 112 693 0.005469 162 693 0.005469 212 693 0.005469 13 69.3 0.005469 63 69.3 0.005469 113 69.3 0.005469 163 69.3 0.005469 213 69.3 0.005469 114 693 0.005469 164 693 0.005469 214 693 0.005469 14 693 0.005469 64 69.3 0.005469 15 69.3 0.005469 65 69.3 0.005469 115 69.3 0.005469 165 69.3 0.005469 215 69.3 0.005469 16 69.3 0.005469 66 69.3 0.005469 116 69.3 0.005469 166 69.3 0.005469 216 69.3 0.005469 17 69.3 0.005469 67 69.3 0.005469 117 69.3 0.005469 167 69.3 0.005469 217 69.3 0.005469 18 693 0.005469 68 693 0.005469 118 693 0.005469 168 693 0.005469 218 693 0.005469: 19 69.3 0.005469 69 69.3 0.005469 119 69.3 0.005469 169 69.3 0.005469 219 69.3 0.005469" 69.3 0.005469 220 69.3 0.005469 20 69.3 0.005469 70 69.3 0.005469 120 69.3 0.005469 170 21 69.3 0.005469 71 69.3 0.005469 121 69.3 0.005469 171 69.3 0.005469 221 69.3 0.005469' 22 69.3 0.005469 72 69.3 0.005469 122 69.3 0.005469 172 69.3 0.005469 222 69.3 0.005469 23 69.3 0.005469 73 69.3 0.005469 123 69.3 0.005469 173 69.3 0.005469 223 69.3 0.005469 24 69.3 0.005469 74 69.3 0.005469 124 69.3 0.005469 174 69.3 0.005469 224 69.3 0.005469 25 69.3 0.005469 75 69.3 0.005469 125 69.3 0.005469 175 69.3 0.005469 225 69.3 0.005469 0.005469 226 69.3 0.005469 26 69.3 0.005469 76 69.3 0.005469 126 69.3 0.005469 176 69.3 69.3 0.005469 177 69.3 0.005469 227 69.3 0.005469 27 69.3 0.005469 77 69.3 0.005469 127 28 69.3 0.005469 78 69.3 0.005469 128 69.3 0.005469 178 69.3 0.005469 228 69.3 0.005469 29 69.3 0.005469 79 69.3 0.005469 129 69.3 0.005469 179 69.3 0.005469 229 69.3 0.005469 30 69.3 0.005469 80 69.3 0.005469 130 69.3 0.005469 180 69.3 0.005469 230 69.3 0.005469 31 69.3 0.005469 81 69.3 0.005469 131 69.3 0.005469 181 69.3 0.005469 231 69.3 0.005469 32 69.3 0.005469 82 69.3 0.005469 132 69.3 0.005469 182 69.3 0.005469 232 69.3 0.005469 69.3 0.005469 233 69.3 0.005469 33 69.3 0.005469 83 69.3 0.005469 133 69.3 0.005469 183 34 69.3 0.005469 84 69.3 0.005469 134 69.3 0.005469 184 69.3 0.005469 234 69.3 0.005469 35 69.3 0.005469 85 69.3 0.005469 135 69.3 0.005469 185 69.3 0.005469 235 69.3 0.005469 36 69.3 0.005469 86 69.3 0.005469 136 69.3 0.005469 186 69.3 0.005469 236 69.3 0.005469 37 69.3 0.005469 87 69.3 0.005469 137 69.3 0.005469 187 69.3 0.005469 237 69.3 0.005469 38 69.3 0.005469 88 69.3 0.005469 138 69.3 0.005469 188 69.3 0.005469 238 69.3 0.005469 39 693 0.005469 89 69.3 0.005469 139 693 0.005469 189 693 0.005469 239 693 0.005469 69.3 0.005469 240 69.3 0.005469 40 69.3 0.005469 90 69.3 0.005469 140 69.3 0.005469 190 41 69.3 0.005469 91 69.3 0.005469 141 69.3 0.005469 191 69.3 0.005469 241 69.3 0.005469 42 69.3 0.005469 92 69.3 0.005469 142 69.3 0.005469 192 69.3 0.005469 242 69.3 0.005469 43 69.3 0.005469 93 69.3 0.005469 143 69.3 0.005469 193 69.3 0.005469 243 69.3 0.005469 44 69.3 0.005469 94 69.3 0.005469 144 69.3 0.005469 194 69.3 0.005469 244 69.3 0.005469 45 69.3 0.005469 95 69.3 0.005469 145 69.3 0.005469 195 69.3 0.005469 245 69.3 0.005469 69.3 0.005469 246 69.3 0.005469 46 69.3 0.005469 96 69.3 0.005469 146 69.3 0.005469 196 47 68.65 -0.644531 97 69.3 0.005469, 147 69.3 0.005469 197 68.55 -0.744531 247 69.3 0.005469 48 69.3 0.005469 98 69.3 0.005469 148 69.3 0.005469 198 69.3 0.005469 248 69.3 0.005469. 49 69.3 0.005469 99 69.3 0.005469 149 69.3 0.005469 199 69.3 0.005469 249 69.3 0.005469' 50 69.3 0.005469 100 69.3 0.005469 150 69.3 0.005469 200 69.3 0.005469. 250 69.3 0.005469 70 Desarrollo de Sensor de Nivel Ultrasónico 69.4 69.2 69 68.8 68.6 68.4 68.2 68 •-, c-+ .--i . ^ 4 -1 .-i N M Yfl lp ..-1 •1 ri .1 ti ti .'-, .-1 .-1 4-1 C1 O ti (N M w7 t!1 l> t` IX) G1 O rl .i n •1 .-i .-9 .r1 1-1 e-1 .••, .-i .-1 r-1 M C% N (N NNN Series' Valores en centímetros. Datos Media Desv. Est. Val. Max. Val. Min. 69.2944 0.06264453 69.3 68.55 Error con respecto a la Media 3.2804E-13 0.06264453 0.0056 -0.7444 Histograma 71 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No 4 (1/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Dato N0' Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media 1 265.65 0.04372 51 265.65 0.04372 101 265.65 0.04372 151 265.65 0.04372 201 265.65 0.04372' 2 265.65 0.04372 52 265.65 0.04372 102 265.65 0.04372 152 265.65 0.04372 202 265.65 0.04372 3 265.65 0.04372 53 265.65 0.04372 103 265.65 0.04372 153 265.65 0.04372 203 265.65 0.04372 4 265.65 0.04372 54 265.65 0.04372 104 265.65 0.04372 154 265.65 0.04372 204 265.65 0.04372 5 265.65 0.04372 55 265.65 0.04372 105 265.65 0.04372 155 265.65 0.04372 205 265.65 0.04372 6 265.65 0.04372 56 265.65 0.04372 106 265.65 0.04372 156 265.65 0.04372 206 265.65 0.04372 7 265.65 0.04372 57 265.65 0.04372 107 265.65 0.04372 157 265.65 0.04372 207 265.65 0.04372 8 265.65 0.04372 58 265.65 0.04372 108 265.65 0.04372 158 265.65 0.04372 208 265.65 0.04372" 9 265.65 0.04372 59 265.65 0.04372 109 265.65 0.04372 159 265.65 0.04372 209 265.65 0.04372 10 265.65 0.04372 60 265.65 0.04372 110 265.65 0.04372 160 265.65 0.04372 210 265.65 0.04372 11 265.65 0.04372 61 265.65 0.04372 111 265.65 0.04372 161 265.65 0.04372 211 265.65 0.04372 12 265.65 0.04372 62 265.65 0.04372 112 265.65 0.04372 162 265.65 0.04372 212 265.65 0.04372 13 265.65 0.04372 63 265.65 0.04372 113 265.65 0.04372 163 265.65 0.04372 213 265.65 0.04372 14 265.65 0.04372 64 265.65 0.04372 114 265.65 0.04372 164 265.65 0.04372 214 265.65 0.04372 15 265.65 0.04372 65 265.65 0.04372 115 265.65 0.04372 165 265.65 0.04372 215 265.65 0.04372 16 265.65 0.04372 66 265.65 0.04372 116 265.65 0.04372 166 265.65 0.04372 216 265.65 0.04372 17 265.65 0.04372 67 265.65 0.04372 117 265.65 0.04372 167 265.65 0.04372 217 265.65 0.04372 18 265.65 0.04372 68 265.65 0.04372 118 265.65 0.04372 168 265.65 0.04372 218 265.65 0.04372 19 265.65 0.04372 69 265.65 0.04372 119 265.65 0.04372 169 265.65 0.04372 219 265.65 0.04372 20 265.65 0.04372 70 265.65 0.04372 120 265.65 0.04372 170 265.65 0.04372 220 265.65 0.04372 21 265.65 0.04372 71 265.65 0.04372 121 265.65 0.04372 171 265.65 0.04372 221 265.65 0.04372' 22 265.65 0.04372 72 265.65 0.04372 122 265.65 0.04372 172 265.65 0.04372 222 265.65 0.04372 23 265.65 0.04372 73 265.65 0.04372 123 265.65 0.04372 173 265.65 0.04372 223 265.65 0.04372 24 265.65 0.04372 74 265.65 0.04372 124 265.65 0.04372 174 265.65 0.04372 224 265.65 0.04372 25 265.65 0.04372 75 265.65 0.04372 125 265.65 0.04372 175 265.65 0.04372 225 265.65 0.04372 26 265.65 0.04372 76 265.65 0.04372 126 265.65 0.04372 176 265.65 0.04372 226 265.65 0.04372 27 265.65 0.04372 265.65 0.04372 127 265.65 0.04372 177 265.65 0.04372 227 265.65 0.04372 28 265.65 0.04372 78 265.65 0.04372 128 265.65 0.04372 178 265.65 0.04372 228 265.65 0.04372 29 265.65 0.04372 79 265.65 0.04372 129 265.65 0.04372 179 265.65 0.04372 229 265.65 0.04372 30 265.65 0.04372 80 265.65 0.04372 130 265.65 0.04372 180 265.65 0.04372 230 265.65 0.04372 31 265.65 0.04372 81 265.65 0.04372 131 265.65 0.04372 181 265.65 0.04372 231 265.65 0.04372 32 265.65 0.04372 82 265.65 0.04372 132 265.65 0.04372 182 265.65 0.04372 232 265.65 0.04372 33 265.65 0.04372 83 265.65 0.04372 133 265.65 0.04372 183 265.65 0.04372 233 265.65 0.04372 34 265.65 ' ' 0.04372 265.65 0.04372 134 265.65 0.04372 ' 184 265.65 0.04372 234 265.65 0.04372; 35 265.65 0.04372 85 265.65 0.04372 135 265.65 0.04372 185 265.65 0.04372 235 265.65 0.04372 36 265.65 0.04372 86 265.65 0.04372 136 265.65 0.04372 186 265.65 0.04372 236 265.65 0.04372 37 265.65 0.04372 87 265.65 0.04372 137 265.65 0.04372 187 265.65 0.04372 237 265.65 0.04372 38 265.65 0.04372 88 265.65 0.04372 138 265.65 0.04372 188 265.65 0.04372 238 265.65 0.04372 39 265.65 0.04372 89 265.65 0.04372 139 265.65 0.04372 189 265.65 0.04372 239 265.65 0.04372 40 265.65 0.04372 90 265.65 0.04372 140 265.65 0.04372 190 265.65 0.04372 240 265.65 0.04372 41 265.65 0.04372 91 265.65 0.04372 141 265.65 0.04372 191 265.65 0.04372 241 265.65 0.04372 42 265.65 0.04372 92 265.65 0.04372 142 265.65 0.04372 192 265.65 0.04372 242 265.65 0.04372 43 265.65 0.04372 93 265.65 0.04372 143 265.65 0.04372 193 265.65 0.04372 243 265.65 0.04372 44 265.65 0.04372 94 265.65 0.04372 144 265.65 0.04372 194 265.65 0.04372 244 265.65 0.04372 45 265.65 0.04372 95 265.65 0.04372 145 265.65 0.04372 195 265.65 0.04372 245 265.65 0.04372 46 265.65 0.04372 96 265.65 0.04372 146 265.65 0.04372 196 265.65 0.04372 246 265.65 0.04372 47 265.65 0.04372 97 265.65 0.04372 147 265.65 0.04372 197 265.65 0.04372 247 265.65 0.04372 48 265.65 0.04372' 98 265.65 0.04372 148 265.65 0.04372 198 265.65 0.04372 248 265.65 0.04372 49 265.65 0:04372: 99 265.65 0.04372 149 265.65 0.04372 199 265.65 0.04372 249 265.65 0.04372 50 265.65 0.04372 265.65 0.04372 150 265.65 0.04372 200 265.65 0.04372 250 265.65 0.04372 77 84 100 72 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No 4 (2/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Dato N0' Error con respecto a la Media Dato No. Dato Error con respecto la Media Dato No. Dato Error con respecto a la Media 251 265.65 0.04372 301 265.65 0.04372 351 265.65 0.04372 401 265.65 0.04372 451 265.65 0.04372 252 265.65 0.04372 302 265.65 0.04372 352 265.65 0.04372 402 265.65 0.04372 452 265.65 0.04372 265.65 0.04372 453 265.65 0.04372 253 265.65 0.04372 303 265.65 0.04372 353 161.7 -103.90628 403 254 265.65 0.04372 304 265.65 0.04372 354 161.7 -103.90628 404 265.65 0.04372 454 265.65 0.04372 255 265.65 0.04372 305 265.65 0.04372 355 265.65 0.04372 405 265.65 0.04372 455 265.65 0.04372 256 265.65 0.04372 306 265.65 0.04372 356 265.65 0.04372 406 265.65 0.04372 456 265.65 0.04372 257 265.65 0.04372 307 265.65 0.04372 357 265.65 0.04372 407 265.65 0.04372 457 265.65 0.04372 258 265.65 0.04372 308 265.65 0.04372 358 265.65 0.04372 408 265.65 0.04372 458 265.65 0.04372' 259 265.65 0.04372 309 265.65 0.04372 359 265.65 0.04372 409 265.65 0.04372 459 265.65 0.04372 260 265.65 0.04372 310 265.65 0.04372 360 265.65 0.04372 410 265.65 0.04372 460 265.65 0.04372 261 265.65 0.04372 311 265.65 0.04372 361 265.65 0.04372 411 265.65 0.04372 461 265.65 0.04372 262 265.65 0.04372 312 265.65 0.04372 362 265.65 0.04372 412 265.65 0.04372 462 265.65 0.04372 263 265.65 0.04372 313 265.65 0.04372 363 265.65 0.04372 413 265.65 0.04372 463 265.65 0.04372 264 265.65 0.04372 314 265.65 0.04372 364 265.65 0.04372 414 265.65 0.04372 464 265.65 0.04372 265 265.65 0.04372 315 265.65 0.04372 365 265.65 0.04372 415 265.65 0.04372 465 265.65 0.04372 266 265.65 0.04372 316 265.65 0.04372 366 265.65 0.04372 416 265.65 0.04372 466 265.65 0.04372 267 265.65 0.04372 317 265.65 0.04372 367 265.65 0.04372 417 265.65 0.04372 467 265.65 0.04372 268 265.65 0.04372 318 265.65 0.04372 368 265.65 0.04372 418 265.65 0.04372 468 265.65 0.04372 269 265.65 0.04372 319 265.65 0.04372 369 265.65 0.04372 419 265.65 0.04372 469 265.65 0.04372 270 265.65 0.04372 320 265.65 0.04372 370 265.65 0.04372 420 265.65 0.04372 470 265.65 0.04372 271 265.65 0.04372 321 265.65 0.04372 371 265.65 0.04372 421 265.65 0.04372 471 265.65 0.04372 272 265:65 0.04372 322 265.65 0:04372 372 265.65 0.04372 422 265.65 0.04372 472 265.65 0.04372 273 265.65 0.04372 323 265.65 0.04372 373 265.65 0.04372 423 265.65 0.04372 473 265.65 0.04372 274 265.65 0.04372 324 265.65 0.04372 374 265.65 0.04372 424 265.65 0.04372 474 265.65 0.04372 275 265.65 0.04372 325 265.65 0.04372 375 265.65 0.04372 425 265.65 0.04372 475 265.65 0.04372 276 265.65 0.04372 326 265.65 0.04372 376 265.65 0.04372 426 265.65 0.04372 476 265.65 0.04372 277 265.65 0.04372 327 265.65 0.04372 377 265.65 0.04372 427 265.65 0.04372 477 265.65 0.04372 278 265.65 0.04372 328 265.65 0.04372 378 265.65 0.04372 428 265.65 0.04372 478 265.65 0.04372 279 371.25 105.64372 329 265.65 0.04372 379 265.65 0.04372 429 265.65 0.04372 479 265.65 0.04372 280 265.65 0.04372 330 267.3 1.69372 380 265.65 0.04372 430 265.65 0.04372 480 265.65 0.04372 281 265.65 0.04372 331 265.65 0.04372 381 265.65 0.04372 431 265.65 0.04372 481 265.65 0.04372 282 265.65 0.04372 332 265.65 0.04372 382 265.65 0.04372 432 265.65 0.04372 482 265.65 0.04372 283 265.65 0.04372 333 265.65 0.04372 383 265.65 0.04372 433 265.65 0.04372 483 265.65 0.04372 284 265.65 0.04372, 334 265.65 0.04372 384 265.65 0.04372 434 265.65 0.04372 484 265.65 0.04372 285 265.65 0.04372 335 265.65 0.04372 385 265.65 0.04372 435 265.65 0.04372 485 265.65 0.04372 286 265.65 0.04372 336 265.65 0.04372 386 265.65 0.04372 436 265.65 0.04372 486 265.65 0.04372 287 265.65 0.04372 337 265.65 0.04372 387 265.65 0.04372 437 265.65 0.04372 487 265.65 0.04372 288 265.65 0.04372 338 265.65 0.04372 388 265.65 0.04372 438 265.65 0.04372 488 265.65 0.04372 289 265.65 0.04372 339 265.65 0.04372 389 265.65 0.04372 439 265.65 0.04372 489 265.65 0.04372 290 265.65 0.04372 340 267.3 1.69372 390 265.65 0.04372 440 265.65 0.04372 490 265.65 0.04372 291 265.65 0.04372 341 267.3 1.69372 391 265.65 0.04372 441 265.65 0.04372 491 265.65 0.04372 292 265.65 0.04372 342 265.65 0.04372 392 265.65 0.04372 442 265.65 0.04372 492 265.65 0.04372 293 265.65 0.04372 343 265.65 0.04372 393 265.65 0.04372 443 265.65 0.04372 493 265.65 0.04372 294 265.65 0.04372 344 265.65 0.04372 394 265.65 0.04372' 444 265.65 0.04372 494 265.65 0.04372 295 265.65 0.04372 345 265.65 0.04372 395 265.65- 0.04372 445 265.65 0:04372 495 265.65 0.04372 296 265.65 0.04372 346 265.65 0:04372 396 265.65 0:04372 446 265.65 0.04372' 496 265.65 0.04372 297 265.65 0.04372 347 265.65 0.04372 397 265.65 0.04372 447 265.65 0.04372 497 265.65 0.04372 298 265.65 0.04372 348 265.65 0.04372' 398 265.65 0.04372 448 265.65 0.04372 498 265.65 0:04372 299 265.65 0:04372 349 265.65 0.04372 399 265.65 ° 0.04372 449 265.65 0.04372: 499 265.65 0.04372: 300 265.65 0.04372 350 265.65 0.04372 400 265.65' 0.04372 450 265.65 0.04372' 500 265.65 0.04372 73 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la Drueba No 4 (3/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Dato N0' Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media 0.043725 ` 701 265.65 0.043725 0.04372 702 265.65 0.04372 265.65 0.04372 703 265.65 0.04372 654 265.65 0.04372 704 265.65 0.04372 0.04372 655 265.65 0.04372 705 265.65 0.04372 265.65 0.04372 656 265.65 0.04372 706 265.65 0.04372 607 265.65 0.04372 657 265.65 0.04372 707 265.65 0.04372 0.04372 608 265.65 0.04372 658 265.65 0.04372 708 265.65 0.04372' 265.65 0.04372 609 265.65 0.04372 659 265.65 0.04372 709 265.65 0.04372 0.04372 560 265.65 0.04372 610 265.65 0.04372 660 265.65 0.04372 710 265.65 0. 04372 265.65 0.04372 561 265.65 0.04372 611 265.65 0.04372 661 265.65 0.04372 711 265.65 0. 04372 512 265.65 0.04372 562 265.65 0.04372 612 265.65 0.04372 662 265.65 0.04372 712 265,65 0.04372 513 265.65 0.04372 563 265.65 0.04372 613 265.65 0.04372 663 265.65 0.04372 713 265.65 0. 04372 514 265.65 0.04372 564 265.65 0.04372 614 265.65 0.04372 664 265.65 0.04372 714 265.65 0.04372 515 265.65 0.04372 565 265.65 0.04372 615 265.65 0.04372 665 265.65 0.04372 715 265.65 0.04372 516 265.65 : ` 0.04372 566 265.65 0.04372 616 265.65 0.04372 666 265.65 0.04372 716 265.65 0.04372 517 265.65 0.04372 567 265.65 0.04372 617 265.65 0.04372 667 265.65 0.04372 717 265.65 0.04372 518 265.65 0.04372 568 265.65 0.04372 618 265.65 0.04372 668 265.65 0.04372 718 265.65 0.04372 519 265.65 0.04372 569 265.65 0.04372 619 265.65 0.04372 669 265.65 0.04372 719 265.65 0.04372 265.65 0.04372 720 265.65 0.04372 501 265.65 0.043725 551 265.65 0.043725 601 265.65 0.043725 651 265.65 502 265.65 0.04372 552 265.65 0.04372 602 265.65 0.04372 652 265.65 503 265.65 0.04372 553 265.65 0.04372 603 265.65 0.04372 653 504 265.65 0.04372 554 265.65 0.04372 604 265.65 0.04372 505 265.65 0.04372 555 265.65 0.04372 605 265.65 506 265.65 0.04372 556 265.65 0.04372 606 507 265.65 0.04372 557 265,65 0.04372 508 265.65 0.04372 558 265.65 509 265.65 0.04372 559 510 265.65 511 520 265.65 0.04372 570 265.65 0.04372 620 265.65 0.04372 670 521 265.65 0.04372 571 265.65 0.04372 621 265.65 0.04372 671 265.65 0.04372 721 265.65 0.04372 522 265.65 0.04372 572 265.65 0.04372 622 265.65 0.04372 672 265.65 0.04372' 722 265.65 0.04372 523 265.65 0.04372 573 265.65 0.04372 623 265.65 0.04372 673 265.65 0.04372 723 265.65 0.04372 524 265.65 0.04372 574 265.65 0.04372 624 265.65 0.04372 674 265.65 0.04372 724 265.65 0.04372 525 265.65 0.04372 575 265.65 0.04372 625 265.65 0.04372 675 265.65 0.04372 725 265.65 0.04372 526 265.65 0.04372 576 265.65 0.04372 626 265.65 0.04372 676 265.65 0.04372 726 265.65 0.04372 527 265.65 0.04372 577 265.65 0.04372 627 265.65 0.04372 677 265.65 0.04372 727 265.65 0.04372 528 265.65 0.04372 578 265.65 0.04372 628 265.65 0.04372 678 265.65 0.04372 728 265.65 0.04372 529 265.65 0.04372 579 265.65 0.04372 629 265.65 0.04372 679 265.65 0.04372 729 265.65 0.04372 530 265.65 0.04372 580 265.65 0.04372 630 265.65 0.04372 680 265.65 0.04372 730 265.65 0.04372 531 265.65 0.04372 581 265.65 0.04372 631 265.65 0.04372 681 265.65 0.04372 731 265.65 0.04372 532 265.65 0.04372 582 265.65 0.04372 632 265.65 0.04372 682 265.65 0.04372 732 265.65 0.04372' 533 265.65 0.04372 583 265.65 0.04372 633 265.65 0.04372 683 265.65 0.04372 733 265.65 0.04372 534 265.65 0.04372 584 265.65 0.04372 634 265.65 0.04372 684 265.65 0.04372 734 265.65 0.04372 535 265.65 0.04372 585 265.65 0.04372 635 265.65 0.04372 685 265.65 0.04372 735 265.65 0.04372 536 265.65 0.04372 586 265,65 0.04372 636 265.65 0.04372 686 265.65 0.04372 736 265.65 0.04372 537 265.65 0.04372 587 265.65 0.04372 637 265.65 0.04372 687 265.65 0.04372 737 265.65 0.04372 538 265.65 0.04372 588 265.65 0.04372 638 265.65 0.04372 688 265.65 0.04372 738 265.65 0.04372 539 265.65 0.04372 589 265.65 0.04372 639 265.65 0.04372 689 265.65 0.04372 739 265.65 0.04372 540 265.65 0.04372 590 265.65 0.04372 640 265.65 0.04372 690 265.65 0.04372 740 265.65 0.04372 541 265.65 0.04372 591 265.65' 0.04372 641 265.65 0.04372 691 265.65 0.04372 741 265.65 0.04372 542 265.65 0.04372 592 265.65 0.04372 642 265.65 0.04372 692 265.65 0.04372 742 265.65 0.04372 543 265.65 0.04372 593 265.65 0.04372 643 265.65 0.04372 693 265.65 0.04372 743 265.65 0.04372 544 265.65 0.04372 594 265.65 0.04372 644 265.65 0.04372 694 265.65 0.04372 744 265.65 0.04372 545 265.65 0.04372 595 265.65 0.04372 645 265.65 0.04372 695 265.65 0.04372 745 265.65 0.04372 546 265.65 0.04372 596 265.65 0.04372 646 265.65 0.04372 696 265.65 0.04372 746 265.65 0.04372 547 265.65 0.04372 597 265.65 0:04372 647 265.65 0.04372 697 265.65 0.04372 747 265.65 0.04372 548 265.65 0.04372 598 265.65 0.04372 648 265.65 0.04372 698 265.65 0.04372 748 265.65 0.04372 549 265.65 0.04372 599 265:65 0.04372 649 265.65 0.04372 699 265.65 0.04372 749 265.65 0:04372 550 265.65 0.04372 600 265:65 0.04372 650 265.65 0.04372` 700 265.65 0.04372 750 265.65 0:04372 " 74 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la Drueba No 4 (4/8 Error con Error con Dato No. Dato respecto a Dato No. Dato la Media 751 265.65 0.043725 respecto a la Media 801 265.65 0.043725 Dato Dato No. Dato 265.65 respecto a Dato No. Dato respecto a la Media la Media la Media N0' 851 respecto a Error con Error con Error con Dato 0.043725 901 265.65 0.043725 951 265.65 267.3 1.69372 952 265.65 0.043725` 0.04372 752 265.65 0.04372 802 265.65 0.04372 852 265.65 0.04372 902 753 265.65 0.04372 803 265.65 0.04372 853 265.65 0.04372 903 265.65 0.04372 953 265.65 0.04372 754 265.65 0.04372 804 265.65 0.04372 854 265.65 0.04372 904 265.65 0.04372 954 265.65 0.04372 755 265.65 0.04372 805 265.65 0.04372 855 265.65 0.04372 905 265.65 0.04372 955 265.65 0.04372 756 265.65 0.04372 806 265.65 0.04372 856 265.65 0.04372 906 265.65 0.04372 956 265.65 0.04372 757 265.65 0.04372 807 265.65 0.04372 857 265.65 0.04372 907 265.65 0.04372 957 265.65 0.04372 958 265.65 0.04372 758 265.65 0.04372 808 265.65 0.04372 858 265.65 0.04372 908 265.65 0.04372 859 265.65 0.04372 909 265.65 0.04372 959 265.65 0.04372 759 265.65 0.04372 809 265.65 0.04372 760 265.65 0.04372 810 265.65 0.04372 860 265.65 0.04372 910 265.65 0.04372 960 265.65 0.04372 761 265.65 0.04372 811 265.65 0.04372 861 265.65 0.04372 911 265.65 0.04372 961 265.65 0.04372 762 265.65 0.04372 812 265.65 0.04372 862 265.65 0.04372 912 265.65 0.04372 962 265.65 0.04372 763 265.65 0.04372 813 265.65 0.04372 863 265.65 0.04372 913 265.65 0.04372 963 265.65 0.04372' 764 265.65 0.04372 814 265.65 0.04372 864 265.65 0.04372 914 265.65 0.04372 964 265.65 0.04372i 765 265.65 0.04372 815 265.65 0.04372 865 265.65 0.04372 915 265.65 0.04372 965 265.65 0.04372? 766 265.65 0.04372 816 265.65 0.04372 866 265.65 0.04372 916 265.65 0.04372 966 265.65 0.04372 767 265.65 0.04372 817 265.65 0.04372 867 265.65 0.04372 917 265.65 0.04372 967 265,65 0.04372 768 265:65 0.04372 818 265.65 0.04372 868 265.65 0.04372 918 265.65 0.04372 968 265.65 0.04372 769 265.65 0.04372 819 265.65 0.04372 869 265.65 0.04372 919 265.65 0.04372 969 265.65 0.04372 770 265.65 0.04372 820 265.65 0.04372 870 265.65 0.04372 920 265.65 0.04372 970 265.65 0.04372 771 265.65 0.04372 821 265.65 0.04372 871 265.65 0.04372 921 265.65 0.04372 971 265.65 0.04372 922 265.65 0.04372 972 265.65 0.04372 772 265.65 0.04372 822 265.65 0.04372 872 265.65 0.04372 773 265.65 0.04372 823 265.65 0.04372 873 265.65 0.04372 923 265.65 0.04372 973 265.65 0.04372 774 265.65 0.04372 824 265.65 0.04372 874 265.65 0.04372 924 265.65 0.04372 974 265.65 0.04372 775 265.65 0.04372 825 265.65 0.04372 875 265.65 0.04372 925 265.65 0.04372 975 265.65 0.04372 776 265.65 0.04372 826 265.65 0.04372 876 265.65 0.04372 926 265.65 0.04372 976 265.65 0.04372 777 265.65 0.04372 827 265.65 0.04372 877 265.65 0.04372 927 265.65 0.04372 977 265.65 0.04372 978 265.65 0.04372 778 265.65 0.04372 828 265.65 0.04372 878 265.65 0.04372 928 265.65 0.04372 779 265.65 0.04372 829 265.65 0.04372 879 265.65 0.04372 929 265.65 0.04372 979 265.65 0.04372 780 265.65 0.04372 830 265.65 0.04372 880 265.65 0.04372 930 265.65 0.04372 980 265.65 0.04372 781 265.65 0.04372 831 265.65 0.04372 881 265.65 0.04372 931 265.65 0.04372 981 265.65 0.04372 782 265.65 0.04372 832 265.65 0.04372 882 265.65 0.04372 932 265.65 0.04372 982 265.65 0.04372' 783 265.65 0.04372 833 265.65 0.04372 883 265.65 0.04372 933 265.65 0.04372 983 265.65 0.04372 784 265.65 0.04372 834 265.65 0.04372 884 265.65 0.04372 934 265.65 0.04372 984 265.65 0.04372 265.65 0.04372 985 265.65 0.04372 785 265.65 0.04372 835 265.65 0.04372 885 265.65 0.04372 935 786 265.65 0.04372 836 265.65 0.04372 886 265.65 0.04372 936 265.65 0.04372 986 265.65 0.04372 787 265.65 0.04372 837 265.65 0.04372 887 265.65 0.04372 937 265.65 0.04372 987 265.65 0.04372 788 265.65 0.04372 838 265.65 0.04372 888 265.65 0.04372 938 265.65 0.04372 988 265.65 0.04372 789 265.65 0.04372 839 265.65 0.04372 889 265.65 0.04372 939 265.65 0.04372 989 265.65 0.04372 790 265.65 0.04372 840 265.65 0.04372 890 265.65 0.04372 940 265.65 0.04372 990 265.65 0.04372' 791 265.65 0.04372 841 265.65 0.04372 891 265.65 0.04372 941 265.65 0.04372 991 265.65 0.04372 792 265.65 0.04372 842 265.65 0.04372 892 265.65 0.04372 942 265.65 0.04372 992 265.65 0.04372 793 265.65 0.04372 843 265.65 0.04372 893 265.65 0.04372 943 265.65 0.04372 993 265.65 0.04372 794 265.65 0.04372 844 265.65 0.04372 894 265.65 0.04372 944 265.65 0.04372 994 265.65 0.04372 795 265.65 0.04372 845 265.65 0.04372 895 265.65 0.04372 945 265.65 0.04372 ` 995 265.65 0.04372 796 265.65 0.04372 846 265.65 0.04372 896 265.65 0.04372 946 265.65 0.04372 996 265.65 0.04372 265.65 0.04372 797 265.65 798 265.65 0.04372 848 799 265.65 0.04372 849 800 265.65 0.04372 850 0.04372 847 0.04372 897 265.65 0.04372 947 265.65 0.04372 997 265.65 0.04372 898 265.65 0;04372 948 265.65 0.04372 998 265.65 0.04372 265.65 0.04372 899 265.65 0.04372 949 265.65 0.04372 999 265.65 0.04372 265.65 0.04372 265:65 0.04372' 950 265.65 0.04372 1000 265.65 0.04372 265.65 900 75 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No 4 (5/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Dato No' Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media 1001 265.65 0.043725 1051 265.65 0.043725 1101 265.65 0.043725 1151 265.65 0.043725 1201 265.65 0.043725 1002 265.65 0.04372 1052 265.fi5 0.04372 1102 265.65 0.04372 1152 265.65 0.04372 1202 265.65 0.04372 1003 265.65 0.04372 1053 265.65 0.04372 1103 265.65 0.04372 1153 265.65 0.04372 1203 265.65 0.04372 1004 265.65 0.04372 1054 265.65 0.04372 1104 265.65 0.04372 1154 265.65 0.04372 1204 265.65 0.04372 1005 265.65 0.04372 1055 265.65 0.04372 1105 265.65 0.04372 1155 265.65 0.04372 1205 265.65 0.04372 1006 265.65 0.04372 1056 265.65 0.04372 1106 265.65 0.04372 1156 265.65 0.04372 1206 265.65 0.04372 1007 265.65 0.04372 1057 265.65 0.04372 1107 265.65 0.04372 1157 265.65 0.04372 1207 265.65 0.04372 1008 265.65 0.04372 1058 265.65 0.04372 1108 265.65 0.04372 1158 265.65 0.04372 1208 265.65 0.04372 1009 265.65 0.04372 1059 265.65 0.04372 1109 265.65 0.04372 1159 265.65 0.04372 1209 265.65 0.04372 1010 265.65 0.04372 1060 265.65 0.04372 1110 265.65 0.04372 1160 265.65 0.04372 1210 265.65 0.04372 1011 265.65 0.04372 1061 265.65 0.04372 1111 265.65 0.04372 1161 265.65 0.04372 1211 265.65 0.04372 1012 265.65 0.04372 1062 265.65 0.04372 1112 265.65 0.04372 1162 265.65 0.04372 1212 265.65 0.04372 1013 265.65 0.04372 1063 265.65 0.04372 1113 265.65 0.04372 1163 265.65 0.04372 1213 265.65 0.04372 1014 265.65 0.04372 1064 265.65 0.04372 1114 265.65 0.04372 1164 265.65 0.04372 1214 265.65 0.04372 1015 265.65 0.04372 1065 265.65 0.04372 1115 265.65 0.04372 1165 265.65 0.04372 1215 265.65 0.04372 1016 265.65 0.04372 1066 265.65 0.04372 1116 265.65 0.04372 1166 265.65 0.04372 1216 265.65 0.04372 1017 265.65 0.04372 1067 265.65 0.04372 1117 265.65 0.04372 1167 265.65 0.04372 1217 265.65 0.04372 1018 265.65 0.04372 1068 265.65 0.04372 1118 265.65 0.04372 1168 265.65 0.04372 1218 265.65 0.04372 1019 265.65 0.04372 1069 265.65 0.04372 1119 265.65 0.04372 1169 265.65 0.04372 1219 265,65 0.04372 1020 265.65 0.04372 1070 265.65 0.04372 1120 265.65 0.04372 1170 265.65 0.04372 1220 265.65 0.04372 1021 265.65 0.04372 1071 265.65 0.04372 1121 265.65 0.04372 1171 265.65 0.04372 1221 265.65 0.04372 1022 265.65 0.04372 1072 265.65 0.04372 1122 265.65 0.04372 1172 265.65 0.04372 1222 265.65 0.04372 1023 265.65 ' 0.04372 1073 265.65 0.04372 1123 265.65 0.04372 1173 265.65 0.04372 1223 265.65 0.04372 1024 265.65 0.04372 1074 265.65 0.04372 1124 265.65 0.04372 1174 265.65 0.04372 1224 265.65 0.04372 1025 265.65 0.04372 1075 265.65 0:04372 1125 265.65 0.04372 1175 265.65 0.04372 1225 265.65 0.04372 1026 265.65 0.04372 1076 265.65 0.04372 1126 265.65 0.04372 1176 265.65 0.04372 1226 265.65 0.04372 1027 265.65 0.04372 1077 265.65 0.04372 1127 265.65 0.04372 1177 265.65 0.04372 1227 265.65 0.04372 1028 265.65 0.04372 1078 265.65 0.04372 1128 265.65 0.04372 1178 265.65 0.04372 1228 265.65 0.04372 1029 265.65 0.04372 1079 265.65 0.04372 1129 265.65 0.04372 1179 265.65 0.04372 1229 265.65 0.04372 1030 265.65 0.04372 1080 265.65 0.04372 1130 265.65 0.04372 1180 265.65 0.04372 1230 265.65 0.04372 1031 265.65 0.04372 1081 265.65 0.04372 1131 265.65 0.04372 1181 265.65 0.04372 1231 265.65 0.04372 1032 265.65 0.04372 1082 265.65 0.04372 1132 265.65 0.04372 1182 265.65 0.04372 1232 265.65 0.04372 1033 265.65 0.04372 1083 265.65 0.04372 1133 265.65 0.04372 1183 265.65 0.04372 1233 265.65 0.04372 1034 265.65 0.04372 1084 265.65 0.04372 1134 265.65 0.04372 1184 265.65 0.04372 1234 265.65 0.04372 1035 265.65 0:04372 1085 265.65 0.04372 1135 265:65 0.04372 1185 265.65 0.04372 1235 265.65 0.04372 1036 265.65 0.04372 1086 265.65" 0.04372 1136 265.65 0.04372 1186 265.65 0.04372 1236 265.65 0.04372 1037 265.65 0.04372 1087 265.65 0.04372 1137 265.65 0.04372 1187 265.65 0.04372 1237 265.65 0.04372 1038 265.65 0.04372 1088 265:65 0:04372 1138 265.65 0.04372 1188 265.65 0.04372 1238 265.65 0.04372 1039 265.65 0:04372 1089 265.65 0.04372 1139 265.65 0.04372 1189 265.65 0.04372 1239 265.65 0.04372 1040 265.65 0.04372 1090 265.65 0.04372 1140 265.65 0.04372 1190 265.65 0.04372 1240 265.65 0.04372; 1041 265.65 0.04372 1091 265.65 0.04372 1141 265.65 0.04372 1191 265.65 0.04372 1241 265.65 0.04372 1042 265.65 0.04372 1092 265.65 0.04372 1142 265,65 0.04372 1192 265.65 0.04372 1242 265.65 0.04372 1043 265.65 0.04372 1093 265.65 0.04372 1143 265.65 0.04372 1193 265.65 0.04372 1243 265.65 0.04372 1044 265:65 0.04372 1094 265.65 0.04372 1144 265.65 0:04372 1194 265.65 0.04372 1244 265.65 0.04372 1045 265.65 0.04372 1095 265.65 0.04372 1145 265.65 0.04372 1195 265.65 0.04372 1245 265.65 0.04372 1046 265.65 0.04372 1096 265.65 0.04372 1146 265.65 0.04372 1196 265.65 0.04372 1246 265.65 0.04372 1047 265.65 0.04372 1097 265.65 0.04372 1147 265.65 0.04372 1197 265.65 0.04372 1247 265.65' 0.04372 1048 265.65 0.04372 1098 265.65 0.04372 1148 265.65 0.04372 1198 265.65 0.04372 1248 265.65 0.04372 1049 265.65 0.04372 1099 265.65 0.04372 1149 265.65 0.04372 1199 265.65 0.04372 1249 265.65 0.04372' 1050 265.65 0.04372 1100 265.65 0.04372 1150 265.65 0.04372 1200 265.65 0.04372 1250 265.65 0.04372 76 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la p rueba No 4 (6/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Dato N0' Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media 1251 265.65 0.043725 1301 265.65 0.043725 1351 265.65 0.043725 1401 265.65 0.043725 1451 265.65 0.043725 1252 265.65 0.04372 1302 265.65 0.04372 1352 265.65 0.04372 1402 265.65 0.04372 1452 265.65 0.04372' 1253 265.65 0.04372 1303 265.65 0.04372 1353 265.65 0.04372 1403 265.65 0.04372 1453 265.65 0.04372 1404 265.65 0.04372 1454 265.65 0.04372° 1254 265.65 0.04372 1304 265.65 0.04372 1354 265.65 0.04372 1255 265.65 0.04372 1305 265.65 0.04372 1355 265.65 0.04372 1405 265.65 0.04372 1455 265.65 0.04372 1256 265.65 0.04372 1306 265.65 0.04372 1356 265.65 0.04372 1406 265.65 0.04372 1456 265.65 0.04372 1257 265.65 0.04372 1307 265.65 0.04372 1357 265.65 0.04372 1407 265.65 0.04372 1457 265.65 0.04372 1258 265.65 0.04372 1308 265.65 0.04372 1358 265.65 0.04372 1408 265.65 0.04372 1458 265.65 0.04372 1259 265.65 0.04372 1309 265.65 0.04372 1359 265.65 0.04372 1409 265.65 0.04372 1459 265.65 0.04372 1260 265.65 0.04372 1310 265.65 0.04372 1360 265.65 0.04372 1410 265.65 0.04372 1460 265.65 0.04372 1261 265.65 0.04372 1311 265.65 0.04372 1361 265.65 0.04372 1411 265.65 0.04372 1461 265.65 0.04372 1262 265.65 0.04372 1312 265.65 0.04372 1362 265.65 0.04372 1412 265.65 0.04372 1462 265.65 0.04372 1263 265.65 0.04372 1313 265.65 0.04372 1363 265.65 0.04372 1413 265.65 0.04372 1463 265.65 0.04372 1264 265.65 0.04372 1314 265.65 0.04372 1364 265.65 0.04372 1414 265.65 0.04372 1464 265.65 0.04372 1265 265.65 0.04372 1315 265.65 0.04372 1365 265.65 0.04372 1415 265.65 0.04372 1465 265,65 0.04372 1266 265.65 0.04372 1316 265.65 0.04372 1366 265.65 0.04372 1416 265.65 0.04372 1466 265.65 0.04372 265.65 0.04372 1467 265.65 0.04372 1267 265.65 0.04372 1317 265.65 0.04372 1367 265.65 0.04372 1417 1268 265.65 0.04372 1318 265.65 0.04372 1368 265.65 0.04372 1418 265.65 0.04372 1468 265.65 0.04372 1269 265.65 0.04372 1319 265.65 0.04372 1369 265.65 0.04372 1419 265.65 0.04372 1469 265.65 0.04372 1270 265.65 0.04372 1320 265.65 0.04372 1370 265.65 0.04372 1420 265.65 0.04372 1470 265.65 0.04372 1271 265.65 0.04372 1321 265.65 0.04372 1371 265.65 0.04372 1421 265.65 0.04372 1471 265.65 0.04372 1272 265.65 0.04372 1322 265.65 0.04372 1372 265.65 0.04372 1422 265.65 0.04372 1472 265.65 0.04372 1273 265.65 0.04372 1323 265.65 0.04372 1373 265.65 0.04372 ` 1423 265.65 0.04372 1473 265.65 0.04372 1274 265.65 0.04372 1324 265.65 0.04372 1374 265.65 0.04372 1424 265.65 0.04372 1474 265.65 0.04372 1275 265.65 0.04372 1325 265.65 0.04372 1375 265.65 0.04372 1425 265.65 0.04372 1475 265.65 0.04372 1276 265.65 0.04372 1326 265.65 0.04372 1376 265.65 0.04372- 1426 265.65 0.04372 1476 265.65 0.04372 1277 265.65 0.04372 1327 265.65 0.04372 1377 265.65 0.04372 1427 265.65 0.04372 1477 265.65 0.04372 1278 265.65 0.04372 1328 265.65 0.04372 1378 265.65 0.04372 1428 265.65 0.04372 1478 265.65 0.04372 1279 265.65 0.04372 1329 265.65 0.04372 1379 265.65 0.04372 1429 265.65 0.04372 1479 265.65 0.04372 265.65 0.04372 1480 265.65 0.04372 1280 265.65 0.04372 1330 265.65 0.04372 1380 265.65 0.04372 1430 1281 265.65 0.04372 1331 265.65 0.04372 1381 265.65 : 0.04372 1431 265.65 0.04372 1481 265.65 0.04372 1282 265.65 0.04372 1332 265.65 0.04372 1382 265.65 0.04372 1432 265.65 0.04372 1482 265.65 0.04372' 1283 265.65 0.04372 1333 265.65 0.04372 1383 265.65 0.04372 1433 265.65 0.04372 1483 265.65 0.04372 1284 265.65 0.04372 1334 265.65 0.04372 1384 265.65 0.04372 1434 265.65 0.04372 1484 265.65 0.04372 1285 265.65 0.04372 1335 265.65 0.04372 1385 265.65 0.04372 1435 265.65 0.04372 1485 265.65 0.04372 1286 265.65 " 0.04372 1336 265.65 0.04372 1386 265.65 0.04372 1436 265.65 0.04372 1486 265.65 0.04372 1287 265.65 0.04372 1337 265.65 0.04372 1387 265.65 0.04372 1437 265.65 0.04372 1487 265.65 0.04372 1288 265.65 0.04372 1338 265.65 0.04372 1388 265.65 0.04372 1438 265.65 0.04372 1488 265.65 0.04372 1289 265.65 0.04372 1339 265.65 0.04372 1389 265.65 0.04372 1439 265.65 0.04372 1489 265.65 0.04372 1290 265.65 0.04372 1340 265.65 0.04372 1390 265.65 0.04372 1440 265.65 0.04372 1490 265.65 0.04372 1291 265.65 0.04372 1341 265.65 0.04372 1391 265.65 0.04372 1441 265.65 0.04372 1491 265.65 0.04372 1292 265.65 0.04372 1342 265.65 0.04372 1392 265.65 0.04372 1442 265.65 0.04372 1492 267.3 1.69372 1293 265.65 0.04372 1343 265.65 0.04372 1393 265.65 0.04372 1443 265.65 0.04372 1493 265.65 0.04372 1294 265.65 0.04372 1344 265.65 0.04372 1394 265.65 0.04372 1444 265.65 0.04372 1494 265.65 0.04372 1295 265.65 0.04372 1345 265.65 0.04372 1395 265.65 0.04372 1445 265.65 0.04372 1495 265.65 0.04372 1296 265.65 0.04372 1346 265.65 0.04372 1396 265.65 0.04372° 1446 265.65 0.04372 1496 265.65 0.04372 1297 265.65 0.04372 1347 265.65 0.04372 1397 265.65 0.04372 1447 265.65 0.04372 1497 265.65 0.04372 1298 265.65 0.04372 1348 265.65 0.04372 1398 265.65 0.04372 1448 265.65 0.04372 1498 265.65 0.04372 265.65 0.04372 1499 265.65 0.04372 265.65 0.04372 1500 265.65 0.04372 1299 265.65 0.04372 1349 265.65 0.04372 1399 265.65 0.04372 1449 1300 265.65 0.04372 1350 265.65 0.04372 1400 265.65 0.04372 1450 77 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la Drueba No 4 (7/8 Error con Dato No. Dato respecto a Dato la Media respecto a la Media 1501 265.65 0.043725 1551 265.65 1502 265.65 0.04372 1552 265.65 Dato N0' 0.043725. 1601 0.04372 Dato 1602 respecto a Error con Error con Error con Error con Dato No. Dato No. Dato respecto a Dato No. Dato la Media la Media la Media respecto a 265.65 0.043725 1651 265.65 0.043725 1701 267.3 1.693725 265.65 0.04372 1652 265.65 0.04372 1702 265.65 0.04372 0.04372 1703 265.65 0.04372 1503 265.65 0.04372 1553 265.65 0.04372 1603 265.65 0.04372 1653 265.65 1504 265.65 0.04372 1554 265.65 0.04372 1604 265.65 0.04372 1654 265.65 0.04372 1704 265.65 0.04372 1505 265.65 0.04372 1555 265.65 0.04372 1605 265.65 0.04372 1655 265.65 0.04372 1705 265.65 0.04372 1506 265.65 0.04372 1556 265.65 0.04372 1606 265.65 0.04372 1656 265.65 0.04372 1706 265.65 0.04372 1507 265.65 0.04372 1557 265.65 0.04372 1607 265.65 0.04372 1657 265.65 0.04372 1707 265.65 0.04372 1508 265.65 0.04372 1558 265.65 0.04372 1608 265.65 0.04372 1658 265.65 0.04372 1708 265.65 0.04372 1509 265.65 0.04372 1559 265.65 0.04372 1609 265.65 0.04372 1659 265.65 0.04372 1709 265.65 0.04372 1510 265.65 0.04372 1560 265.65 0.04372 1610 265.65 0.04372 1660 265.65 0.04372 1710 265.65 0.04372 1511 265.65 0.04372 1561 265.65 0.04372 1611 265.65 0.04372 1661 265.65 0.04372 1711 265.65 0.04372 1512 265.65 0.04372 1562 265.65 0.04372 1612 265.65 0.04372 1662 265,65 0.04372 1712 265.65 0.04372 1513 265.65 0.04372 1563 265.65 0.04372 1613 265.65 0.04372 1663 265.65 0.04372 1713 265.65 0.04372 1514 265.65 0.04372 1564 265.65 0.04372 1614 265.65 0.04372 1664 265.65 0.04372 1714 265.65 0.0437 265.65 0.04372 265.65 0.04372 1615 265.65 0.04372 1665 265.65 0.04372 1715 265.65 0.04372 265.65 0.04372 1716 265.65 0.04372 1565 1516 265.65 0.04372 1566 265.65 0.04372 1616 265.65 0.04372 1666 1517 265.65 0.04372 1567 265.65 0.04372 1617 265.65 0.04372 1667 265.65 0.04372 1717 265.65 0.04372 1518 265.65 0.04372 1568 265.65 0.04372 1618 265.65 0.04372 1668 267.3 1.69372 1718 265.65 0.04372 1519 265.65 0.04372 1569 265.65 0.04372 1619 265.65 0.04372 1669 265.65 0.04372 1719 265.65 0.04372 1520 265.65 0.04372 1570 265.65 0.04372 1620 265.65 0.04372 1670 265.65 0.04372 1720 265.65 0.04372 1521 265.65 0.04372 1571 265.65 0.04372 1621 265.65 0.04372 1671 265.65 0.04372 1721 265.65 0.04372 1522 265.65 0.04372 1572 265.65 0.04372 1622 265.65 0.04372 1672 265.65 0.04372 1722 265.65 0.04372 1673 265.65 0.04372 1723 265.65 0.04372 1523 265.65 0.04372 1573 265.65 0.04372 1623 265.65 0.04372 1524 265.65 0.04372 1574 265.65 0.04372 1624 265.65 0.04372 1674 265.65 0.04372 1724 265.65 0.04372 1525 265.65 0.04372 1575 265.65 0.04372 1625 265.65 0.04372 1675 265.65 0.04372 1725 265.65 0.04372 1526 265.65 0.04372 1576 265.65 0.04372 1626 265.65 0.04372 1676 265.65 0.04372 1726 265.65 0.04372 1527 265.65 0.04372 1577 265.65 0.04372 1627 265.65 0.04372 1677 265.65 0.04372 1727 265.65 0.04372 1528 265.65 0.04372 1578 265.65 0.04372 1628 265.65 0.04372' 1678 265.65 0.04372 1728 265.65 0.04372 265.65 0.04372 1729 265.65 0.04372 1529 265.65 0.04372 1579 265.65 0.04372 1629 265.65 0.04372 1679 1530 265.65 '0.04372 1580 265.65 0.04372 1630 265.65 0.04372 1680 265.65 0.04372 1730 265.65 0.04372 1531 265.65 0.04372 1581 265.65 0.04372 1631 265.65 0.04372 1681 265.65 0.04372 1731 265.65 0.04372 1532 265.65 0.04372 1582 265.65 0.04372 1632 265.65 0.04372 1682 265.65 0.04372 1732 265.65 0.04372 1533 265.65 0.04372 1583 265.65 0.04372 1633 265.65 0.04372 1683 265.65 0.04372 1733 265.65 0.04372 1534 265.65 0.04372 1584 265.65 0.04372 1634 265.65 0.04372 1684 265.65 0.04372 1734 265.65 0.04372 1535 265.65 0.04372 1585 265.65 0.04372 1635 265.65 0.04372 1685 265.65 0.04372 1735 265.65 0.04372 265.65 0.04372 1736 265.65 0.04372 1536 265.65 0.04372 1586 265.65 0.04372 1636 265.65 0.04372 1686 1537 265.65 0.04372 1587 265.65 0.04372 1637 265.65 0.04372 1687 265.65 0.04372 1737 265.65 0.04372 1538 265.65 0.04372 1588 265.65 0.04372 1638 265.65 0.04372 1688 265.65 0.04372 1738 265.65 0.04372 1539 265.65 0.04372 1589 265.65 0.04372 1639 265.65 0.04372 1689 265.65 0.04372 1739 265.65 0.04372 1540 265.65 0.04372 1590 265,65 0.04372 1640 265.65 0.04372 1690 265.65 0.04372 1740 265.65 0.04372 1541 265.65 0.04372 1591 265.65 0.04372 1641 265.65 0.04372 1691 265.65 0.04372 1741 265.65 0.04372 1542 265.65 0.04372 1592 265.65 0.04372 1642 265.65 0.04372 1692 265.65 0.04372 1742 265.65 0.04372 1693 265.65 0.04372 1743 265.65 0.04372 1543 265.65 0.04372 1593 265.65 0.04372 1643 265.65 0.04372 1544 265.65 0.04372 1594 265.65 0.04372 1644 265.65 0.04372 1694 265.65 0.04372 1744 265.65 0.04372 1545 265.65 0.04372 ` 1595 265.65 0:04372 1645 265.65 0.04372 1695 265.65 0.04372 1745 265.65 0.04372 1546 265.65 0.04372 1596 265.65 0.04372 1646 265.65 0.04372 1696 265.65 0.04372 1746 265.65 0.04372 1547 265.65 0.04372 1597 265.65 0.04372 1647 265.65 0.04372 1697 265.65 0.04372 1747 265.65 0.04372 1548 265.65 0.04372 265.65 0.04372 1648 265.65 0.04372 1698 265.65 0.04372 1748 265.65 0.04372 265.65 0.04372 1699 265.65 0.04372 1749 265.65 0.04372 265.65 0.04372 1700 265.65 0.04372 1750 265.65 0.04372 1598 1549 265.65 0.04372 1599 265.65 0.04372 1649 1550 265.65 0.04372 1600 265.65: 0.04372 1650 78 Desarrollo de Sensor de Nivel Ultrasónico Tabla de datos de la prueba No 4 (8/8 Dato No. Dato Error con respecto a la Media Dato No. Dato Error con respecto a la Media Dato Error con Dato respecto a Dato No. Dato la Media No. Error con respecto a la Media Dato No. Dato Error con respecto a la Media 1751 265.65 0.043725 1801 265.65 0.043725 1851 265.65 0.043725 1901 265.65 0.043725 1951 265.65 0.043725 1752 265.65 0.04372 1802 265.65 0.04372 1852 265.65 0.04372 1902 265.65 0.04372 1952 265.65 0.04372 1753 265.65 0.04372 803 265.65 0.04372 1853 265.65 0.04372 1903 265.65 0.04372 1953 265.65 0.04372 1754 265.65 0.04372 804 265.65 0.04372 1854 265.65 0.04372 1904 265.65 0.04372 1954 265.65 0.04372 1755 265.65 0.04372 805 265.65 0.04372 1855 265.65 0.04372 1905 265.65 0.04372 1955 265.65 0.04372 1756 265.65 0.04372 265.65 0.04372 1856 265.65 0.04372 1906 265.65 0.04372 1956 265.65 0.04372 265.65 0.04372 1957 265.65 0.04372 806 1757 265.65 0.04372 807 265.65 0.04372 1857 265.65 0.04372 1907 1758 265.65 0.04372 808 265.65 0.04372 1858 265.65 0.04372 1908 265.65 0.04372 1958 265,65 0.04372 1759 265.65 0.04372 809 265.65 0.04372 1859 265.65 0.04372 1909 265.65 0.04372 1959 265.65 0.04372 1760 265.65 0.04372 810 265.65 0.04372 1860 265.65 0.04372 1910 265.65 0.04372 1960 265.65 0.04372 1761 265.65 0.04372 811 265.65 0.04372 1861 265.65 0.04372 1911 265.65 0.04372 1961 265.65 0.04372 1762 265.65 0.04372 812 265.65 0.04372 1862 265.65 0.04372 1912 265.65 0.04372 1962 265.65 0.04372' 1763 265.65 0.04372 813 265.65 0.04372 1863 265.65 0.04372 1913 265.65 0.04372 1963 265.65 0.04372 0.04372 1964 265.65 0.04372 1764 265.65 0.04372 814 265.65 0.04372 1864 ' 265.65 0.04372 1914 265.65 1915 265.65 0.04372 1965 265.65 0.04372 1765 265.65 0.04372 815 265.65 0.04372 1865 265.65 0.04372 1766 265.65 0.04372 816 265.65 0.04372 1866 265.65 0.04372 1916 265.65 0.04372 1966 265.65 0.04372 1767 265.65 0.04372 817 265.65 0.04372 1867 265.65 0.04372 1917 265.65 0.04372 1967 265.65 0.04372 1768 265.65 0.04372 818 265.65 0.04372 1868 265.65 0.04372 1918 265.65 0.04372 1968 265.65 0.04372 1769 265.65 0.04372 819 265.65 0.04372 1869 265.65 0.04372 1919 265.65 0.04372 1969 265.65 0.04372: 1970 265.65 0.04372 1770 265.65 0.04372 820 265.65 0.04372 1870 265.65 0.04372 1920 265.65 0.04372 1921 265.65 0.04372 1971 265.65 0.04372; 1771 265.65 0.04372 821 265.65 0.04372 1871 265.65 0.04372 1772 265.65 0.04372 822 265.65 0.04372 1872 265.65 0.04372 1922 265.65 0.04372 1972 265.65 0.04372 1773 265.65 0.04372 823 265.65 0.04372 1873 265.65 0.04372 1923 265.65 0.04372 1973 265.65 0.04372 1774 267.3 1.69372 824 265.65 0.04372 1874 265.65 0.04372 1924 265.65 0.04372 1974 265.65 0.04372 1775 265.65 0.04372 265.65 0.04372 1875 265.65 0.04372 1925 265.65 0.04372 1975 265.65 0.04372 1976 265.65 0.04372 1776 1777 265.65 265.65 0.04372 825 826 265.65 0.04372 1876 265.65 0.04372 1926 265.65 0.04372 265.65 0.04372 1977 265.65 0.04372 265.65 0.04372 1877 265.65 0.04372 1927 1.69372 828 1878 265.65 0.04372 1928 265.65 0.04372 1978 265.65 0.04372 0.04372 827 1778 267.3 265.65 0.04372 1779 265.65 0.04372 829 265.65 0.04372 1879 265.65 0.04372 1929 265.65 0.04372 1979 265.65 0.04372; 1780 265.65 0.04372 830 265.65 0:04372 1880 265.65 004372- 1930 265.65 0.04372 1980 265.65 0.04372 1781 265.65 0.04372 831 265,65 0.04372 1881 265.65 0.04372 1931 265.65 0.04372` 1981 265.65 0.04372 1782 265.65 0.04372 832 265.65 0.04372 1882 265.65 0.04372 1932 265.65 0.04372 1982 265.65 0.04372 1983 265.65 0.04372 1783 1784 265.65 265.65 0.04372 0.04372 833 834 265.65 0.04372 1883 265.65 0.04372 1933 265.65 0.04372 1934 265.65 0.04372 1984 265.65 0.04372 265.65 0.04372' 1884 265.65 0.04372 1885 265.65 0.04372 1935 265.65 0.04372 1985 265.65 0.04372 1785 265.65 0.04372 835 265.65 0.04372 1786 265.65 0.04372 836 265.65 0.04372 1886 265.65 0.04372 1936 265.65 0.04372 1986 265.65 0.04372 1787 265.65 0.04372 837 265.65 0.04372 1887 265.65 0.04372 1937 265.65 0.04372 1987 265.65 0.04372 1788 265.65 0.04372 838 265.65 0.04372 1888 265.65 0.04372 1938 265.65 0.04372 1988 265.65 0.04372 1789 265.65 0.04372 839 265.65 0.04372 1889 265.65 0.04372 1939 265.65 0.04372 1989 265.65 0.04372 1990 265.65 0.04372 1790 265.65 0.04372 840 265.65 0.04372 1890 265.65 0.04372 1940 265.65 0.04372 1941 265.65 0.04372 1991 265.65 0.04372 1791 265.65 0.04372 841 265.65 0.04372 1891 265.65 0.04372 1792 265.65 0.04372 842 265.65 0.04372 1892 265.65 0.04372 1942 265.65 0.04372 1992 265.65 0.04372 1793 265.65 0.04372 843 265.65 0.04372 1893 265.65 0.04372 1943 265.65 0.04372 1993 265.65 0.04372 1794 265.65 0.04372 844 265.65 0.04372 1894 265.65 0.04372 1944 265.65 0.04372 1994 265.65 0.04372 1795 265.65 0.04372 845 265.65 0.04372 1895 265.65 0.04372 1945 265,65 0.04372 1995 265.65 0.04372 1996 265.65 0.04372' 1796 265.65 0.04372 846 265.65 0.04372 1896 265.65 0.04372 1946 265.65 0.04372 1947 , 265.65 0.04372 1997 265.65 0.04372 1797 265.65 0.04372 847 265.65 0.04372 1897 265.65 0.04372 1798 265.65 0.04372 848 265.65 0.04372 1898 265.65 0.04372 1948 265.65 0.04372 1998 265.65 0.04372 1799 265.65 0.04372 849 265.65 0.04372 1899 265.65 0.04372 1949 265.65 0.04372 1999 265.65 0.04372 1800 265.65 0.04372 850 265.65 0.04372 1900 265.65 0.04372 1950 265.65 0.04372 2000 265.65 0.04372 79 Desarrollo de Sensor de Nivel Ultrasónico 400 350 300 250 200 150 100 50 o •cr N. o LID N•J ro Lo N. ro ro C r r-n ‘t Lo co a-r) ul .-+ C+1 T2r r•-• L'S N ‘17 CC) J CO tt CO 00 c v.4 Lt) CO rl .71" N . 0 • C", CO N. CO ,n CD rl rl N. ro ro 2-4 T-1 1-1 ro N. Ln CC .--1 NY. N. CS1 00. CO T-I rl **-4 v--I N. A-4 -Series1 Valores en centímetros. Datos Media 265.606275 Desv. Est. 4.04966934 Val. Max. 371.25 Val. Min. 161.7 Error con respecto a la Media -9.7251E-12 4.04966934 105.643725 -103.906275 Histograma 2.00 150 .100 o 0,00 ClAt# 0.01 Las pruebas ftieron realizadas sobre la superficie de contacto del techo (que no es bien horizontal) de los edificios del Anexo 1 de la Coordinación de Riego y Drenaje. Mencionado lo anterior se concluye lo siguiente. Debido a la perpectiva que involucra la medición del flujo de agua donde la medición de una carga debe ser tener milímetros en precisión. Sabiendo que el 80 Desarrollo de Sensor de Nivel Ultrasónico es de 8 bit, se esperan saltos del orden de centímetros en el seguimiento de la carga, como se meustra a continaución: CAD Seguimiento de niveles 80 70 60 50 40 30 20 10 o 111111111111111011140 1 143 285 427 569 711 853 995 1137 1279 1421 1563 1705 1847 1989 contador de conjunto de datos En efecto, los datos observados de seguimiento de la carga son del orden de la precisión esperada debido al CAD. Este proceso hace que actualmente el sensor de nivel sirva para el monitoreo de niveles (precisión del orden de centímetros). Conclusiones Se han generado los circuitos y las rutinas necesarias a la interpretación de la información del sensor ultrasónico de nivel. El microcontrolador utiliza un CAD de 8 bits. Las pruebas realizadas indican una posible mejora de los resultados mediante la adaptación del CAD de 12 o 16 bits. El sensor puede ser utilizado para el monitoreo de nivel con fines de mejoramiento de la operación manual de canales en las condiciones actaules. Aún con la 81 Desarrollo de Sensor de Nivel Ultrasónico ANEXOS lc -Prog Este programa consta de un archivo ejecutable. Que presenta la siguiente pantalla al correrlo: -1C-P..y 1.OdA - NoIlraaeatdur .Aldti,ro Eclfeiorl de p eme rt erraid Id .414 44 ac (r,^. ^I C ^irer,:ibn - CcJi^: p!a•mna 3r 0! Ilit 3F'FF AH: P :314F 3FFF 3FF1 • OFF' -JEEP "sFF'F yyyyyyyy 'iiUU:•i lE1'1 1Ell' 3Y'rF' iYYE 31'E• í MI' dirt' It P'F yyyyyyyY 10f110 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF yyyyyyyy ti f.' 1 ;3 " 3E'YF 3FYF :3FFF lF'Ft' 3111f 3FFF 311fE' :_frFF yyYYYyYY aC^:5. 3FFr 3FFF 3FFF 3FFF 3rFF MI' JFFF 3FFF yyyyyYYS' 6W.,14 3r'FF Vil' 3FFF 3FFF 3FFF 1FFF :tFFF 3FFF S ^YyyVYy 00 3J . 3m- 3FFF 3FFF 3rrF' 3rFF 3FFF 3FFF 31rE"E' yyyyyyyy Uf , ia• 3FFF JEFE, '3FFF 31'FF 3FFF 3FFF 3FFF 31!FF g+yyyyYyy 1.10411: .;YYr Sr'Y1' 3rrt n'it' 31'tt' JEFE' irte JYE'r jtyyyyyyy 001s3, 311F 3FFF 3FFE 3FFF 3FFF • FFF 3FFF 3FFF k^¡" yyyyy IFU1f3' 3Ft`r 3t'FF :Pi t. 3YFt' 3r'r't' .11Ft' 3FFt' .itFr yyyyyyyy UC5G: 311I 3FFF 3FFF irrr 31FF 3111 7I'F1 3111 jFyyyyyYy r 8$3 p4ftIgt:r•cón r.%'sttT ^ F!r'1F. T" r+^ I]irí4cci611 • P.9io3 Ea{5roly n iJ )=a FF FE' FE FE FF FF FF FE 11.' re FI t'E' r't Fr Fr Ft' 4110:1: oa 1 U: Yr' rF FF FE FE FE FI FE 1 r:1.9. FF IF FF FF FE FF FF FF P'E' l't' E'F FF F1' El' L'E' Ir af?^• FF FF Ir FF FF PF FF IF ü 1.I.3:r. r't' Ft FF FE Fr €'F Ir Fr 0t13A- FF IF FF FF' FI FI' FE FF Ot2".3 E*.4191 frr J i aUltMY*3 ^ .®iefibl S.tteCkstatt ,,_ FF _! r . ^ r1 Grogrerr.ner ^n Cx>mt V3i0t' IC"^ rrF, P6t:sk+ró r:y0114. 'FFFI arttnro Gk, t6f'84a (7P) En el caso de utilizar este software con Windows 2000, Windows NT ó Windows XP, también es necesario tener en el mismo directorio que el ejecutable, el fichero icprog.sys para Windows XP (se puede descargar de la pagina de ic-prog), sin el cual no se puede tener acceso a los puertos del ordenador. Elección De Idioma Una vez instalado el software, al utilizarlo por primera vez, y aceptando las configuraciones por defecto, se nos presentarán las pantallas en el idioma inglés, y para cambiar el idioma se deberán de seguir estos pasos: Abrir la pestaña de Settings (Ajustes). 1. Elegir el comando Options (Opciones). 2. Abrir la pestaña Languaje (Idioma) de este menú. 82 Desarrollo de Sensor de Nivel Ultrasónico 3. Elegir el idioma preferido. Configurar El Hardware El paso siguiente es configurar el hardware necesario para programar los microcontroladores PIC. En pantalla principal de IC-PROG, podemos acceder a la configuración del hardware pulsando el icono o bien mediante la pestaña Ajustes y después el comando Tipo Hardware, o bien pulsando la tecla de función F3, de cualquiera de las maneras accederemos a la pantalla siguiente: Esta es la configuración que deberemos de elegir para el correcto funcionamiento del programador que forma parte de la placa de aplicación. Una vez elegido el tipo de programador como JDM y seleccionado el puerto serie adecuado, es importante no olvidarse de elegir el tipo de Interface como Direct I/O, y en cuanto al tiempo de retardo, si hubiese problemas se pueden probar tiempos más largos. En ordenadores rápidos quizás se puedan poner tiempos de retardo más pequeños, lo que nos daría una velocidad de grabación más rápida. Explicación De Los Menús Los menús principales de IC-PROG tienen un icono gráfico en la pantalla principal, de tal forma que con estos iconos prácticamente se puede leer, borrar, programar y verificar cualquier dispositivo. Abrir un nuevo archivo "" Guardar el buffer a un archivo 83 Desarrollo de Sensor de Nivel Ultrasónico Configurar el hardware Leer un chip Grabar un chip Verificar un chip Borrar un chip Mostrar en ensamblador FlC 18F84A Opciones Mostar en hexadecimal Igualmente en la pantalla principal del IC-PROG se nos presenta toda la información relativa al dispositivo en cuestión. Esta ventana muestra el tipo de dispositivo que se ha seleccionado. Pulsando en la flecha de la ventana podemos elegir cualquiera de los dispositivos soportados por el software de programación IC-PROG (también se puede elegir el dispositivo mediante la pestaña ajustes y la opción dispositivo). También se pueden ver las opciones de configuración del dispositivo seleccionado. Se muestra información del tipo de oscilador usado por el microcontrolador en cuestión (RC, XT, HS). También se muestran los diferentes bits de configuración que tiene el microcontrolador. Estos bits serán diferentes para cada uno de los microcontroladores utilizados. Los de la imagen son los bits de configuración del PIC 16F84, y que muestran el estado del Wachtdog (WDT), el Power on Reset (PWRT) y la protección de código (CP). Si el programa ya tiene una palabra de configuración determinada aquí aparecerán estas opciones marcadas. Confi g uración Oscilador ÍR,, dits configu raci ó n; p- ^1^liJ7 r PAR ^ CP En el caso de que se quiera modificar el estado de alguno de estos bits, basta con marcarlo en esta pantalla. Checksum Valor ID 1 ^FFF 3BFF ;F P alabra config: 3FFFh 84 Desarrollo de Sensor de Nivel Ultrasónico También tenemos información del checksum (chequeo que se genera de todo el fichero de datos), y la posible identificación del microcontrolador, si este lo tuviera. En la parte de debajo de la pantalla principal podemos ver que existen unas pestañas para indicar el contenido de 5 buffers diferentes. Buffer 3 .Huffer 2 Buffer 3 Buffer 4 Huffer 5 Disponemos de 5 buffers diferentes donde almacenar datos en memoria. En cada uno de estos buffer podemos tener almacenado bien el contenido de un chip o bien el contenido de un fichero. Con los datos contenidos en cualquiera de estos buffer se puede realizar cualquiera de las operaciones que hemos visto en los iconos anteriores. Es decir que se pueden guardar en un archivo en disco, o bien se puede programar un chip con ellos. También se puede comparar el contenido de estos buffers entre sí para saber si existen diferencias entre ellos o no. Ajustes A¡u2res Vamos a ver ahora un poco más en detalle los ajustes necesarios para el correcto funcionamiento del programa. ^isposikiSro Dispositivas recierke s Tipo hardware erueba hardware Opciorles Srnartcard Phoenix) F3 Los comandos posibles de esta pestaña son los siguientes: Borrar ajustes Dispositivo. Sirve para elegir el dispositivo con el que queremos trabajar. Dispositivos recientes. Muestra el tipo de los últimos dispositivos utilizados. Tipo Hardware F3. Aquí se elige el tipo de hardware que vamos a usar para programar el dispositivo elegido anteriormente. (JDM Programmer). Prueba hardware. Se puede realizar una prueba de que el hardware elegido está conectado al ordenador en el puerto elegido, y por tanto está listo para usarse. Opciones. Desde este comando se pueden realizar las configuraciones que van a hacer que el uso de IC-PROG sea mucho más sencillo, práctico y además fiable. 85 Desarrollo de Sensor de Nivel Ultrasónico Vamos a realizar cambios para que este software quede adaptado a nuestras necesidades. Activaremos la casilla de verificar tras la programación, para que el programa cada vez que programe un chip, verifique que el contenido del chip es el mismo que el buffer activo en ese momento. Al activar también la casilla de Verificar durante la programación, le indicamos al programa que cada bloque de datos que escriba en el chip vaya comprobando que se ha escrito correctamente, leyéndolo y verificando su contenido con el buffer activo. Esto hace que el tiempo empleado en programar un chip sea mayor, pero también nos aseguramos de que los errores de programación son mínimos. Otra de las pestañas que se pueden configurar es la de los Atajos. Como el número de dispositivos que pueden programarse es muy grande, basta con elegir aquí los más utilizados y asignarles una de las combinaciones de teclas que se muestran, para que después desde la pantalla principal baste con teclear la combinación de teclas CTRL + F1 para que automáticamente el dispositivo elegido quede seleccionado en el buffer activo, con el consiguiente ahorro de tiempo. En el caso de trabajar con los sistemas operativos Windows NT, Windows 2000 o Windows XP, se deberá tener en el mismo directorio que el archivo ejecutable de IC-PROG, el fichero icprog.sys para Windows XP, y además de esto, activar la opción de Habilitar Driver NT/2000, que se encuentra en la pestaña de Miscelánea de esta opción de Ajustes. Esta opción solamente podrá activarse en uno de estos sistemas operativos, ya que en Windows 95, 98 ó Me no se encuentra activa, como puede verse en la siguiente pantalla. El resto de opciones que puedan aparecer están configuradas por sistema para un correcto funcionamiento en la mayoría de los ordenadores y sistemas operativos actuales. Programación De Un PIC Los siguientes pasos son prácticamente iguales en cualquier tipo de dispositivo a programar, las únicas variaciones dependen de las características particulares de cada uno de los dispositivos, pero el proceso se puede generalizar para cualquiera que sea el dispositivo a programar. • El primer paso es configurar el programa como se hizo anteriormente, y verificar que el pic-500 se encuentra conectado. • Abrir el archivo que contiene los datos a programar. • Los ficheros de datos que usan para programar un PIC tienen la extensión .hex . • Ajustar la palabra de configuración y el tipo de oscilador. • Una vez cargados los datos del archivo correspondiente, la pantalla del ICPROG presenta el siguiente aspecto: 86 Desarrollo de Sensor de Nivel Ultrasónico 'IG-Prao 1q 14 e}qr,lel.rr414 lll ;44#$4ir -Ai ti: ® Uuec.c+ee 1 $'1 d^ p v ,7rofno 1000:0: 744A lrrr 3rrr 1rFF i nr.ón: 009r 0106 1010 n4n5 wr y 1443 1_703 3006 1005 1109 0000 1781 111116 009t 70rr 0006 1201 I 1 n.9 16061 11106 1281 110U0 1S05 MO ODUU 1103 00011 1001 2010 1403 7622 1003 1003 0006 2 010 1001 0066 2011J 2112:1 ] 01;® 2 01 1 2011 ' .1 . ' 61A 0030: 1038 2071 2011 3030 2031 2041 3001 2031 014014. 1 0030: 0004 0064 300A 008C 0186 0RO0 7849 OSBC .d.drr.Tá 01146: 2045 0000 7006 009, 0106 1601 11106 71110 i..21 J 1. )1111ll' 1401 1103 160J ; ;in:lu: 14111 uuyU; 1005 Dint: 0006 U 030 : 2022 00110 1006 fl(JCO; 201ñ O0f15 1.703 ?0?5 1Of11) U050: 2112'0 1064 2029 3064 ! 2031 3042 2027 1075 YD?9 4161 21177 10 73 15.1 20 u 06irQdidl^rUótKdi Et'1u'r:m rr FY k7 y FE FE ,F Er yyyyYl'yY U1119; 1'F VI Fr rF re rt* ,l F t yyyyy5`yy 00111 FF rF Tr FF Fr re FF FF S+YyY113ryY 0070: FF Fr FP Fr FP FP FP IT YYFY'YYYy Illi'1iI ; I•'F tF 1'F TT FE l'P FY 1r' /yyyyyyy 11600: PF Fl F t rl' FF PE FP Ft Y7yYyyry tILr_+il: Fr tl' Ft' I1' 1'F fl' Ft Ft uGU07 1B r1 1'r lF rr I1G08: TT Fr FF lwaF*aF tor ^rrAU.1ñ '^ twat 3:FN':1, Po:Min.-A WI QFn iu. ;;,;!•^iuPt34 ^ 0 17^i 87 Sensor de Nivel Ultrasónico Los datos se han cargado en el área de código de programa y si existieran datos en la EEPROM interna de PIC se cargarían en la parte inferior. En el caso de que se haya programado la palabra de configuración, los bits correspondientes aparecerán marcados. Si se quiere cambiar alguno de ellos se puede hacer marcando directamente sobre él. También se puede cambiar el tipo de oscilador con que trabajará la aplicación una vez cargada en el PIC. Si en nuestra aplicación no se programó ninguna palabra de configuración, se nos mostrarán los datos por sistema del programa (oscilador tipo RC y Watch Dog WDT activado). Cualquiera de las áreas de datos, puede ser aquí modificada, ya que este software permite la edición de los datos que están presentes en el buffer del ordenador antes de ser enviados al PIC. Esto deberá hacerse con sumo cuidado pues la edición de los datos se llevará a cabo en hexadecimal directamente, con el consiguiente riesgo de cometer errores y causar un mal funcionamiento del programa cargado. Programar El Pic Para programar físicamente el chip, activar el icono para grabar o abrir la pestaña Comando y después Programar todo, o bien pulsar la tecla de función F5, de cualquiera de estas tres formas, el chip comenzará a ser programado con los datos cargados en el buffer activo. El tiempo empleado en la grabación del dependerá de la rapidez de la computadora en que se esté trabajando. Una vez terminada la programación se procederá automáticamente a la verificación de los datos escritos en el chip. Serán verificados el código de programa, los datos de la memoria EEprom y los bits de la palabra de configuración. En el caso de que la verificación haya sido correcta se informará mediante una ventana, y el proceso de grabación habrá finalizado. Otra Alternativa De Comprobación Para evitar errores en la programación, una vez terminado el proceso de grabación, cambiar el buffer activo y leer el PIC programado y proceder a la comparación entre los contenidos de los dos buffers, es decir comparar el archivo con el contenido del PIC. En realidad estamos volviendo a realizar la comprobación que ya se ha realizado automáticamente al programar el dispositivo. Errores Frecuentes En La Programación Cuando por alguna causa la programación no se realiza correctamente también el programa nos informará de ello mediante alguna ventana de aviso. 88 Sensor de Nivel Ultrasónico El error más frecuente en la programación de un PIC nos informa de que se produjo un error al verificar el contenido del chip en la primera posición de memoria (0000h). Este error suele estar motivado por algún fallo en la comunicación entre el ordenador y el programador, tal como una mala conexión del cable serie, o una mala colocación del PIC en el programador, o por tener mal configurado el puerto serie con el que comunicamos el ordenador y el programador. También puede estar producido porque el PIC se encuentra defectuoso o dañado por un mal uso. Cuando aparece este error podemos tratar de evitarlo siguiendo los pasos que se enumeran a continuación: Lo primero es asegurarnos de que no hemos seleccionado la protección de código CP en los bits de configuración (Este es un error muy típico, y en este caso el programa leería los 8 primeros bytes de datos como ceros, dando por tanto el error de verificación en la primera dirección). Bits configuración: � YVDT 3 PWRT Una vez comprobado que no se ha elegido la opción de protección de código para programar el PIC, podemos probar con las siguientes comprobaciones del software y hardware que utilizamos: • Comprobar que el PIC se encuentra bien introducido en el zócalo del programador. • Verificar que el cable serie está bien conectado en sus dos extremos, tanto en el conector del programador como en el del ordenador. • Asegurarnos de que hemos elegido en Ajustes, el tipo de Hardware, el tipo de programador y el puerto COM adecuado. • Comprobar que el dispositivo elegido es el que estamos realmente programando. • Comprobar que en ninguno de los ajustes realizados hemos variado las configuraciones relativas a las patillas de Vcc para el tipo de programador (JDM) utilizado. En el caso de que ninguna de estas comprobaciones diera un resultado que nos permita volver a programar el PIC, lo mejor es repetir la programación con otro chip que esté en buen estado, para descartar completamente que el fallo esté en el software o hardware del ordenador o programador y poder asegurar que se trata del chip que se encuentra en mal estado. 89 Sensor de Nivel Ultrasónico Cuando se trabaja en uno de los sistemas operativos Windows XP, Windows NT o Windows 2000, se puede dar el siguiente error. LOSA - Programador de 'protatl : Este error está indicándonos que el sistema no puede acceder a los puertos del ordenador, como se indicó anteriormente para solucionarlo se deberá instalar el archivo icprog.sys en la carpeta donde se encuentra el ejecutable y además habilitar el driver para NT/2000 en las opciones de Miscelánea en la pestaña de Ajustes. Una vez habilitado este driver el programa pedirá volver a iniciarse, y a partir de ese momento ya está habilitado para realizar la programación de los dispositivos necesarios. Nota:El archivo icprog.sys se descarga del sitio: http://www.icprog.com/indexl.htm en la secciónDownload 90 Sensor de Nivel Ultrasónico El Mplab El MPLAB es un software que junto con un emulador y un programador de los múltiples que existen en el mercado, forman un conjunto de herramientas de desarrollo muy completo para el trabajo y/o el diseño con los microcontroladores PIC desarrollados y fabricados por la empresa Arizona Microchip Technology (AMT). El MPLAB incorpora todas las utilidades necesarias para la realización de cualquier proyecto y, para los que no dispongan de un emulador, el programa permite editar el archivo fuente en lenguaje ensamblador de nuestro proyecto, además de ensamblarlo y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y ver como evolucionarían de forma real tanto sus registros internos, la memoria RAM y/o EEPROM de usuario como la memoria de programa, según se fueran ejecutando las instrucciones. Además el entorno que se utiliza es el mismo que si se estuviera utilizando un emulador. En las siguientes líneas se pretende ayudar a todos aquellos que se enfrentan por primera vez a este programa, tanto en su instalación como en la utilización de esta potente herramienta que nos proporciona Arizona Microchip Tecnology. En el CDROM que se adjunta con este curso se encuentran las versiones 4.12.00 y la 4.99.07 del programa, estas versiones y las nuevas que van saliendo cada poco tiempo y que incorporan nuevos tipos de microcontroladores, se pueden obtener de forma gratuita en la página web www.microchip.com, el la cual se encuentra una amplia información sobre todos los dispositivos que fabrica AMT. De las dos versiones, nosotros vamos a centrarnos en la V.12.00, por ser esta la que menos recursos de software y hardware necesita para trabajar con ella, además está pensada para trabajar con las herramientas de desarrollo MPLABICD y el PICSTART que se encuentras ya muy difundidas, mientras que la versión V.99.07 está pensada para trabajar con el MPLAB-ICE 2000 soportado en NT, esta versión presenta algunas modificaciones en las ventanas de configuración del programa respecto a la anterior, además para su correcto funcionamiento es necesario disponer de la gama alta de los sistemas operativos que se indican en el siguiente apartado además del hardware más potente. Instalación Del Programa Los requerimientos mínimos para la instalación de los programas son: • • • • Procesador 386, 486 o Pentium* Windows 3.1/ 95/ 98, Windows NT 3.51/4.0, Windows 2000 ,MACOS 7.0, o Unix compatible OS 16 MB de memoria RAM para sistema con Windows 95. 24 MB de RAM para Windows NT systems. 91 Sensor de Nivel Ultrasónico • , 32 MB para sistemas con Windows 2000. • Unidad de CD-ROM. • Navegador (3.0 HTML) Se recomienda por AMT: • • Procesador Pentium 32 MB de memoria RAM El CD-ROM de Microchip requiere para su navegación de un programa HTML. Para los equipos con Windows 95/98/NT se recomienda utilizar Internet Explorer versión 5.0 o el Netscape Navigator versión 4.0, además hará falta para la lectura de los numerosos documentos en formato pdf el programa Adobe Acrobat Reader versión 3.0 o 4.0. Al introducir el CD-ROM en la unidad correspondiente en los sistemas que tengan instalado Windows 95/98, Windows 20000 o NT y que tenga habilitada la opción autorun, aparece en pantalla el mensaje de la Figura 1, activaremos el botón de Yes. mhnnitw Inc.' Welcome to the Frat Ed Con 2000 ;réchrYeclLibroiy CG•ROM FYcss 7K ta IawGh I e CD -ROM Figura 1 En caso de que no aparezca este mensaje al arrancar el CD-ROM, buscar con el explorador de Windows el archivo \indextxt.htm para el formato de texto o el lindex.htm para el formato gráfico, al ejecutar este archivo aparecerá una pantalla como la que se muestra en la Figura 2, que es similar a la tiene Microchip en su página web. 92 Sensor de Nivel Ultrasónico ^`-^'árirvÍi^r °Ta^fòrii7iftrrtis tñ1414"i«t Figura 2.- Pantalla de presentación del CD-ROM y de la pagina web de Microchip Seguidamente, activamos el botón de Development Tools, seleccionamos en la siguiente pantalla la opción MPLABIDE y al final de la página a la que nos lleva este vinculo, encontramos el en lace MPLAB Version 4.12.00 que nos lleva a la página de descarga del programa MPLAB (Disks 1 to 7) (o los 7 discos individualmente) y que descargaremos sobre un directorio de nuestro disco duro que por ejemplo habremos llamado C :IKK. Hemos seguido estos pasos ya que son los mismos que deberemos seguir para descargar las nuevas versiones desde la web de Microchip, pero de una forma más directa, podríamos haber copiado directamente sobre el directorio C:IKK los archivos que están en el CD-ROM en el directorio IdownloadlToolslPICmicrolDevEnvIMPLAB,ISoftwarelv412. Estos archivos están comprimidos con las utilidades WinZIP. Deberán descomprimirse dichos archivos utilizando las herramientas WinZIP. Figura 3 .- Archivos en C:1KK1 obtenidos del CD y una vez descomprimidos con las utilidades WinZIP. Ejecutar MP412000.exe Una vez que finalicemos la instalación del programa podremos borrar por completo el subdirectorio C:IKK para dejar espacio en el disco duro. Para instalar el programa se ejecuta el archivo mp41200.exe, cuando esto ocurre aparece la pantalla de la Figura 4. 93 Sensor de Nivel Ultrasónico Figura 4.- Pantalla de bienvenida a la instalación del MPLAB. Activamos el botón de Next y el programa responde con una nueva pantalla como la que se muestra en la Figura 5, con el menú de todos los módulos del programa que podemos instalar. Figura 5.- No es necesario instalar todos los módulos del programa. En principio, si no se dispone de emulador, podemos ahorrar espacio en el disco duro y no instalar estos módulos, para ello, se desactivan dichos campos tal y como se muestra en la Figura 5, se activa el botón de Next, para pasar a la siguiente pantalla. Igualmente pulsamos el botón de Next en la pantalla de Select Language Components en donde dejaremos activos todos los campos. Aparece la pantalla de la Figura 6 en la que se debe seleccionar el directorio donde queremos que se instale el programa, por defecto lo hace en el directorio C:IArchivos de programaslMPLAB. Figura 6.- Selección del subdirectorio donde se instalará el programa MPLAB Una vez finalizada la instalación que puede tardar unos minutos, se puede pasar a ejecutar el programa MPLAB, es recomendable que si se va a utilizar mucho este programa, lo cual esperamos, se haga un acceso directo a dicho programa con lo que tendremos en el escritorio de Windows un icono como el de la Figura 7. 94 Sensor de Nivel Ultrasónico Figura 7.- Icono de acceso directo al programaMPLAB Antes de seguir adelante, recomendamos crear una carpeta con el explotador de Windows por ejemplo C:IArchivos de pro gramaslMPLABITrabajo, dentro de la cual posteriormente iremos creando todos nuestros proyectos. Como Empezar. Cuando se pulsa el icono del MPLAB aparece una pantalla como la que se muestra en la Figura 8. Figura 8.- Escritorio del MPLAB Lo primero que haremos es seleccionar el modo de trabajo como simulador y el tipo de microcontrolador con el que queremos trabajar. Para ello se selecciona el botón de Options de la barra del control que aparece en el escritorio y del menú desplegable la opción Developement Mode, con lo que aparece la pantalla de la Figura 9 en la que se activa el modo MPLAB-SIM Simulator y el microcontrolador con el que se desea trabajar, que en nuestro caso será el P/C16F84, por último, pulsamos el botón de Reset para aceptar los cambios. Figura 9.- Selección de la opción de trabajo como simulador y el tipo de microcontrolador 95 Sensor de Nivel Ultrasónico Los iconos que aparecen en laJ barra de herramientas, son funciones que se encuentran incluidas en el menú de control, pero como en todos los programas de Windows se incluyen para manejar de forma más cómoda el programa. Seguidamente comentaremos MPLAB Fernando Remiro Domínguez Capitulo 1 Página 5 que significa cada uno de los iconos de la barra de herramientas que aparece en esta pantalla, mas adelante veremos que hay más barras de herramientas que pueden ser conmutadas Mena onh-ol Sana de herrrarkatas Fin pig ).-.. i ^dt petup Fic;lad Plus Qptiors roas \'1Ircdrx Computador de La Barra de lterrauiientaa Nuevo documento Cerrar 5clter9 Salvar archive, ca disc Tabulador a la derecha Deshacer Buscar c adula de m to repetidas ver es Buscar y cambiar reptidantente Figura 10.- Barra de herramientas de edición Nuestro Primer Proyecto Bueno, pues ya estamos en condiciones de crear nuestro primer proyecto, para ello comenzamos por activar en el menú de control la opción File> New o bien activamos el icono de crear nuevo documento en la barra de herramientas. El programa contestará con el cuadro de diálogo de la Figura 11. A Proioot it nat currenlly opened Would would kke ta oculto a non pnniéct ? Figura 11.- No hay ningún proyecto abierto¿Quiere crear un nuevo proyecto? Activamos el botón de Yes y aparece un cuadro de dialogo como el de la Figura 12 en el que se nos pide el nombre del proyecto que tendrá extensión *.pjt , como 96 Sensor de Nivel Ultrasónico este es nuestro primer proyecto le llamaremos ejerl.pjt y lo guardaremos en la carpeta de trabajo que habíamos creado anteriormente. Figura 12.- Creación de un nuevo proyecto El programa devuelve el cuadro de diálogo de la Figura 13 t^ ihMCl I N oirre,....._: largor Fiewawa ^nru l hs^ Ce Ireiuüo P•M Libres! Pelh l ir isio Scrip. Peth u.w wy,wnri«w: [Mrihn °iw+ 1 t:r,r+ga..: Lewyueper 1oa 9ite_ flar,^cl^p ^ riwrctl alto / I.6e.1 Figura 13.- Propiedades de edición del proyecto Activamos el botón de OK y estamos en condiciones de empezar a escribir nuestro primer proyecto al aparecer una pantalla como la de la Figura 14 Figura 14.- Apertura del documento para comenzar a escribir nuestro proyecto 97 Sensor de Nivel Ultrasónico El Editor Comencemos por lo tanto a escribir en lenguaje ensamblador nuestro primer programa que llamaremos ejerl.asm y que se muestra en la Figura 15. El programa realiza la suma en binario de dos números (7+8 =15) y para escribirlo usamos el editor de textos. La extensión *.asm es la que deben llevar todos los programas escritos en ensamblador. Deberemos de tener en cuenta que la primera columna del editor está reservada para las etiquetas que son expresiones alfanuméricas escogidas por el usuario que definen valores de posiciones de memoria. Estas deben empezar siempre por una letra. Además se debe de tener en cuenta que no pueden usarse expresiones que ya utiliza el ensamblador tales como: • Instrucciones • . Directivas del propio ensamblador • . Nombres de registros especiales(SFR) • . Nombre de cada uno de los bit de los registros especiales. En las siguientes columnas, se puede comenzar a escribir el nemónico de la instrucción o las directivas del ensamblador. Por último hay que decir que se pueden y se deben añadir comentarios que son elementos indispensables en muchos casos para seguir el razonamiento de los programas sin perderse, para ello cuando el MPLAB encuentra un ";"(punto y coma) no se genera código máquina. En todos estos campos los espacios en blanco no son significativos y las líneas en blanco tampoco. Para una mejor legibilidad del programa, se recomienda acceder a cada campo utilizando el tabulador. El uso de mayúsculas y minúsculas en los programas obedece a una serie de reglas o normas de estilo, comunes entre los programadores en ensamblador, que si bien no son obligatorias, facilitan la lectura del código fuente. Estas reglas son: • . Las directivas del ensamblador se escriben en mayúsculas • . Los nombres de las variables se escriben en mayúsculas. • Los nemónicos de las instrucciones se escriben en minúsculas • , El programa se escribe utilizando los tabuladores para definir las distintas columnas, tales como etiquetas, comienzo de líneas de programa y columna donde empiezan los comentarios separados por un ";" (punto y coma). La Barra De Menús Seguidamente analizaremos las distintas posibilidades de la barra de menú del MPLAB, si bien ya hemos utilizado algunas de las posibles opciones que presenta la barra de herramientas, ahora analizaremos estas una por una. 98 Sensor de Nivel Ultrasónico Codigo Fuente Del Sensor De Nivel Ultrasonico ;Este programa manipula un sensor de distancias SRF05 y un sensor de ;temperatura LM35, ambos datos los desplega en una LCD List p=16f877A #include <p16f877A.inc> _CONFIG _CP_OFF & _WDT_OFF & _BODEN _ON & PWRTE_ON & _HS_OSC & WRT ENABLE ON & LVP OFF & DEBUG OFF & CPD _OFF PORTE dato J K cont_b cont_i cont_2 D4 equ D3 equ D2 equ D1 equ BL equ BH equ cc equ c equ equ MO M1 equ M2 equ equ M3 EQU EQU equ equ equ equ equ ORG Ox00 clrf goto org inicio clrf clrf clrf bsf bcf movlw movwf movlw movwf movlw movwf movwf movlw movwf movlw movwf bcf movlw 0x09 0X70 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 Ox7A Ox7C Ox7D Ox7E Ox7F 0x20 0x21 Ox22 Ox23 ; processor reset vector PCLATH inicio 0x05 PORTB PORTC PORTE STATUS,RPO STATU S, RP 1 b'00000010' TRISD b'10000111' ADCON1 b'11111111' TRISA TRISC b'11101000' TRISE b'11001111' OPTION_REG STATUS,RPO b'10000001' ; go to beginning of program ; limpia las salidas ; para definer quienes son salida y entradas ; predivisor de 128 asociado ; al perro guardian ; velocidad estandar 99 Sensor de Nivel Ultrasónico movwf banksel moviw movwf banksel ADCONO OPTION_REG b'10000111' OPTION_REG PORTB bcf STATUS,C medir call movlw call call ini_Icd OxOC send_i clr lcd ciclo movlw call call call movlw movwf movlw movwf movlw movwf movf addlw call movlw call movf addlw call movf addlw call movf addlw call movf addlw call movlw call movlw call movlw call call 0x02 send_i disp_dist disparo 0x05 MO Ox06 M1 Ox01 M2 D4,w Ox30 send_d Ox2E send_d D3,w 0x30 send_d D2,w 0x30 send_d D1,w 0x30 send_d DO,w Ox30 send_d Ox6D send_d 0x74 send_d Ox73 send_d wait3 call espac call call movlw movwf movlw movwf d isp_tem p adquiere 0x09 MO 0x04 M1 ; limpia el carry 100 Sensor de Nivel Ultrasónico movlw movwf call Ox00 M2 conversion movf call movf addlw call movlw call movf addlw call movlw call movlw call call goto D3,w send_d D2,w 0x30 send_d 0x2E send_d D1,w 0x30 send_d OxDF send_d 0x43 send_d wait3 ciclo disparo clrf bsf call bcf explora btfss goto incre incf call btfsc goto call movf movwf return c PORTD,0 wait4 PORTD,0 PORTD,1 explora c,f wait6 PORTD,1 incre wait5 c,w dato ini_lcd call call movlw call movlw call movlw call movlw call movlw call movlw call movlw call return wait1 wait1 0x30 send_i 0x30 send_i 0x30 send_i 0x38 send_i 0x08 send_i Ox01 send_i 0x06 send send_i bcf bcf PORTE,2 PORTE,1 101 Sensor de Nivel Ultrasónico bcf movwf bsf bcf call PORTE,0 PORTB PORTE,2 PORTE,2 waitl send_d bcf bcf bsf movwf bsf bcf call return PORTE,2 PORTE,1 PORTE,0 PORTB PORTE,2 PORTE,2 waitl clr_Icd movlw call home_cr movlw call return 0x01 send_i 0x02 send_i return waitl movlw D'50' goto wait wait2 movlw D'50' goto wait wait3 movlw D'250' goto wait wait4 movlw D'5' goto wait wait5 movlw D'120' goto wait wait6 movlw D'5' wait movwf J jloop: movwf K kloop: decfsz K,f goto kloop decfsz J,f goto jloop return conversion bh1 movf BL,w movwf dato convierte call btfss BH,0 goto bh1 movlw 0x05 movlw 0x02 addwf D3,f movlw Ox01 addwf D4,f verif call BH,1 btfss goto regr movlw Ox00 102 Sensor de Nivel Ultrasónico verif addwf D2,f movlw 0x05 addwf D3,f moviw 0x02 addwf D4,f bcf STATUS,C movf D2,w addlw OxF6 btfss STATUS,C goto inc_cont3 moviw OxOA subwf D2,f incf D3,f inc_cont3 bcf STATUS,C movf D3,w addlw OxF6 btfss STATUS,C goto regr moviw OxOA subwf D3,f incf D4,f regr return convierte clrf D4 clrf D3 clrf D2 clrf DO moviw 0x08 movwf cont_b moviw Ox 01 movwf cont_i dato,0 goto increm decfsz cont_b,f goto rota goto regresa convierte2 expl_bit btfsc dec_c_b increm clrf cont_2 increm0 movf MO,w addwf DO,f movf M1,w addwf D1,f movf M2,w addwf D2,f bcf STATUS,C movf DO,w addiw OxF6 btfss STATUS,C increml goto moviw OxOA subwf DO,f D1,f incf increml bcf STATUS,C 103 Sensor de Nivel Ultrasónico movf D1,w addlw OxF6 btfss STATUS,C goto inc_cont2 movlw OxOA subwf D1,f incf D2,f verif_d2 inc_cont2 bcf STATUS,C movf D2,w addlw OxF6 btfss STATUS,C goto inc_cont2 movlw OxOA incf D3,f bcf STATUS,C movf D3,w addiw OxF6 btfss STATUS,C goto inc_cont2 moviw OxOA subwf D3,f incf D4,f bcf STATUS,Z incf cont_2,f movf cont_2,w subwf cont_i,w btfss STATUS,Z goto increm0 goto dec_c_b rota bcf rrf bcf rif goto regresa nop return adquiere bsf ADCON0,3 call waitl call waitl bsf ADCONO,GO btfsc ADCONO,GO goto start_volt bsf STATUS,RPO bcf STATUS,RP1 movf ADRESL,w movwf BL bcf STATUS,RPO movf ADRESH,w movwf BH banksel Ox00 start_volt STATUS,C dato,f STATUS,C cont_i,f expl_bit return 104 Sensor de Nivel Ultrasónico disp_temp movlw 0x54 call send_d movlw 0x65 call send_d moviw Ox6D call send_d moviw 0x70 call send_d moviw Ox3D call send_d return disp_dist movlw 0x44 call send_d movlw 0x69 call send_d movlw 0x73 call send_d call send_d movlw Ox3D call send_d return espac espacio avanza sale movlw 0x1 B movwf cc decfsz cc goto avanza goto sale movlw ' ' call send_d goto espacio nop return end 105 Programa de Aforos Integración de Datos de Aforo 1 Programa de Aforos INDICE 1.- Sistema de cómputo para integración de datos de aforo 1.1.- Introducción 1.2.- Descripción del programa para la integración de datos de aforo 1.3.- Utilización del programa 1.3.1 Menú Principal 1.3.1.1 Menú Archivo 1.3.1.2 Menú Alta 1.3.1.3 Menú Importación 1.3.1.4 Menú Gráficas 1.3.1.5 Menú Balances 1.3.1.6 Menú Acerca de 1.4.- Importar Información 1.5.- Realizar una gráfica 1.6.- Definir y Modificar Entradas y Salidas 1.7.- Realizar un Balance de Volumen de Agua 1.8.- Conclusiones 2 3 3 4 5 5 6 6 10 12 16 17 18 21 24 34 37 Programa de Aforos 1.- SISTEMA DE CÓMPUTO PARA INTEGRACIÓN DE DATOS DE AFORO El sistema de cómputo se desarrolló en un esquema modular: - Dar de alta las instituciones de usuario, un DR, un módulo hasta el punto de control instrumentado. - Definición y modificación de entradas y salidas de un sistema de interés (DR, Sociedad de Usuarios, punto de control). - Importación de información a la base de datos. - Procesamiento de la información gráfica y estadística en intervalos de tiempo. - Balance de volumen por sistema de interés. De tal manera que un módulo permite dar de alta en la base de datos del programa, la información de los DR, además de los módulos que pertenecen a dichos distritos y los equipos que recolectarán la información de los puntos de control. Otro módulo del sistema importa la información colectada en archivo de Excel y a su vez es graficada la información almacenada en la base de datos, el sistema permite dar de alta y modificar, las entradas y salidas que afectan a cada punto de control para el balance de volúmenes de agua donde intervienen los puntos de control. Los sistemas de medición instrumentados permiten la colecta de información y su exportación a formato Excel es en extremo sencilla. 1.1.- Introducción El programa permite la captura y procesamiento de información almacenada en los diferentes equipos de medición instalados en los puntos de control en los diferentes distritos de riego. Ar¿j'wo Alta 1rnAo+taclon Gr4 ncaS Ealances AC?^[ede... Figura 1.1 Programa Principal 3 Programa de Aforos 1.2.- Descripción del programa para la integración de datos de aforo Archivo Ak., importa_i&m 6efances Acerch de... Z3102/7007 01;10:50 ^ p.m. Figura 1.2.1 Pantalla Principal del programa para integración de datos de aforos Los elementos con los que cuenta el programa son los siguientes: - Menú Principal: cuenta con opciones entre las cuales están la de dar de alta en el sistema los distritos de riego, módulos de riego y equipos instalados en puntos de control, así como definir las entradas y salidas para realizar un balance de volumen de agua. El menú principal se observa en la figura 1.2.2. Archivo Alta Irr^pr_^r t^ cióri Gráficas Balances Figura 1.2.2 Menú Principal 4 Acerca de, , r Programa de Aforos 1.3.- Utilización del programa El programa cuenta con diferentes opciones, las cuales se detallan a continuación. 1.3.1 Menú Principal El menú principal consta de las siguientes opciones: Archivo Alta Importación Gráficas Balances Acerca de, , Figura 1.3.1 Menú Principal A rchiv Q Menú Archivo Salir - Salir: permite salir del programa Figura 1.3.2 Menú Archivo Menú Alta Ata Distrito._ Módulo... Equipo,., Figura 1.3.3 Menú Alta Distrito: permite dar de alta en el sistema, un distrito de riego. Módulo: agrega en el sistema, un módulo de riego. Equipo: agrega al sistema, un equipo de un punto de control. Menú Importación Importación Figura 1.3.4 Importar Importa de un archivo de Excel la información almacenada en un equipo instalado en un punto de control de un distrito de riego a la base de datos del sistema. Menú Gráficas Figura 1.3.5 Graficar Grafica la información almacenada en la base de datos en el sistema. Menú Balances BalanvA;= Figura 1.3.6 Balances Realiza un balance de volumen de agua, ya sea por punto de control o por módulo de riego. Esta opción da información de manera general del programa para la integración de datos de aforos. Figura 1.3.7 Menú Acerca de... 5 Programa de Aforos 1.3.1.1 Menú Archivo Para salir del programa de integración de aforos, se realiza lo siguiente: - Clic en el menú Archivo - Clic en el Submenú Salir Figura 1.3.8 Menú Archivo 1.3.1.2 Menú Alta * Para dar de alta un distrito de riego se realiza lo siguiente: - Clic al Menú Alta Clic Submenú Distrito Aparece la figura siguiente: Figura 1.3.9 Dar de alta Distrito de Riego En la Figura anterior, se debe de rellenar todos los datos de acuerdo al distrito de riego que se requiera dar de alta en el sistema, una vez que se haya realizado esto (Figura 1.3.10), se da un click en el botón Guardar para realizar el guardado del distrito en el sistema. 6 Programa de Aforos Figura 1.3.10 Dar de alta Distrito de Riego, formulario con datos En caso de que se haya guardado correctamente la información del distrito de riego en el sistema, aparecerá la figura que se muestra a continuación. El distrito ha sido guardado en la, Base de Datos Figura 1.3.11 Guardado con éxito En caso contrario, de que el distrito de riego que se quiere dar de alta en el sistema ya esté guardado previamente, nos mostrará la siguiente figura de error. El distrito ya existe en la Base de Datos Aceptar Figura 1.3.12 Información duplicada * Para dar de alta un módulo de riego se realiza lo siguiente: - Clic al Menú Alta Clic Submenú Módulo Aparece la figura siguiente: 7 Programa de Aforos Figura 1.3.13 Dar de alta Módulo Se rellenan todos los datos que se requieran para dar de alta el módulo de riego en el sistema, y una vez concluido con esto, se da un clic en el botón Guardar para que se guarde la información. Figura 1.3.14 Dar de alta Módulo, formulario con datos Si el módulo de riego se guardo correctamente en el sistema, aparecerá un mensaje (Figura 1.3.15) de que se ha dado de alta correctamente en el sistema. El Módulo ha sido guardado en la Base de Datos Figura 1.3.15 Módulo guardado exitosamente 8 Programa de Aforos En caso contrario, cuando se quiera guardar un módulo que ya existe en la base de datos del sistema, mandará el mensaje de error que se muestra en la Figura 1.3.16. !ando... El Módulo ya existe en la Base de Duos Aceptar Figura 1.3.16 Módulo duplicado * Para dar de alta un equipo instalado en un punto de control, se realiza lo siguiente: - Clic al Menú Alta Clic Submenú Equipo Aparece la figura siguiente: p illuelo de Dish ito: Seleccionar Distrito... eleccionar Módulo Equipo )Seleccionar Equipo... J Serle: Figura 1.3.17 Dar de alta Equipo Se llena la información que se requiere para dar de alta un equipo y una vez que se haya realizado esto, se da clic en el botón guardar. 9 Programa de Aforos 1-j { .A de.Equipñ: ^ ^^ oT 7 -J ^ Seiie: , F:.. si:,d,i del tquipo: ; ; -. Canal: ^, ^. uGfiu Figura 1.3.18 Dar de alta Equipo, formulario con datos Si se guarda correctamente el equipo, se mostrará la ventana siguiente confirmando que el equipo se guardo en el sistema. Graban do. El Equipo ha sido guardado en le Base de Datos Figura 1.3.19 Guardado el equipo 1.3.1.3 Menú Importación Permite Importar de un archivo de Excel la información almacenada en un equipo instalado en un punto de control de un distrito de riego a la base de datos del sistema. Programa de Aforos Al dar clic en el Menú Importación, aparecerá la siguiente figura: Figura 1.3.21 Módulo para importar información al sistema Descripción del Módulo de Importación Vantage OTT La figura 1.3.22 muestra 3 diferentes opciones que se pueden escoger dependiendo del tipo de equipo que este instalado en un punto de control y al cual se quiere importar información. MOD Figura 1.3.22 Tipo de Equipo La figura 1.3.23 muestra 3 listas despegables, en la cual aparecen los equipos que estén dados de alta en el sistema. Cada lista se activa dependiendo el tipo de equipo que se haya seleccionado. Figura 1.3.23 Equipos dados de alta 11 Programa de Aforos Muestra el avance de la importación de la información al sistema de integración de datos de aforo. Figura 1.3.24 Barra de Estado Permite realizar la importación de la información al sitema de integración de datos de aforo apartir de un archivo de Excel. Figura 1.3.25 Tipo de Equipo Cancela la opción de la importación de la información, cerrando la ventana actual y regresando al programa principal. Figura 1.3.26 Tipo de Equipo 1.3.1.4 Menú Gráficas Permite ver de manera gráfica, la información almacenada en la base de datos en el sistema de un punto de control seleccionado. Figura 1.3.27 Menú Gráficas 12 Programa de Aforos Al dar un clic en el menú Gráficas, aparecerá la figura siguiente: Figura 1.3.28 Seleccionar Distrito de Riego En la figura anterior, se selecciona el distrito de riego en el cual se va a trabajar. Una vez que se haya realizado esto, se da un clic en el botón Aceptar, con lo cual se mostrará la figura 1.3.29. WINIPOIM Figura 1.3.29 Seleccionar Módulo También se debe seleccionar un módulo de riego del cual se visualizará la información que se encuentre almacenada en el sistema. Al seleccionar el módulo, se da un clic en el botón Aceptar, apareciendo la figura siguiente: Fecha de inicio h Salir r Figura 1.3.30 Módulo de Graficación 13 Programa de Aforos Descripción del Módulo de Graficación R Vantage r OTT Permite seleccionar el tipo de equipo del cual se quiere visualizar la información almacenada en el C MGD sistema. Figura 1.3.31 Periodo: Fecha de inicio: Permite visualizar la información comprendida entre la fecha de inicio y la fecha final. Fecha final: Figura 1.3.32 Periodo Figura 1.3.33 Botón Ver Realiza una consulta en la tabla del equipo seleccionado y muestra la información que se encuentre en el periodo que se haya seleccionado. Selecciona' Vailables r TR r Vol r Nivel Permite ocultar o mostrar una serie en la gráfica. Estas series corresponden a cada campo de la tabla seleccionada. Estos campos son diferentes para cada tipo de equipo que este instalado, ya sea del tipo Vantage o tipo OTT. Figura 1.3.34 Seleccionar Campos ^^ Figura 1.3.35 Zoom in e‘ Permite hacer un acercamiento a una serie graficada. Realiza un alejamiento de la serie graficada. Figura 1.3.36 Zoom out Figura 1.3.37 Desplazamiento a la Izquierda Realiza un desplazamiento a la izquierda de la serie graficada. 14 Programa de Aforos Figura 1.3.38 Desplazamiento a la derecha Figura 1.3.39 Desplazamiento hacia abajo ^ Figura 1.3.40 Desplazamiento hacia arriba Sal ir Realiza un desplazamiento hacia la derecha de la serie graficada. Realiza un desplazamiento hacia debajo de la serie graficada. Realiza un desplazamiento hacia arriba de la serie graficada. Permite salir de la opción de graficar la información. Figura 1.3.41 Botón Salir Figura 1.3.42 Tabla de datos Muestra la información que esté comprendida entre las fechas seleccionadas Figura 1.3.43 Gráfica En esta ventana, se grafican los campos de la tabla seleccionada 15 Programa de Aforos Figura 1.3.44 Barra de Estado Muestra información de que campo esta activo en la gráfica, así como la media aritmética, varianza y desviación estándar. 1.3.1.5 Menú Balances Permite realizar un Balance de volumen de agua, definir entradas y salidas de los módulos así como una modificación de dichas entradas y salidas. Archivo Alta ImportadOn Gráficas °:' ',! Acerca de... Definir E/5 de Módulos r lodihcar EJS de 1A6duloc... ^,^^^^,, 23/02/2007 ; 04:47:11 p.m. Figura 1.3.45 Menú Balance Descripción del Menú Balances: - Submenú Cálculos:permite realiza el balance de volumen de agua de un punto de control en un distrito de riego. - Submenú Definir E/S de Módulos: permite dar de alta los equipos que sirven como entrada y/o salida de volumen de agua en un punto de control de un distrito de riego. - Submenú Modificar E/S de Módulos: permite modificar las entradas y/o salidas de equipos instalados en un punto de control. 16 Programa de Aforos 1.3.1.6 Menú Acerca de... Esta opción, muestra información del programa. Para acceder a esta opción se realiza lo siguiente: - Clic Menú Acerca de... Aparece la figura siguiente: DIRECTORIO DEL IMTA Director General: Dr. Alvaro Albe rt o Aldama Rodríguez Coordinador de Tecnología de Riego y Drenaje: Dr. Benjamin de Leon Mojarra Subcoordinador de Infraestructura Hidroagrícola: Dr. Arturo González Casillas CREDITOS AUTORALES Diseñadores: Dr Joder Ramírez Luna, Ing. Ernesto Olvera Aranzolo Programadores Lic. Magdalena González Vázquez, Ing César Ricardo Rodríguez Jimenez ' Acepar C Soporte TODOS LOS DEPECHOS P.ESERVADOS. PP.UHIBIDA SU REPRi7DUCCIOII TOTAL O PARCIAL Figura 1.3.46 Acerca de... Si se da un clic en el botón Aceptar, cerrará la ventana de la figura 1.3.46, si se da un clic en el botón Soporte, mostrará la Figura 1.3.47. Para cualquier duda o aclaiacien. favor de enviarla a: Instituto Mexicano de Tecnología del Agua, Coordinación de Tecnología de Riego y Drenaje, Subcoordinación de Infraestructura Hidroagricola Paseo Cuauhnáhuac'No. 8632 Cal. Progreso C. P. 82550 Jiutepec, Morelos Tel. 01 777) 329 36 00 Ext 115 Acepta' TODOS LOS DERECHOS RESERVADOS. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL Figura 1.3.47 Soporte 17 Programa de Aforos 1.4.- Importar Información Para importar la información de un archivo de Excel que ha almacenado un equipo en un punto de control de un distrito de riego a una tabla de la base de datos del programa de integración de datos de aforo, se realizan los siguientes pasos. 1.- Clic al Menú Importación del programa principal Figura 1.4.1 Clic Menú Importación 2.- Aparece la ventana siguiente Figura 1.4.2 Seleccionar Distrito de Riego En la figura anterior, se selecciona el distrito de riego en el cual se va a trabajar. Una vez realizado esto, se da un clic en el botón Aceptar, con lo cual se mostrará la figura 1.4.3. Figura 1.4.3 Seleccionar Módulo 18 Programa de Aforos 3.- Clic en el botón Aceptar y se muestra la figura 1.4.4. Al seleccionar el distrito de riego y el módulo de riego con el cual se trabajará, se carga en el sistema, los equipos que estén instalados en dichos puntos de control que pertenescan a dicho distrito y módulo. Figura 1.4.4 Módulo para importar información al sistema 3.- Seleccionar tipo de equipo (Vantage, OTT, MGD) y el punto de control a donde se importará la información. C• Vantage C OTT i MOD Figura 1.4.5 Tipo de equipo y punto de control seleccionado 4.- Clic en el botón Importar, aparece la figura 1.4.6 19 Programa de Aforos Figura 1.4.6 Seleccionar archivo Se debe de seleccionar el archivo de Excel que contiene la información recabada por un equipo de medición del agua en un punto de control para importar esa información al sistema y dar clic en el botón abrir. 5.- Una vez seleccionado el archivo y haber dado clic en el botón abrir, empieza la importación de la información a la base de datos del sistema. El avance que lleva la importación se muestra en la barra de progreso (Barra azul que se va llenando conforme se va leyendo la información del archivo de Excel y se va guardando en la base de datos del programa). Figura 1.4.7 Importando información al programa 6.- Una vez que se terminó de importar la información, manda el siguiente mensaje de confirmación. 20 Programa de Aforos Figura 1.4.8 Base de datos llenada 1.5.- Realizar una gráfica Para poder visualizar la información que está contenida en la base de datos del sistema de un punto de control se realizan los siguientes pasos que se listan a continuación. 1.- Clic en el Menú Gráficas 23/02/2007 I Figura 1.5.1 Menú Gráficas 2.- Al dar clic en el menú gráficas, aparece la figura 1.5.2 21 04:06:52 p.m. Programa de Aforos Figura 1.5.2 Seleccionar Distrito de Riego En la figura anterior, se selecciona el distrito de riego en el cual se va a trabajar. Una vez realizado esto, se da un clic en el botón Aceptar, con lo cual se mostrará la figura 1.5.3. Módulo: (Seleccionar Módulo Figura 1.5.3 Seleccionar Módulo Se debe seleccionar un módulo de riego del cual se visualizará la información que se encuentre almacenada en el sistema. Al seleccionar el módulo, se da un clic en el botón Aceptar, apareciendo la figura siguiente: Fecha de Inicio Fecha final: Seleccionar Variables r TR2 r volt nLvel2 f^J + gl-Asaiir I + I ^ ... Figura 1.5.4 Módulo de Graficación 22 Programa de Aforos 3.- Seleccionar tipo de equipo 4.- Seleecconar punto de control 5.- Seleccionar periodo del cual se quiere consultar la información del punto de control seleccionado 6.- Clic en el botón Ver Si no existe información en la base de datos que esté comprendia en el periodo seleccionado, mandará un mensaje de error el cual se muestra en la figura 1.5.5. { t ,= G:^^^^ Figura 1.5.5 información no encontrada Si se encuentra información del equipo que se haya seleccionado, cargará esta en el data grid y se graficarán los campos correspondientes como se muestra en la figura 1.5.6. fl-LORA FECHA Ver Información de: _24/09/2005 1 L 24j09¡2005 r•.' Vantage jQ p.rt p.r I]':50,00 p. r 11.45:00 _24/0 9170 05 ► . 11:90:00 24 /0912M u :55:00 p.r; ^Q 2 NIVEL TR JTRz 5,74 36 7 , 3615 6 0 0 00 0.00 5,74 36.79 36160 0 0.00 5,75 .°,Fi.02 35101 0 0.00 0 5.73 3ti.'7 36163 0 0.00 0.00 0.[ GTT 6.6 655 6.5 6.45 MGD Fecha de inicio Fecha final 6,25 62 6.15 6.1 6.05 SeleCCioual cimpos P W r Q2 r TR r TR2 r vol r volt r NiveR r Nivel 5.95 5.9 5.85 5.8 5.75 5.7 5.65 ,r 1. ^ XtR °x °'ÑS ° 4á8 i: e ó RF ^ ^ S ^^ ° ^ ó^^ n m 6 Melia - G.1044 Varlmlaa o g y '2,11 ó á ó ó^^$ tl Ñ h $ $ $ 5 5 $ $&5 5 $ 5 $ rv°H = 0.0542 Figura 1.5.6 Información graficada 23 ^ ^^ $.1V”uA^U8E$,P1 gg[ A Programa de Aforos 1.6.- Definir y Modificar Entradas y Salidas Para definir entradas y salidas de un módulo, realizar lo siguiente: - Clic en menú Balances - Clic en Submenú Definir E/S de Módulos Figura 1.6.1 Definir Entradas-Salidas Aparece la figura siguiente: Figura 1.6.2 Seleccionar Distrito de Riego En la figura anterior, se selecciona el distrito de riego en el cual se va a trabajar. Una vez realizado esto, se da un clic en el botón Aceptar, con lo cual se mostrará la figura 1.6.3. Figura 1.6.3 Seleccionar Módulo 24 Programa de Aforos Se debe seleccionar un módulo de riego del cual se visualizará la información que se encuentre almacenada en el sistema. Al seleccionar el módulo, se da un clic en el botón Aceptar, apareciendo la figura siguiente: De la figura anterior, se selecciona un módulo. Si el módulo seleccionado, ya tiene definida sus entradas y/o salidas, se envía el mensaje siguiente. Equipo... Este módulo ya tiene definida sus entradas y salidas... Aceptar Figura 1.6.4 Ya se definieron entradas-salidas Si el módulo seleccionado con el cual se va a trabajar, aún no se han definido sus entradas o salidas, se cargará la ventana que se muestra a continuación (Figura 1.6.5). fluir entrados :y. salidas del Módulo Entradas: [seleccionar equipo... ^ Agrega Salidas; fseleccionar equipo ... 'r(1 Agregar (mita' Aceptar Cancela, Figura 1.6.5 Definir Entradas-Salidas Descripción de la ventana para definir las Entradas y/o Salidas del módulo para un posterior balance de volumen de agua. EIIII atlas: 'seleccionar equipo... Figura 1.6.6 Lista de equipos de entrada Salidas: ¡seleccionar equipo... Figura 1.6.7 Lista de equipos de salida Muestra una lista con todos los equipos dados de alta en el sistema, los cuales se pueden agregar como entrada de volumen de agua al módulo de riego. Muestra una lista con todos los equipos dados de alta en el sistema, los cuales se pueden agregar como salida de volumen de agua del módulo de riego. 25 Programa de Aforos Muestra una lista con los equipos que se han agregado ya sea como entrada o salida de volumen de agua del módulo que se haya seleccionado. Figura 1.6.8 Lista de equipos Agr egatr Permite agregar a la lista de equipos, el equipo que se haya seleccionado en la lista de entrada o salida. Figura 1.6.9 Botón Agregar Quitar Figura 1.6.10 Botón Quitar Aceptar Figura 1.6.11 Botón Aceptar Permite quitar de la lista de equipos, el equipo que esté seleccionado de esta lista, ya sea que esté en la lista de equipos de entrada o en la lista de equipos de salida. Permite guardar en el sistema, los equipos que se han dado de alta ya sea como entradas o salidas de volumen de agua para el módulo con el cual se está trabajando. Sale de la opción de definir entradas y salidas sin realizar ningún cambio en el sistema. Figura 1.6.12 Botón Cancelar Se selecciona de la lista de entrada, los equipos que se van a dar de alta como entrada de volumen de agua, y se agrega a la lista de equipos de entrada dando un clic en el botón agregar correspondiente. fntralIas: Filmadas: etgccialigoe " V ant ageM1 ardageM2 '1 Agrega ' V antageM3 V ant ageM4 V arta geM5 A g regar '. 'v'antagetvl1 VantageM3 VantageM6 VantageM7 VantageM6 Figura 1.6.14 Lista de equipos de entrada con equipos dados de alta Figura 1.6.13 Lista de Entrada de equipos 26 Programa de Aforos En caso que se quiera dar de alta un equipo como entrada de volumen de agua, pero que ya se ha dado de alta como salida de volumen de agua, se generará un mensaje de error, el cual se muestra en la siguiente figura. Equipó. El Equipo ya ha sido agregado corno salida Aceptar Figura 1.6.15 Mensaje de error Para dar de alta un equipo como salida de volumen de agua, se selecciona de la lista de salida y se da clic en el botón Agregar correspondiente. Salidas: rr'JantageM2 '•3 antageM3 VantageM4 VantageM5 VantageM6 VantageM7 VantageM8 VantageM9 VantageM2 VantageM4 Figura 1.6.17 Lista de equipos de salida con equipos dados de alta Figura 1.6.16 Lista de Salida de equipos En caso que se quiera dar de alta un equipo como salida de volumen de agua, pero que ya se ha dado de alta como entrada de volumen de agua, se generará un mensaje de error, el cual se muestra en la siguiente figura. El Equipo ya ha sido agregado corno entrada Figura 1.6.18 Mensaje de error 27 Programa de Aforos En caso que se requiera borrar un equipo de la lista de equipos, se selecciona el equipo a eliminar y se da un clic en el botón Quitar correspondiente al tipo de equipo (entrada o salida) que se quiera eliminar. Vantage Ml VantageM3 VantageMl VantageM3 Vanta g e M 6 Figura 1.6.19 Equipos agregados Figura 1.6.20 Equipos a eliminar seleccionado Figura 1.6.21 Lista con equipo eliminado Una vez que se han definido tanto las entradas como las salidas de volúmenes de agua para un módulo de riego, se da un clic en el botón Aceptar y manda el siguiente mensaje. Se han definido las Entradas y Salidas para este Módulo Aceptar Figura 1.6.22 Se han definido entradas y salidas En caso que no se haya agregado entradas o salidas, mandará el siguiente mensaje de error. No se han agregado equipos para entradas y salidas' Figura 1.6.23 No se han agregado equipos 28 Programa de Aforos * Para modificar las entradas y salidas de un módulo de riego, realizar lo siguiente: - Clic en menú Balances - Clic en Submenú Modificar E/S de Módulos Figura 1.6.24 Modificar Entradas-Salidas Aparece la figura siguiente: Figura 1.6.25 Seleccionar Distrito de Riego En la fig u ra anterior, se selecciona el distrito de riego en el cual se va a Una veonao|izodoeato.oedounc|icenm|botónAc eota r. con|ocuo|mamoontnará |a fimuna 1.6.26. Figura 1 .6.26 Seleccionar Módulo 29 Programa de Aforos De la figura anterior, se selecciona un módulo. Si el módulo seleccionado no tiene definida sus entradas y/o salidas manda el mensaje de error siguiente. Equipo... Este módulo no tiene definida sus entradas y salidas... Aceptar Figura 1.6.27 No definidas entradas y Salidas Si el módulo seleccionado con el cual se va a trabajar, ya se han definido sus entradas y salidas, se cargará la ventana que se muestra a continuación (Figura 1.6.28). Figura 1.6.28 Modificar Entradas-Salidas Descripción de la ventana para modificar las Entradas y/o Salidas del módulo seleccionado para un posterior balance de volumen de agua. Entradas : seleccionar equipo... Figura 1.6.29 Lista de equipos de entrada Muestra una lista con todos los equipos dados de alta en el sistema, los cuales se pueden agregar como entrada de volumen de agua al módulo de riego. Muestra una lista con todos los equipos dados seleccionar equipo.. de alta en el sistema, los cuales se pueden agregar como salida de volumen de agua del Figura 1.6.30 Lista de equipos de salida módulo de riego. Salidas: 30 Programa de Aforos VantageMl VantageM3 Muestra una lista con los equipos que se dieron de alta en el sistema, ya sea como entrada o salida de volumen de agua del módulo que se haya seleccionado para poder hacer modificaciones. Figura 1.6.31 Lista de equipos llenada Figura 1.6.32 Botón Agregar °tata! Permite agregar a la lista de equipos, el equipo que se haya seleccionado en la lista de entrada o salida. Permite quitar de la lista de equipos, el equipo que esté seleccionado de esta lista, ya sea que esté en la lista de equipos de entrada o en la lista de equipos de salida. Figura 1.6.33 Botón Quitar Aceptar Figura 1.634 Botón Aceptar Permite guardar en el sistema, los equipos que se han dado de alta ya sea como entradas o salidas de volumen de agua para el módulo con el cual se está trabajando. Sale de la opción de definir entradas y salidas sin realizar ningún cambio en el sistema. Figura 1.6.35 Botón Cancelar X Cancela! ! Sale de la opción de definir entradas y salidas sin realizar ningún cambio en el sistema. Figura 1.6.36 Botón Cancelar Se selecciona de la lista de entrada, los equipos que se van a dar de alta como entrada de volumen de agua, y se agrega a la lista de equipos de entrada dando un clic en el botón agregar correspondiente. Entradas: VantageM1 VantageM2 VarrtageM3 VantageM4 VantageMS VantageM6 VantageM7 VantageM8 Figura 1.6.38 Lista de equipos de entrada con equipos dados de alta Figura 1.6.37 Lista de Entrada de equipos 31 Programa de Aforos En caso que se quiera dar de alta un equipo como entrada de volumen de agua, pero que ya se ha dado de alta como salida de volumen de agua, se generará un mensaje de error, el cual se muestra en la siguiente figura. Equipo... El Equipo ye ha sido agregado como salida Figura 1.6.39 Mensaje de error Para dar de alta un equipo como salida de volumen de agua, se selecciona de la lista de salida y se da click en el botón Agregar correspondiente. Salidas: Salidas: VarQageM4 %a' VantageM3 VantageM4 VantageM5 VantageM2 VantageM6 VantageM7 Vantage roa Guitar Agregal '`JantageM2 VantageM4 VarrtageM9 Figura 1.6.41 Lista de equipos de salida con equipos dados de alta Figura 1.6.40 Lista de Salida de equipos En caso que se quiera dar de alta un equipo como salida de volumen de agua, pero que ya se ha dado de alta como entrada de volumen de agua, se generará un mensaje de error, el cual se muestra en la siguiente figura. El Equipo ya ha sido agregado' como' entrada Figura 1.6.42 Mensaje de error En caso que se requiera borrar un equipo de la lista de equipos, se selecciona el equipo a eliminar y se da un click en el botón Quitar correspondiente al tipo de equipo (entrada o salida) que se quiera eliminar. 32 Programa de Aforos Elttfil(ii^S: iVantageM6 Vantagei141 VantageM3 VantageM6 Figura 1.6.43 Equipos agregados Figura 1.6.44 Equipos a eliminar seleccionado Figura 1.6.45 Lista con equipo eliminado Una vez que se han realizado las modificaciones tanto de los equipos querán las entradas como las salidas de volúmenes de agua para un módulo de riego, se da un clic en el botón Aceptar y mandará el siguiente mensaje de confirmación. El Modulo ha sido modificado Figura 1.6.47 Modificación realizada En caso que no se haya agregado entradas o salidas, mandará el siguiente mensaje de error. No se han agregado equipos para entradas y salidas Figura 1.6.48 No se han agregado equipos 33 Programa de Aforos 1.7.- Realizar un Balance de Volumen de Agua Para realizar un balance de agua, se realiza lo siguiente: - Clic en menú Balances - Clic en Submenú Cálculos Figura 1.7.1 Cálculo para volumen de agua Aparece la figura siguiente: Distrito de Riego: l ; Figura 1.7.2 Seleccionar Distrito de Riego En la figura anterior, se selecciona el distrito de riego en el cual se va a trabajar. Una vez realizado esto, se da un clic en el botón Aceptar, con lo cual se mostrará la figura 1.7.3. Figura 1.7.3 Tipo de Balance 34 Programa de Aforos Se puede realizar un balance de volumen de agua ya sea por punto de control o por un módulo de riego completo. Si se requiere realizar un balance por punto de control, se selecciona la opción "Por punto de control" y se da clic en el botón aceptar y se mostrará la ventana de la figura 1.7.4. Información General del Punto de Control Módulo: 8 Canal: Canal Lateral kin 11.000 Km. 0.035.25 Equipo: Vantages M9I Periodo Inicial: 128108/2006 J Periodo Final: 2$/08/2006 Volinneu Inicial: Volumen Final: Volumen Total: Figura 1.7.4 Balance por punto de control En la figura anterior, se carga información de manera general del punto de control que se haya seleccionado. Una vez en esa ventana, se selecciona el periodo del cual se quiera realizar el balance de volumen de agua y dar clic en el botón Calcular. Módulo: 8 Canal: Canal Lamia! km 11+000 Km. 0.035.25 Equipo: Vantage5_M91 p.m. volumen m 34945.00 Volumen Inicial: 22.092005 04:25:00 Volrimeu Final: 11:55:00 pan. volumen= 35649.00 23 09.2005 Voliu nen Total: 704.00 Figura 1.7.5 Balance realizado Si se quiere realizar un balance con un periodo del cual no se cuenta con información, mandará un mensaje de error que muestra en la figura 1.7.6. 35 Programa de Aforos No hay información para ese periodo Figura 1.7.6 Balance realizado También se puede realizar un balance de volumen de agua por módulo, se selecciona la opción de "Por módulo de riego" y habilita la lista que contiene los módulos disponibles para el distrito de riego que se haya seleccionado. Figura 1.7.7 Balance por módulo de riego Si del módulo que se quiera realizar el balance no se han definido sus entradas y salidas, el programa mandará un mensaje de error que se muestra en la figura 1.7.8. Este módulo no tielr¡¡^^definida sus entradas y saliis... Aceptar Figura 1.7.8 No se han definido Entradas y Salidas Si ya se han definido las entradas y salidas del módulo seleccionado, mostrará la ventana siguiente. Periodo Inicial:' 12e10e/2006 .2:1 Periodo Final: 12e108l2006 Voltínten total pala entradas: Volumen total para salidas: Volrimen Total: Figura 1.7.9 Balance por Módulo 36 Programa de Aforos En la figura anterior, se carga información del distrito y módulo que se han seleccionado y se cargan en las listas de equipos, los equipos que se definieron como entradas y salidas. Se selecciona el periodo del cual se requiere realizar el balance y dar click en el botón calcular. Si se quiere realizar un balance con un periodo del cual no se cuenta con información, mandará un mensaje de error que muestra en la figura siguiente. 1) No hay información para ese periodo Figura 1.7.10 Balance realizado Si la consulta encuentra información con la cual poder realizar el balance de volumen de agua, se mostrarán los resultados como en la figura que se muestra a continuación. Distrito de Riego: 75 Módulo: I Entradas: Salidas: Periodo Inicial: i 22á nos vi Periodo Final: f25ro912oa5 + -i Volumen total para entradas: 3412.00 Volumen total para salidas: 1706.00 Volumen Total: 1706.00 Figura 1.7.11 Balance realizado 1.8.- Conclusiones Se ha realizado y presentado detalladamente el programa para la integración de datos de aforo. El sistema permite dar de alta las instituciones de usuarios y puntos de control. La definición de entradas y salidas tanto de DR como de las asociaciones de Usuarios permiten realizar un balance en términos de volumen de agua. 37 Programa de Aforos El sistema permite la importación de la información de las variables hidráulicas de interés principalmente el nivel del agua, la velocidad media, la sección hidráulica, la fecha y sobretodo el volumen en función del tiempo de muestreo. Dicha información debe estar en formatos de Excel. El análisis de estadísticos simples como la media y desviación estándar (varianza) se puede realizar en intervalos de tiempo definidos por el usuario del sistema de cómputo y permite entonces realizar análisis previos de la información para incorporarla a la estadística hidrométrica. Dicho análisis temporal puede incluir el balance de volúmenes. Este sistema se constituye en la herramienta de análisis previa a la incorporación de los balances de volúmenes de agua entregados a las asociaciones de usuarios que requiere el manejo de información para su inserción en la estadística hidrométrica de cada DR. 38 11W 11111 I II II O II 46026 CENCA (E .1)