Document

Anuncio
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
Descargar