CONTENIDO INTRODUCCIÓN ...................................................................................................................................................3 CAPÍTULO 1 DISEÑO E IMPLEMENTACIÓN DE UN MAPEO NO LINEAL.......................................................................................5 1.1 Tent Map ............................................................................................................................................................................... 5 1.2 Implementación electrónica del mapeo casa de campaña...................................................................................... 7 1.3 Aplicación del circuito electrónico mapeo casa de campaña ............................................................................... 13 CAPÍTULO 2 CONVERSOR A/D DEL DSPIC30F4013 Y CONVERSOR D/A DACO8OO.................................................................... 16 2.1 2.2 2.3 2.4 2.5 2.6 2.7 El microcontrolador DSPIC30F4013 .......................................................................................................................... 16 Conversor A/D de 12-bits ............................................................................................................................................... 16 El convertidor digital-analógico y analógico-digital ............................................................................................. 18 Características de un DAC .............................................................................................................................................. 18 Resolución .......................................................................................................................................................................... 19 Ecuación de entrada-salida ............................................................................................................................................ 21 Características del ADC ................................................................................................................................................... 21 2.7.1 Ecuación de entrada-salida ................................................................................................................................. 21 2.8 Convertidor digital a analógico de 8 bits: El DAC 0800 .......................................................................................... 23 2.9 Aumento de resolución de conversores ...................................................................................................................... 25 CAPÍTULO 3 EL AMPLIFICADOR OPERACIONAL ..................................................................................................................... 29 3.1 Tecnología de amplificadores operacionales ........................................................................................................... 29 3.2 Símbolo y terminales del circuito ............................................................................................................................... 30 3.3 Configuraciones utilizadas en esta tesis...................................................................................................................... 30 3.3.1 Seguidor ..................................................................................................................................................................... 30 3.3.2 Inversor ...................................................................................................................................................................... 31 3.3.3 No inversor ................................................................................................................................................................ 32 3.3.4 Sumador inversor .................................................................................................................................................... 32 CAPÍTULO 4 CARACTERIZACIÓN Y RESULTADOS DEL TENT MAP............................................................................................. 34 CONCLUSIONES .......................................................................................................................................................................... 58 APÉNDICE A MANUAL DE PROGRAMACIÓN Y CONSTRUCCION DE PROYECTOS ....................................................................... 60 A1.1 Introducción .................................................................................................................................................................... 60 A1.2 Practica 1, Construcción de un sistema mínimo.................................................................................................... 60 A1.3 Uso del puerto ICSP ....................................................................................................................................................... 62 2 A1.4 Precauciones al usar el ICSP ....................................................................................................................................... 64 A1.5 El programador MASTER-PROG USB ........................................................................................................................ 65 A1.6 Uso del MPLAB Y MPLAB C30 compiler.................................................................................................................... 65 A1.7 Práctica 2, los puertos de entrada y salida ............................................................................................................. 68 A1.8 Práctica 3, el temporizador (Timer)......................................................................................................................... 71 A1.9 Práctica 4, el UART ........................................................................................................................................................ 74 A1.10 Práctica 5, uso del convertidor analógico digital ............................................................................................... 80 BIBLIOGRAFÍA ........................................................................................................................................................................... 92 3 INTRODUCCIÓN La Teoría del Caos es una denominación popular de la rama de las matemáticas y la física que estudia lo complicado, lo impredecible, lo que no es lineal. De manera más técnica, es una rama de la matemática que trata ciertos tipos de comportamientos aleatorios; es decir, caóticos de los sistemas dinámicos. La Teoría del Caos no es necesariamente una teoría, sino más bien un gran campo de investigación que abarca líneas de pensamiento, y que gracias a los valiosos conocimientos aportados por diversos científicos a la formación de su cuerpo teórico, es que amenaza en convertirse en una ciencia por derecho propio. Día a día se fortalece más, encontrando cabida en muchos rincones y en ambientes de investigación científica, como la económica, biológica, matemática, etc. Aparentemente es un eslabón perdido de la ciencia que promete dar una nueva perspectiva a la explicación de eventos en ambientes dinámicos y turbulentos, alejándose cada vez más la visión mecanicista que ha predominado en nuestros modelos mentales. Lo interesante del caos es que se puede llegar a pensar en una ley universal, en la que todo fluye con todo e interactúa de una forma que para nuestro entender es aleatorio y caótico, pero que puede llevar un orden. La teoría del caos nos hace pensar mucho más allá de los ejemplos concretos que nos encontramos, y de los cuales algunos se han hecho mención en este trabajo. Hablar del caos parece ser muy complicado sin embargo, muchos de los fenómenos aparentemente impredecibles e incalculables están regidos por leyes sumamente simples, tales como los conocidos fractales de Mandelbrot, las líneas de Turíng, la reacción BZ de Belousov, y las leyes de Lorenz. Descubrieron distintas facetas de una gran idea, es decir dentro de lo impredecible existen patrones y estructuras. Pero que tienen en común el clima de Lorenz y los químicos de Belousov siendo sistemas muy complicados y distintos, en primera es que se basan en sorprendentemente simples reglas matemáticas, en segunda estas reglas tienen una propiedad única y es referida como acoplamiento o retroalimentación. 4 En este trabajo se muestra una nueva visión de algunos de los beneficios que se pueden obtener del comportamiento caótico de un sistema en específico. La teoría del caos se relaciona también con la familia de mapas tienda casa de campaña que es una subclase de los mapas PWL que constan únicamente de dos intervalos. Dentro de esta familia a su vez se pueden distinguir cuatro subfamilias: el mapa de tienda de campaña o “tent-map" (TM), el mapa de tienda de campaña sesgado o “skew tent-map" (SKTM), el mapa de tienda de campaña simétrico o “symmetric tent-map" (S-TM), y el mapa de tienda de campaña sesgado bipolar o “bipolar skew tent-map" (BSK-TM). En este trabajo de tesis, se propone realizar un circuito electrónico con la posibilidad de generar secuencias aleatorias basadas en la función del mapeo casa de campaña (TM), siendo esta propuesta una de las realizaciones electrónicas más simples que se puedan dar para generar este tipo de comportamiento. La característica principal del circuito para generar el mapeo casa de campaña es su fácil implementación, debido a que se usan solamente componentes analógicos, aunque para realizar las operaciones iterativas es necesario utilizar una etapa digital. Esta tesis consta de cuatro etapas importantes: 1. Circuito generador del mapeo casa de campaña “TENT MAP”. 2. Circuito convertidor Analógico a Digital de 12 bits a partir del IC DSPIC30F4013 de MICROCHIP. 3. Circuito convertidor Digital a Analógico de 12 bits a partir de dos convertidores digitalanalógico DAC0800 de 8 bits. 4. El amplificador operacional. En los capítulos siguientes, se hablará del desarrollo de cada una de las etapas del proyecto, en el orden antes mencionado. 5 CAPÍTULO 1 DISEÑO E IMPLEMENTACI0N DE UN MAPEO NO LINEAL Un número aleatorio es un número generado siguiendo una aproximación no determinística y es equiprobable de ser generado dentro de un rango finito. En la actualidad, la generación de números aleatorios es una tarea muy importante, a causa de que los números aleatorios son la base para el desarrollo de campos como la criptografía [1], simulación por computadoras, video juegos, etc. La generación de secuencias aleatorias por lo general se realiza por medio de computadoras, que son máquinas de Turíng gobernadas por leyes determinísticas, que generan secuencias pseudoaleatorias de 16 a 64 bits, las cuales comienzan con una semilla 𝑥𝑥0 . Así cuando se utiliza esta semilla para llevar a cabo la secuencia pseudoaleatoria de compresión, estamos solamente utilizando la entropía generada por esa semilla. Y cuando se lleva a cabo la rutina de descompresión, resulta que tiene que ser igual a la rutina generadora pseudoaleatoria de compresión, la cual usualmente no es de más de unos cientos de bits de información. Debido a que la rutina de generación usualmente es del dominio público, esta no representa una fuente de entropía por ser solamente la de la semilla. Por lo tanto, la generación de la secuencia pseudoaleatoria no genera entropía inviolable [2]. La ecuación del circuito electrónico propuesto se puede normalizar y encontrar que se describe por: 𝑥𝑥𝑛𝑛+1 = 𝐴𝐴(1 − |2𝑥𝑥𝑛𝑛 − 1|𝛼𝛼 ), 𝑛𝑛 = 0, 1, 2 …, donde la ecuación describe un mapeo de ℝ a ℝ. La ecuación anterior puede representar el mapeo logístico o la casa de campaña dependiendo si 𝛼𝛼 es igual a 2 o a 1, respectivamente (en nuestro caso será igual a 1), y A es el parámetro de bifurcación que controla las propiedades del mapeo. 1.1 Tent Map Los sistemas dinámicos no lineales en tiempo discreto se describen generalmente como un mapa iterativo 𝑓𝑓 ∶ ℝ𝑘𝑘 → ℝ𝑘𝑘 dado por su ecuación de estado: 6 𝑿𝑿𝑛𝑛+1 = 𝑓𝑓(𝑿𝑿𝑛𝑛 ), 𝑛𝑛 = 0, 1, 2, …, Donde (1.1) 𝑿𝑿0 es el estado inicial, 𝑘𝑘 es la dimensionalidad del espacio de estados, 𝑿𝑿𝑛𝑛 ∈ ℝ𝑘𝑘 Es el estado del sistema al tiempo 𝑛𝑛 y 𝑿𝑿𝑛𝑛 +1 denota el siguiente estado del sistema. La interpretación del vector de estados depende del contexto, por ejemplo, en poblaciones biológicas 𝑿𝑿𝑛𝑛 es normalmente el tamaño de la población en la generación 𝑛𝑛, en epidemiología es la fracción de la población infectada al tiempo 𝑛𝑛, mientras que en economía puede ser el precio por unidad al tiempo 𝑛𝑛 para un cierto producto comercial [18]. Las repeticiones iterativas de 𝑓𝑓 proporcionan una secuencia de puntos {𝑋𝑋𝑛𝑛 } 𝑛𝑛∞=0 que se conoce como una órbita. En la década del 70, el biólogo Robert May [3] descubrió que procesos iterativos muy sencillos estudiados en modelos biológicos, originaban comportamientos sumamente complejos y caóticos. Trabajando con la ecuación del modelo logístico de crecimiento poblacional, May encontró un sistema caótico que a diferencia de los anteriores, era unidimensional. El mapeo casa de campaña es una de las funciones de iteración más simples, ya sea solo o en compañía de otras aplicaciones. Este tiene la forma de una tienda como se muestra en la Figura 1.1, y en su evolución toma un punto 𝒳𝒳𝑛𝑛 sobre el intervalo [0, 1] y se mapea en otro punto auxiliado por la siguiente ecuación: 𝒳𝒳𝑛𝑛+1 = � 𝜇𝜇𝒳𝒳𝑛𝑛 𝜇𝜇(1 − 𝒳𝒳𝑛𝑛 ) para 𝒳𝒳n < para 1 2 7 1 2 , ≤ 𝒳𝒳𝑛𝑛 , (1.2) Figura 1.1. Gráfica del mapeo casa de campaña. Donde 𝒳𝒳𝑛𝑛 ∈ [0,1], y 𝜇𝜇 es un parámetro real de bifurcación comprendido en el intervalo [1, 2] que controla las propiedades del mapeo casa de campaña. Muchas de las propiedades básicas de este mapeo se encuentran en el libro de Elaydi [4] sobre caos discreto. A través de la variación del parámetro de control 𝜇𝜇 del mapeo casa de campaña se podrían examinar los diagramas de bifurcación del sistema realizado y su posterior comprobación con el modelo teórico, apreciándose una excelente correspondencia entre el desarrollo experimental y el modelo matemático. 1.2 Implementación electrónica del mapeo casa de campaña En esta sección, se presenta una de las realizaciones electrónicas más simples del mapeo casa de campaña, por ejemplo en Tanaka et al. [5] se muestra un diagrama de un circuito típico de un mapeo caótico en una dimensión, junto con su operación de iteración la cual se muestra en la Figura 1.2. Por lo tanto en esta sección realizaremos una novedosa propuesta de 𝑓𝑓(𝑥𝑥) . 8 Figura 1.2. Diagrama a bloques típico del mapeo casa de campaña. Que es un excelente modelo de ingeniería del correspondiente sistema matemático. En diferentes implementaciones del circuito casa de campaña [6, 7], se emplean los multiplicadores analógicos como núcleo del circuito para su realización, con una normalización de la señal por un factor de 10. Esta normalización, es necesaria a causa de las restricciones físicas en el mismo multiplicador analógico. El punto de inicio es el diagrama a bloques del mapeo casa de campaña que se muestra en la Figura 1.3. Típicamente este circuito contiene amplificadores operacionales, los cuales realizan operaciones lineales como la integración y suma, así como de elementos acoplados de circuitos integrados que desempeñan las operaciones no lineales, como la multiplicación. Aquí se describe un circuito nuevo que contiene componentes activos, velocidades de radiofrecuencia capaz de reproducir las transiciones del estado estable a caos, como se observa en la ecuación casa de campaña cuando el parámetro de bifurcación se sintoniza. El diagrama de flujo usado para la construcción del circuito electrónico mapeo casa de campaña se muestra en la Figura 1.3(a). El comportamiento casa de campaña se basa sobre dos líneas rectas dadas por 𝑙𝑙1 ∶ 𝜇𝜇𝑉𝑉𝑖𝑖𝑖𝑖 y 𝑙𝑙2 ∶ −2𝜇𝜇𝑉𝑉𝑖𝑖𝑖𝑖 + 1 con dominio [0, ) y [0.5, ), respectivamente. La salida 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 se da por 𝑙𝑙1 cuando 𝑉𝑉𝑖𝑖𝑖𝑖 permanece en el intervalo [0V, 0.5V) y por (𝑙𝑙1 + 𝑙𝑙2) cuando 𝑉𝑉𝑖𝑖𝑖𝑖 está en el intervalo [0.5V, 1V). La respuesta de la rama inferior y superior se muestra en la Figura 1.3 (b) y (c), respectivamente. Este enfoque permite realizar los cambios en la pendiente de 𝜇𝜇 a −𝜇𝜇. Se puede pensar que el sistema tiene dos puntos críticos, 𝑉𝑉𝑖𝑖𝑖𝑖 < 0 y 𝑉𝑉𝑖𝑖𝑖𝑖 > 1 . 9 Sin embargo, la respuesta del circuito es cero para esas entradas. En ausencia de ruido, el circuito mapeo casa de campaña podrá permanecer en uno de esos puntos fijos, pero en el mundo real de los componentes electrónicos analógicos siempre existe algún ruido que genera la dinámica en el circuito. Figura 1.3. (a) Diagrama a bloques del mapeo casa de campaña usado para la construcción del circuito electrónico. (b) Respuesta de la rama inferior del diagrama a bloques. (c) Respuesta de la rama superior del diagrama a bloques. Considerando lo anterior la Figura 1.4 muestra el diagrama esquemático del mapeo casa de campaña, el cual consiste de cinco amplificadores operacionales (de U1 a U5), cuatro diodos (D1 - D4), 13 resistencias (de R1 a R13) y una fuente de voltaje dc (Vdc). La simpleza del circuito se debe al hecho de que las operaciones matemáticas lineales de conmutación, se realizan por los amplificadores operacionales en el bloque de conmutación, mostrado en la Figura 1.3. Asumiendo un desempeño ideal de todos los componentes, el circuito en la Figura 1.4 se modela por la siguiente ecuación: 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = 𝑅𝑅9 𝑅𝑅6 𝑅𝑅8 𝑅𝑅7 0 𝑉𝑉𝑖𝑖𝑖𝑖 − � 𝑅𝑅9 𝑅𝑅5 𝑅𝑅10 𝑅𝑅4 � 𝑅𝑅3 𝑉𝑉𝑖𝑖𝑖𝑖 𝑅𝑅1 − 𝑅𝑅3 2𝑅𝑅2 � para para 𝑉𝑉𝑖𝑖𝑖𝑖 < 𝑉𝑉𝑖𝑖𝑖𝑖 ≥ 𝑅𝑅1 2𝑅𝑅2 𝑅𝑅1 (1.3) 2𝑅𝑅2 Donde 𝑉𝑉𝑖𝑖𝑖𝑖 y 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 son los voltajes de entrada y de salida respectivamente, del circuito electrónico mapeo casa de campaña. Debe notarse que el bloque de conmutación mostrado en la Figura 1.3 se realiza a través del nodo b. 10 Figura 1.4 Diagrama esquemático del circuito electrónico mapeo casa de campaña. 0 𝑉𝑉𝑏𝑏 = � 𝑅𝑅5 𝑅𝑅4 �− 𝑅𝑅3 𝑉𝑉𝑖𝑖𝑖𝑖 𝑅𝑅1 + 𝑅𝑅3 2𝑅𝑅2 � para para V𝑖𝑖𝑖𝑖 < 𝑉𝑉𝑖𝑖𝑖𝑖 ≥ 𝑅𝑅1 2𝑅𝑅2 𝑅𝑅1 (1.4) 2𝑅𝑅2 Así, la Ecuación (1.3) tienen un comportamiento equivalente al de la Ecuación (1.2) para los valores de los componentes dados en la Tabla 1.1, y reemplazando 𝑉𝑉𝑖𝑖𝑖𝑖 y 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 por 𝑥𝑥𝑛𝑛 y 𝑥𝑥𝑛𝑛+1 , respectivamente. En realidad, este conjunto de valores no es único ya que la Ecuación (1.3) contiene más de un parámetro, por lo que un diseñador de circuitos tiene la libertad de escoger los componentes en particular que satisfacen otras restricciones de diseño para su aplicación en específico. A pesar de las reactancias parásitas, el ancho de banda finito de los componentes activos y otras perturbaciones experimentales, el circuito electrónico muestra un comportamiento igual al del modelo matemático dado por la Ecuación (1.2). El circuito electrónico se montó sobre una tarjeta de circuito impreso (PCB), en el que se usó el amplificador operacional LM324 [8] alimentado con una fuente de poder de 15 V y puesto sobre un socket. El voltaje 𝑉𝑉𝑑𝑑𝑑𝑑 es suministrado por una fuente variable de dc con un rango de salida de 0 - 30 V. 11 Dispositivo 𝑅𝑅1,2,3,4,7,8,10,12,13 𝑅𝑅5,6 𝑅𝑅11 𝐷𝐷1,2,3,4 𝑈𝑈1,2,3,4,5 Valor 1 kΩ Resistencia 5 kΩ Potenciómetro 100 kΩ Potenciómetro 1n1419 Diodo LM324 Op. Amp. Tabla 1.1. Valores de los componentes electrónicos empleados en la construcción del circuito electrónico mapeo casa de campaña. Y para tener una operación iterativa, ver Figura 1.2, el circuito se auxilia de un microcontrolador DSPIC30f4013 [9] de la compañía Microchip, y dos IC convertidor D/A DAC0800 [10] de National Semiconductors con un tiempo de procesamiento de 100 𝜇𝜇𝜇𝜇 entre muestras de voltaje. Obviamente, existen diferentes formas de desempeñar esta operación iterativa, pero esto depende del diseñador y la aplicación. El valor del parámetro de bifurcación 𝜇𝜇 se puede fijar a ciertos valores al ajustar los potenciómetros R5 y R6, localizados en la retroalimentación de los amplificadores operacionales U2 y U3. La relación entre los resistores R5 y R6 de la Ecuación (1.5) con el valor de la Ecuación (1.2) se da sí 𝜇𝜇 = 𝑅𝑅6 y 𝑅𝑅5 = 2𝑅𝑅6 = 2 𝜇𝜇. 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = 𝑅𝑅6 1𝑘𝑘Ω 𝑉𝑉𝑖𝑖𝑖𝑖 − � 0 𝑅𝑅5 1 � − 𝑉𝑉𝑖𝑖𝑖𝑖 � 1𝑘𝑘Ω 2 para para 𝑉𝑉𝑖𝑖𝑖𝑖 < 𝑉𝑉𝑖𝑖𝑖𝑖 ≥ 1 2 1 (1.5) 2 Simplificando la Ecuación (1.5). 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = 𝑅𝑅6 � 1𝑘𝑘Ω 𝑅𝑅5 2𝑘𝑘Ω 𝑉𝑉𝑖𝑖𝑖𝑖 para (1 − 𝑉𝑉𝑖𝑖𝑖𝑖 ) para 12 𝑉𝑉𝑖𝑖𝑖𝑖 < 𝑉𝑉𝑖𝑖𝑖𝑖 ≥ 1 2 1 2 (1.6) Por lo que al considerar diferentes valores de R5 y R6, el circuito puede mostrar parte de su dinámica. La Figura 1.5 muestra parte del diagrama de bifurcaciones del circuito al sintonizar el parámetro 𝜇𝜇, para valores de los resistores en el intervalo cerrado [1𝑘𝑘Ω, 4𝑘𝑘Ω]. En esta figura se pueden observar puntos fijos, oscilaciones periódicas, periodos doble y caos. También se puede ver que el circuito exhibe el rango completo del comportamiento del mapeo casa de campaña. De hecho, los resultados experimentales obtenidos de la dinámica de este circuito están acorde con los resultados teóricos. Para 𝜇𝜇 = 2 en la Figura 1.6 se muestra una serie de tiempo del voltaje de salida. Las mediciones para cada serie de tiempo experimental, contienen 650 datos colectados para diferentes valores del parámetro de bifurcación 𝜇𝜇. El ruido de la serie de tiempo 𝑟𝑟𝑛𝑛 se estimó por la siguiente ecuación: 𝑟𝑟𝑛𝑛 = 𝑥𝑥𝑛𝑛+1 − 𝑓𝑓 (𝑥𝑥𝑛𝑛 ) (1.7) Donde 𝑥𝑥𝑛𝑛 y 𝑥𝑥𝑛𝑛+1 son los datos experimentales del circuito mapeo casa de campaña, y 𝑓𝑓(. ) se da por la Ecuación (1.2). En la Figura 1.7 se muestra el histograma del ruido calculado para 650 datos de la señal del tiempo con 𝜇𝜇 = 2. Figura 1.5. Diagrama de la bifurcación experimental del mapeo casa de campaña. 13 1.3 Aplicación del circuito electrónico mapeo casa de campaña En esta sección se muestran los resultados experimentales del circuito, como generador de números aleatorios. La Figura 1.8 muestra una serie experimental de números pseudoaleatorios generados con el circuito casa de campaña, tomando como condición inicial un valor de 0.51 y una 𝜇𝜇 de 2. La serie de tiempo solamente muestra un bloque de 50 datos experimentales con valores entre 0 y 1 que es el rango de operación del circuito. Figura 1.6 Serie del tiempo de la dinámica caótica generada por el mapeo casa de campaña para 𝜇𝜇 = 2. Figura 1.7. Histograma del ruido estimado por medio de la Ecuación (1.6). 14 Figura 1.8. Datos experimentales. Para analizar la aleatoriedad de los números generados por el circuito (conjunto de datos de 1000 muestras) se realizan dos pruebas únicamente. La primera es realizada para determinar la divergencia de los datos con respecto a la distribución uniforme, prueba de Kolmogorov- Smirnov. Esta es una prueba apropiada para determinar cuando dos distribuciones de probabilidad en una dimensión difieren. La Figura 1.9 muestra los resultados cuando esta prueba se aplica al generador de números aleatorios. Los resultados obtenidos del análisis para la máxima desviación estándar son de 𝛼𝛼 = 5% y desviación permitida de 𝛼𝛼 = 0.185072. Por lo tanto, no se puede rechazar la hipótesis de distribución uniforme. La segunda prueba se realiza para investigar el nivel de autocorrelación de los datos experimentales, ver las páginas 38, 39 y 40 en [11]. Los resultados de esta prueba se muestran en la Figura 1.10. Se aprecia que la autocorrelación decae muy rápido con el incremento de la distancia, esto se toma como un indicador de la existencia de un comportamiento estable independiente en los datos muestreados (la hipótesis de no autocorrelación no es rechazada). Ver también las páginas 74 y 75 en [12]. En sistemas caóticos, existe una extrema sensibilidad por la dinámica del sistema con respecto a las condiciones iniciales. 15 Figura 1.9. Prueba de Kolmogorov-Smirnov Figura 1.10. Autocorrelación de los datos muestreados. En esta figura 𝑘𝑘 es la separación relativa entre dos muestras y 𝑅𝑅𝑦𝑦𝑦𝑦 (𝑘𝑘) es la autocorrelación. Como un resultado, dos órbitas caóticas con diferente condición inicial, que permanecen en una pequeña vecindad en un espacio vectorial, divergirán y no habrá correlación entre ellas. 16 CAPÍTULO 2 CONVERSOR A/D DEL DSPIC30F4013 Y CONVERSOR D/A DAC0800 2.1 El microcontrolador DSPIC30F4013 Un Microcontrolador es un circuito integrado o más comúnmente llamado chip, que cumple las funciones de cerebro de cualquier aplicación, y es responsable del buen funcionamiento del circuito que gobierna. Como todo cerebro, este chip tiene que procesar alguna información contenida en su memoria y de esta forma decidir qué hacer. A esta información que debe tener el chip se le llama software o programa de aplicación. Microchip, el líder mundial de los microcontroladores de 8 bits, ha desarrollado los DSC (Controlador Digital de Señal), que son una combinación de microcontroladores clásicos con los recursos básicos de los DSP (Procesador Digital de Señal). De esta forma los DSC ocupan el nivel intermedio entre los MCU y los DSP. En la actualidad ya se comercializan más de 50 modelos. El modelo que nos interesa en este caso es el DSPIC30F4013. Algunos de los rasgos más característicos del microcontrolador son: arquitectura Harvard modificada, 84 instrucciones básicas, ancho de instrucciones de 24 bits, y un ancho de datos de 16 bits. Puede almacenar 48 Kbytes en su memoria de programa, tiene una RAM de 2 Kbytes y una EEPROM de 1 Kbyte, una velocidad de operación de 30 MIPS, 33 fuentes de interrupción, 16 registros de trabajo de 16 bits y 2 acumuladores de 40 bits. Uno de los componentes fundamentales en un microcontrolador es el conversor A/D [13]. El presente trabajo se centra en el estudio del conversor integrado en el DSPIC30F4013, mencionado anteriormente. 2.2 Conversor A/D de 12-bits El conversor A/D de 12-bits permite la conversión de señales analógicas de entrada a números digitales de 12 bits. Provee una velocidad de muestreo de 100,000 muestras por segundo. Tiene hasta 16 entradas analógicas multiplexadas en un amplificador de muestreo y 17 retención (sample & hold). La salida al amplificador es la entrada al conversor, que genera el resultado. La referencia analógica de voltaje se puede seleccionar por software a las terminales AVDD /AVSS o VREF+/VREF-. El conversor A/D posee la característica especial de funcionar con el dispositivo en modo Sleep (si el oscilador está en RC). El conversor tiene 6 registros de 16-bits • Registro de Control A/D 1 (ADCON1) • Registro de Control A/D 2 (ADCON2) • Registro de Control A/D 3 (ADCON3) • Registro de configuración de modo simple/diferencial (ADCHS) • Registro de configuración del puerto A/D (ADPCFG) • Registro de selección de los canales a muestrear (ADCSSL) Los registros ADCON1, ADCON2 y ADCON3 controlan la operación del conversor. El registro ADCHS selecciona los canales de entrada. ADPCFG configura los pines del puerto como entradas analógicas ó entradas/salidas digitales. Los temas que se enumeran a continuación se localizan en las hojas de datos dedicadas al modulo A/D, en ellas se puede encontrar a detalle las distintas formas de configuración y operación del módulo. 1. El buffer de resultados 2. La operación de conversión 3. Selección de la secuencia de conversión 4. Programación del disparo de conversión 5. Interrumpir una conversión 6. Seleccionar el tiempo de conversión 7. Requisitos de la adquisición A/D 8. Modos de apagado 9. Funcionamiento del conversor en estado sleep o idle del procesador 10. Efectos del reset 11. Formatos de salida 12. Configuración de los pines del puerto analógico 13. Consideraciones de conexión 18 2.3 El convertidor digital-analógico y analógico-digital Los procesos que se dan en el mundo real producen señales analógicas cuya variación es continua. La velocidad de esta variación a veces es muy lenta, como es el caso de las variaciones de la temperatura; pero también pueden ser muy rápidas, como en un sistema de audio, la mejor manera de describir los procesos analógicos es mediante números decimales y letras del alfabeto. Por otra parte, en los microprocesadores y en las computadoras para representar números y letras o símbolos se utilizan patrones binarios. Es complicado guardar, manejar, comparar, calcular o recuperar datos de manera precisa utilizando para ello tecnología analógica. En cambio las computadoras si son capaces de realizar estas tareas rápidamente; pueden trabajar prácticamente con una ilimitada cantidad de información, de manera precisa, utilizando para ello técnicas digitales. Debido a lo anterior surgió la necesidad de contar con convertidores que sirvan para vincular entre sí a los mundos analógico y digital. Mediante el convertidor analógico a digital (ADC) el mundo analógico se comunica con las computadoras. Las computadoras se comunican con las personas y los procesos físicos mediante convertidores digitales a analógicos (DAC). 2.4 Características de un DAC Para explicar claramente las características más importantes de un DAC deben plantearse tres preguntas: Primera: ¿Cuántos valores de salida es posible obtener con un DAC? Segunda: ¿en qué magnitud cambia el voltaje de salida en respuesta al cambio en la palabra de entrada digital, al cambiar esta en un bit menos significativo (Least significant bit, LSB)? Tercera: ¿Cuál es la ecuación de entrada- salida del DAC mediante la cual se calcula el voltaje de salida cuando se conoce la palabra de entrada digital. 19 2.5 Resolución En la Figura 2.1 se muestra el símbolo del circuito del DAC de 4 bits, así como sus características de entrada-salida. Hay cuatro entradas digitales, lo que indica que se trata de un DAC de 4 bits. V0 = salida analógica DAC D3 D2 D1 D0 = entradas digitales Figura 2.1 Símbolo del convertidor digital a analógico. Por cada entrada digital se requiere una señal eléctrica que represente ya sea un 1 lógico o un 0 lógico, D0 es el bit menos significativo (Least significant bit, LSB), D3 es bit más significativo (most significant bit, MSB). En la Figura 2.2 se grafica el voltaje de salida analógico en función de 16 posibles palabras de entrada digitales. También se muestra el valor de v0 correspondiente a diversas palabras digitales. 20 Figura 2.2 Gráfica del voltaje analógico de salida vs. Código digital de entrada para un DAC de 4 Bits La resolución se define de dos maneras: 1. La resolución es la cantidad de valores de salida analógicos que se puede obtener con un DAC. En el caso de un DAC de n bits: 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟ó𝑛𝑛 = 2𝑛𝑛 (2.1) 2. También se define la resolución como la relación del cambio de 1 LSB en las entradas digitales. 21 Para calcular la resolución de acuerdo con esta última definición, se necesita contar con dos tipos de información que pueden obtenerse en hojas de datos del fabricante del dispositivo: el voltaje de salida a escala total, V0fs, y la cantidad de entradas digitales, n. Se define a V0fs como el voltaje que se obtiene cuando todas las entradas digitales son 1. Por lo tanto, la resolución es: 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟ó𝑛𝑛 = 𝑉𝑉 0𝑓𝑓𝑓𝑓 2𝑛𝑛 −1 (2.2) 2.6 Ecuación de entrada-salida En el caso de un DAC, mediante una función de transferencia o ecuación de entrada-salida se da respuesta a la pregunta: ¿en qué medida se modifica el voltaje de salida analógico como respuesta a un cambio en una palabra de entrada digital? Para obtener esta ecuación se multiplica la resolución por el cambio que se produce en los LSB. Expresado lo anterior en forma de ecuación: 𝑉𝑉0 = 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑥𝑥 𝐷𝐷 (2.3) En la que V0 es el voltaje de salida analógico, la resolución esta expresada en la Ecuación (2.2) y D es el valor decimal de la entrada digital. 2.7 Características del ADC 2.7.1 Ecuación de entrada-salida En la Figura 2.2 se grafica la salida digital de un ADC ideal de 4 bits en función de un voltaje de entrada analógico. Al igual que en el caso de los DAC, la resolución de un ADC se define de dos maneras. Primera: la resolución es la cantidad máxima de códigos digitales de salida. Esta manera de definir la resolución del ADC es similar a la del ADC y a continuación se repite; 22 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟ó𝑛𝑛 = 2𝑛𝑛 (2.4) La resolución también se define como la relación del cambio necesario en el valor del voltaje de entrada, Vi, necesario para producir una salida digital en la que todos los dígitos sean 1, la resolución se calcula de la siguiente manera: 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟ó𝑛𝑛 = Vi Entrada analógica 𝑉𝑉𝑖𝑖𝑖𝑖𝑖𝑖 (2.5) 2 𝑛𝑛 −1 ADC D3 D2 D1 D0 Figura 2.3 Figura 2.4 Símbolo de un ADC 4 Bits Características de entrada-salida de un ADC 23 La expresión más sencilla de la ecuación de entrada-salida de un ADC es la siguiente: 𝐶𝐶ó𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 = 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 𝑑𝑑𝑑𝑑 𝐷𝐷 (2.6) En la cual D es el valor decimal de la señal digital; o bien, D es igual a la cantidad de bits presentes en la salida digital; D se calcula mediante la expresión: 𝐷𝐷 = 𝑉𝑉𝑉𝑉 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ó𝑛𝑛 (2.7) 2.8 Convertidor digital a analógico de 8 bits: El DAC 0800 El DAC 0800 es un DACM (DAC Multiplidador) rápido y económico, encapsulado en un DIP de 16 terminales (“pines”) en la Figura 2.5 se estudian sus principios de funcionamiento haciendo referencia a la tarea que se realiza es sus terminales. Las terminales 13 y 3 son las terminales de alimentación positiva y negativa respectivamente, y su valor puede ir de ± 4.5 a ±18 V. Deben conectarse con capacitores de 0.1µF, como se muestra en la Figura 2.5. La flexibilidad del DAC 0800 aumenta si en vez de una entrada de referencia se utilizan dos de ellas. Las terminales 14 y 15 trabajan con voltajes de referencia tanto positivos como negativos. En el caso de la Figura 2.5 existe una entrada de voltaje de referencia positivo. Se puede ajustar la corriente de escalera de entrada, Iref, muy fácilmente, desde 4µA hasta 4mA; su valor característico es de 2mA. Se puede conectar el DAC de manera que se tenga una salida de voltaje unipolar o bipolar como se muestra en la figuras 2.5 y 2.6 respectivamente, en esta tesis se utiliza la configuración de salida unipolar. 24 Figura 2.5 Conexión de un DAC-0800 para un voltaje unipolar. 25 En las terminales de la 5 a la 12 se encuentran las entradas digitales. La número 5 es la del bit más significativo (MSB), D7. La terminal 12 es la del bit menos significativo (LSB), D0. Las terminales son compatibles con TTL o CMOS. La entrada lógica “0” es de 0.8 V, o menos. El “1” lógico es de 2.0 V, o más, independientemente de los voltajes de alimentación. Por lo general, la terminal 1, VLC está conectada a tierra. Y también se utiliza para ajustar el voltaje de umbral de entrada lógica, VTH, de acuerdo con la igualdad VTH = VLC + 1.4 V. Estas entradas digitales controlan ocho interruptores de corriente internos. 2.9 Aumento de resolución de conversores Como se explicó en las secciones anteriores un conversor digital-analógico tiene como entrada una señal digital y su salida es una señal analógica. El valor de la salida depende de una tensión de referencia VREF suministrada al conversor. Ahora sea la entrada Ain una señal (o palabra) digital de N bites de la forma: Ain = a1 2 N −1 + a 2 2 N − 2 + ... + a N −1 21 + a N 2 0 (2.8) Donde los coeficientes ai (bites) pueden tomar los valores 0 ó 1. Se define aN como el bit menos significativo (LSB) y a1 como el bit más significativo (MSB). La señal de salida del conversor (Vo) viene dada por: Vo = Ain VREF 2N (2.9) El esquema que debe seguirse se muestra en la Figura 3.10 26 Figura 2.6 DAC0800 conectado como voltaje de salida bipolar. 27 Figura 2.7 Construcción de un DAC de 12 bits a partir de dos de 8 bits Teniendo en cuenta las ecuaciones 2.8 y 2.9, la salida de un conversor de 12 bits debe ser de la forma: VO = (c1 2 −1 + c2 2 −2 + ... + c12 2 −12 ) VREF (2.10) Para los conversores A y B, tendremos las salidas VOA y VOB: VOA = (a1 2 −1 + a 2 2 −2 + ... + a8 2 −8 ) V REF (2.11) VOB = (b1 2 −1 + b2 2 −2 + ... + b8 2 −8 ) V REF (2.12) Teniendo en cuenta que en la entrada Bin se han anulado los 4 bits más significativos, tras dividir la señal por 24 = 16 obtenemos: 28 V 'OB = VOB (b5 2− 9 + b6 2−10 + b7 2−11 + b8 2−12 ) VREF 24 (2.13) Puede comprobarse que la salida VOUT = VOA + V’OB es justamente de la forma indicada en la Ecuación 2.10. Los 8 bits más significativos corresponden a la entrada Ain y los 4 menos significativos corresponden a los 4 bits menos significativos de la entrada Bin. El montaje de la Figura 2.5 puede modificarse para construir un conversor de 12 bits si se añade un segundo conversor, tal y como se muestra en la Figura 2.8 siguiendo el esquema de la Figura 2.7. Las resistencias R1 y R2 constituyen un divisor de corriente para la salida del segundo conversor. Es importante que el divisor de corriente divida exactamente por 16. Tome R1 del orden de 1 KΩ. Mida el valor de R1 y utilice un potenciómetro para fijar el valor de R2 con la mayor precisión posible. Figura 2.8 Modificación del montaje de la Figura 2.5 para construir un conversor de 12 bits. Las conexiones de los conversores y los niveles de alimentación son iguales que en la Figura 2.5. La resistencia conectada al pin 14 del segundo conversor debe ser igual a la resistencia conectada en el primer conversor y a la resistencia conectada entre los pines 6 y 2 del operacional. 29 CAPÍTULO 3 EL AMPLIFICADOR OPERACIONAL Uno de los dispositivos electrónicos más versátiles y de mayor uso en aplicaciones lineales es el amplificador operacional, también conocido como OP AMP en ingles. En el mundo de la electrónica los amplificadores operacionales son populares por su modo fácil de usar, y por sus configuraciones sencillas además de ser de bajo costo. Se les da el termino de operacional debido a que se pueden realizar operaciones matemáticas, es decir, sumar, restar, multiplicar incluso resolver ecuaciones diferenciales, en la actualidad estas operaciones se realizan más rápidamente en computadoras digitales con mayor velocidad y precisión, sin embargo la era digital no condena la desaparición de los amplificadores operacionales. Conforme la tecnología avanza se hace más frecuente el uso de microcomputadoras, microcontroladores, así como circuitos y sistemas integrados para el procesamiento de señales, pero existen muchas aplicaciones digitales que requieren de interfaces con amplificadores operacionales. En esta sección se presentan sólo las configuraciones utilizadas en esta tesis. 3.1 Tecnología de amplificadores operacionales Se utilizan varias técnicas para la fabricación de amplificadores operacionales, al inicio solo existían los transistores bipolares, actualmente se han desarrollado transistores de efecto de campo y están presentes dentro de los OP AMP, debió a que consumen corrientes muy pequeñas permiten la variación de los voltajes dentro del límite del voltaje de alimentación. Los transistores con tecnología MOS (metal-oxido-semiconductor) de los circuitos de salida en el OP AMP permiten que esta varíe dentro de los límites de milivolts respecto de la fuente de alimentación. Los fabricantes también han diseñado encapsulados dobles (2) y cuádruples (4). De esta manera el encapsulado que solo tenía un OP AMP ahora puede tener dos o cuatro. Existen varios tipos de encapsulados y tamaños pero no se profundizara en el tema. 30 3.2 Símbolo y terminales del circuito El símbolo del amplificador operacional que se da en la Figura 3.1 es un triángulo que apunta en la dirección del flujo de la señal. Este componente tiene un número de identificación de parte (NIP) colocado dentro del triángulo. Figura 3.1. Símbolo del circuito para un amplificador operacional de propósito general. 3.3 Configuraciones utilizadas en esta tesis 3.3.1 Seguidor Figura 3.2 OP AMP configurado como seguidor. Se usa como un buffer, para eliminar efectos de carga o para adaptar impedancias (conectar un dispositivo con gran impedancia y viceversa). Como la tensión en las dos patillas de entradas es igual: Vout = Vin, la impedancia de entrada es infinita Zin = ∞. 31 3.3.2 Inversor Figura 3.3 OP AMP configurado como amplificador inversor. El análisis de este circuito es el siguiente: V+ = V- = 0 Definiendo corrientes: 𝑉𝑉 𝑖𝑖𝑖𝑖 − 0 𝑅𝑅𝑖𝑖𝑖𝑖 = − 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 − 0 (4.1) 𝑅𝑅𝑓𝑓 (4.2) 𝑅𝑅 𝑓𝑓 Y de aquí se despeja 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = −𝑉𝑉𝑖𝑖𝑖𝑖 𝑅𝑅𝑖𝑖𝑖𝑖 Para el resto del circuito el análisis es similar: 𝑍𝑍𝑖𝑖𝑖𝑖 = 𝑅𝑅𝑖𝑖𝑖𝑖 Por lo cual podemos controlar la impedancia por medio de Rin. 32 (4.3) 3.3.3 No inversor La ecuación de salida para esta configuración es la siguiente: 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = 𝑉𝑉𝑖𝑖𝑖𝑖 (1 + 𝑅𝑅2 𝑅𝑅2 ) (4.4) La impedancia de entrada es muy elevada: 𝑍𝑍𝑖𝑖𝑖𝑖 = ∞ Figura 3.4 OP AMP configurado como no inversor. 3.3.4 Sumador inversor Es importante mencionar que la salida en esta configuración esta invertida, para resistencias independientes R1, R2,…, Rn. 𝑉𝑉𝑜𝑜𝑜𝑜𝑜𝑜 = −𝑅𝑅𝑓𝑓 ( 𝑉𝑉1 𝑅𝑅1 + 𝑉𝑉2 𝑅𝑅2 + ⋯+ 𝑉𝑉𝑛𝑛 𝑅𝑅2 ) La ecuación se simplifica si se utilizan resistencias del mismo valor. La impedancia de entrada se da de la manera siguiente: Zn = Rn. 33 (4.5) Figura 3.5 OP AMP configurado como sumador inversor. 34 CAPÍTULO 4 CARACTERIZACION Y RESULTADOS DEL TENT MAP En los capítulos del 1 al 3 se presentó la información por separado, en este capítulo se presentan los resultados del circuito completo y las pruebas realizadas en cada parte. La información se presenta de acuerdo al esquema 4.1. 2 DAC 0800 DAC 12 bits DSPIC 30F4013 ADC 12 bits AMP_1 TENT MAP 1 5 AMP_2 5 1 Figura 4.1 Diagrama a bloques de las partes que conforman el TENT MAP. Fuente 5V Potenciómetro A/D dspic30f4013 D/A 2 DAC 0800 Figura 4.2 Diagrama a bloques para las pruebas del ADC y DAC. 35 Para verificar el correcto funcionamiento de convertidor analógico-digital de 12 bits del DSPIC30F4013 y del convertidor digital-analógico de 12 bits (2 DAC 0800) se utiliza una fuente de 10V y un potenciómetro de 10 kΩ para variar el voltaje de 0 a 5V. El sistema se conecta de acuerdo al Esquema 4.2. En la Figura 4.3 se muestra el diagrama del circuito para el DSPIC30F4013 el cual es alimentado con un voltaje de 5V DC y esta alimentación también sirve de referencia para el módulo ADC, es decir, sólo se pueden muestrear señales analógicas iguales o menores a 5 volts, si la señal es mayor al voltaje de referencia el microcontrolador sólo vera la parte correspondiente al voltaje de referencia. En la Figura 4.4 se puede observar el circuito impreso para el circuito de la Figura 4.3. La señal analógica es sensada por el microcontrolador utilizando la terminal 10, el funcionamiento en general se explica en la práctica 5 del Apéndice A, el proceso de muestreo es totalmente manual, los puntos importantes a considerar para la configuración son: • Muestreo de una sola entrada analógica • Inicio del muestreo manual • Duración del muestreo manual • Inicio de la conversión manual • La referencia positiva y negativa se toma de la alimentación. El circuito cuenta con tres LED’s indicadores: RB2 enciende después de inicializar el circuito, RB3 prende, se apaga y después se queda encendido, RB4 indica que el modulo ADC ha sido inicializado y ha comenzado a funcionar, en realidad los dos primeros se utilizan para comprobar el funcionamiento de los Timers y para verificar que el microcontrolador está alimentado. En la Figura 4.5 se muestra el diagrama correspondiente al circuito convertidor Digital-Analógico, realizado a partir de 2 IC DAC0800, existe la manera de probar por separado ambos convertidores aquí se hará conjuntamente. El circuito convertidor Digital-Analógico es alimentado con ±15 V, el voltaje de referencia es de 5V, pero; puede ser variable para cuestiones de ajuste en el voltaje de salida. En la Figura 4.6 se muestra la placa del circuito impreso correspondiente al circuito de la Figura 4.5. Para la conversión de corriente a voltaje se utiliza el amplificador operacional OP07CN de ST MICROELECTRONICS, es de bajo costo, es particularmente utilizado para aplicaciones de instrumentación, de bajo ruido y cuenta con offset extremadamente bajo 150 µV máximo. 36 Figura 4.3 Diagrama para el convertidor Analógico-Digital del microcontrolador dsPIC 30F4013. 37 Figura 4.4 Placa PCB (2 caras) correspondiente al diagrama de la Figura 4.3 Requiere de muy poca corriente de entrada (1.8nA) y alta ganancia (400V/mV), amplio rango de voltaje de alimentación (±3V a ±22V) [14]. Las conexiones entre ambos circuitos se muestran en la Figura 4.7. La terminal del dsPIC que corresponde a D5 no se utiliza y no es tomada en cuenta en este diagrama, tampoco se toman en cuenta del DAC 0800 (IC 2) los bits D4_D7 por que estos se cancelan. 38 Figura 4 .5 Circuito convertidor Digital-Analógico 12 bits. 39 Figura 4.6 Placa PCB correspondiente al circuito de la Figura 4.5. DSPIC 30F4013 ADC 12 Bits MSB-------------------------------------------------------------------LSB PUERTO F F6------------------------------F0 PUERTO D D4------------------------D0 D7_________________D0 IC 1 D3_________D0 IC 2 2 IC DAC0800 DAC 12 Bits Figura 4 .7 Interconexiones entre el ADC Y el DAC. 40 Se hace variar el voltaje de entrada (analógica) conectado a la terminal 10 del DSPIC30F4013 con incrementos de 1 Volt. Se inicia primero con una señal de 1 Volt de entrada, las gráficas obtenidas se muestran a continuación: Figura 4 .8 Un volt de entrada línea roja, un volt de salida línea verde. 41 Figura 4 .9 Dos volts de entrada línea roja, dos volts de salida línea verde. Figura 4 .10 3 volts de entrada línea roja, 3 volts de salida línea verde. 42 Figura 4 .11 4 volts de entrada línea roja, 4 volts de salida línea verde. Figura 4 .12 Entrada 5volts línea roja, salida 5 volts línea verde. 43 Como se puede apreciar en todas las gráficas la entrada es más ruidosa que la salida, el ruido tiene altas frecuencias por lo tanto el micro actúa como filtro natural debido a que la frecuencia de muestreo es baja. El error de entrada con respecto de la salida se minimizó ajustando el voltaje de referencia de los IC´s DAC 0800. Se realizaron pruebas con varios tipos de señal, enseguida se muestra una gráfica (Figura 4 .13) donde se puede observar que la entrada que corresponde a una señal triangular con una amplitud de 5V pico-pico. La salida que se ve en color verde es prácticamente la misma señal. Esta señal triangular es utilizada para ajustar todas las partes de este proyecto en “circuito abierto”. Figura 4 .13 Prueba con una señal triangular. 44 Las figuras 4.14 y 4.15 corresponden respectivamente al diagrama eléctrico y circuito impreso del bloque llamado AMP_1, este circuito se utiliza para disminuir la ganancia a 1 5 de la señal proveniente de los convertidores, esto debido a que el módulo TENT MAP debe trabajar con voltajes de entrada mayores que cero o menores e iguales a 1 Volt. El IC LM324 es un amplificador operacional cuádruple de propósito general, el primer OP AMP está configurado como amplificador inversor de ganancia variable, luego para recuperar la señal original se emplea el segundo operacional configurado como inversor de ganancia unitaria y para acoplar impedancias el tercer amplificador operacional se configura como seguidor. La respuesta que se puede observar en la Figura 4.16 es obtenida debido a una señal triangular de entrada (color rojo) y está en color verde vista en diferente escala para poder apreciar la diferencia en amplitud. Figura 4 .14 Diagrama eléctrico AMP_1. 45 Figura 4.15 Placa PCB correspondiente a circuito de la Figura 4.14. Figura 4 .16 Respuesta AMP_1. 46 El ajuste del bloque TENT MAP se puede hacer de dos formas, una es utilizando una señal triangular y otra mediante las fórmulas es decir se agarra cualquier valor entre 0 y 1 luego se calcula el valor teórico de salida para ajustar cada punto del bloque. En la Figura 1.4 se muestra el diagrama esquemático del TENT MAP, los puntos importantes son a, b, c y Vout. Es mucho más fácil hacer el ajuste con la señal triangular sin offset con amplitud de 1V por lo tanto se hará de esa manera, esto debido a que se hace para todos los puntos del rango de entrada. Los amplificadores operacionales son alimentados con ± 15 V y se requiere de una fuente de -0.5 V la cual debe ser muy precisa por que las variaciones afectan directamente la salida. En el primer operacional U1 en la Figura 1.4 se suma la señal de entrada con la fuente de 0.5 V, entonces el punto a es la entrada invertida montada sobre la fuente de DC -0.5 V, el resultado se muestra en la Figura 4.18. Figura 4 .17 Circuito impreso del bloque TENT MAP en 2 caras. 47 Figura 4 .18 Tent Map circuito abierto, comparación del punto A respecto a la entrada. Entrada color rojo, punto A color verde. Como se expuso en la teoría del capítulo 1, el parámetro de la bifurcación es µ = 2, esto significa que el punto b tendrá valores entre (0,2) y el punto c estará entre (0,-2). El punto b se puede ajustar variando el valor del potenciómetro R5. El operacional U2 junto con los diodos rectificadores corta la señal proveniente de U1 dejando pasar solo el lado positivo y R5 es el ajuste de ganancia. La gráfica en el punto b se muestra en la Figura 4.19. 48 Figura 4 .19 Tent Map circuito abierto, comparación del punto B respecto a la entrada. Entrada color rojo, punto B color verde. U3 está configurado como amplificador inversor por lo tanto invierte y amplifica la señal de entrada, R6 es el ajuste de la ganancia, la Figura 4.20 muestra el resultado en el punto c. En el último operacional se hace la suma de los puntos b y c, está configurado como amplificador inversor de ganancia unitaria, la salida de este es el resultado final del circuito, la Figura 4.21 muestra una comparación entre la entrada y la salida del circuito TENT MAP. 49 Figura 4 .20 Tent Map circuito abierto, comparación del punto C respecto a la entrada. Entrada color rojo, punto C color verde. Figura 4 .21 Tent Map circuito abierto, comparación de la salida respecto a la entrada. Entrada color rojo, salida color verde. 50 Por último el resultado final se muestra en la Figura 4.22, esto se hace graficando la entrada en relación con la salida para obtener la figura llamada TENT MAP. Figura 4 .22 Tent Map circuito abierto, gráfica entrada contra salida (TENT MAP) La salida del TENT MAP está entre (0,1) Volts es necesario amplificarla 5 veces para que la señal este entre (0,5) Volts, como el convertidor Analógico a Digital es de 12 bits es mejor trabajar con la máxima amplitud posible en este caso es de 5V. 51 Figura 4 .23 Diagrama esquemático para el módulo AMP_2. La Figura 4.23 muestra el circuito para amplificar la señal que viene del módulo TENT MAP, es un amplificador operacional LM324, el primer operacional está configurado como seguidor, después le sigue un amplificador no inversor donde la ganancia se ajusta por medio de VR1, y al final de nuevo se utiliza un seguidor para acoplar impedancias con el microcontrolador. El circuito impreso se muestra en la Figura 4.24 y la respuesta en la Figura 4.25. Figura 4 .24 Circuito impreso correspondiente al modulo AMP_2. 52 Figura 4 .25 Respuesta AMP_2. La calibración y caracterización en circuito abierto esta ahora terminada y esto es muy importante porque no se puede trabajar en circuito cerrado sin antes haber calibrado el circuito en lazo abierto, debido a que no funcionaria pues arrojaría datos erróneos. Los resultados que se presentan a continuación fueron obtenidos utilizando el circuito TENT MAP en lazo cerrado como se muestra en la Figura 4.1. Se muestran las gráficas a partir del bloque AMP_1, como se ha presentado antes este circuito reduce la señal de 5 Volts pico-pico a 1 Volt pico-pico y su respuesta se observa en la Figura 4.26. La semilla se fija en 760 milivolts. 53 Figura 4 .26 Respuesta en lazo cerrado para el bloque AMP_1 Como se generan los números de manera aleatoria la señal cambia de forma constantemente. La señal obtenida a partir de AMP_1 es la entrada al bloque TENT MAP, este consta de 3 partes importantes a, b, c las cuales se muestran en las figuras siguientes: 54 Figura 4 .27 Tent Map circuito cerrado, comparación del punto A respecto de la entrada. Entrada color rojo, punto A color verde. Figura 4 .28 Tent Map circuito cerrado, comparación del punto B respecto de la entrada. Entrada color rojo, punto B color verde. 55 Figura 4 .29 Tent Map circuito cerrado, comparación del punto C respecto de la entrada. Entrada color rojo, punto C color verde. Figura 4 .30 Tent Map circuito cerrado, comparación de la salida respecto de la entrada. Entrada color rojo, salida color verde. 56 En la Figura 4.30 se observa la entrada y la salida, es curioso ver que las dos señales son casi la misma solo que la salida que está en color verde tiene cierto desfasamiento. Como se vio en la Figura 5.21 la frecuencia de la señal de salida es el doble de la entrada. De estas dos señales se forma el TENT MAP, este resultado se muestra en la Figura 4.31. Figura 4 .31 Tent Map circuito cerrado, gráfica entrada contra salida (TENT MAP) Tanto Y como X se tomaron en un intervalo de tiempo muy corto por lo tanto la casa de campaña de la Figura 4.31 está incompleta, además; como son puntos es lógico que se vea de esa manera a diferencia de cuando se obtuvo el resultado en circuito abierto donde se ve la gráfica completa puesto que la señal contiene más puntos. 57 Figura 4 .32 Tent Map circuito cerrado, gráfica roja salida Tent Map (entrada al AMP_2), gráfica verde (salida AMP_2) entrada al Dspic. Para lograr la retroalimentación se amplifica la salida del TENT MAP a 5 volts, esta señal se observa en la Figura 4.32. El diseño de los diagramas esquemáticos de cada una de las secciones de esta tesis se hizo utilizando el programa PCB Wizard 3.50 Professional Edition que es de fácil manejo, este programa tiene la capacidad de transformar los diagramas esquemáticos en circuitos impresos por lo tanto se utilizó esta herramienta, algunos circuitos impresos se diseñaron en dos caras para facilitar conexiones además de diseñarlas con un tamaño suficiente para evitar confusiones. Todos los módulos excepto el del DSPIC cuentan con entrada y salida de voltaje, esto ayuda a reducir la cantidad de cables en cada circuito, es decir a partir del módulo de los DAC 0800 cuentan con opción para alimentación independiente y tienen un conector para que por medio de este se alimente el circuito consecutivo, en este conector también se incluye la señal de entrada o salida de la señal según se utilice. La tarjeta TDS2000 de la compañía Tektronix, un osciloscopio digital TDS 2012 también de la compañía Tektronix y una computadora personal HP COMPAQ Pentium 4 fueron las herramientas necesarias para la adquisición de los datos, en este caso las gráficas. 58 CONCLUSIONES El nuevo circuito electrónico propuesto se diseñó para generar el mapeo casa de campaña, teniendo como característica su fácil implementación, debido a que usa solamente componentes analógicos; como lo son amplificadores operacionales, comparadores, diodos y resistencias. Esto hablando solo del módulo TENT MAP y para cuestiones de retroalimentación fue necesaria una etapa digital que hizo la función de retención y actualización de datos generados. El comportamiento experimental se probó y comparó, contra el comportamiento numérico dado por el modelo matemático del mapeo casa de campaña, donde; se obtuvieron los resultados esperados, el circuito mapeo casa de campaña reproduce todo el rango conocido del comportamiento. Sin embargo aunque estos son muy similares pueden variar en un proceso real debido a que las características de algunos componentes electrónicos no siempre son ideales. Esta es la principal desventaja que caracteriza a un sistema regido por la teoría del caos, pequeños cambios en las condiciones iniciales generan grandes cambios en la salida del sistema y más aun cuando se trabaja con componentes analógicos por la susceptibilidad al ruido; sin embargo, debido a las características de la función casa de campaña esto puede significar una gran ventaja si en vez de hablar de ruido hablamos de términos forzadores, lo cual toma relevancia cuando se tiene un circuito autónomo, y se hace aun más favorable si el interés se centra solo en la generación de las secuencias por periodos cortos. Otra característica importante tanto en un sistema modelado por computadora como en uno modelado físicamente es que aun cuando las condiciones iniciales sean exactamente iguales la resolución con la que se manejan los cálculos afecta significativamente los resultados, ahora si se compara con algún fenómeno complejo solo se obtendrá una idea de su comportamiento, no la descripción exacta del mismo porque en un proceso real las condiciones están cambiando constantemente, como un ejemplo tenemos las ecuaciones de Lorenz que describen el modelo climático de la tierra y aunque realmente funcionan es muy difícil acertar en la predicción del clima pero si nos da una idea de lo que va pasar , como por ejemplo la trayectoria que sigue un huracán. 59 Entonces dos paquetes de números generados bajo la misma condición inicial pero con distinta resolución tomaran caminos distintos, además una importante observación encontrada es que un pequeño desajuste en los parámetros de control genera un desorden en todo el sistema y provoca que las secuencias generadas pierdan orden respecto a las generadas con el modelo teórico, entonces para reducir esta complicación es necesario emplear componentes de mucha calidad para tener una mejor precisión en sus características, esto por supuesto eleva el costo de la implementación, pero el costo va de la mano del tipo de método empleado. En un proceso como el utilizado en esta tesis resultaría complicado tratar de sincronizar dos sistemas iguales para que trabajen en tiempo real; pero, existen avances en esta área de la investigación que lo hacen posible y representaría una muy buena perspectiva para enmascarar señales en aplicaciones de comunicación, a esta técnica se le conoce como sincronización forzada. La técnica de construcción es simple y la metodóloga se puede extender a otros tipos de mapas, tales como los lineales a pedazos o mapas por tramos suaves, incluso podría tenerse un conjunto de ellas para realizar alguna aplicación como en redes neuronales. Este proyecto queda abierto para otras aplicaciones no consideradas en este trabajo, el diseño no es único lo cual significa que dependiendo de la aplicación puede tener tantas modificaciones como sea posible. Existen muchos resultados teóricos relacionados con el tema de mapeos ya sea continuos o discretos y en general la teoría del caos abarca casi cualquier fenómeno físico natural, biológico e incluso social, economía, ingeniería, etc. Y cada vez es más familiar la relación que existe con todas las ramas de la ciencia moderna. 60 APÉNDICE A MANUAL DE PROGRAMACIÓN Y CONSTRUCCIÓN DE PROYECTOS, UNA INTRODUCCIÓN UTILIZANDO LA FAMILIA DE MICROCONTROLADORES DSPIC30F DE MICROCHIP A1.1 Introducción Facilitar las practicas a futuros estudiantes acerca de los microcontroladores de la familia DSPIC30F es la idea principal de este apartado, actualmente existen algunos libros que tratan sobre estos dispositivos, sin embargo es necesario contar primero con las bases necesarias para su entendimiento, como por ejemplo dominar el lenguaje de programación en ensamblador y muchas veces esto resulta ser un gran obstáculo para el autoaprendizaje, además estos dispositivos son relativamente nuevos por lo tanto es difícil encontrar información que ayude a entender fácil y rápidamente el funcionamiento de estos dispositivos, este es un sencillo manual de construcción de pequeños proyectos utilizando microcontroladores DSPIC30F de microchip con programación en C que es más conocido para algunos. A1.2 Práctica 1, Construcción de un sistema mínimo Para comenzar con la familiarización con los microcontroladores de esta gama es necesario armar un circuito sencillo pero que facilitara su uso, programación y configuración, para lo cual es necesario tener el siguiente material: Cantidad 1 1 1 2 1 1 1 Descripción Dspic familia 30f (ej. Dspic 30f4013) Resistencia de 10kΩ Resistencia 1kΩ Capacitor 33pf Cristal 4.0 MHz Led Protoboard Tabla A1.1 Lista de material para el armado del sistema mínimo. 61 Las conexiones son como se muestra en la Figura A1.1, se utiliza un cristal de 4.0 MHz conectado entre los pines 13 (OSC1) y 14 (OSC2) con un capacitor de 33 pf en cada pin, los capacitores c1, c2, c3 y c4 son opcionales pero es recomendable ponerlos para evitar ruido que pueda provenir de la alimentación que en este caso debe de ser de 5 volts, el pin 1 del micro va conectado a una resistencia de 10kΩ la cual se conecta al voltaje de alimentación y su respectivo capacitor opcional c7 supresor de ruido. Para poder visualizar el funcionamiento del sistema se conecta a la pata 19 (RD3) un led en serie con una resistencia de 1kΩ. Figura A1.1 Conexiones para un sistema mínimo. 62 La segunda parte del proyecto es la construcción del software es decir la programación, sin embargo primero el sistema debe contar con un puerto de lectura y escritura el cual varía un poco dependiendo del tipo de programador que se va a utilizar, en este caso se utiliza el programador llamado MASTER PROG USB adquirido por internet de la empresa EDUTRONICA, el puerto de programación se denomina ICSP por sus siglas en ingles que significa In Circuit Serial Programming, este permite que el PIC pueda ser programado desde el mismo circuito de aplicación. En la Figura A1.2 se muestra el sistema mínimo con el puerto ICSP, este puerto ya está configurado en el programador por lo tanto solo es cuestión de conectarlo al circuito de aplicación. A1.3 Uso del puerto ICSP Para programar por medio del ICSP se hace uso de 5 señales básicas que poseen todos los microcontroladores de las familias 10Fxxx, 12Fxxx, 16Fxxxx, 18Fxxxx, 18FxxJxx, 24FJxxxx, dsPIC30Fxxxx y dsPIC33FJxxxx de Microchip, dichas señales son: PGD o ICSPDAT (Datos seriales que se escriben o leen del PIC) PGC o ICSPCLK (Reloj serial que controla la comunicación con el PIC) MCLR o VPP (Voltaje de programación para escribir o programar) VDD (Voltaje de 5V ó 3.3V de alimentación) VSS (Tierra o GND) Todas las señales (a excepción de VDD) deben ser generadas por el programador, la forma en cómo se conecta el ICSP al PIC se muestra en la Figura A1.3. 63 Figura A1.2 Sistema mínimo con conexión para puerto ICSP 64 Figura A1.3 Recomendación para el uso del puerto ICSP A1.4 Precauciones al usar el ICSP Como se muestra en la Figura A1.3 las terminales PGD (ICSPDAT) Y PGC (ICSPCLK) se aíslan del circuito de aplicación por medio de resistencias, estas pueden tener un valor de 470 Ω y 1kΩ (dependiendo de la corriente de carga, esto es solo en el caso de que se estén utilizando en el circuito de aplicación) si es posible es mejor desconectar estas dos terminales provisionalmente del circuito. Si se usa un botón de RESET, este se conecta en paralelo con el capacitor de de 0.1µF. El voltaje VDD que provee el programador, sólo puede soportar la pequeña corriente que requiere el PIC, por lo tanto si se va usar el VDD únicamente se debe conectar el PIC (pueden conectarse otros periféricos como pantallas LCD, optoacopladores y LED´s, siempre y cuando la corriente total no sea mayor a 100mA), sin embargo se puede alimentar todo el circuito con una fuente externa y entonces se deja el VDD del programador sin conectar. NUNCA usar el VDD del programador y la alimentación externa al mismo tiempo. 65 Los dispositivos de bajo voltaje (VDD = 3.3V), como las series 18FxxJxx, 24FJxxxx y 33FJxxxx requieren de un voltaje de alimentación externa y deben ser programados por medio del puerto ICSP, usando todas las señales excepto VDD. A1.5 El programador MASTER-PROG USB El programador MASTER-PROG USB fue diseñado para brindar un optimo desempeño y versatilidad de uso con el puerto USB para versiones 1.1 y 2.0, su controlador interno emplea tecnología CMOS y por lo tanto deben tomarse ciertas precauciones al utilizar el MASTER-PROG USB, entre las cuales están las siguientes: 1. Sujetar el programador de preferencia por sus esquinas y cuando no esté en uso guardarlo en una bolsa antiestática. 2. El puerto USB permite la conexión/desconexión de dispositivos sin apagar la PC, sin embargo, se debe evitar que el programador sea conectado y/o desconectado rápidamente, se deben dejar pasar al menos 10 segundos entre desconexiones para dejar que el operativo reconozca al dispositivo y no se produzcan errores o daños en el sistema. 3. Evitar conectar el PIC-Prog a la PC cuando tenga un pic de bajo voltaje insertado en las bases ZIF o conectado al puerto ICSP a menos que se esté utilizando una alimentación externa de 3.3V. 4. El MASTER-PROG USB (PIC-Prog) está preparado para poder intercambiar los PIC´s sin necesidad de ser desconectado del puerto, sin embargo muchas veces el chasis de la computadora carece de una buena conexión a tierra, la estática puede producir daños en el programador o bien en el PIC por lo tanto se recomienda utilizar una pulsera antiestática. A1.6 Uso del MPLAB Y MPLAB C30 compiler Para continuar con la segunda parte del proyecto es necesario tener instalado el MPLAB [15] de preferencia la última versión, para poder programar en C es importante instalar en MPLAB el compilador C30 [16], el programa y el compilador se pueden descargar desde la pagina Web de Microchip. Luego se crea un nuevo proyecto con el siguiente programa con el nombre que sea. 66 1. /*Programa1.C*/ 2. #include <p30f4013.h> 3. 4. 5. 6. 7. 8. //****************** Bits de configuracion ****************** _FOSC(CSW_FSCM_OFF & XT_PLL16); // XT con 16xPLL _FWDT(WDT_OFF); // Desabilita el watch-Dog _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); // Reset si viltage <2.0 Volts // espera 16ms al energizarse y // reset habilitado 9. _FGS(CODE_PROT_OFF); // proteccion de codigo DESHABILITADA 10. //****************************************************** // Prototipo funcion main 11. int main(void); 12. //***************** programa principal ******************** 13. 14. 15. 16. int main(void){ TRISD=0x0000; LATDbits.LATD3=1; } Cuando se tenga escrito el archivo, en la ventana del proyecto se le agrega el archivo a la carpeta “Source Files”. El siguiente paso es compilar el programa. Para ello se utiliza la opción “Build All”, a menos que no existan errores en el programa veremos en la ventana de salida el mensaje “BUILD SUCCEDED” seguido de la fecha. Entonces ya tenemos la versión binaria del programa lista para cargarse al microcontrolador. Como último paso conectamos el programador a la PC y ejecutamos el “MASTER PROG”, esperamos a que el programa detecte al programador, en la pestaña de “Dispositivo” seleccionamos la familia “dsPIC 30 y aparecerá el mensaje “dispositivo encontrado”. Ejecutar la opción “Abrir Hex“ en la barra de herramientas para buscar el archivo con extensión “.Hex” con el nombre del proyecto creado, luego con la opción “ESCRIBIR” grabamos nuestro programa al microcontrolador, el cual inmediatamente comenzara a ejecutarse. 67 Explicación del programa El código fuente que se muestra en el paso 9 contiene números de línea para facilitar su explicación: En la línea 2 se incluye el archivo de cabecera para el dsPIC 30F4013. En la línea 4 comienza la configuración del microcontrolador: • La función FOSC() configura el oscilador: o CSW_FSCM_OFF (Clock Switch Fail Safe Clock Monitor). Deshabilita el cambio a oscilador interno cuando falle el externo. o XT_PLL16. Define un oscilador XT con un multiplicador igual a 16. Por ejemplo si el cristal es de 4 Mhz se multiplica por 16 para tener una frecuencia de oscilación de 64Mhz. • La función _FWDT() es para encender o apagar el “Watch Dog”. • La función _FBORPOR() es para establecer algunas opciones de requerimientos eléctricos: o PBOR ON u OFF. Activa o desactiva la opción de “Power-on reset” y “Brownout reset”. “Power-on reset genera un reset cuando se energiza el microcontrolador. Para más información consultar en las hojas de datos de la familia 30f la sección de reset. o BORV. Establece el voltaje al que se genera un “Brown-out reset” cuando el voltaje de alimentación cae por debajo de él. o PWRT_16. Establece el tiempo que el microcontrolador va esperar para empezar a funcionar después de ser energizado. En este caso es de 16 milisegundos, es para esperar a que el voltaje de alimentación se estabilice. o • MCLR_DIS. Deshabilita el “Master Clear Reset”. La función FGS () habilita o deshabilita la protección por código, si se habilita no se puede leer ni escribir el microcontrolador. • En la línea 16 comienza el programa principal. • En la línea 17 se configura el puerto D como salida. • En la línea 18 se pone un uno lógico en el bit RD3 (pin 19). En la línea 20 termina el programa. 68 Es importante mencionar que el programa se reinicia automáticamente después de terminar por lo tanto aunque no es visible al colocar un LED este prende y apaga, para observar mejor es necesario ver la señal con un osciloscopio, hasta aquí abarca la Práctica 1. A1.7 Práctica 2, los puertos de entrada y salida El objetivo de esta práctica es experimentar con los puertos de E/S, se utiliza un pushbutton para prender y apagar un led. El armado del circuito es como se muestra en la Figura A1.5. Ver Sección 7.0 de las hojas de datos del dsPIC. El led se conecta a la patita 35 (RB12) a través de una resistencia de 1KΩ y el push -button se conecta a la patita 36 (RB11) y a +V, y la otra terminal se conecta a tierra. Todos los puertos tienen tres registros asociados, uno de configuración de entrada o salida, el TRISx, si cualquier bit del registro TRIS es puesto a 0 entonces se configura como salida, si el bit se pone en 1 corresponde a una entrada. Uno de entrada, el PORTx y uno de salida, el LATx. Además el puerto B tiene otro registro de configuración, el ADPCFG que se usa para configurar las entradas analógicas o digitales, esto debido a que el puerto B esta compartido con el convertidor analógico digital. Si cualquier bit del registro ADPCFG es puesto a 1, la patita asociada a ese bit es una entrada digital, en cambio si el bit es puesto a 0 entonces es una entrada analógica. Cada bit del ADPCFG después de un reset contiene un cero. 69 Figura A1.5 Circuito para la práctica número dos. 70 Programa: 1. /*programa2.c*/ 2. #include<p30f4013.h> 3. 4. 5. 6. 7. //************************** BITS DE CONFIGURACION ********************************* _FOSC(CSW_FSCM_OFF & XT_PLL16); //XT con 16PLL _FWDT(WDT_OFF); //Deshabilita el watch_dog _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); _FGS(CODE_PROT_OFF); // proteccion de codigo DESHABILITADA 8. //********************************************************************************** 9. int main(void); // Prototipo funcion main 10. //***************** programa principal ******************** 11. 12. 13. 14. 15. int main (void){ TRISD=0x0000; LATDbits.LATD3=1; TRISB = 0xEFFF; ADPCFG = 0xFFFF; 16. 17. 18. 19. 20. 21. 22. while(1) { if(PORTBbits.RB11 == 0) LATBbits.LATB12 = 0; else LATBbits.LATB12 = 1; } } //1110 1111 1111 1111 //Todas entradas digitales Explicación del programa En la línea 11 comienza el programa principal, en la línea 12 se configura todo el puerto D como salida, en la línea 13 se pone el bit RD3 (pin 19) como un 1 lógico para encender el led. En la línea 14 y 15 se configura el puerto B para que el bit RB12 sea salida y todos los demás bits sean entradas digitales. En la línea 16 se crea un ciclo infinito, si el push-button no está presionado RB11 lee +V o sea un uno lógico y el led conectado en la patita que corresponde a RB12 (pin 35) permanece encendido. 71 Si el push-button es presionado, entonces +V se va atierra a través de la resistencia y RB11 lee un cero lógico por lo tanto se apaga el led en RB12. A1.8 Práctica 3, el temporizador (Timer) Esta práctica tiene como objetivo entrenarse en el uso del temporizador (Timer) ver sección 9.0 de las hojas de datos del dsPIC y la sección 12.0 del manual de referencia DS70059D para entender la configuración del Timer, se utiliza el mismo circuito de la practica número dos Figura A1.5. Primero revisamos unos sencillos conceptos. Fosc = Frecuencia de oscilación. En este caso se utiliza un cristal de 4Mhz y un multiplicador de 16, se obtiene Fosc = 4*16 = 64Mhz. Fcy = Frecuencia de instrucción. El dsPIC realiza una instrucción cada 4 Fosc, por lo tanto, el Fcy = Fosc/4 = 16Mhz. Tfosc = Periodo de oscilación. Tfosc = 1/Fosc = 1/64Mhz = 15.625ns. Tcy = 1/Fcy = 1/16Mhz = 62.5ns. Esto significa que el dsPIC con un cristal de 4Mhz y un multiplicador de frecuencia de 16, es capaz de realizar 16 millones de instrucciones por segundo. O dicho de otra manera es capaz de realizar una instrucción cada 62.5 nanosegundos. El dsPIC cuenta con 3 Timers y se llaman: Timer 1, Timer2, Timer 3. En esta práctica se utiliza el Timer 1. El timer 1 es de 16 bit, eso significa que puede contar desde 0 a (2^16)-1. Cada cuenta tarda un Tcy, por lo tanto, contar de 0 a (2^16)-1 tarda 0.001,023 segundos. 72 Una de las funciones del timer es que el microcontrolador espere un cierto tiempo (retardo o tiempo muerto) antes de realizar alguna acción. Para poder crear retardos más largos se usa un “prescaler”, que es un divisor de frecuencia. Ejemplo A1.1 Calcular un retardo de 120 milisegundos Fcy = 16, 000, 000 Con un prescaler de 256 Fcy/256 = 65,500 Esto significa que el timer hace 62,500 cuentas en un segundo, usando un prescaler de 256 100 ms 62500 = x 120 x= 62500 ∗ 120 = 7500 1000 Esto significa que el timer realiza 7500 cuentas en 120 milisegundos. Algoritmo: generar una onda cuadrada que dure 120 milisegundos entregando un uno lógico y 120 milisegundos estregando un cero lógico. 73 Programa: 1. /*programa3.c*/ 2. #include <p30f4013.h> 3. 4. 5. 6. 7. 8. 9. 10. //*********************** Bits de configuracion ***************** _FOSC(CSW_FSCM_OFF & XT_PLL16); // XT con 16xPLL _FWDT(WDT_OFF); // Desabilita el watch-Dog _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); // Reset si viltage <2.0 Volts // espera 16ms al energizarse y // reset habilitado _FGS(CODE_PROT_OFF); // proteccion de codigo DESHABILITADA #define fcy 16000000 11. //********************************************************** 12. void retardo120ms(void); // prototipo de la funcion 13. int main(void); // Prototipo funcion main 14. 15. //******************** programa principal ********************** 16. 17. 18. 19. 20. 21. 22. 23. 24. int main(void){ TRISD=0x0000; while(1){ LATDbits.LATD3=1; retardo120ms(); LATDbits.LATD3=0; retardo120ms(); } } 25. //********************** Configura retardo ********************** 26. void retardo120ms(void){ 27. 28. 29. 30. /*Asegurarse que el timer 1 este en estado de reset*/ T1CON=0; TMR1=0; IPC0bits.T1IP=1; 31. 32. 33. 34. 35. 36. 37. /* set timer 1 period register*/ PR1=0x1D4C; IFS0bits.T1IF=0; IEC0bits.T1IE=0; T1CON=0x8030; while(IFS0bits.T1IF==0); } // clear the timer interrupt status flags // Disable timer1 interrupts // configura T1CON=1000000000110000 74 Explicación del programa El programa se basa en la función llamada retardo120ms la cual genera el retardo, es utilizada en la función principal dentro de un ciclo while lo cual hace que se genere la onda cuadrada. Es importante mencionar que el Timer es un modulo que trabaja en paralelo al CPU. En este ejemplo el CPU se queda esperando a que la bandera T1IF cambie su estado de cero a uno para salir del ciclo while. En otras palabras la condición del ciclo va a ser verdadera mientras el timer no termine de contar, al final de la cuenta la bandera T1IF cambia de cero a uno y la condición del ciclo se vuelve falsa, el ciclo termina y se regresa de la función al programa principal. A1.9 Práctica 4, el UART El UART es un dispositivo ampliamente utilizado para la comunicación serial asíncrona. En esta práctica se interconectan dos dsPIC 30f4013 a través del modulo UART [17]. Ver Capítulo 16.0 de las hojas de datos del dsPIC. Construir dos circuitos como el que se muestra en la Figura A1.6 cada uno en distinto “Protoboard”, los LED’s se conectan en cada dsPIC a los puertos RB1 Y RB2, el push-button se conecta a RF0. El Tx de un microcontrolador se conecta al Rx del otro microcontrolador, en ambos chips se utiliza el UART 1. El algoritmo: • Cuando en un microcontrolador se presione el push-button, se envía un “1” a través del UART 1, y si no está presionado el push-button se envía un “2”. • Cuando un microcontrolador reciba un byte, si este byte es un “1” prende el LED en RB1 y apaga el LED en RB2. • Cuando un microcontrolador reciba un byte, si este byte es un “2” apaga el LED en RB1 y prende el LED en RB2. 75 Figura A1.6 Conexiones para usar el UART 76 La configuración del UART El microcontrolador posee dos UARTS, en esta práctica solo se utiliza el UART 1. Velocidad de transmisión/recepción (Baudrate) El UART tiene un generador “Baud rate” que es programado con el registro U1BRG, el U1BRG es un registro de 16 bits, en este registro se coloca un numero que es calculado en base a la velocidad de transmisión/recepción deseada y se hace con la siguiente fórmula: 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 = 𝐹𝐹𝐹𝐹𝐹𝐹 (16 ∗ 𝐵𝐵𝐵𝐵𝐵𝐵 + 1) Ó 𝑈𝑈1𝐵𝐵𝐵𝐵𝐵𝐵 = 𝐹𝐹𝐹𝐹𝐹𝐹 16 ∗ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 −1 Un estándar en velocidad es el Baud rate = 9600, teniendo el Fcy = 16MHz 𝑈𝑈1𝐵𝐵𝐵𝐵𝐵𝐵 = 16𝑀𝑀ℎ𝑧𝑧 − 1 = 104.166 − 1 = 103.166 16 ∗ 9600 como no se pueden poner decimales entonces U1BRG = 103. Esto genera un error, el error obtenido es: 𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸 = (𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 − 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑) 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 Calcularemos el Baud rate obtenido 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 = 𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸𝐸 = 16𝑀𝑀ℎ𝑧𝑧 = 9615.38 (16 ∗ (103 + 1)) 9615.38 − 9600 = 0.160256% 9600 77 Otra manera de calcular el número a poner en U1BRG es usando las tablas que se encuentran en las hojas de datos del dsPIC, de las cuales se ha extraído un segmento y se puede ver en la Tabla A1.7 Tabla A1.7 UART Baud rates En las tablas completas se puede ver que con algunos Fcy se puede lograr cero error, pero a cambio se reducen los MIPS. En aplicaciones en que es importante tener velocidades de transmisión exactas, y no es critico la velocidad de procesamiento se puede usar un Fcy para cero error en Baud rate. Entonces U1BRG = 103; // Baud rate & 16 Mhz Fcy Otro registro de configuración para el modulo UART es el U1MODE y tiene que ver con el modo de transmisión, el tipo de transmisión es 8 bits no paridad y un bit de parada y se le conoce como N-8-1. El bit 15 del registro U1MODE habilita el UART, eso significa que los otros dispositivos que comparten las mismas patitas quedan deshabilitados. Los bits 1 al 2 configuran el tamaño en bits del “byte” y la paridad, como el byte lo necesitamos de 8 bits y sin paridad, a estos bits le asignamos un cero. Por último necesitamos un bit de alto, que se define en el bit cero del U1MODE. 78 El U1MODE queda de la siguiente manera: U1MODE = 0x8000; // se habilita el UART N-8-1 Otra manera de configurarlo es bit a bit, de la siguiente manera: U1MODEbits.UARTEN = 1; // se habilita el UART U1MODEbits.PDSEL = 0; // 8 bit sin paridad U1MODEbits.SETSEL= 0; // 1 bit de stop Hasta el momento solo está configurado y habilitado el UART, pero es necesario que si tiene datos se ponga a transmitir. El UART empieza a transmitir cuando se le asigna un “1” a UTXEN (bit 10) del registro U1STA U1STAbits.UTXEN = 1; // se habilita la transmisión Con esto termina la configuración. 79 Programa: 1. /* primera practica con el uart del dspic30f4013*/ 2. #include <p30f4013.h> 3. 4. 5. 6. 7. 8. 9. //****************** Bits de configuracion ***************** _FOSC(CSW_FSCM_OFF & XT_PLL16); // XT con 16xPLL _FWDT(WDT_OFF); // Desabilita el watch-Dog _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); // Reset si voltage <2.0 Volts // espera 16ms al energizarse y // reset habilitado _FGS(CODE_PROT_OFF); // proteccion de codigo DESHABILITADA 10. #define fcy 16000000 11. int configura_UART1(); 12. int main (void); 13. int main (void){ 14. 15. 16. 17. char c1; ADPCFG = 0xFFFF; TRISB=0X0000; TRISF=0XFFFF; // todas salidas // todas entradas 18. configura_UART1(); 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. while (1){ if(U1STAbits.URXDA==1){ c1=U1RXREG; if (c1==1){ LATBbits.LATB1=1; LATBbits.LATB2=0; } if (c1==2){ LATBbits.LATB1=0; LATBbits.LATB2=1; } } if (PORTFbits.RF0==0) if(U1STAbits.UTXBF==0) U1TXREG=1; if (PORTFbits.RF0==1) if(U1STAbits.UTXBF==0) U1TXREG=2; } } // ¿hay datos en el buffer de Rx? // si es verdad lee el dato // si es un 1 // prende RB1 // apaga RB2 // si es un 2 // apaga RB1 // prende RB2 // si el PB esta presionado // si el buffer de Tx no esta lleno // pone un 1 en el buffer de Tx // si el PB es 1 // si hay espacio en el buffer de Tx // pone un 2 en el buffer de Tx 39. int configura_UART1(){ 40. 41. 42. 43. 44. 45. U1BRG = 103; U1STA = 0; U1MODE = 0x8000; U1STAbits.UTXEN = 1; return 0; } // Baud rate 9600 & 16Mhz Fcy // limpiar registro de control y status // se habilita el UART N-8-1 // se habilita la transmision 80 A1.10 Práctica 5, Uso del convertidor analógico digital El 30F4013 tiene un DAC de 12 bits, este convertidor está orientado a precisión más que a velocidad. En la conversión analógica-digital, el convertidor distingue dos tiempos. El tiempo de muestreo que es el tiempo que dura el convertidor conectado a la señal, y el tiempo de conversión, que es el tiempo que le toma al convertidor transformar la señal muestreada a digital. Existe una buena cantidad de formas de hacer la conversión. En este ejemplo el proceso es totalmente manual: • Muestreo de una sola entrada analógica • Inicio del muestreo manual • Duración del muestreo manual • Inicio de la conversión manual • La referencia positiva y negativa se toma de la alimentación Primero definimos como va iniciar el muestreo y tenemos dos opciones, cuando ponemos el bit SAMP = 1 o que el muestreo inicie inmediatamente después de que la conversión finaliza. Esta configuración se define con el bit ASAM del registro de configuración ADCON1. Bit 2 ASAM: bit de muestreo automático de A/D 1 = El muestreo comienza inmediatamente después de que la ultima conversión se ha Completado. El bit SAMP automáticamente se pone a uno. 0 = El muestreo comienza hasta que el programa ponga el bit SAMP a uno. Definiremos al bit SAMP como control de inicio del muestreo. ADCON1bits.ASM = 0; // el muestreo inicia cuando el bit SAMP == 1. Ahora definimos de qué manera finaliza el muestreo e inicia la conversión. El registro ADCON1, contiene un conjunto de bits, que se llaman SSRC, estos bits se usan para configurar la fuente del inicio de la conversión. En seguida tenemos las opciones de estos bits. 81 Bit 7-5 SSRC<2:0>: bits de selección de fuente de inicio de la conversión. 111 = contador interno termina muestreo y comienza la conversión (auto conversión) 110 = reservado 101 = reservado 100 = reservado 011 = intervalo PWM para control de motores termina el muestreo y comienza la Conversión. 010 = comparación del timer 3 termina el muestreo y comienza la conversión 001 = transición activa en el pin INT0 termina el muestreo y comienza la conversión 000 = limpiando el bit SAMP termina el muestreo y comienza la conversión Elegimos el bit SAMP como fuente de disparo de fin de periodo de muestreo e inicio de periodo de conversión. ADCON1bits.SSRC = 0; // cuando el bit SAMP == 0 termina muestreo e inicia conversión Se tienen 2 conjuntos de entradas, MUXA Y MUXB, para esta práctica se utiliza el MUXA y se configura usando el registro ADCHS. Bit 4 CH0NA: determina la entrada negativa del canal 0 en el MUXA. 1 = Entrada negativa del canal 0 es AN1 0 = Entrada negativa del canal 0 es VREFEstablecemos como entrada negativa a VREF- en el MUXA ADCHS1bits.CHONA = 0; // la entrada negativa del canal es VREF- En seguida determinamos la entrada positiva del MUXA Bit 3-0 CH0NA<3:0>: determina la entrada positiva del canal 0 en el MUXA 1111 = Entrada positiva del canal 0 es AN15 1110 = Entrada positiva del canal 0 es AN14 .... 0001 = Entrada positiva del canal 0 es AN1 0000 = Entrada positiva del canal 0 es AN0 82 Establecemos como entrada positiva la patita RB8/AN8 ADCHSbits.CH0SA = 8; // entrada positiva del canal 0 e AN8 Se pueden seleccionar un conjunto de 16 entradas a muestrear de manera secuencial (scanning), para ello se utiliza el registro ADCSSL. En esta práctica no se utiliza el scan entonces se pone este registro en cero. Además de determinar cero entradas secuenciales, también deshabilitamos el muestreo secuencial. Ahora se elegirán cuales son los voltajes de referencia positiva y negativa Bit 15-13vVCFG<2:0>: bits de configuración del voltaje de referencia Se ponen como referencia positiva AVDD y como referencia negativa AVSS, que son las alimentaciones del modulo ADC. ADCON2bits.VCFG = 0; // referencia positiva AVDD y negativa AVSS Los resultados de la conversión se guardan en el registro ADCBUF, que tiene 16 palabras (16 bits). Las palabras se llaman ADCBUF0, ADCBUF1… ADCBUF15. Este registro para algunas aplicaciones muy particulares se puede dividir en dos registros de 8 palabras. En esta aplicación se utiliza el registro sin división. ADCON2bits.BUFM = 0; //configurado buffer de 16 palabras El ADC genera una interrupción cada n conversiones. Para especificar n, se utiliza un conjunto de bits SMPI en ADCON2. Cuando se necesita que el resultado se guarde en la primera 83 palabra (ADCBUF0), luego la segunda conversión en ADCBUF1 hasta ADCBUF(n-1). Para ir llenando cada palabra se debe generar una interrupción cada n conversiones. Establecemos que se genere una interrupción después de cada conversión, de esta manera el resultado se guardara solo en ADCBUF0. ADCON2bits.SMPI = 0; // después de una conversión se genera una interrupción Como se tienen dos conjuntos de entradas, el MUXA y MUXB, se puede elegir que se tomen muestras en A y luego en B, esto se hace con el bit ALTS. Solo se está utilizando el MUXA, es necesario deshabilitar el muestreo alternante. ADCON2bits.ALTS = 0; // se muestrea MUXA Con esto se termina de configurar el registro ADCON1. Se puede observar que para muestreo manual solamente se usa una entrada analógica, además todo ADCON1 es cero, entonces si lo ponemos a cero no es necesario configurar cada conjunto de bits. El ADC usa un reloj que puede ser derivado del reloj del sistema o del reloj interno del chip, para elegirlo se usa el bit ADRC localizado en el registro de configuración ADCON3. Se configura para que el ADC utilice el reloj derivado del sistema. ADCON3bits.ADRC = 0; // reloj del ADC derivado del sistema El periodo del reloj Tad del ADC, tiene un mínimo, Tad = 667 nanosegundos, al definir el Tad debemos tener mucho cuidado de cumplir con el limite. La manera correcta de calcular el Tad mínimo permitido es con la siguiente ecuación: 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 2 ∗ 84 𝑇𝑇𝑇𝑇𝑇𝑇 −1 𝑇𝑇𝑇𝑇𝑇𝑇 Ejemplo: Tad = 667ns Tcy = 33.33ns ADCS= (2*(667/33.33))-1 = 39 Por lo tanto en ADCS se pone un 39 Ejemplo 2: Tad = 667ns Tcy = 62.5 (Fosc = 64Mhz) ADCS = (2*(667/62.5))-1 = 20.34, redondeando queda en 21 Este Tad calculado es el mínimo que cumple con la especificación. ADCON3bits.ADCS = 21; // Tad mínimo El Registro ADCON3 contiene el conjunto de bits SAMC, usados para especificar el tiempo que dura el muestreo para la automatización de este proceso, pero en esta práctica es manual por lo tanto no se utilizan. 85 Construcción del circuito: Figura A1.8 Circuito convertidor analógico-digital 86 En la Figura A1.8 se muestra el diagrama para el circuito convertidor análogo-digital, se puede observar que es prácticamente el sistema mínimo de siempre solo cambian las conexiones de los LED’s, la parte del circuito que dice “MODULO A/D” se conecta al circuito de la Figura A1.9 que corresponde a un convertidor digital-analógico, esto nos permite regresar la señal analógica muestreada por el pic a su forma original, de esta manera podemos observar el funcionamiento del mismo. Para mayor información sobre el DAC0800 ver el Capítulo 2 de esta tesis, para probar el funcionamiento del convertidor A/D se puede muestrear una señal de la forma que sea, proveniente de un generador de funciones con una amplitud de 5V pico-pico positivos o bien con un potenciómetro lineal hacer variar un voltaje de entre 0-5V. Utilizando un osciloscopio observar la señal original y la señal reconstruida por el convertidor D/A la cual debe ser idéntica, se puede ajustar el voltaje de referencia del convertidor D/A para igualar la señal reconstruida. El programa: En este programa se utilizan 3 funciones: una para generar un retardo en milisegundos, otra para generar un retardo en microsegundos, y la tercera para configurar el modulo A/D. la configuración es como se explico anteriormente, en cada conversión se genera una interrupción, y en cada vez se está leyendo el buffer de resultados (ADCBUF0) el cual está conformado de la siguiente forma. MSB LSB Los bits d00-d04 se mandan al puerto D, los bits d05-d11 se mandan al puerto F. Esto se hace utilizando operaciones de corrimiento. 87 Figura A1.9. Convertidor digital-analógico 12 bits 88 Programa: 1. 2. 3. 4. #include <p30f4013.h> #include <math.h> #include <stdio.h> #include <string.h> 5. 6. 7. 8. 9. 10. 11. //************************** Bits de configuracion ************************** _FOSC(CSW_FSCM_OFF & XT_PLL16); // XT con 16xPLL _FWDT(WDT_OFF); // Desabilita el watch-Dog _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); // Reset si viltage <2.0 Volts // espera 16ms al energizarse y // reset habilitado _FGS(CODE_PROT_OFF); // proteccion de codigo DESHABILITADA 12. //********** *************PROTOTIPO DE FUNCIONES *********************** 13. #define fcy 16000000 14. 15. 16. 17. int main (void); void retardo_ms(unsigned int ms); void retardo_us(unsigned int us); void adc_ini(void); 18. //*********************** PROGRAMA PRINCIPAL ************************** 19. 20. 21. 22. 23. int main (void){ unsigned int ADCValue=0,v0,v1,v2,v3,v4,v5; unsigned int c=0x0FE0; unsigned int d=0x000F; unsigned int e=0x0010; 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. TRISD=0x0000; TRISF=0x0000; TRISB=0x0102; ADPCFG=0xFEFD; retardo_ms(2000); LATB=0x0004; retardo_ms(2000); LATB=0x000C; retardo_ms(2000); retardo_ms(2000); LATB=0x0004; retardo_ms(2000); LATB=0x000C; // pueto D como salida // pueto F como salida // RB8 entrada // entrada analogica RB8 // prende led RB2 // prende led RB3 // apaga led RB3 // prende led RB3 37. LATF=0x0064; 38. LATD=0x001F; // Inicializa DAC en 3231 Vo = 3.8 V Y // entrada al tent map Vin = 0.760 milivolts 39. retardo_ms(2000); 40. retardo_ms(2000); // retardos de inicalizacion ADC 41. adc_ini(); 42. ADCON1bits.ADON=1; // Prende ADC 89 43. while(1){ 44. ADCON1bits.SAMP = 1; 45. retardo_us(1); 46. LATB=0x001C; 47. ADCON1bits.SAMP = 0; 48. retardo_us(1000); 49. retardo_ms(10); 50. while (!ADCON1bits.DONE); 51. ADCValue = ADCBUF0; // start sampling ... // enciende led RB4 // start Converting // conversion done? // yes then get ADC value 52. v0=ADCValue; 53. v1=v0&c; 54. 55. v2=v1>>5; 56. LATF=v2; 57. v3=v0&d; 58. 59. LATD=v3; 60. v4=v0&e; 61. v5=v4>>4; 62. LATDbits.LATD8=v5; 63. } 64. } // deja pasar los ultimos // 7 bits mas significativos // envia los 7 bits MSB puerto F // deja pasar primeros // 5 bits menos significativos // envia al puerto D 5 bits LSB // repeat 65. // ******************** Configura el modulo A/D *********************** 66. void adc_ini(void){ 67. TRISB=0x0102; // RB8 entrada 68. ADPCFG=0xFEFD; // entrada analogica RB8 69. //ADCON1=0x0000; 70. ADCON1bits.ASAM=0; 71. // al usar el bit SAMP 72. ADCON1bits.SSRC=0; 73. // y comienza la conversion 74. // El muestreo inicia de forma manual // contador interno finaliza muestreo //ADCHS=0X0008; 75. ADCHSbits.CH0NA=0; 76. ADCHSbits.CH0SA=8; 77. 78. ADCSSL=0; // Entrada negativa del canl 0 es VREF// Entrada POSITIVA del canl 0 es RB8/AN8 //ADCSSL=0 // No hay entradas para muetreo secuencial 90 79. //ADCON2= 80. ADCON2bits.VCFG=0; 81. ADCON2bits.CSCNA=0; // Referencia positiva=AVDD; referencia negativa=AVSS. // Muestreo secuencial scan deshabilitado 82. ADCON2bits.SMPI=0; 83. ADCON2bits.BUFM=0; 84. ADCON2bits.ALTS=0; // Despues de una conversion se genera una interrupcion // *Configurado como bufer de 16 palabras* // Solo se muetra el MUXA. 85. //ADCON3= 86. ADCON3bits.ADRC=0; 87. ADCON3bits.ADCS=21; 88. } // El reloj del ADC es derivado del reloj del sistema // Tad=(21+1)*0.5 Tad=11 tcy=687.5 89. // *************** Configura retardo en milisegundos ********************** 90. void retardo_ms(unsigned int ms){ 91. unsigned int periodo=0; 92. /* ensure timer 1 is in rest state */ 93. T1CON=0; 94. TMR1=0; 95. IPC0bits.T1IP=1; 96. periodo=((fcy/256)*ms)/1000; 97. PR1=periodo; // Set Timer 1 period register 98. IFS0bits.T1IF=0; // Clear the timer 1 interrupt status flag 99. IEC0bits.T1IE=0; // Disable Timer 1 interrupts 100. T1CON=0x8030; // Configura T1CON=1000000000110000 101. while(IFS0bits.T1IF==0); 102. } 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. // ******* ******* Configura retardo en microsegundos ****************** void retardo_us(unsigned int us){ unsigned int periodo=0; /* ensure timer 1 is in rest state */ T1CON=0; TMR1=0; IPC0bits.T1IP=1; periodo=(fcy*us)/1000000; PR1=periodo; // Set Timer 1 period register IFS0bits.T1IF=0; // Clear the timer 1 interrupt status flag IEC0bits.T1IE=0; // Disable Timer 1 interrupts T1CON=0x8000; // Configura T1CON=1000000000110000 while(IFS0bits.T1IF==0); } 91 El buffer de resultados nos proporciona la información en 16 bits de los cuales los últimos 4 se leen como “0” lógico pero como no los necesitamos no es necesario tomarlos en cuenta. En el capítulo 4 se exponen los resultados de esta práctica, se utiliza este programa en la tesis para generar el TENT MAP, en esta práctica la inicialización (semilla) del DAC no tiene importancia, la semilla tomo relevancia solo en circuito cerrado, de ahí surge la aplicación. Se puede deshabilitar las líneas 51-58. De otra manera al correr el programa en el osciloscopio se verá una señal DC de aproximadamente 3.8 V durante 10 segundos y después veremos el resultado de la conversión en la salida de los convertidores DAC. 92 BIBLIOGRAFÍA [1] Joseph Emerson, Pseudo-Random Operators: Theory and Applications, Quantum Communication, Measurement and Computing, AIP., Vol. 7, pp. 139-142, 2004. [2] Mario Stipcevic, Fast nondeterministic random bit generator based on weakly correlated physical events, Rev. Sci. Instrum.,Vol. 75, pp.4442-4449, 2004. [3] R.M. May, Simple mathematical models with very complicated dynamics, Nature, vol. 261, pp. 459-467, 1976. [4] S.N. Elaydi, Discrete Chaos, Chapman and Hall/CRC Press, 2000 [5] H. Tanaka, S. Sato and K. Nakajima, Integrated circuits of map chaos generators, Analog Integrated Circuits and Signal Processing, vol. 25, pp. 329-335, 2000. [6] M. Suneel, Electronic circuit realization of the logistic map, Sadhana, vol. 31, pp. 69-78, 2006. [7] J.N. Blakely, M.B.Eskridge and N.J. Corron, A simple Lorenz circuit and its radio frequency implementation, Chaso, vol. 17, pp. 023112, 2007. [8] Hojas de datos para el amplificador operacional LM324. http://www.datasheetcatalog.org/datasheets/150/61350_DS.pdf [9] Hojas de datos para el microcontrolador dsPIC 30F4013. http://ww1.microchip.com/downloads/en/DeviceDoc/70138F.pdf [10] Hojas de datos para el IC DAC0800. http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS005686.PDF [11] S.J. Orfanidis, Optimum signal processing, 2nd Edition, Sophocles J. Orfanidis, 2007. [12] M.E. Yalcin, J.A.K. Suykens, and J. Vandewalle, Experimental confirmation of 3- and 5-scroll attractors from a generalized Chua’s circuit, IEEE Trans. Circuits Syst. I: Fundam. Theory Appl., vol. 47, pp. 425-432, 2000. [13] Section 18. 12-bit A/D Converter. http://ww1.microchip.com/downloads/en/DeviceDoc/70065D.pdf 93 [14] Hojas de datos para el amplificador operacional OP07CN. http://www.datasheetcatalog.org/datasheet/stmicroelectronics/2184.pdf [15] Dirección de internet para descargar el programa MPLAB. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName= en019469&part=SW007002 [16] Dirección de internet para descargar el compilador C MPLABC30. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName= en023073 [17] Section 19. UART. http://ww1.microchip.com/downloads/en/DeviceDoc/Section%2019.%2070066c.pdf [18] http://www.encuentrosmultidisciplinares.org/Revistan%C2%BA7/Seminario%20Teor%C3%ADa%2 0del%20Caos%201.pdf 94