Osciloscopio y generador de ondas
con un sistema embebido, integrado
con dispositivos Android.
Monograf´ıa presentada por Jos´e Domingo Suarez Giraldo
Jhon Alejandro Pe˜na Tellez
para obtener el grado de Ingeniero Electr´onico
2017
Estado del arte . . . 28
Sistema de Tiempo Real Embebido en un Microcontrolador de Alto Desem-pe˜no para el Procesamiento de Audio . . . 28
Clase para manejo de la comunicaci´on Bluetooth: BluetoothRfcommClient . 47 Actividad para la visualizaci´on de se˜nales: PlotActivity . . . 51
Clase para el trazado de los datos en pantalla: PlotView . . . 52
Clase para la tarea de dibujado: PlotThread . . . 55
Actividad para la funci´on de Osciloscopio: Oscilloscope . . . 56
Actividad para la funci´on de Analizador L´ogico: Logic Analyzer . . . 61
Clase para el trazado de las se˜nales del Analizador Logico: PlotLogicAnalyzer 63 Actividad para la configuracion de las se˜nales a generar: Generator . . . 63
Sistema de Medici´on y Generaci´on de se˜nales . . . 68
Acondicionamiento sobre se˜nal que ser´a medida por los puertos del analizador l´ogico 88 Analizador l´ogico . . . 88
Acondicionamiento sobre se˜nal de salida del generador . . . 89
MPY634 (Multiplicador anal´ogico de precisi´on). . . 89 Descripci´on de su funcionamiento. . . 90 Implementaci´on del MPY634. . . 91
6. Metodolog´ıa 93
Planteamiento del problema
La universidad Distrital Francisco Jos´e de Caldas [1], cuenta con instalaciones de labo-ratorio e instrumentos de medici´on de excelente calidad para realizar pruebas tanto de alta como de baja potencia. A pesar de su calidad y las instalaciones adecuadas para llevar a aca-bo estas tareas, son recursos muy limitados para la gran cantidad de estudiantes que hacen uso de estos equipos y que en muchos casos tienen que esperar varios d´ıas para obtener un tiempo o espacio para realizar sus pruebas.
Las fechas que m´as se necesitan estos recursos son por ejemplo en las ´ultimas semanas de cierre semestre, por la gran cantidad de proyectos y pruebas que deben realizar los estu-diantes de diferentes proyectos curriculares como son ingenier´ıa el´ectrica y electr´onica. Para estas fechas, los recursos terminan siendo muy limitados y se agotan r´apidamente, haciendo que muchos estudiantes no tengan disponibilidad para realizar sus trabajos adecuadamente por la falta de equipos y tiempo de uso. Para tratar de darle soluci´on a los estudiantes que requieren m´as tiempo, la universidad ha dado a disposici´on el pr´estamo de los bancos de prueba con horario nocturno, es decir el pr´estamo de lo equipos despu´es de las 8:00 p.m hasta las 6:00 a.m, pero esta soluci´on no es la preferida por parte de los estudiantes; dado al desgaste que produce en ellos esta jornada y adem´as puede ser causante de que el estudiante no se encuentre a disposici´on para obtener clases el d´ıa siguiente del pr´estamo del banco de prueba.
Los instrumentos m´as requeridos en el laboratorio normalmente son los equipos de medici´on, como son los mult´ımetros, osciloscopios y en algunos casos fuentes de se˜nales AC o DC. Por normas del laboratorio el pr´estamo de la mayor´ıa de estos instrumentos se deben hacer dentro del laboratorio como tal, es decir con el pr´estamo de un banco completo para pruebas. Cabe aclarar que las salas e instrumentos que hay a la disposici´on, no siempre son los adecua-dos para las experimentaciones que el estudiante quiera realizar. Esto debido a que algunas salas cuentan con equipos que no tienen las funcionalidades de los equipos de otras salas o se encuentran limitados en cuanto a manejo de potencia.
Por ello se ve la necesidad de realizar nuevas herramientas o herramientas complementarias que permitan aliviar o mitigar un poco este problema. Realizar una herramienta que presente beneficios tanto en portabilidad como calidad de medici´on, sin dejar atras un sencillo manejo de este, para que cualquier usuario no le cueste manipularlo.
Justificaci´
on
Actualmente la facultad de ingenier´ıa de la Universidad Distrital cuenta con recursos limitados para la realizaci´on de pruebas de laboratorio, tales como equipos de medici´on y ge-neraci´on de se˜nales el´ectricas para ciertas pr´acticas de las carreras de ingenier´ıa electr´onica y el´ectrica. Las mediciones que com´unmente realizan los estudiantes requieren del uso de equi-pos como osciloscopios y mult´ımetros; mientras que en cuestiones de producci´on de se˜nales se utilizan fuentes reguladas y generadores de ondas. Sin embargo, la alta demanda de la sala de laboratorio en ciertas ´epocas del semestre, y la insuficiencia de equipos es un problema com´un, motivo por el cual se evidencia la necesidad de buscar herramientas que permitan mitigar este problema, beneficiando as´ı a estudiantes que requieran equipos de medici´on y no les sea posible acceder a los que proporciona la Universidad.
Esta es la raz´on por la cual se propone realizar un prototipo de instrumentaci´on, que per-mita realizar procedimientos b´asicos de medici´on y generaci´on de se˜nales el´ectricas de uso com´un en los laboratorios. Un aspecto fundamental para la realizaci´on del prototipo es que sea de bajo costo, con el fin de poder elaborarlo con un presupuesto adecuado de forma que un estudiante pueda acceder a ´el sin tener que realizar una cuantiosa inversi´on, como s´ı lo ser´ıa la compra de un dispositivo de instrumentaci´on profesional. Para poder lograr realizar un instrumento como estos se ve la necesidad de usar dispositivos como lo son los sistemas embebidos de bajo consumo y bajo costo, y que sean vinculables a dispositivos android para la visualizaci´on y configuraci´on remota de las se˜nales manipuladas en el sistema embebido. Se propone la utilizaci´on de dispositivos android debido a la popularidad de los mismos y porque el uso de dispositivos externos para la visualizaci´on de las se˜nales reduce los costos del pro-totipo. Adem´as de que cuentan con facilidades para la conexi´on a internet y almacenamiento de datos en la nube.
Objetivos
Objetivos Generales
Elaborar un prototipo de un sistema integrado que contenga un sistema embebido y una placa de expansi´on que permita realizar mediciones de se˜nales AC y DC; que de igual manera permita generar se˜nales b´asicas de laboratorio y que se permita configurar y visualizar desde un dispositivo Android por medio de una conexi´on inal´ambrica.
Objetivos espec´ıficos
Dise˜nar el acondicionamiento necesario para la medici´on tanto de se˜nales DC como se˜nales AC de baja frecuencia (Max. 100khz), usadas com´unmente en los laboratorios de la Universidad.
Dise˜nar las protecciones necesarias de tal manera que sea posible introducir se˜nales continuas y alternas de niveles de hasta 10v.
Elaborar estos acondicionamientos y protecciones en un shield ensamblable a la board del sistema embebido.
Permitir visualizar en la pantalla de un dispositivo Android las mediciones previamente configuradas.
Permitir la configuraci´on de amplitud, frecuencia y tipo de se˜nales AC o DC generables por la Board, desde el dispositivo con sistema operativo Android.
Permitir el almacenamiento de los datos de las mediciones en la nube, aprovechando la conexi´on a internet con la que cuente el dispositivo Android.
Proporcionar un manual para el manejo del dispositivo dentro de la aplicaci´on en An-droid para la configuraci´on de medidas del ADC, salidas de PWM adem´as de generaci´on de se˜nales AC y DC de baja potencia.
Marco Teorico
Sistema Operativo Android
Cualidades de Android
Android ofrece una forma sencilla y novedosa de implementar potentes aplicaciones para diferentes tipos de dispositivo. Sus cualidades le han permitido imponerse como el sistema operativo para dispositivos m´oviles con m´as cuota de mercado en la actualidad. A continua-ci´on se mencionan algunas de ellas [4]:
Plataforma abierta: Es una plataforma de desarrollo basada en Linux y de c´odigo abierto. Una de sus ventajas es que se puede usar y personalizar el sistema sin pagar derechos de autor.
Adaptable a cualquier plataforma: No solamente es exclusivo para tel´efonos y t´ablets. Es posible hallarlo en muchos sistemas embebidos para los cuales el desarrollo de una aplicaci´on est´a soportado para estos diferentes dispositivos siempre y cuando cuenten con los elementos de acceso necesarios tales como entradas, pantalla, memoria, etc.
Portabilidad: La aplicaciones son desarrolladas en Java, lo que permite que sean ejecu-tadas en cualquier plataforma gracias al concepto de m´aquina virtual.
Servicios incorporados: Tales como sistemas de localizaci´on basados en GPS o internet, manejo de bases de datos con SQL, navegadores, multimedia, reconocimiento de voz, etc.
Filosof´ıa de dispositivo siempre conectado a internet: Esto sumado a la tendencia cre-ciente del internet de las cosas lo hace una herramienta formidable de desarrollo con vinculaci´on permanente a la red.
Seguridad: Los programas se encuentran aislados unos de otros gracias al concepto de ejecuci´on dentro de una caja heredado de Linux. Adem´as de limitaciones en cuanto a permisos de acuerdo al tipo y acci´on de cada aplicaci´on.
Calidad Gr´afica: Cuenta con herramientas gr´aficas basadas en OpenGL. Adem´as incor-pora c´odecs est´andar comunes para reproducci´on de audio y video.
Arquitectura de Android
La arquitectura de Android se encuentra basada en 4 capas, las cuales tienen como ca-racter´ıstica importante que est´an basadas en software Libre. En la figura 4.1 se muestra la distribuci´on de ´estas capas [5].
Figura 4.1: Capas de la arquitectura de Android. Tomada de [5]
Nucleo Linux: El n´ucleo de Android est´a formado por el sistema operativo Linux 2.6, el cual se encarga de proporcionar servicios como la seguridad, manejo de memoria, multi-proceso, soporte de drivers, entre otros. ´Esta capa realiza la abstracci´on entre el hardware y el resto de las capas.
Runtime de Android: Se basa en el concepto de m´aquina virtual utilizado en Java. Sin embargo, debido a que los dispositivos m´oviles tienen limitaciones en cuanto a memoria y procesador, no les es posible ejecutar la m´aquina virtual Java est´andar, por lo que fue nece-saria la creaci´on de la m´aquina virtual Dalvik por parte de Google la cual responde mejor a ´
estas limitaciones. A partir de Android 5.0, se reemplaza a Dalvik por ART, la cual consigue una reducci´on del tiempo de ejecuci´on de c´odigo Java en un 33 %. Tambi´en se encuentra incluido en el Runtime el core libraries, con la mayor´ıa de librer´ıas del lenguaje Java.
Librer´ıas Nativas: Incluye un conjunto de librer´ıa en C/C++ usadas en varios compo-nentes de Android. Est´an compiladas en c´odigo nativo del procesador. La mayor´ıa de estas librer´ıas utilizan proyectos de c´odigo abierto.
uso de ellas sujetas a restricciones de seguridad. Proporciona una plataforma de desarrollo libre para aplicaciones con gran riqueza e innovaciones.
Aplicaciones: Capa superior formada por el conjunto de aplicaciones instaladas en una m´aquina Android. Todas deben correr en la m´aquina Virtual Dalvik o ART para garantizar la seguridad del sistema. Las aplicaciones normalmente est´an escritas en Java las cuales son desarrolladas mediante el Android SDK.[6]
Desarrollo de aplicaciones
El desarrollo de aplicaciones se realiza en un equipo con ciertas caracter´ısticas de hard-ware y sistema operativo Windows, Linux o MacOs, donde sea posible instalar la m´aquina virtual Java. Adicionalmente se requiere de un entorno de desarrollo dentro de los cuales existen dos opciones:
Eclipse y plug-in ADT (Android Development Tools): Este IDE sol´ıa ser el de uso tradicional para el desarrollo de aplicaciones Android, hasta el lanzamiento de Android Studio. Consta de tres componentes necesarios para su uso: Eclipse, Android SDK y el plug-in ADT propor-cionado por Google.
Android Studio: Entorno de desarrollo de Android lanzado por Google basado en el IDE IntelliJ IDEA [7]. Incorpora caracter´ısticas nuevas no que no se encuentran en el IDE tradi-cional basado en Eclipse. Por tratarse del entorno de desarrollo Android oficial proporcionado por Google, es el m´as recomendable de usar, debido a que desde su aparici´on, el soporte al entorno Eclipse ha dejado de mantenerse y por tanto ha dejado de actualizarse.[8]
Canvas
La clase Canvas representa una superficie donde se puede realizar dibujos en Android. Esta clase dispone de una serie de m´etodos que permite representar l´ıneas, c´ırculos, texto, etc. Para dibujar en Canvas se necesita de un Pincel (Paint) donde se define el color, grosor del trazo, transparencia. Tambi´en se puede definir una matriz de 3x3 que permite transformar coordenadas aplicando una translaci´on, escala o rotaci´on. Otra opci´on consiste en definir un ´
area conocida como Clip, de forma que los m´etodos de dibujo afecten solo a esta ´area. [9]
Comunicaciones Inal´
ambricas
como por ejemplo; almacenes, oficinas de varios pisos, etc. Cabe tambi´en mencionar que ac-tualmente las redes cableadas presentan ventaja en cuanto a transmisi´on de datos sobre las inal´ambricas. Mientras que las cableadas proporcionan velocidades de hasta 1 Gbit/s (Red Gigabit), las inal´ambricas alcanzan s´olo hasta 108 Mbit/s, adem´as de producir mayor esta-bilidad y seguridad en transmisi´on.
Actualmente, las transmisiones inal´ambricas constituyen una eficaz herramienta que permi-te la transferencia de voz, datos y v´ıdeo sin la necesidad de cableado. Esta transferencia de informaci´on es lograda a trav´es de la emisi´on de ondas de radio teniendo dos ventajas: movilidad y flexibilidad del sistema en general.[10]
Tecnolog´ıas que permiten la comunicaci´
on inal´
ambrica.
WIFI: Es una tecnolog´ıa inal´ambrica utilizada para conectar e intercambiar informa-ci´on entre dispositivos electr´onicos sin necesidad de conectarlos mediante cables.[11] Wifi pertenece al conjunto de tecnolog´ıas conocidas como Wireless (sin cables) con mayor aceptaci´on y uso en la mayor´ıa de dispositivos electr´onicos como smartpho-nes, tablets, ordenadores de sobremesa y port´atiles, c´amaras digitales o consolas de videojuegos gracias al cual se puede disponer de una red de comunicaci´on entre varios dispositivos y con acceso a Internet.
Figura 4.2: Logo de WiFi.
Una de las principales ventajas del wifi es la posibilidad de conectar m´ultiples disposi-tivos electr´onicos a internet con un solo dispositivo. Estrictamente la palabra wifi hace referencia a todos los dispositivos electr´onicos dise˜nados para establecer una comuni-caci´on inal´ambrica y que han sido certificados por la organizaci´on WiFi Alliance.
Figura 4.3: Logo de Bluetooth.
La tecnolog´ıa Bluetooth se dise˜n´o principalmente para conectar dispositivos (como impresoras, tel´efonos m´oviles, art´ıculos para el hogar, etc.), equipos o PDA es decir comunicaciones simple a corta distancia y con fines de conexi´on Uno A Uno. Bluetooth tambi´en se utiliza cada vez m´as en tel´efonos m´oviles especialmente para conectarse a los accesorios manos libres, como los auriculares Bluetooth. Los auriculares Bluetooth son auriculares avanzados que incluyen funciones de control remoto.
La tecnolog´ıa Bluetooth originalmente fue desarrollada por Ericsson en 1994.
Normas Bluetooth.
El est´andar Bluetooth se divide en m´ultiples normas:
• IEEE 802.15.1 define Bluetooth 1.x, que puede alcanzar velocidades de 1 Mbps.
• IEEE 802.15.2 recomienda pr´acticas para utilizar la banda de frecuencia de 2.4 GHz (la frecuencia tambi´en utilizada por WiFi). Sin embargo, este est´andar to-dav´ıa no se ha aprobado.
• IEEE 802.15.3 es un est´andar que actualmente se est´a desarrollando, que ofrecer´a velocidad de banda ancha (20 Mbps) con Bluetooth.
• IEEE 802.15.4 es un est´andar que actualmente se est´a desarrollando para el uso con aplicaciones Bluetooth de baja velocidad.
ZigBee:Es un est´andar de comunicaciones inal´ambricas dise˜nado por la ZigBee Allian-ce. Es un conjunto estandarizado de soluciones que pueden ser implementadas por cualquier fabricante.[13] ZigBee est´a basado en el est´andar IEEE 802.15.4 de redes inal´ambricas de ´area personal (wireless personal ´area Newark, WPAN) y tiene como objetivo las aplicaciones que requieren comunicaciones seguras con baja tasa de env´ıo de datos y maximizaci´on de la vida ´util de sus bater´ıas.
Figura 4.4: Logo de ZigBee.
• ZigBee es una tecnolog´ıa inal´ambrica con velocidades comprendidas entre 20 kB/s y 250 kB/s.
• Los rangos de alcance son de 10 m a 75 m.
• Puede usar las bandas libres ISM (6) de 2,4 GHz (Mundial), 868 MHz (Europa) y 915 MHz (EEUU).
• Una red ZigBee puede estar formada por hasta 255 nodos los cuales tienen la mayor parte del tiempo el transceiver ZigBee dormido con objeto de consumir menos que otras tecnolog´ıas inal´ambricas.
• Soporta diferentes tipos de topolog´ıas como estrella, punto a punto, malla, ´arbol.
• Escalabilidad de red – Un mejor soporte para las redes m´as grandes, ofreciendo m´as opciones de gesti´on, flexibilidad y desempe˜no.
• Fragmentaci´on: Nueva capacidad para dividir mensajes m´as largos y permitir la interacci´on con otros protocolos y sistemas.
• Localizaci´on grupal: Ofrece una optimizaci´on adicional de tr´afico necesaria para las grandes redes.
Conversor Digital a an´
alogo
Es un dispositivo para convertir un c´odigo digital (generalmente binario) a una se˜nal anal´ogica (corriente o voltaje). Hay distintos componentes que pueden intervenir en este proceso, como interruptores simples, red de resistores, fuentes actuales o condensadores.[14]
Figura 4.5: Conversi´on de se˜nal anal´ogica a digital.[14]
Caracter´ısticas b´
asicas
de salida). El tiempo de conversi´on es otra particularidad que define al convertidor necesario para una aplicaci´on determinada. Es el tiempo que necesita para efectuar el m´aximo cambio de su tensi´on con un error m´ınimo en su resoluci´on. Otros aspectos que posee el convertidor son: su tensi´on de referencia, que puede ser interna o externa (si es externa puede ser variada entre ciertos m´argenes); la tensi´on de salida vendr´a afectada por este factor, constituy´endose ´
este a trav´es de un convertidor multiplicador; as´ı mismo, deber´a tenerse en cuenta la tensi´on de alimentaci´on, el margen de temperatura y su tecnolog´ıa interna. [15]
Especificaciones de un DAC (Digital to Analog Converter)
Existe una amplia variedad de DAC como circuitos integrados o bien como paquetes encapsulados. Hay que conocer las especificaciones m´as importantes de los fabricantes con el fin de evaluar un DAC, en una determinada aplicaci´on [16].
Resoluci´on: La resoluci´on porcentual de un DAC depende ´unica y exclusivamente del n´umero de bits. En las fichas t´ecnicas se detalla de esta manera. Un DAC de 10 bits tiene una resoluci´on m´as sensible (mayor exactitud) que uno de 8 bits.
Precisi´on: Los fabricantes de DAC tienen varias maneras de establecer la precisi´on o exactitud. A las dos m´as comunes se las llama Error de Escala Completa y Error de Linealidad (o en ocasiones, directamente linealidad), que normalmente se expresan como un porcentaje de la salida de escala completa del convertidor ( %FS).
Tiempo de respuesta: La velocidad de operaci´on de un DAC se explica como tiempo de respuesta, que es el periodo que se requiere para que la salida pase de cero a escala completa cuando la entrada binaria cambia de todos los ceros a todos los unos. Los valores comunes del tiempo de respuesta variar´an de 50 ns a 10 ms. En general, los DAC con salida de corriente tendr´an tiempos de respuesta m´as breves que aqu´ellos con una de voltaje.
Conversor Anal´
ogico a Digital (ADC)
Un conversor anal´ogico-digital, (ADC del ingl´es .Analog-to-Digital Converter”) es un
Figura 4.6: Conversi´on de se˜nal anal´ogica a digital.[17]
La se˜nal anal´ogica, que var´ıa de forma continua en el tiempo, se conecta a la entrada del dispositivo y se somete a un muestreo a una velocidad que puede ser tanto fija como variable. La digitalizaci´on consiste b´asicamente en realizar medidas de la amplitud (tensi´on) de una se˜nal, redondear sus valores a un conjunto finito de niveles preestablecidos de tensi´on (cono-cidos como niveles de cuantificaci´on) y registrarlos como n´umeros enteros seg´un su resoluci´on y almacenarlos en cualquier tipo de memoria o soporte. Los procesos que dan lugar a esta conversi´on son el muestreo, la retenci´on, la cuantificaci´on y la codificaci´on: [18]
Muestreo: el muestreo (en ingl´es, sampling) consiste en tomar muestras peri´odicas de la amplitud de onda. La velocidad con que se toma esta muestra, es decir, el n´umero de mues-tras por segundo, es lo que se conoce como frecuencia de muestreo. Nyquist formul´o el si-guiente teorema para obtener una grabaci´on digital de calidad.“La frecuencia de muestreo m´ınima requerida para realizar una grabaci´on digital de calidad, debe ser igual al doble de la frecuencia de audio de la se˜nal anal´ogica que se pretenda digitalizar y grabar”.Sino se cumple este requisito aparecer´a el fen´omeno de ´aliasing´el cual propiciara la aparici´on de frecuencias .alias”, y la se˜nal original no puede ser reconstruida de forma correcta a partir de la se˜nal
digital.[18]
Retenci´on: las muestras tomadas deben ser retenidas (sistema de retenci´on) el tiempo su-ficiente para permitir evaluar su nivel (cuantificaci´on). Desde el punto de vista matem´atico este proceso no se contempla, ya que se trata de un recurso t´ecnico debido a limitaciones propias del dispositivo que realiza la conversi´on.
Cuantificaci´on: en el proceso de cuantificaci´on se mide el nivel de voltaje de cada una de las muestras. Consiste en asignar un margen de valor de una se˜nal analizada a un ´unico nivel de salida design´andolo con un valor entero.
amplitud continua a los niveles de cuantificaci´on m´as pr´oximos.
Codificaci´on: la codificaci´on consiste en traducir los valores obtenidos durante la cuan-tificaci´on al c´odigo binario. Hay que tener presente que el c´odigo binario es el m´as utilizado, pero tambi´en existen otros tipos de c´odigos que tambi´en son utilizados.
Este modelo es una base para la digitalizaci´on utiliz´andose en la actualidad variantes que se acoplan mas a las capacidades de los equipos.[19]
1.
Cuantizacion
En la figura 4.7 se observa una forma de onda de una conversi´on t´ıpica de una se˜nal anal´ogica. Como se puede observar en las etiquetas de la gr´afica, la se˜nal representa el voltaje que var´ıa en el tiempo. Se hace una suposici´on para que sea de manera m´as sencilla el an´alisis, que la onda es de 0 a 4.095 voltios, lo cual corresponde a un n´umero digital entre 0 y 4095 que es producido por un conversor de 12 bits. Si se observa el diagrama de bloque de la figura 4.8 se encuentra dividido en 2 segmentos, el resultado del m´odulo de muestreo y retenci´on (S/H) y el conversor de anal´ogico a digital (ADC). Como bien se sabe, el m´odulo de muestreo y retenci´on es necesario para mantener el voltaje entrante al conversor ADC de manera constante mientras la conversi´on se realiza (debido al tiempo que toma el dispositivo en realizar la conversi´on). Sin embargo, esa no es la raz´on por la cual se observa all´ı, la raz´on por la cual debe estar all´ı se explicar´a con m´as detalle a continuaci´on.[20]
Figura 4.7: Se˜nal anal´ogica.
Como se observa la diferencia entre las gr´aficas 4.7 y 4.9, la salida del m´odulo de muestreo y retenci´on es permitir el cambio solo en intervalos peri´odicos, en el cual hace una “foto” instant´anea de la se˜nal de entrada. Los cambios producidos en la se˜nal de entrada producidos en el momento de muestreo son totalmente ignorados. Esto significa, que el muestreo es una se˜nal independiente (del tiempo en este caso) en la conversi´on de continuo a discreto. Como se puede ver en la diferencia entre las se˜nales de 4.9 y 4.10, el ADC produce un valor entero entre 0 y 4095 por cada regi´on plana en la figura 4.9. Esto produce un error, porque puede haber un valor de voltaje entre 0 y 4.095 voltios y este lo representa al valor m´as cercano a la cuanta. En otras palabras, la cuantizacion se convierte una variable dependiente (del voltaje en este caso) de la conversi´on de la se˜nal de continuo a discreto.[21]
Figura 4.9: Se˜nal resultante del muestreo.
Figura 4.10: Se˜nal resultante de la cuantizacion.
4.11 se ve como el error de cuantizacion para este caso, se puede encontrar restando la se˜nal 4.9 y la se˜nal 4.10. En otras palabras, la salida digital de la se˜nal 4.10, es equivalente a la entrada continua de la se˜nal 4.9, m´as el error de cuantizacion en la figura 4.11. Lo importante de este an´alisis es que se puede considerar el error de cuantizacion como un ruido aleatorio.
Figura 4.11: El resultado de la resta entre el muestreo y la cuantizacion.
Al tenerse claro los efectos de la cuantizacion y del muestreo, se debe concluir que entre mayor sea el n´umero de la resoluci´on en el conversor ADC (mas bits en la cuantizacion) se puede reducir el ruido propio que genera el proceso de la cuantizacion. Tambi´en se debe tener en cuenta las velocidades a nivel de hardware del propio conversor, porque el m´odulo de muestreo y retenci´on puede tomar bastante tiempo a comparaci´on de la frecuencia de la se˜nal anal´ogica y esto genera ruido tambi´en.[22]
Teorema de muestreo
Figura 4.12: Muestreo de una se˜nal DC.
En la figura 4.12 se observa una gran cantidad de se˜nales sinusoidales antes y despu´es de la digitalizaci´on. Las lineas continuas representan la se˜nal anal´ogica que ingresa al ADC, mientras que las marcas de cuadros son las se˜nales que salen del ADC. En la figura 4.12, la se˜nal anal´ogica es un valor constante DC, es decir una se˜nal coseno con frecuencia cero. En la se˜nal anal´ogica hay una serie de lineas rectas entre cada una de las muestras, se puede observar que toda la informaci´on necesaria para la reconstrucci´on de la se˜nal anal´ogica esta dentro de los datos digitales (los valores tomados). Acorde a la primera definici´on, este el el tipo de muestreo que se encuentra bien dise˜nado.
Figura 4.13: Muestreo de una se˜nal seno, con frecuencia al 0.09 de la tasa de muestreo.
se˜nal anal´ogica no puede ser reconstruida dibujando simples lineas rectas entre los puntos de los datos. Lo que si se puede afirmar es que los datos muestreados fueron lo suficientes como para reconstruir la se˜nal, demostrando que fue una manera apropiada de hacer el muestreo.
Figura 4.14: Muestreo de una se˜nal seno, con frecuencia al 0.31 de la tasa de muestreo.
En la figura 4.14, la situaci´on es mas compleja porque se incrementa la frecuencia a 0.31 de la tasa de muestreo. Esto significa que solo se toman 3.2 muestras de la se˜nal seno por ciclo. Pero parece que las muestras est´an muy esparcidas con base a la reconstrucci´on de la se˜nal; con lo cual deja la duda si son suficientes para reconstruir la se˜nal. En este caso, las muestras son la ´unica representaci´on de una se˜nal anal´ogica. Toda la informaci´on tomada en en la etapa del muestreo necesaria, llego a obtenerse para la reconstrucci´on.
Figura 4.15: Muestreo de una se˜nal seno, con frecuencia al 0.95 de la tasa de muestreo.
son los datos necesarios para reconstruir la se˜nal?. No, en este caso no se puede. Las muestras que se tomaron pueden representar se˜nales diferentes de una misma se˜nal anal´ogica. En este caso en particular, la se˜nal seno al ser muestreada produce una se˜nal digital representada con el 0.05 de frecuencia de la se˜nal original. Este fen´omeno de se˜nales senosoidales con frecuencias diferentes, producidas en el muestreo se conoce como aliasing. Este nombre viene a que la se˜nal toma otra identidad (alias), porque asume una frecuencia que no es la propia a la original.
En el proceso digital de se˜nales se genero un teor´ıa conocida como el teorema de muestreo de shannon, o el teorema de muestreo de Nyquist. El teorema de muestreo indica que la se˜nal continua puedes ser muestreada propiamente, solo si los componentes de frecuencia no est´an alrededor de la media tasa de muestreo. Es decir, una tasa de muestreo de 2000 muestras por segundo requiere que la se˜nal anal´ogica este compuesta por frecuencias menos a 1000 ciclos por segundo. Si la frecuencia es mayor a este limite, se puede producir el fen´omeno de aliasing.
Fm = 2∗B
donde B es el ancho de banda, o la frecuencia m´axima de la se˜nal a muestrear. Tambi´en se puede considerar la siguiente imagen,
Figura 4.16: la tasa de muestreo para evitar Aliasing.
Analizador L´
ogico
visualizar los valores de las se˜nales digitales durante un periodo de tiempo de adquisici´on.[24] Por lo general un analizador l´ogico cumple con:
Adquirir muestras que tomen unos valores discretos (entre 1 y 0 l´ogico).
Adquiere varias muestras simult´aneamente para poder observar un conjunto de l´ıneas digitales (por ejemplo un bus de ´datos´).
Las muestras se almacenan en una memoria digital interna, llamada memoria de ad-quisici´on, para su posterior observaci´on.
Un analizador l´ogico muestra las se˜nales de manera muy similar a un osciloscopio: el eje hori-zontal representa el tiempo y el eje vertical el valor de la se˜nal. A diferencia del osciloscopio, que trata de representar las se˜nales con gran resoluci´on de voltaje y precisi´on temporal, los objetivos de los analizadores l´ogicos son los siguientes:
Representar simult´aneamente un gran n´umero de se˜nales.
Observar el estado de las se˜nales entorno a la aparici´on en varias l´ıneas de un determi-nado patr´on de bits (condici´on de disparo o trigger).
A continuaci´on se observa un ejemplo de las mediciones de un analizador l´ogico.
Figura 4.17: Se˜nales tomadas desde un analizador l´ogico.
Desarrollo de aplicaci´
on web
HTML
¿Que significa HTML y que es?
elaboraci´on de p´aginas web.[25]
Cabe destacar que HTML no es un lenguaje de programaci´on ya que no cuenta con funciones aritm´eticas, variables o estructuras de control propias de los lenguajes de programaci´on, por lo que HTML genera ´unicamente p´aginas web est´aticas, sin embargo, HTML se puede usar en conjunto con diversos lenguajes de programaci´on para la creaci´on de p´aginas web din´amicas.
Prop´osito de HTML.
B´asicamente el lenguaje HTML sirve para describir la estructura b´asica de una p´agina (el ´
esqueleto’) y organizar la forma en que se mostrar´a su contenido, adem´as de que HTML permite incluir enlaces (links) hacia otras p´aginas o documentos.[25]
CSS 3
CSS son las siglas de “Cascading Style Sheets”(Hojas de Estilo en Cascada) que es un lenguaje que describe la presentaci´on de los documentos estructurados en hojas de estilo para diferentes m´etodos de interpretaci´on, es decir, describe c´omo se va a mostrar un documento en pantalla.[26]
Funcion de CSS
CSS es una especificaci´on desarrollada por el W3C (World Wide Web Consortium) para per-mitir la separaci´on de los contenidos de los documentos escritos en HTML, XML, XHTML, SVG, o XUL de la presentaci´on del documento con las hojas de estilo, incluyendo elementos tales como los colores, fondos, m´argenes, bordes, tipos de letra, etc. modificando la apariencia de una p´agina web de una forma m´as sencilla, permitiendo a los desarrolladores controlar el estilo y formato de sus documentos.
Manejando CSS
El lenguaje CSS se basa en una serie de reglas que rigen el estilo de los elementos en los documentos estructurados, y que forman la sintaxis de las hojas de estilo. Cada regla consis-te en un selector y una declaraci´on, esta ´ultima va entre corchetes y consiste en una propiedad o atributo, y un valor separados por dos puntos.
Definiciones b´asicas
Selector: El Selector especifica que elementos HTML van a estar afectados por esa declara-ci´on, de manera que hace de enlace entre la estructura del documento y la regla estil´ıstica en la hoja de estilo.
Propiedad o Atributo y Valor: Dentro de la declaraci´on, la Propiedad o Atributo define la interpretaci´on del elemento asign´andosele un cierto Valor, que puede ser color, alineaci´on, tipo de fuente, tama˜no,etc; es decir, especifican qu´e aspecto del selector se va a cambiar.
Javascript
Javascript es un lenguaje que puede ser utilizado por profesionales de software y para quienes se inician en el desarrollo y dise˜no de sitios web.[27] No requiere de compilaci´on ya que el lenguaje funciona del lado del cliente, lo que significa que los navegadores son los encargados de interpretar estos c´odigos.¿Qu´e es Javascript?
Javascript es un lenguaje con muchas posibilidades, utilizado para crear peque˜nos programas que luego son insertados en una p´agina web y en programas m´as grandes, orientados a objetos mucho m´as complejos. Con Javascript se puede crear diferentes efectos e interactuar con los usuarios de la aplicaci´on web.[27]
Es necesario resaltar que hay dos tipos de JavaScript: por un lado est´a el que se ejecuta en el cliente (interacion del usuario con la web), este es el Javascript propiamente dicho, aunque t´ecnicamente se denomina Navigator JavaScript. Pero tambi´en existe un Javascript que se ejecuta en el servidor, es m´as reciente y se denomina LiveWire Javascript (Manipulacion de informaci´on y solicitudes al servidor).
Bootstrap
Bootstrap es un framework originalmente creado por Twitter, que permite crear interfaces web con CSS y JavaScript dentro de la p´agina html, cuya particularidad es la de adaptar la interfaz del sitio web al tama˜no del dispositivo en que se visualice [28]. Es decir, el sitio web se adapta autom´aticamente al tama˜no de un computador de escritorio, una Tablet u otro dispositivo movil. Esta t´ecnica de dise˜no y desarrollo se conoce como “responsive design”o dise˜no adaptativo. El beneficio de usar “responsive design”en un sitio web, es principalmente que el sitio web se adapta autom´aticamente al dispositivo desde donde se acceda. En pocas palabras no es necesario generar dise˜nos diferentes de la misma pagina web, para ser visua-lizado en diferentes dispositivos, debido a que incrementa el c´odigo y termina siendo tediosa la labor debido a la gran cantidad de tama˜nos que pueda solicitar dicha pagina web.
Aun todas las posibilidades que ofrece Bootstrap a la hora de crear interfaces web, los di-se˜nos creados con Bootstrap son simples, limpios e intuitivos, esto les da agilidad a la hora de cargar y al adaptarse a otros dispositivos.
este.
Convertidor DC - DC (Bost)
El convertidor Boost (o elevador) es un convertidor DC a DC que obtiene a su salida una tensi´on continua mayor que a su entrada.[29] Es un tipo de fuente de alimentaci´on con-mutada que contiene al menos dos interruptores semiconductores (diodo y transistor), y al menos un elemento para almacenar energ´ıa (condensador, bobina o combinaci´on de ambos). Frecuentemente se a˜naden filtros construidos con inductores y condensadores para mejorar el rendimiento.
Un conector de suministro de energ´ıa habitual no se puede conectar directamente a dispo-sitivos como ordenadores, relojes o tel´efonos. La conexi´on de suministro genera una tensi´on alterna (AC) y los dispositivos requieren tensiones continuas (DC). La conversi´on de potencia permite que dispositivos de continua utilicen energ´ıa de fuentes de alterna, este es un pro-ceso llamado conversi´on AC a DC y en ´el se usan convertidores AC a DC como rectificadores.
La energ´ıa tambi´en puede provenir de fuentes DC como bater´ıas, paneles solares, rectifica-dores y generarectifica-dores DC, pero ser de niveles inadecuados. El proceso de cambiar una tensi´on de continua a otra diferente es llamado conversi´on DC a DC. Un convertidor Boost es uno de los tipos de convertidores DC a DC. Presenta una tensi´on de salida mayor que la tensi´on de la fuente, pero la corriente de salida es menor que la de entrada.[30]
Nube (Cloud)
¿Que es la nube?
Tipos de Nube
Nube privada. La infraestructura en la nube se opera exclusivamente para una organi-zaci´on. Puede ser administrada por la propia organizaci´on o un tercero y puede hallarse dentro de las instalaciones o fuera de ellas [33].
Nube comunitaria. La infraestructura en la nube es compartida por varias organiza-ciones y da soporte a una comunidad espec´ıfica que posee inquietudes comunes. Puede ser administrada por las propias organizaciones o un tercero y puede hallarse en las instalaciones o fuera de ellas.
Nube p´ublica. La infraestructura en la nube est´a a disposici´on del p´ublico en general o de un grupo grande del sector y su propietario es la organizaci´on que comercializa servicios en la nube.
Nube h´ıbrida. La infraestructura en la nube se compone de dos o m´as nubes (privada, comunitaria o p´ublica) que, si bien son entidades ´unicas, est´an vinculadas por tecnolog´ıa estandarizada o propia que permite la portabilidad de datos y aplicaciones.
Beneficios de la Nube
Reducci´on de costos. Las organizaciones pueden reducir o eliminar los gastos de capital de TI y disminuir los gastos operativos al pagar ´unicamente los servicios que utilizan y al poder reducir o reubicar al personal de TI [34].
Facilidad de implementaci´on. Como no es necesario comprar hardware y licencias de software ni contratar servicios de implementaci´on, una organizaci´on puede implementar la computaci´on en la nube con rapidez.
Flexibilidad. La computaci´on en la nube ofrece m´as flexibilidad a la hora de asignar recursos de TI a funciones comerciales, en comparaci´on con m´etodos de computaci´on del pasado. Tambi´en puede aumentar la movilidad del personal ya que facilita el acceso a informaci´on y aplicaciones empresariales desde una gama m´as amplia de ubicaciones y servicios.
Acceso a funciones de TI de alta gama. En especial para las organizaciones m´as pe-que˜nas, la computaci´on en la nube permite el acceso a hardware, software y personal de TI de m´as alto nivel que el que pueden atraer o proporcionarse por s´ı mismas.
Estado del arte
Sistema de Tiempo Real Embebido en un Microcontrolador de Alto
Desempe˜
no para el Procesamiento de Audio
En este proyecto se realizo el procesamiento de se˜nales realizado por un sistema operativo en tiempo real embebido en un microcontrolador ya que permite optimizar el tiempo de eje-cuci´on de las tareas cr´ıticas y no cr´ıticas asignadas para el procesamiento de audio y reducir costos en la unidad de procesamiento. Se implemento la realizaci´on de multitareas a trav´es de un sistema de tiempo real embebido en un microcontrolador para el procesamiento de audio. Se genero la comunicaci´on entre microcontroladores para as´ı tener una mayor eficacia con respecto a la respuesta de las tareas asignadas y finalmente integro una etapa de pro-cesamiento de se˜nales en el sistema operativo en tiempo real, minimizando los componentes empleados para la reducci´on de costos materiales.
Oscilocopio WiFi Velleman WFS210
Figura 4.18: Oscilocopio WiFi Velleman WFS210 [36].
Ancho de banda: 2 x 10Mhz.
Resoluci´on An´aloga a digital: 8 bits.
Buffer de muestras: 4K/canal.
Consumo(Bater´ıa): 160mA.
Bater´ıa: ion de litio 3.7V 1800mAh.
Sus requerimientos:
iOS.
Android 4.0.
Sistema operativo Windows XP o mayor.
Tablet o PC.
Wireless Oscilloscope using Android App for Mobile
En el art´ıculo[ref] se describen los componentes de un osciloscopio inal´ambrico que hace uso de una aplicaci´on Android en un smartphone para la visualizaci´on de las mediciones [37].
Figura 4.19: Oscilocopio Wireless [37].
El transmisor consiste en un m´odulo serial Wi-Fi y un microcontrolador Atmega8. La se˜nal transmitida es recibida mediante WiFi en un Smartphone o tablet que ejecute el sistema operativo Android y tenga instalada la aplicaci´on encargada de graficar en 2D la forma de onda de la se˜nal medida. A aplicaci´on permite cambiar la divisi´on de voltaje y tiempo. La forma de onda puede ser guardada como un videoclip o una imagen formato jpeg.
Osciprime
principales son un dispositivo complejo programable Xilinx Coolrunner y un microcontrolador Cypress FX2 [38].
Figura 4.20: Oscilocopio Wireless [38].
Microcontrolador TIVA C
Descripci´
on b´
asica
Figura 4.21: Microcontrolador TIVA C de Texas Instruments.
Las caracter´ısticas de Hardware.
Tiene un procesador con un n´ucleo de 32-bit ARM Cortex-M4 de 80Mhz con un siste-ma de temporizaci´on (SysTick), integrado un vector de interrupci´on “Nested Vectored Interrupt Controller” (NVIC), “Wake-Up Interrupt Controller” (WIC) con reloj incor-porado, protecci´on de memoria “Memory Protection Unit” (MPU), permite operaciones de unidad de punto flotante (FPU).
Maneja una memoria interna de 256 KB flash de ciclo sencillo que puede llegar a m´as de 40Mhz, 32KB SRAM de ciclo sencillo; una ROM interna cargada con TivaWare para programar en C; 2 KB EEPROM.
Tiene dos m´odulos de control de ´area (CAN), el cual usa el protocolo CAN versi´on 2.0 parte A y B con una tasa de 1Mbps.
Controlador de USB con protocolo USB 2.0 a m´axima velocidad (12Mpbs) y baja velocidad (1.5Mbps), con 32 terminaciones y permite el modo USB OTG Host Device.
Tiene integraci´on a comunicaci´on serial avanzada: maneja 8 UARTs con IrDA de 9 bits y soporta ISO 7816; tiene 4 m´odulos de interfaz serial sincr´onica (SSI), soporta operaciones de SPI de Freescale, MICROWIRE o interfaces seriales sincr´onicas propias de Texas Instruments; maneja 4 m´odulos I2C, brindando velocidades est´andares como son 100Kbps y altas a 400Kbps en transmisi´on. Soporta el env´ıo y recepci´on de datos tanto en maestro como en esclavo.
Soporta caracter´ısticas anal´ogicas. Tiene 2 conversores de 12 bits de se˜nales anal´ogicas a digital con 12 canales anal´ogicos de entrada y una tasa de muestro de hasta 1 mill´on de muestras por segundo; dos comparadores anal´ogicos, 16 comparadores digitales; un regulador de voltaje incorporado.
PWM, un generador de banda muerta y un selector de disparo de ADC o interrupci´on; 2 m´odulos de interfaz codificador de cuadratura (QEI).
Maneja dos temporizadores de tipo Watchdog; tiene temporizadores de 32 bits de prop´osito general; temporizadores de 64bits de prop´osito general; 12 pines de 16, 32,64 bits como comparadores de PWM.
M´as de 43 GPIOS (dependiendo de la configuraci´on), con un control programable de interrupciones de GPIO.
M´odulo de hibernaci´on de bajo consumo de energ´ıa, con reloj de tiempo real.
M´ultiples fuentes de reloj: Oscilador de precisi´on (PIOSC), Oscilador Principal (MOSC), un oscilador externo de 32.768Khz y un oscilador interno de 30Khz.
Sistema de alimentaci´
on.
La placa de desarrollo se puede alimentar por el puerto USB que tiene para realizar el Debug y que tambi´en permite cargar el c´odigo que lo controla. Adicionalmente tiene otro puerto USB que permite alimentar al microcontrolador desde otro sistema, pero el cual no deja hacer Debug ni cargar el software al microcontrolador. Finalmente, est´a la alimentaci´on directa al microcontrolador en un pin dedicado en la placa el cual debe ingresar 5 voltios. El microcontrolador se alimenta con 3.3 voltios, pero la placa en ese pin dedicado maneja un regulador de protecci´on y establece el voltaje a la alimentaci´on necesaria.
Figura 4.22: Pin de alimentaci´on externa al Tiva C.
Software de programaci´
on.
maneja librer´ıas similares), Code Composer Studio con IDE Eclipse que permite asociar li-brer´ıas propias de Texas Instruments como son TivaWare C que puede manipular de manera m´as f´acil los m´odulos internos del microcontrolador y tambi´en el hardware externo dise˜nado para este. Tambi´en se puede desarrollar c´odigo desde la aplicaci´on Cloud de Code Composer Studio, pero con limitaciones de librer´ıas.
Figura 4.23: Software para programa el TIVA C.(Energia, Code Composer Studio, Keil ARM)
Modulo Bluetooth HC-05.
EL modulo Bluetooth HC-05 es un m´odulo Bluetooth SPP (Serial Port Protocol) de f´acil uso, dise˜nado para configurar conexiones seriales Wireless transparentes. Estas comunicacio-nes por el modo serial hacen que sea un m´etodo de interfaz f´acil de controlar desde una PC o dispositivo con Bluetooth. Este m´odulo brinda la opci´on de intercambiar entre el modo eslavo y maestro, es decir la capacidad de enviar o transmitir datos.
Figura 4.24: Modulo Bluetooth HC-05.
Especificaciones de Hardware.
Sensibilidad t´ıpica de -80dBm.
Mas de +4dBm en energ´ıa de transmisi´on en RF.
Control de perif´ericos de entrada y salida.
Interfaz UART con tasa de transmisi´on programable.
Tiene la antena integrada.
Especificaciones de Conexi´
on.
Pin Descripci´on Funci´on
VCC 5 Voltios Conectar a 5 voltios. GND Ground - Tierra Conectar a tierra. TXD UART TXD, se˜nal serial que Se conecta al
env´ıa el Bluetooth microcontrolador en el pin RXD. RXD UART RXD, se˜nal serial que Se conecta al
recibe Bluetooth microcontrolador en el pin TXD KEY Codificaci´on Cuando se deja al aire, se
transmiten datos.Cuando se conecta a 3.3 o 5 voltios se envia el comando AT.
Especificaciones de software.
En modo esclavo tiene una tasa de transmisi´on: 9600, bits de datos: 8, bit de parada: 1, paridad: sin paridad.
Se puede conectar el pin 9 y 8 a un led rojo y azul de manera separada. Cuando el maestro y el esclavo son emparejados, el led rojo y azul son intermitentes en un intervalo de 1 y 2 segundos, si se desconecta solo el led azul alumbrara.
Se auto conecta al ´ultimo dispositivo que fue emparejado cuando este este activo.
Desarrollo
Aplicaci´
on web
B´asicamente se busco realizar una aplicaci´on web que simulara una plataforma cloud que permitiera guardar y visualizar las mediciones obtenidas en el prototipo de osciloscopio. La aplicaci´on web tiene un sistema de logueo para el usuario.
Figura 5.1: Login desde un PC
Figura 5.2: Login desde un movil Android
En el caso de que la persona que quiere ingresar a la plataforma no tenga usuario; tiene la opci´on de registrarse creando un usuario y contrase˜na.
Figura 5.4: Registro en la pagina web, visto desde un movil Android
Al momento de ingresar el sistema le da la bienvenida y puede hacer uso de la herramienta.
Figura 5.6: Inicio de la pagina web, visto desde un movil Android
Cuando se ingresa desde el celular o en un computador y quiera subir el archivo se selecciona la opci´on de subir archivo.
Figura 5.8: Subir archivo en la pagina web, visto desde un movil Android
Si se ingresa desde una PC y se quiere visualizar la se˜nal se ingresa a la opci´on almac´en, donde permite ver todos los archivos almacenados para el usuario. Al seleccionar el archivo o el documento se ingresa a la pantalla de visualizaci´on de la se˜nal.
Figura 5.10: Ver archivos almacenados en la pagina web, visto desde un movil Android
En este medio de visualizaci´on le permite ver la se˜nal con los valores obtenidos y puede observar un rango definido de la se˜nal, ya sea solo una parte o toda la se˜nal completa.
Figura 5.12: Visualizaci´on de la se˜nal en la pagina web, visto desde un movil Android
Finalmente esta la opci´on de salir. Que le permite salir de la aplicaci´on y cerrar sesi´on.
Dise˜
no de fuente de alimentaci´
on
Para poder alimentar toda la board, se debe buscar obtener una se˜nal dual que pueda alimentar los amplificadores operacionales con base a la se˜nal de un adaptador de +12V. Para poder lograr este objetivo se debe pensar primero en como obtener la se˜nal dual, para ello se propone el siguiente circuito.
Figura 5.13: Circuito que genera se˜nal dual
por debajo de 0 voltios y esto permite alimentar las bases de los transistores Q1 y Q2, que a su vez permiten controlar los transistores de salida Q3 y Q4. El valor m´aximo de corriente que puede brindar estar´a limitado por dos cosas: la corriente m´axima que puede producir la fuente de alimentaci´on y la corriente que soporten los transistores de salida Q3 y Q4.
Ahora ya que se tiene la producci´on de la se˜nal dual, se entiende como se podr´a alimen-tar los amplificadores operacionales; pero queda pendiente el como poder obtener los 30 Voltios de entrada al circuito.
Para lograr esto, se debe emplear un circuito convertidor DC a DC conocido como Boost. El circuito que se emplea en este proyecto se desarrolla busca tener una dimension peque˜na y de gran sencillez; por lo tanto se empleo un circuito integrado que permita esta tarea. El XL6009 de Kylinchip Electronic (de Shanghai), es un regulador que permite como entrada un rango amplio de voltaje el cual se comporta como conversor DC a DC que permite generar se˜nales de voltaje tanto positivas como negativas. Este puede ser configurado como Boost, Flyback o conversor inversor. A continuaci´on se muestra el circuito que permite funcionar como Boost al integrado XL6009.
Figura 5.14: Circuito Boost, con el integrado XL6009
Como se puede observar, se tiene los pines tanto de entrada como salida de voltaje. Para poder variar el voltaje de salida del circuito es variando el potenci´ometro de 100KΩ. El in-tegrado permite salidas m´aximas de 35 voltios lo cual es suficiente para el prop´osito que se busca.
Con esto se tiene definido todo el circuito para producir una fuente dual de ± 15 voltios. Ahora falta producir las se˜nales de voltaje +5V, +3.3V y ± 12V. La se˜nal de ± 12V son los que alimentaran los amplificadores operacionales, los +5V permitir´an alimentar m´odulos del generador de se˜nales y el microcontrolador Tiva C. finalmente se usa el valor 3.3V para limitar la se˜nal en el modulo de analizador l´ogico y tambi´en para la referencia que usara el DAC en el modulo de generador de se˜nales.
integrados que funcionen como reguladores. Hay en el mercado reguladores que producen se˜nales de salida como +12V, -12V, +5V y +3.3V as´ı que es la soluci´on mas sencilla.
Aplicaci´
on Android
Esta aplicaci´on fue dise˜nada para ser compatible con dispositivos con sistema operativo Android versi´on mayor o igual a 4.4.4 “Kit Kat”. Es necesario que el dispositivo sea compati-ble con el sistema de comunicaci´on bluetooth del tipo cl´asico, ya que permite un mayor flujo de datos a diferencia del bluetooth LE (Low Energy) el cual maneja un protocolo distinto de comunicaci´on. La comunicaci´on se realizar´a entonces con el m´odulo bluetooth HC06 el cual permite la comunicaci´on inal´ambrica como si se tratara de una comunicaci´on serial. Es decir, se hace transmisi´on de datos por lo general de ocho bits y a una velocidad predeterminada de baudios.
La primera vez que es utilizado el m´odulo Bluetooth, es necesario que sea sincronizado con el celular antes de iniciar la aplicaci´on. La forma de hacerlo es ingresando a la configuraci´on del celular, activar el Bluetooth e iniciar una b´usqueda de dispositivos. Se selecciona el m´odulo HC06 el cual tendr´a el nombre que se le haya configurado y se solicitar´a el PIN de vinculaci´on con el m´odulo, que por lo general es “0000” o “1234” sin las comillas. Esto permitir´a que sea incluido en la lista de dispositivos sincronizados y pueda ser accedido desde la aplicaci´on. Dicha tarea solo requiere ser realizada una ´unica vez a menos de que el dispositivo haya sido eliminado de la lista de dispositivos sincronizados.
La aplicaci´on no requiere que el Smartphone tenga que ser modificado de alguna manera en t´erminos de Hardware, ni de software o sistema operativo, no requerir´a que se encuentre ruteado ni con una aplicaci´on adicional.
A continuaci´on se explicar´a detalladamente en que consiste cada una de las actividades de la aplicaci´on, se describir´an las interfaces gr´aficas correspondientes, las clases y funciones creadas para garantizar la comunicaci´on con el m´odulo y la visualizaci´on de las formas de onda correspondientes.
Actividad de Selecci´
on de dispositivo: DeviceListActivity
Figura 5.15: Diagrama de Herencia para DeviceListActivity
La actividad se crea configurando la interfaz de usuario con el layout [43] activity device list, el cual est´a formado por TextViews [44] y un ListView [45]. Al resumirse la actividad, se veri-fica que el bluetooth est´e activado en el dispositivo mediante el m´etodo checkBtState(). Si el bluetooth se encuentra desactivado, se lanza la solicitud de permiso para activarlo mediante un Intent [46], como se muestra en la figura 5.16.
Figura 5.16: Imagenes en aplicacion de Bluetooth
en la configuraci´on de Android. Los elementos listados se mostrar´an con informaci´on del nombre del dispositivo y direcci´on MAC, como se muestra en la figura 5.17.
Figura 5.17: Imagenes de seleccion de dispositivo Bluetooth
Al seleccionar uno de los dispositivos de la lista, se ejecuta un Intent que inicia la activi-dad SelectActivity, y env´ıa en el Intent la informaci´on de la direcci´on MAC del dispositivo seleccionado.
Actividad de selecci´
on de funci´
on: SelectActivity
OnClic-kListener [48], la cual permite informar cuando se registre un evento de toque sobre el View de la actividad.
Figura 5.18: Imagenes en aplicacion de Bluetooth
En el m´etodo de creaci´on (onCreate()) la actividad se configura el layout o interfaz gr´afica que consta de un TextView y cuatro Buttons [49]. Al seleccionar uno de estos botones, se lanzar´a mediante un Intent la actividad correspondiente a la opci´on escogida. Este Intent contiene tambi´en la informaci´on de la direcci´on MAC del dispositivo.
Figura 5.19: Seleccion de actividad en la aplicacion
Clase para manejo de la comunicaci´
on Bluetooth:
BluetoothRf-commClient
Clase\ Objeto Funcion
UUID MY UUID Almacena el identificador ´unico del tipo de dispositivo Bluetooth con el que se har´a la conexi´on.
BluetoothAdapter mAdapter Objeto encargado de representar el adaptador bluetooth local.
ConnectedThread MConnectedThread Objeto que representa el thread encargado de manejar conexiones establecidas.
int mState Variable que representa el estado de la conexi´on, descrita por los tres atributos constantes de la clase. Final int STATE NONE Constante que indica que no hay
ninguna conexi´on establecida. Ni se est´a intentando realizarla. Su valor es 0.
Final int STATE CONNECTING Constante que indica que se est´a intentando establecer una conexi´on. Su valor es 1.
Final int STATE CONNECTED Constante que indica que hay una conexi´on establecida. Su
valor es 2.
El constructor de esta clase recibe el context y el handler que maneja la comunicaci´on con la interfaz de usuario. Asigna al objeto mAdapter el adaptador local mediante el m´etodo getDefaultAdapter() de la clase BluetoothAdapter. Asigna a la variable mState el valor STA-TE NONE y asigna el handler recibido al objeto local mHandler. Esta clase maneja threads que pueden modificar los valores de variables u objetos de la misma. Para que esto se pueda realizar sin intervenci´on de otros threads que tambi´en intenten modificar una misma variable, se utilizan m´etodos sincronizados, los cuales evitan que varios threads intenten modificar una variable al mismo tiempo, lo cual puede causar conflictos.
SetState es un m´etodo sincronizado que configura el estado actual de la conexi´on, y env´ıa a su vez dicha informaci´on al handler para ser actualizado en la interfaz de usuario.
bluetooth. Con este es posible crear una conexi´on con el dispositivo, o consultar informaci´on acerca del mismo, como el nombre, direcci´on, clase y estado de conexi´on.
El m´etodo sincronizado Connect(BluetoothDevice) recibe como argumento un objeto de clase BluetoothDevice. Este m´etodo cancela todo thread que se encuentre intentando realizar una conexi´on, y cancela los threads de conexiones existentes. A continuaci´on crea una instancia del thread para establecer conexiones ConnectThread y lo inicializa. Luego se establece se asigna el valor STATE CONNECTING a la variable mState para indicar que se est´a inten-tando una conexi´on.
La clase BluetoothSocket [51] instancia objetos que permiten representar un punto final de comunicaci´on bluetooth entre dos dispositivos. El tipo m´as com´un de socket bluetooth es el RFCOMM, el cual es el tipo soportado por las APIs de Android. RFCOMM maneja un streaming de transporte sobre bluetooth orientado a la conexi´on. Es conocido tambi´en como el Perfil de puerto serial SPP.
El m´etodo sinctronizado connected() es ejecutado al momento de que se ha establecido una conexi´on exitosa con el dispositivo Bluetooth. Este m´etodo recibe como argumentos un obje-to de la clase Blueobje-toothSocket y un objeobje-to de la clase Blueobje-toothDevice. La primera tarea que realiza es cancelar el thread que ha completado la conexi´on. Luego de esto, cancela todos los threads que hayan establecido una conexi´on, para evitar que interfieran con la conexi´on ac-tual. A continuaci´on se crea la instancia del thread que se encarga de manejar la conexi´on que permite transmitir la informaci´on. Se inicializa con el m´etodo start(). Luego de esto, se env´ıa el nombre del dispositivo conectado a la actividad de interfaz de usuario, usando el handler. Finalmente, se configura el estado de la conexi´on a STATE CONNECTED, que indica que hay una conexi´on establecida. El m´etodo sincronizado stop() detiene todos los threads de intento de conexi´on y conexiones establecidas. Luego cambia el estado a STATE NONE. El m´etodo write(byte) escribe un arreglo de tipo byte. Primero se crea un objeto temporal de la clase ConnectedThread. Si hay una conexi´on establecida, es decir, el estado de la conexi´on es STATE CONNECTED, se crea una copia del thread de conexi´on en el objeto temporal, y luego se realiza la escritura con el m´etodo write() del thread, pas´andole como argumento el arreglo de tipo byte.
El m´etodo ConnectionFailed() indica que el intento por establecer una conexi´on ha presen-tado fallas y se notifica a la actividad de interfaz de usuario mediante un toast. Primero se configura el estado de la conexi´on a STATE NONE, y luego mediante el handler se comunica a la actividad de intefaz de usuario que la conexi´on no pudo ser establecida.
El m´etodo ConnectionLost() es llamado cuando se ha detectado que la conexi´on se ha per-dido. Se encarga de comunicar a la actividad de interfaz de usuario acerca de este incidente. Primero se configura el estado de la conexi´on a STATE NONE y luego mediante el handler se env´ıa el mensaje a la interfaz de usuario.
Thread para el establecimiento de conexiones ConnectThread:
BluetoothSocket. El constructor recibe como par´ametro un objeto de la clase BluetoothDe-vice y lo asigna al valor local. Para inicializar el objeto BluetoothSocket se crea una variable temporal de la misma clase y mediante un try se utiliza el m´etodo createRfcommSocketTo-ServiceRecord sobre el objeto device que recibe como par´ametro el UUID utilizado cuando se realizar´an conexiones con dispositivos bluetooth que manejan serial. Si la creaci´on del Socket ha sido exitosa, se asigna el objeto temporal a la variable local.
El m´etodo run() de este Thread inicia cancelando cualquier intento de descubrimiento de dispositivos, con el m´etodo cancelDiscovery() del objeto que se ha instanciado del adaptador bluetooth mAdapter. A continuaci´on se intenta establecer la conexi´on con el socket blue-tooth, mediante el m´etodo connect() del objeto mSocket, esto podr´ıa generar alg´un error al momento de la ejecuci´on, por lo que se pone dentro de una estructura para la gesti´on de expeciones, try-catch. Si no se genera ninguna excepci´on, se finaliza el thread para el intento de conexi´on, y luego se inicializa se llama al m´etodo connected(), para poder manejar la conexi´on que acaba de ser establecida, pasando como argumentos los objetos mmSocket y mmDevice.
Si ocurre una excepci´on, se ejecuta el m´etodo connectionFailed(), para actualizar el estado de la conexi´on. Luego de esto, mediante un try-catch se intenta cerrar el socket mediante el m´etodo close() del objeto mSocket.
Thread para el manejo de conexiones establecidas ConnectedThread:
Este thread se ejecuta durante la conexi´on con un dispositivo. Se encarga de manejar las transmisiones entrantes y salientes. Cuenta con tres atributos. Un objeto de la clase Blue-toothSocket, mmSocket; un objeto de tipo InputStream, mmInStream; y un objeto de la clase OutputStream, mmOutStream. El constructor recibe un objeto de tipo BluetoothSoc-ket y lo asigna a la variable local mmSocBluetoothSoc-ket. Los valores socBluetoothSoc-ket.getInputStream() y soc-ket.getOutputStream() alimentar´an las otras variables locales, realizando la asignaci´on me-diante variables temporales y una estructura try-catch.
El m´etodo run() de este thread tiene otras dos variables locales; una es un arreglo de tipo byte denomindado buffer que ser´a donde se almacenen los datos de la transmisi´on recibida, y la variable bytes, que almacenar´a la cantidad de bytes recibidos. Mediante un bucle infinito se realiza la lectura de las transmisiones entrantes, con una estructura try-catch. Dentro del try se ejecuta la instrucci´on:
bytes = mmInStream.read(buffer);
El m´etodo read() [52] recibe como argumento la variable buffer y almacenar´a en ella los datos de la transmisi´on. En bytes se guardar´a la cantidad de bytes que han sido recibidos. Este m´etodo no avanzar´a hasta que no haya datos de entrada disponibles, se haya detectado un final de archivo o se lance una excepci´on. Luego, este mensaje que ha sido recibido, se env´ıa a la actividad de interfaz de usuario, haciendo uso del handler. Si llega a lanzarse una excep-ci´on, se ejecuta el m´etodo connectionLost() y se finaliza el bucle infinito con la instrucci´on break.
m´etodo write del objeto mmOutStream transmite los datos del arreglo al dispositivo blue-tooth.
Actividad para la visualizaci´
on de se˜
nales: PlotActivity
Esta actividad es una clase abstracta que permite manejar la conexi´on bluetooth con el dispositivo bluetooth vinculado a la board para enviar datos, recibir datos, y graficar los datos recibidos. Esta clase no est´a asociada a un archivo de layout, por lo cual no tiene una interfaz de usuario [?]. Sin embargo partir de ella se heredan las actividades para las funcio-nes de Osciloscopio, Generador y Analizador L´ogico, las cuales si cuentan con una interfaz de usuario, establecida de acuerdo al tipo de funci´on que se realizar´a. Como clase padre, per-mite establecer atributos y m´etodos generalizados, que heredar´an las clases hijas los cuales podr´an a su vez modificarse en las clases hijas para comportarse de acuerdo a las necesidades particulares de cada una.
Figura 5.20: Diagrama de Herencia
Dentro de la definici´on de esta clase, se cuenta con diferentes atributos como por ejemplo constantes que permiten manejar la conexi´on bluetooth e identificar ciertos comandos pro-venientes de la comunicaci´on para la ejecuci´on dentro de la actividad. El m´etodo de creaci´on (onCreate()) de esta actividad se encarga de ajustar la visualizaci´on a pantalla completa y verificar que la conexi´on bluetooth est´a disponible; en caso de no estarlo, se finalizar´a la actividad. La actividad no se asocia a ning´un archivo de layout, ya que estoy lo har´a cada clase hija sobrescribiendo el m´etodo de creaci´on, heredando el m´etodo de creaci´on de la clase y haciendo la asociaci´on al layout respectivo.
En el m´etodo de inicio (onStart()) se verifica que el bluetooth est´e habilitado. En caso de no estarlo, se finaliza la actividad y regresa a la actividad anterior. Si se encuentra activado, se verifica si el objeto de cliente bluetooth ya ha sido creado. Si no es as´ı, se procede a ejecutar el m´etodo abstracto de inicializaci´on, setUpScope().
En el m´etodo de pausa (onPause()) se procede a detener el servicio del cliente bluetooth, esto sucede cuando la actividad se cierra o se cambia a segundo plano.
Se define el m´etodo abstracto setUpScope(), el cual se implementa en las clases hijas, lo que permite que se comporte de acuerdo a la funci´on a realizar, ya sea la de osciloscopio o la de generador. El m´etodo BTconnect() se encarga de realizar la conexi´on al dispositivo Bluetooth. Esto mediante la creaci´on de un objeto llamado device de la clase BluetoothDevi-ce. Este objeto se inicializa con el valor recibido por el m´etodo getRemoteDevice del objeto de la clase BluetoothAdapter, pas´andole la direcci´on MAC recibida en la informaci´on del intent. Luego se realiza la conexi´on con el dispositivo usando el m´etodo connect del objeto mRfcommClient, pasando como argumento el objeto device.
El m´etodo sendMessage() recibe un elemento de tipo String, el cual ser´a transmitido por el dispositivo. Antes de intentar enviar el mensaje se verifica que la conexi´on se encuentre establecida. Se obtiene el status del dispositivo y en caso de no estar conectado, se notifica mediante un Toast [49] que no hay ning´un dispositivo conectado y se retorna. Si la conexi´on est´a establecida, se verifica que la cantidad de caracteres a transmitir sea mayor a cero. El mensaje de tipo String debe convertise a bytes para poder ser transmitido, esto aplicando el m´etodo getBytes() del objeto String y almacenando el resultado en el arreglo de tipo byte llamado send. Este objeto se pasar´a como argumento del m´etodo write() del objeto mRf-commClient.
El m´etodo get12BitsData() se encarga de tomar los datos recibidos en la comunicaci´on, y convertirlos en valores de 12 bits. Los valores recibidos en la comunicaci´on vienen ordenados en parejas de byte alto y byte bajo, cada uno con una bandera que indica la posici´on del byte, para que al hacer la reconstrucci´on del dato completo, se eviten errores por p´erdida de alg´un dato. Luego de obtener los datos recuperados, se retorna un arreglo con estos valores.
Clase para el trazado de los datos en pantalla: PlotView
Figura 5.21: Diagrama de Herencia para PlotView
Mediante un objeto de la clase DisplayMetrics se obtienen las dimensiones del disposi-tivo, es decir, el ancho y alto de la pantalla, valores que se usar´an para la definici´on de los l´ımites del ´area trazable en la pantalla. Para ubicarse en el Canvas y poder realizar trazos, hay que tener claro el sistema de coordenadas que utiliza ´esta clase. Este sistema es relativo a la orientaci´on de la pantalla del tel´efono, ya sea vertical u horizontal. En la imagen 5.22 se puede visualizar que los ejes X y Y tiene origen en la parte superior izquierda de la pantalla. El eje X aumenta ascendentemente de izquierda a derecha y alcanza su valor m´aximo en el extremo derecho de la pantalla. El eje Y aumenta ascendentemente de arriba hacia abajo y alcanza su valor m´aximo en el extremo inferior de la pantalla:
Figura 5.22: Eje X y eje Y en la pantalla de Android
Paint Descripci´on
Ch1Color Define el color del trazo de la se˜nal gridPaint Define el color del trazo de la cuadricula
outlinePaint Define el color de los bordes del ´area de trazado
El framework de APIs de Android proporciona un conjunto de APIs de dibujo 2D que permite crear gr´aficas personalizadas en un canvas. La mejor opci´on para realizar el trazado de gr´aficas en 2D, es dibujar directamente en un Canvas, usando el m´etodo onDraw() [51] y pasando como argumento el Canvas en cuesti´on. Mediante el uso de un Thread separado, se maneja el SurfaceView, y realiza los dibujos tan r´apido como el Thread lo permita. La interface SurfaceHolder.Callback requiere la implementaci´on de los tres m´etodos indicados en la Tabla 1:
M´etodo P´ublico Intervenci´on Implementaci´on
surfaceCreated Es llamado inmediatamente Se inicializa el Thread para (SurfaceHolder holder) la superficie es creada el trazado: plotThread.start()
por primera vez
surfaceChanged Es llamado inmediatamente Ninguna. (SurfaceHolder holder, despu´es de que alg´un
int format, int width, cambio que se ha hecho int height) a la superficie.
surfaceDestroyed Es llamado inmediatamente antes Se detiene el Thread para (SurfaceHolder holder) de que la superficie es destruida. el trazado: plotThread.join()
Cuadro 5.1: M´etodos de la interface SurfaceHolder.Callback
El m´etodo plotPoints(canvas) es llamado dentro del m´etodo de onDraw(canvas) y se en-carga de realizar las siguientes tareas de forma consecutiva:
1. Limpiar el View para que al realizar un nuevo trazado, no queden rastros del trazado anterior. Esto se logra mediante el m´etodo canvas.drawColor(color), el cual recibe como argumento un elemento de tipo int que define un color RGB con el cual se rellena completamente el View, cubriendo uniformemente toda la superficie, borrando a su vez todo lo que se haya dibujado anteriormente.
2. Luego de pintar el fondo, se llama el m´etodo drawGrid(canvas), el cual se encarga de: