I
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
UNIDAD CULHUACÁN
DISEÑO DE UN GENERADOR DE SEÑALES CON UN DSP Y UNA
FUENTE DE VOLTAJE DIGITAL
T E S I S
QUE PARA OBTENER EL TÍTULO DE INGENIERO EN COMUNICACIONES Y
ELECTRÓNICA.
PRESENTA:
CARLOS DANIEL VÁZQUEZ ROSAS.
ASESORES:
ING. Víctor Alejandro González Huitrón
M en C. Héctor Becerril Mendoza
MÉXICO D.F. MAYO 2014
II
Agradecimientos.
Agradezco a todos los que hicieron esto posible.
III
ÍNDICE GENERAL
Listado de figuras y tablas ............................................................................................... V
Acrónimos ..................................................................................................................... VII
Introducción ................................................................................................................. VIII
Objetivos ........................................................................................................................ IX
Justificación ..................................................................................................................... X
Planteamiento del problema .......................................................................................... XII
CAPÍTULO 1. ESTADO DEL ARTE .............................................................................. 1
1.1 Historia del DSP ..................................................................................................... 2
1.2 DSP y su aplicación ............................................................................................... 3
1.3 Primeras fuentes de alimentación ........................................................................... 4
CAPÍTULO 2. MARCO TEÓRICO ................................................................................. 7
2.1 Fuentes de voltaje ................................................................................................... 8
2.2 Multiplexores analógicos ....................................................................................... 9
2.2.1 Estructura y utilización .................................................................................... 9
2.2.2 Parámetros característicos ............................................................................. 10
2.2.3 Resistencia de los interrumptores .................................................................. 11
2.3 Generador de señales ............................................................................................ 12
2.4 Osciloscopio ......................................................................................................... 14
2.5 DSP ...................................................................................................................... 16
2.6 Procesador Digital de Señales TMS320C6713 .................................................... 17
2.7 Code Composer Studio (CCS) ............................................................................. 19
IV
CAPÍTULO 3. IMPLEMENTACIÓN ............................................................................ 22
3.1 Fuente de voltaje programable ............................................................................. 23
3.1.1 Arreglo en base a transistores ....................................................................... 25
3.1.2 Arreglo en base a un potenciómetro digital .................................................. 26
3.1.3 Arreglo en base a un multiplexor analógico ................................................ 28
3.1.4 Módulos de la fuente ................................................................................... 29
3.1.5 Interfaz Pic de la fuente ................................................................................ 30
3.2 Generador de funciones ........................................................................................ 31
3.2.1 Generador de señal senoidal de 8 puntos...................................................... 31
3.2.1.1 Configuración del CCS ............................................................................ 32
3.2.1.2 Desarrollo de aplicaciones en CCS .......................................................... 32
3.2.1.3 Configuración de parámetros para la construcción de un proyecto en CCS ................................................................................................................................ 33
3.2.1.4 Creación del proyecto .............................................................................. 34
3.2.1.5 Opciones del compilador ......................................................................... 37
3.2.1.6 Construcción del proyecto ....................................................................... 38
3.2.1.7 Monitoreo de Watch Window .................................................................. 39
4.1 Osciloscopio de estado sólido .............................................................................. 40
CAPÍTULO 4. SUGERENCIAS ................................................................................... 43
4.1 Sobre la fuente programable ................................................................................ 44
4.2 Sobre el generador de funciones .......................................................................... 44
4.3 Sobre el osciloscopio ............................................................................................ 44
CONCLUSIONES .......................................................................................................... 46
APÉNDICE A ............................................................................................................... 47
V
APÉNDICE B ............................................................................................................... 51
BIBLIOGRAFÍA ............................................................................................................ 55
Listado de figuras.
0.1 Fuente de voltaje programable modelo PROVA 8000 .......................................... X
1.1 Fuente de alimentación lineal ................................................................................. 5
2.1 Diagrama de bloques del diseño de una fuente regulada ....................................... 9
2.2 Entradas/salidas de un multiplexor analógico ...................................................... 10
2.3 Pines en un multiplexor analógico de 3 bits ......................................................... 11
2.4 Generador de funciones ........................................................................................ 13
2.5 Un Osciloscopio ................................................................................................... 14
2.6 Diagrama de bloques del TMS320C6713 ............................................................ 17
2.7 Aspecto físico de la tarjeta DSK .......................................................................... 19
2.8 Diagrama del DSK TMS320C6713 ..................................................................... 19
2.9 Ciclo de diseño de aplicaciones para la familia TMS320C6713 ......................... 20
3.1 Diagrama básico del regulador LM317 ................................................................ 23
3.2 Diagrama del LM317 con un arreglo de transistores ........................................... 25
3.3 Potenciómetro digital con un solo pulsador de subida ......................................... 27
3.4 Potenciómetro digital con 2 pulsadores, uno de subida y uno de bajada ............. 27
3.5 Diseño propuesto para variar los valores resistivos ............................................. 28
3.6 Segundo módulo de la fuente ............................................................................... 29
3.7 Configuración del Code Composer Studio .......................................................... 32
3.8 Vista de los archivos del proyecto ....................................................................... 33
3.9 Creación de un proyecto en el Code Composer Studio ........................................ 34
VI
3.10 Archivos necesarios para la creación del proyecto ............................................ 36
3.11 Opciones del compilador de CCS ...................................................................... 37
3.12 Opciones del compilador .................................................................................... 38
3.13 Ventana que genera el archivo GEL .................................................................. 40
3.14 Osciloscopio de estado sólido ............................................................................ 40
Listado de tablas.
Tabla 0.1. Características de voltaje y corriente de la fuente PROVA 8000. ................. X
Tabla 0.2 Características físicas de la fuente PROVA 8000. ....................................... XI
Tabla 2.1 Funcionamiento de un multiplexor de 3 bits. ................................................ 11
Tabla 3.1. Voltajes de salida medido y calculado del LM317 . ..................................... 24
Tabla 3.2 Voltaje de salida medido y calculado LM317 (arreglo de transistores). ...... 26
Tabla 3.3 Pulsos del contador y valores de las terminales de control............................ 31
../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898757../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898758../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898759../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898760../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898761../AppData/Roaming/Microsoft/Downloads/tesisfinal2.6.docx#_Toc326898762
VII
Acrónimos
AC Corriente alterna
ALU Unidad Lógico-Aritmética (ArithmeticLogicUnit)
CCS Code Composer Studio
CI Circuito integrado
DC Corriente directa
DMA Acceso directo a memoria
DSK Designer starter kit
DSP Procesador digital de señales (Digital Signal Processor)
EVM Evaluation module
MAC Multiply-accumulate operations
McBSP Multichannel Buffered Serial Port Description
PMI Payload Missing Indication
RON Resistencia interna que present los interruptores
SBSRAM Memoria de acceso aleatorio estática sincronizada con el reloj del sistema
(Synchronous Burst Static Random Access Memory)
SRAM Memoria Estática de Acceso Aleatorio (Static Random Access Memory)
TTL Lógica Transistor a Transistor (Transistor-Transistor Logic)
VLWI (very long instruction word),
VRMS valor cuadrático medio (root mean square)
http://www.monografias.com/trabajos13/memor/memor.shtml
VIII
INTRODUCCIÓN
Una fuente de voltaje y un generador de forma de onda son equipos que tienen por
objetivo formar parte de laboratorios de electrónica convencionales o sofisticados,
proporcionando voltaje y corriente para alimentar cualquier circuito tanto en energía
como en señal.
En este trabajo se presenta el diseño de un equipo que proporcionará un valor de voltaje
de corriente directa (valores de voltaje) manipulables mediante un teclado matricial, así
como un generador de forma de onda (senoidal, cuadrada y triangular), que podrá
comunicarse con una computadora.
El trabajo se estructura de la siguiente manera: en el Capítulo 1 se presenta el estado del
arte donde se puede revisar un poco de la historia del DSP y sus aplicaciones, así como
información sobre el funcionamiento de las primeras fuentes de voltaje, en el Capítulo 2
se puede consultar el Marco teórico donde se presentan las características y
funcionamiento de los elementos físicos a utilizar (fuentes de voltaje, generador de
señales, osciloscopio, DSP) así como del software utilizado. En el Capítulo 3 se presenta
la implementación y los diseños propuestos de un generador de señales con un DSP y una
fuente de voltaje programable, además de una propuesta de un osciloscopio. En el
Capítulo 4 se presentan las recomendaciones de los diseños propuestos y para finalizar
las conclusiones generales.
IX
Objetivo general
Hacer el diseño de una fuente de voltaje de corriente directa y un generador de señales
arbitrarias usando un Procesador Digital de Señales (DSP), para aplicarse en un
laboratorio portátil.
Objetivos Específicos
1. Manipular un DSP para generar señales de cualquier tipo.
2. Investigar los principios teóricos que nos ayuden a desarrollar una fuente de
voltaje de corriente continua variable y manipulable mediante pulsaciones en
un teclado.
3. Desarrollar un generador de funciones controlado por DSP.
X
JUSTIFICACIÓN
La importancia de este proyecto radica en el hecho de ser un diseño económico
comparado con los comerciales, y que además, contará con las características necesarias
para poder realizar prácticas de electrónica en un laboratorio.
El precio de una fuente digital programable comercial como la que se visualiza en la
figura 0.1, alcanza un valor de $63000.00 con las características1 que se observan en la
tabla 0.1 y en la tabla 0.2
Figura 0.1 Fuente programable modelo PROVA 8000
Rango Resolución Precisión
Voltaje 0-40v 1mV 0.05%± 9mV
Corriente 0 –5V 1mA 0.2% ± 9mA
Tabla 0.1 Caracterísiticas devoltaje y corriente de la fuente PROVA 8000
1Modelo PROVA 8000
XI
Dimensiones 310mm x 250mm x 133 mm /
12.2" x 9.8" x 5.2"
Peso 3.8kg / 8.4lbs
Tabla 0.2. Características físicas de la fuente PROVA 8000
Hay que notar que los parámetros más altos de esta fuente (5A y 40V) podrían ser
utilizados para circuitos de potencia, los cuales, no son frecuentes en escuelas de
bachillerato y licenciatura, sino más bien en la industria o laboratorios más sofisticados.
Por lo que, 1.5A y 15V son suficientes para poder lograr nuestro objetivo general, y así,
equipar laboratorios con lo necesario para realizar prácticas de electrónica. Donde 5V
son suficientes para la tecnología TTL, +9, +12, +15 para los OPAMP y por si hiciera
falta dejaríamos 50 salidas más de entre 0-15 volts para tener una mayor resolución en los
valores de voltaje a elegir.
XII
Planteamiento del problema
En ESIME CULHUACAN el principal problema que se plantea es la necesidad de
contar con equipo de propósito general para los laboratorios de circuitos electrónicos y
materias afines. Actualmente en algunos laboratorios se cuenta con equipo nuevo, pero
ninguno utiliza tecnología programable, por lo tanto contar con un equipo con las
características propuestas significaría tener una herramienta con tecnología de punta, que
permitirá que los alumnos de semestres intermedios a finales, cuenten con un equipo
portátil de bajo costo para la realización de sus experimentos de electrónica
1
CAPÍTULO I ESTADO DEL ARTE
2
1.1 Historia del DSP.
El procesamiento de señales digitales es una tecnología que podemos clasificar
importante en la actualidad. Constituye la base de los que conocemos como electrónica
de consumo.
El desarrollo del procesamiento digital de señales comenzó por la necesidad de los
diseñadores para poder simular el comportamiento de los sistemas analógicos y así poder
tener más certeza al momento de realizar un prototipo que podía ser muy costoso
económicamente, siendo en principio, una computadora la herramienta que se utilizaría
para realizar dichas simulaciones.
El procesamiento digital de señales dependía de procesadores digitales, de los cuales la
mayor parte de los algoritmos utilizados habían sido desarrollados en la década de los 50.
Fue así como los diseñadores buscaron una arquitectura de procesador que fuera más
eficaz y que pudiera correr simulaciones y se pudieran ejecutar en un periodo de tiempo
aceptable.
En la década de los setentas aparecieron algunas máquinas de cálculo que usaban
circuitos integrados de lógica discreta en tecnología TTL que iban acompañados por una
unidad aritmética programable de cuatro bits, para realizar las funciones de
procesamiento de los datos en tiempo real.
El primer multiplicador integrado en un circuito integrado se comercializó en 1973 por
una compañía llamada TWR, aunque a un excesivo costo. Posteriormente en 1978, AMI
anuncia el primer circuito integrado diseñado específicamente para el procesado de
señales en tiempo real, el S2811, con la capacidad de procesar datos de 12 bits. En 1979,
Intel introduce el Intel 2920, al que denomino “chip procesador analógico de señales”,
dado que disponía que periféricos de conversión analógico-digital y digital-analógico. El
Intel 2920 no disponía de multiplicador interno y era extremadamente lento en la
realización de cualquier operación aritmética.
3
El primer DSP (Procesador de Señales Digitales), con una unidad multiplicadora y otra
acumuladora (MAC)2 integradas en un chip, se comercializó a principios de 1980 (PD).
Tenía un ciclo de máquina de 122ns operando su unidad MAC en dos ciclos de máquina.
Se trató del primer dispositivo comercial útil en el procesamiento de señales de audio y
con la aplicación en el espectro audible (20Hz-20KHz) [1].
Ese mismo año, Ed Codell diseñó para Texas Instruments el boceto de lo que sería la
primera arquitectura DSP fabricada por la compañía. Dicha arquitectura fue
posteriormente optimizada por Surendar Magar, para favorecer la ejecución de los
algoritmos de procesamiento de la señal conocidos en la fecha. Así, en abril de 1982 se
lanza comercialmente el primer DSP de la familia TMS320 de Texas Instruments, el
TMS320, diseñado en tecnología TTL. Posteriormente se incorpora la tecnología CMOS.
El desarrollo inicial de los DSP por parte de Texas Instruments se puede considerar casi
como un trabajo visionario, dado que la rentabilidad de estos dispositivos no aparece
hasta la década de los noventa.
1.2 DSP y su aplicación.
Los procesadores digitales de señales o DSP surgieron cuando la tecnología permitió su
fabricación las características de las aplicaciones lo necesitaron. La telefonía móvil, la
electro medicina, la robótica, las comunicaciones y el procesamiento del sonido y la
imagen, Internet, el control de motores, la instrumentación, son algunas de las tareas
típicas de los DSP.
Cuando los microcontroladores de 8, 16 y 32 bits no fueron capaces de resolver
eficientemente tareas que el procesamiento digital de señales exigía, se reforzaron sus
arquitecturas, se amplió el repertorio de instrucciones, se le diseñó con numerosos
periféricos complementarios para dar lugar a los DSP.
2 Texas Instruments. Procesadores de Señales Digitales de altas prestaciones de la familia
TMS320C3x a la TMS320C6000”. Editoria Mc Graw Hill; España 2005
4
Los DSP son procesadores digitales cuyo diseño está enfocado para el tratamiento de
señales y que por su aplicación en los campos tecnológicos más demandados, supone
disponer de un dispositivo programable con los recursos físicos lógicos precisos para las
exigencias de estas tareas [2].
Los DSP tienen diversas aplicaciones en el mundo actual, solo por poner unos pocos
ejemplos tenemos: Eliminar el eco en las comunicaciones, lograr hacer más claras
imágenes de órganos internos en los equipos de diagnóstico médico, reconocimiento de
voz, control de motores, inversores industriales entre muchas otras [3].
Una manera para clasificar el funcionamiento de los DSP es a través de su rango
dinámico. El rango dinámico es un conjunto de números que van a ser procesados
mientras una aplicación se está ejecutando. Un DSP tiene que ser capaz de procesar los
números generados por una tarea tanto en la transformación analógica/digital como
durante las operaciones generadas (sumas, multiplicaciones, divisiones). La capacidad de
este procesamiento depende directamente del procesador y el tipo de aritmética que posee
(punto fijo o punto flotante). Un procesador de 32 bits tiene un número mayor de bits que
puede manipular. Cada tipo de procesador es ideal para un cierto rango particular de
aplicaciones. Un DSP de 16 bits se puede utilizar para sistemas de voz como un teléfono,
ya que estos trabajan con un estrecho rango de frecuencias de audio, un estéreo de alta
fidelidad requeriría un procesador de 24 bits de punto fijo, una aplicación de gráficos 3D
requeriría un rango dinámico mayor y requeriría un procesador de 32 bits con punto
flotante [4].
1.3 Primeras fuentes de alimentación.
Las primeras fuentes de alimentación eran lineales. Un transformador que reducía la
tensión de entrada de 220 VAC a otra tensión seguida de un puente de diodos y algún
filtro para estabilizar la salida.
5
Figura 1.1 Fuente de alimentación lineal.
El inconveniente de las fuentes lineales es su gran tamaño, que disipan gran parte de la
energía en calor. Consecuentemente la vida de los componentes electrónicos que pueda
incorporar o estar cercanos se ve mermados por ese incremento de calor. Además la
tensión de salida varía en función de la carga. Hoy en día se siguen utilizando ya que
generan un ruido y rizado menor. Además al tener poca electrónica son más inmunes a
las radiaciones electromagnéticas.
Hemos dicho que todas las fuentes de alimentación lineales suelen ser pesadas y tienen
poca eficiencia, pero ¿respecto a qué? Las necesidades en la carrera aeroespacial de
reducir peso y consumo de toda la electrónica llevó al primer desarrollo de fuentes de
alimentación conmutadas. El sistema básicamente consiste en transferir energía de
manera controlada entre el primario y secundario. Así en los años cuarenta se hicieron las
primeras pruebas en sistemas conmutados por parte de la NASA.
En principio era una tecnología muy cara y desconocida. Paulatinamente, el
abaratamiento de la electrónica y la miniaturización, ha conseguido que las fuentes de
alimentación conmutadas se abaraten considerablemente, ofreciendo mayor estabilidad,
seguridad, eficiencia a un precio similar a las fuentes lineales.
Con la entrada en vigor en el 2001 de la normativa EN 60555-2 sobre el factor corrector
de potencia ha obligado a nuevos desarrollos. El principal motivo de entrada de esta
normativa es que la forma que tienen de consumir energía las fuentes de alimentación
conmutadas suele distorsionar la línea eléctrica pudiendo influir en el funcionamiento de
6
otros equipos electrónicos conectados. Se intenta de esa manera mejorar la calidad del
fluido eléctrico. Las fuentes de alimentación con PFC (Power Factor Correction)
principalmente reducen los armónicos re-inyectados a la red mediante un filtro activo que
corrige la forma de la onda de intensidad de entrada haciéndola senoidal en fase con la
tensión [5].
7
CAPÍTULO II MARCO TEÓRICO.
8
2.1 Fuentes de voltaje.
Una fuente de voltaje de salida regulado, es un dispositivo, que brinda una tensión de
salida de corriente directa, necesaria para hacer funcionar la mayoría de circuitos
electrónicos, ya sea en aparatos diseñados por fabricantes o industrias grandes; en este
caso para el taller o laboratorio experimental se utiliza al hacer pruebas necesarias y
verificar el correcto funcionamiento de los circuitos electrónicos.
Estas fuentes se construyen a partir de los requerimientos necesarios para satisfacer las
condiciones del usuarios, a continuación describimos una fuente de 15V de DC
regulados, con una corriente de salida de 2A.
En la figura 2.1 se presenta el diagrama a bloques del diseño de la misma, tomando en
cuenta como va a funcionar nuestra fuente.
A simple vista se nota que cada parte esta dispuesta según un ordenamiento lógico del
funcionamiento, y se describe qué tipo de señal se está obteniendo, desde la entrada de
corriente alterna, el transformador, la parte de rectificación de la señal, el filtrado, la
regulación, hasta la carga, que consumirá la corriente que la fuente provee.
La tarea de la fuente de alimentación (fuente) de cualquier equipo o aparato electrónico
es obtener el o los niveles adecuados de corriente directa a partir del voltaje de línea (120
VRMS).
Las fuentes de voltaje reguladas se diseñan, y este diseño queda plasmado en un
diagrama, el que incluye todos los componentes de la fuente, uno a uno y la forma en que
estarán colocados en el circuito para un correcto funcionamiento, a continuación, el
diagrama de una fuente regulada de voltajes sencilla de 15V y 2A con protección para
cortocircuitos:
9
Figura 2.1 Diagrama de bloques del diseño de una fuente regulada.
Dentro de la parte de regulación, existe una resistencia de ajuste, que es la que
determinará la salida de voltaje, por lo tanto si se quieren varias salidas dentro de un
mismo regulador, se deben tener varias resistencias de ajuste, la mejor manera es
mandarlas todas por un mismo canal, una multiplexación, y al ser una resistencia, se debe
utilizar un multiplexor analógico.
2.2 Multiplexores analógicos.
2.2.1 Estructura y Utilización.
El multiplexor analógico está constituido por una serie de entradas/salidas conectadas a
una línea común de entrada/salida como se muestra en la Figura 2.2. Unas entradas de
selección determinan cual es la entrada que se conectará a la salida.
10
Figura 2.2 Entradas/salidas de un multiplexor analógico
Desde el punto de vista interno, el multiplexor está formado por un conjunto de
interruptores analógicos, de tal manera que en cada instante sólo uno de ellos puede estar
cerrado. Las entradas de selección actúan sobre un decodificador digital, cuyas salidas
rigen los diferentes interruptores analógicos, de tal forma que en cada momento eligen el
interruptor que debe ser cerrado. La principal ventaja que presentan los multiplexores
analógicos, frente a los digitales, es su carácter bidireccional, lo que le permite que cada
terminal del multiplexor sea posible usarla como entrada o como salida y el manejo de
señales analógicas en vez de digitales.
Desde el punto de vista ideal, se dirá que si el multiplexor dispone de n entradas de
selección podrá disponer de hasta 2n canales de entrada. La mayoría de los multiplexores
comerciales son de cuatro u ocho canales, es decir, de dos o tres entradas de selección.
2.2.2 Parámetros Característicos.
Desde el punto de vista real se verá una serie de parámetros característicos que nos
facilitan los fabricantes y que proporcionan una idea de cuánto se aleja el multiplexor
propuesto del modelo ideal. Para ello, se tomará de referencia el multiplexor C40513, es
de ocho canales, tres entradas de selección.
3 Obtenida de la hoja de especificaciones CI de Philips Semiconductors
11
Figura 2.3 Pines en un multiplexor de ocho canales analógico y 3 bits de dirección
Su tabla de funcionamiento es:
Tabla 2.1 Funcionamiento de un multiplexor de ocho canales analógico y 3 bits H = HIGH state (estado alto) L = LOW state (estado bajo) X = Estado prohibido
2.2.3 Resistencias de los interruptores.
RON es la resistencia que ofrece el interruptor en régimen estacionario cuando se
encuentra en conducción (interruptor cerrado). Análogamente se definiría ROFF como la
resistencia que presenta el interruptor en régimen estacionario cuando se encuentra en
corte (interruptor abierto). RON puede valer 220Ω, una resistencia alta para un valor que
INPUTS CHANEL ON Ē A2 A1 A0
L L L L Y0-Z
L L L H Y1-Z
L L H L Y2-Z
L L H H Y3-Z
L H L L Y4-Z
L H L H Y5-Z
L H H L Y6-Z
L H H H Y7-Z
H X X X none
12
debería ser nulo. Para ROFF se obtienen valores muy altos aunque no infinito, que es el
valor que se esperaría.4
2.3 Generador de señales.
Un generador de señales es un instrumento utilizado en la electrónica y sirve para generar
o simular señales específicas con determinadas características. Por ejemplo, crear o
simular una señal que puede ser cuadrada, sinusoidal, de una determinada frecuencia, y
de una determinada amplitud. De esta forma, podemos aplicar esta señal generada a un
circuito para ver su respuesta. Un generador de funciones tiene una frecuencia máxima a
la cual puede llegar el instrumento, al igual que una amplitud máxima en volts. Los
generadores de funciones más comunes, pueden generar ondas sinusoidales, triangulares
y cuadradas. Otros generadores, en cambio, tienen señales programables como por
ejemplo la de un electrocardiograma. También, puede haber instrumentos que permitan la
generación de una señal de impulso.
Una herramienta primordial para un generador de funciones es el osciloscopio, ya que en
él, se pueden visualizar las señales de salida.
Podemos clasificar los generadores de señales en tres grandes grupos: generadores de
función, sintetizadores de frecuencia y fuentes digitales de señal.
El primero de ellos se utiliza cuando nos interesa generar señales de baja o media
frecuencia con formas de onda casi ideales, pudiendo variar los parámetros básicos que
caracterizan la señal.
Los sintetizadores de frecuencia se utilizan si nos interesara generar señales con
frecuencias, generalmente altas, muy estables y precisas. En el último de los grupos, las
señales se obtienen mediante un proceso de muestreo digital, la forma de onda de salida y
los rangos de frecuencia de los generadores de señal son variables dependiendo del tipo
4 Texas Instruments. Procesadores de Señales Digitales de altas prestaciones de la familia TMS320C3x a la TMS320C6000”. Editoria Mc Graw Hill; España 2005
13
de generador y de la aplicación a la que vayan destinados. En cualquier caso se ha de
exigir a los generadores de señales lo siguiente:
La frecuencia de salida ajustable y estable. La amplitud de la salida variable. Impedancia de salida conocida.
Sus partes más importantes son:
Regulador de Frecuencia: En este bloque se regula mediante una perilla, la frecuencia de
la señal de salida. Podemos variarla desde 0Hz (onda continua) hasta el máximo que nos
permita el instrumento. La calidad del mismo viene dada por muchos parámetros de los
cuales este es de los más importantes.
Regulador de Ciclo de Trabajo y Offset: El primero es para regular ambas mitades del
ciclo de la señal de salida y el Offset es para desplazar o mover la onda verticalmente.
Figura 2.4 Generador de funciones
14
2.4 El osciloscopio.
El Osciloscopio es uno de los más importantes aparatos de medida que existen
actualmente. Representan gráficamente las señales que se le inyectan, pudiendo así
observarse en la pantalla muchas más características de la señal que las obtenidas con
cualquier otro instrumento.
Hay muchos aparatos de medidas capaces de cuantificar diferentes magnitudes. Por
ejemplo, el voltímetro mide voltaje, el amperímetro mide corriente, el vatímetro potencia,
etc. Pero, sin duda alguna, el aparato de medidas más importante que se conoce es el
Osciloscopio. Con él, no sólo podemos averiguar el valor de una magnitud, sino que,
entre otras muchas cosas, se puede saber la forma que tiene dicha onda, es decir,
podemos obtener la gráfica que la representa.
Figura 2.5 Osciloscopio
Por otra parte los osciloscopios digitales tienen un aspecto totalmente distinto a los
convencionales pero, si entendemos el funcionamiento de los Analógicos, será muy
sencillo aprender a manejar los digitales. Los más modernos son, en realidad, un pequeño
15
computador destinado a captar señales y a representarlas en la pantalla de la forma más
adecuada.
Estos tratan de imitar los antiguos mandos de los osciloscopios normales, de modo que,
en realidad, sólo es necesario aprender la forma en que el aparato se comunica con el
usuario. Esto se hace normalmente en forma de menús que pueden aparecer en pantalla
con opciones que el usuario puede elegir con una serie de pulsadores.
La forma de trabajo de un osciloscopio consiste en dibujar una gráfica, una gráfica es una
curva que tiene dos ejes de referencia, el denominado de abscisas u horizontal y el eje de
ordenadas o vertical. Para representar cada punto de la gráfica tememos que dar dos
coordenadas, una va a corresponder a su posición respecto al eje horizontal y la otra va a
ser su posición respecto al en el vertical. Esta gráfica se va a representar en la pantalla
que tienen todos los osciloscopios debido al movimiento de un haz de electrones sobre
una pantalla de fósforo que la parte interna del tubo de rayos catódicos. Para representar
dicha señal sobre el tubo se realiza una división en dos partes: señal vertical y señal
horizontal. Dichas señales son tratadas por diferentes amplificadores y, después, son
compuestas en el interior del osciloscopio.
Un osciloscopio puede ser utilizado para estudiar propiedades físicas que no generan
señales eléctricas, por ejemplo las propiedades mecánicas. Para poder representar en
pantalla del osciloscopio dichas propiedades, en necesario utilizar transductores que
convierta la señal que le llega, en este caso la mecánica, en impulsos eléctricos. Un
osciloscopio es un aparato que basa su funcionamiento en la alta sensibilidad que tiene a
la tensión, por lo que se pondría entender como un voltímetro de alta impedancia. Es
capaz de analizar con mucha presión cualquier fenómeno que podamos transformar
mediante un transductor en tensión eléctrica [6].
Con el osciloscopio se pueden realizar diversas acciones, como:
Determinar directamente el periodo y voltaje de una señal, Determinar indirectamente la frecuencia de una señal. Determinar que parte de la señal es DC y cual AC Localizar averías en un circuito.
16
Medir la fase entre dos señales. Determinar que parte de la señal es ruido y como varia en el tiempo-
En todos los osciloscopios podemos distinguir tres partes:
La pantalla Un canal de entrada por las que se introduce diferencia de potencial a medir Una base tiempo.
2.5 DSP.
Un procesador digital de señales es un microprocesador especializado y diseñado
específicamente para procesar señales digitales en tiempo real. Este provee secuencias de
instrucciones ultra-rápidas como:
MAC DEEP PIPELINING La habilidad de actuar como un dispositivo de DMA SATURACION ARITMETICA ARQUITECTURA DE HARVARD, memoria de programas y memoria de datos
separadas.
La mayoría de los DSP son de punto fijo, dado que, en el mundo real del procesamiento
digital, se puede sacrificar algo de precisión, sin embargo, también existen los DSP de
punto flotante que son utilizados en campos científicos por ejemplo [7].
En su núcleo, un DSP es altamente numérico y repetitivo. A la vez que cada dato llega,
éste debe ser multiplicado, sumado y además de eso transformado de acuerdo a fórmulas
complejas. Lo que permite realizar todo ello es la velocidad del dispositivo. Los sistemas
basados en DSP deben trabajar en tiempo real, capturando y procesando información a la
vez que ocurre. Los conversores analógico-digital deben adquirir la información lo
http://www.monografias.com/Computacion/Programacion/http://www.monografias.com/trabajos13/cinemat/cinemat2.shtml#TEORICO
17
suficientemente seguido como para captar todas las fluctuaciones relevantes de las
señales. Si el ADC es muy lento se perderá información. El DSP también debe trabajar
rápido para no perder información que le llega desde el ADC y además cumplir con el
adecuado procesamiento de las señales. Por ejemplo, un sistema estéreo maneja sonidos
de hasta 20 KHz, por lo tanto el DSP deberá ser capaz de procesar alrededor del centenar
de millones de operaciones por segundo. Otras señales, tales como transmisiones por
satélite son del orden de los Gigahertz por lo que requieren un procesamiento de mayor
velocidad [8].
2.5.1 Procesador Digital de Señales TMS320C6713.
La familia TMS320C6000 son procesadores de propósito especial que cuentan con una
arquitectura y un set de instrucciones apropiados para el procesamiento de señales.
La arquitectura del procesador digital de señales C6713 esta basada en la arquitectura
VLWI, la cual esta diseñada para trabajar con algoritmos numéricos de gran tamaño. Con
un reloj de 225 MHz, el C6713 es capaz de alimentar instrucciones de 32 bit cada 1/(225
MHz) o 4.44 ns [9].
El C6713 incluye una memoria interna de 264 KB, ocho unidades funcionales o de
ejecución compuestas por seis ALU y dos unidades multiplicadoras, además, de dos
registros de propósito general de 32 bit Fig.2.5.
Figura 2.6. Diagrama de bloques del TMS320C6713.
18
Otras características generales de este tipo de DSP se pueden resumir como se muestra a
continuación:
1. Capacidad de almacenamiento de instrucciones y datos en dispositivos de
memoria interna. En estos DSP, las memorias de programa y de datos se
encuentran separadas, disponiendo el DSP de un bus de datos para el acceso a las
instrucciones de tamaño 256 bits y de un bus de datos para acceso a la memoria
de datos de ancho de 32 bit.
2. Memoria caché interna para acelerar el acceso de la CPU a las instrucciones y a
los datos. Esta memoria aparece en la jerarquía de memoria del sistema
microprocesador en el nivel más cercano a la CPU.
3. Registros internos de 32 bit y propósito general (acumuladores), agrupados en dos
tablas de igual número de registros cada una.
4. Múltiples controladores internos de eventos independientes de la CPU: DMA
(capaz de transferir datos en el rango de direcciones de memoria de la CPU sin
que ésta intervenga, con cuatro canales programables más un quinto auxiliar),
EDMA (similar a la DMA pero con 16 canales programables independientes y
con memoria interna para mantener las configuraciones de futuras transferencias)
y QDMA (similar a la EDMA, aunque con capacidad de realizar las transferencias
a mayor velocidad).
5. Puertos digitales de entrada/salida de propósito general.
6. Temporizadores de 32 bit.
7. Puertos serie que implementan un protocolo serie síncrono McBSP.
8. Periféricos para la conexión con otros dispositivos externos: HPI (puerto de
comunicación del DSP que permite a un dispositivo externo al mismo, que
funcionaría como maestro en la transferencia de información, acceder al espacio
de memoria del propio DSP), XBUS (bus de expansión que incorpora las
funciones del puerto HPI, aunque con la posibilidad de intercambio asíncrono y
síncrono de información y en modo maestro o esclavo, y de puerto de
entrada/salida) y EMIF (interfaz de acceso a cuatro rangos de direcciones
independientes, con periféricos externos y protocolos diferentes –SRAM,
SDRAM, SBSRAM- mediante bus de datos de 32 bit) [10].
19
9. Dispone de seis unidades aritmético-lógicas y de dos multiplicadores, en total
ocho unidades funcionales. El compilador asigna (planificación estática de la
ejecución de las instrucciones del usuario) cada una de las unidades funcionales a
las diferentes instrucciones que operan en paralelo [11]. Las ocho unidades
funcionales son:
Dos multiplicadores internos (unidad funcional M.). Operadores capaces de realizar multiplicaciones con operandos flotantes de punto fijo o coma
variable.
Dos unidades aritméticas y lógicas (unidad funcional .S). Operadores capaces de realizar operaciones aritméticas de 32 bit con operandos
flotantes de punto fijo o punto flotante.
Dos unidades aritméticas y lógicas (unidad funcional .L). Operadores capaces de realizar operaciones aritméticas y de comparación de 32 o 40
bits con operandos flotantes de punto fijo o punto flotante.
Dos unidades aritméticas y lógicas (unidad funcional .D). Operadores capaces de realizar operaciones aritméticas de 32 bit para generar las
direcciones de los operandos.
Figura 2.7. Aspecto físico de la tarjeta DSK
Figura 2.8. Diagrama del DSK TMS320C6713
20
Un compilador de DSP es el Code compouser Studio, el cual es útil para la tarjeta DSK
TMS320C6713
2.7 Code Composer Studio (CCS).
Es reconocido como una de las herramientas de desarrollo más completas en el ámbito de
procesadores digitales, provee las herramientas necesarias para el desarrollo de software
en el DSP. Los procesadores que puede compilar el CCS son: MSP430, Stellaris (ARM
Cortex M3), C6000, C55x, C54x, C28x, DaVinci, Sitara (ARM Cortex A8), OMAP y
TMS470. Mediante CCS, se dispone de un entorno que permite al usuario editar,
compilar, simular, construir y depurar aplicaciones de software para el DSP. En la Fig. 3
se muestra el ciclo que sigue el CCS para desarrollar una aplicación.
Figura. 2.9. Ciclo de diseño de aplicaciones para la familia TMS320C6713.
El archivo fuente, escrito en C, se construye con la ayuda de un editor de texto incluido
en el entorno, también es posible escribir el archivo fuente en ensamblador o puede ser
creado por el compilador y el optimizador. Los archivo objeto (.OBJ) y las librerías son
enlazados para crear el archivo ejecutable (.OUT), posteriormente el archivo .OUT es
cargado en el DSP por el debugger del CCS.
La tendencia habitual en estos DSP, es desarrollar las aplicaciones utilizando el lenguaje
C; el lenguaje ensamblador del DSP no se suele utilizar debido a la complejidad de su uso
21
y al alto grado de conocimiento que se requiere de la arquitectura interna del
microprocesador.
Las características principales del CCS (en su versión V4) son: Un ambiente de desarrollo
superior que acelera el diseño y depuración (debugeo) con un editor de código avanzado
y otras características como “code completion”, “code folding”, historia local de cambios
de código fuente y marcadores, interface Gráfico avanzado que simplifica el manejo de
data y proyectos por medio de la creación de menús personalizados , “toolbars” y vistas
rápidas (“fast views”) que ayudan al programador a definir las funciones y ventanas
apropiadas para tareas específicas, ambiente extensible con una gran selección de “plug-
ins” entre los cuales se encuentran análisis de código estático, control de código fuente,
modelaje y desarrollo de puntaje (scripting), depurador de multi-procesadores que
administra el flujo de información entre varios núcleos (“cores”) sin la confusión que
muchas veces crea tener un depurador separado para cada núcleo, administrador de
Actualización (Update Manager) automáticamente informa al cliente y carga la
información necesaria.
22
CAPÍTULO III
IMPLEMENTACIÓN.
23
3.1 Fuente de voltaje programable.
Para implementar una fuente de voltaje donde sus salidas sean programables, se utiliza
en principio un regulador, el que se utiliza es el LM317 como se muestra en la figura 3.1,
el funcionamiento de éste, es en base a una resistencia variable (un potenciómetro, que es
su resistencia de ajuste) que al tomar diferentes valores, el regulador dará voltajes de
salida conforme sea diferente la resistencia
El regulador puede variar de 1.25 volts a 37 volts y puede suministrar hasta 1.5 amperes.
Figura 3.1 Diagrama básico del regulador LM317
En la figura 3.1 5 se observa el circuito básico del cual se partió para el diseño de la
fuente programable. Se armó el circuito con una resistencia variable (potenciómetro)
donde el diagrama muestra R2 para así comenzar las pruebas, dando diferentes valores
resistivos con el potenciómetro y anotando cómo va variando el voltaje de salida con
forme a los cambios de resistencia R2. La ecuación 1 muestra el comportamiento del
voltaje de salida en el LM317.
-----------(1)
5 LM317 National semiconductor
24
El voltaje de entrada suministrado fue de 28 volts, denotando que la ecuación del manual
no corresponde con los valores prácticos, la relación de voltaje de salida y resistencia de
ajuste conforme a las mediciones hechas es la siguiente:
Vint = 28volts
R1 = 270 Ω
Tabla 3.1 Voltajes de salida, medido y calculado del LM317 con un Vin=28 Volts
Entonces, el siguiente paso es tener un arreglo de “n” resistencias que puedan ser
activadas mediante un teclado matricial y que éstas sean las que regulen la salida de
voltaje del LM317, se puede utilizar un arreglo de interruptores donde para cada valor de
resistencia se necesita un interruptor, y cuando se haga el cambio de resistencia, todos los
interruptor deben de estar en cero excepto el equivalente a la resistensia que daría la
salida de voltaje deseada.
Bajo este principio se tiene que por cada salida de voltaje se tendrá un interruptor físico,
lo cuál es totalmente impráctico, ya que, la realizar una interfaz con Pic (Para tener la
comunicación del botón del teclado matricial con respecto al arreglo de resistencia
necesario) se necesitaría un bit del puerto para cada salida de voltaje deseada.
R2 Vout
Calculado
Vout
Medido
100 1.7 2.7
390 3.0 4.5
820 5.0 8.3
1.5K 8.1 12.1
1.8K 9.5 15.14
3.3K 16.5 19.7
25
3.1.1 Arreglo en base a transistores.
Se busca que el regulador LM317 ofrezca más de un valor diferente de voltaje, se debe
tener un arreglo de resistencias, las cuales mediante una interfaz de selección sean
escogidas, así, de acuerdo con la resistencia que sea seleccionada, se obtendrá un valor de
voltaje correspondiente a ésta resistencia.
La primera propuesta es la de utilizar interruptores como interfaz de selección.
El objetivo de los transistores es funcionar en su configuración más común, la de corte
saturación (trabajando como interruptores). Al saturar alguno de los transistores, se
obtiene el valor resistivo que esta conectado al colector de cada uno de estos [12][13].
Para poder observar mejor esto se propone el circuito de la figura 3.3.
Figura 3.2 Diagrama del LM317 con un arreglo de transistores
Los valores obtenidos fueron los siguientes:
LM317 V out V in
R1 240
26
Tabla 3.2 Voltajes de salida, medido y calculado del LM317 basado en un arreglo de transistores con un
Vin=28 Volts
3.1.2 Arreglo en base a un potenciómetro digital.
El siguiente arreglo a proponer para funcionar como cambio de resistencias, es el de un
potenciómetro digital, específicamente el DS1669, el cual, basado en un e-prom interna,
guarda los registros de pulsos, teniendo internamente 69 diferentes valores de resistencia
que se varían mediante pulsos, ya sea en su arreglo más sencillo con un solo pulsador
ascendente que, al ser presionado durante 5 segundos, va al valor más alto de resistencia
o con un solo pulso, cambia el valor de resistencia de manera ascendente, valor por valor.
R2 Vout
Calculado
Vout
Medido
100 1.8 2.7
330 3.0 4.5
470 4.0 6.0
1K 7.3 12.1
2.2K 13.5 15.14
3.3K 18.0 19.7
27
Figura 3.3 Potenciómetro digital con un solo pulsador de subida
O se puede utilizar un arreglo con dos pulsadores, uno ascendiendo en los valores de
resistencia, y el otro al presionarlo descenderá la e-prom interna a los valores bajos de
resistencia, ambos teniendo la característica que, si son presionados por más de 5
segundos, se irá inmediatamente al valor más bajo o al más alto de resistencia
dependiendo del botón que haya sido presionado.
Figura 3.4 Potenciómetro digital con dos pulsadores, uno de subida y otro de bajada
Este arreglo parece ser muy bueno, ya que, con sólo un pulso, una entrada digital tenemos
acceso a 69 valores de resistencia diferentes, que, como vemos en el circuito básico del
regulador Lm317 se traducirían en 69 valores discretos diferentes de voltaje controlados
mediante pulsos.
28
El inconveniente es que, el DS1669 con que se cuenta, tiene una resistencia máxima de
10K, y al denotar que, en el diagrama básico del regulador LM317, la resistencia de ajuste máximo es de 5K (5K es la resistencia de mayor valor para alcanzar el voltaje máximo de salida en el regulador) así que, en principio los valores resistivos que contiene
el integrado arriba de 5K sobran (35 valores de resistencia que no serán útiles), eso
aunado a que, la mayoría de los valores resistivos que necesitamos oscilan dentro del
rango de 0-1K, nos deja un pobre número de resistencias útiles, sin contar que las resistencias internas del integrado son arbitrarias, sin posibilidad a ser manipuladas, por
lo que tendríamos pocos valores de resistencia y los cuales no son los que necesitamos
para obtener los voltajes de salida deseados.
3.1.3 Arreglo en base a un multiplexor analógico.
El principio que se utiliza se observa en la figura 3.5 es el de enviar varias señales de
resistencia por un mismo canal (multiplexación) donde la relación entre las señales de
entrada y la señal de salida son los bits de control [14]. Por lo tanto se tiene un número de
salidas de voltaje exponencial conforme al número de bits que tenga el multiplexor a
utilizar, siendo un multiplexor de 3 bits capaz de ofrecernos 8 salidas diferentes de
resistencia por un mismo canal, lo que se traduce en 8 diferentes salidas de voltaje.
Figura 3.5: Diseño propuesto para variar valores resistivos mediante el principio de multiplexado, con un
contador ascendente descendente y un decodificador a un display 7 segmentos
29
3.1.4 Módulos de la fuente.
Si se desean más salidas de voltaje en la fuente, lo que se debe tener es más resistencias
multiplexadas. Por lo tanto por cada multiplexor que se agregue al diseño de la fuente se
le llamarán “módulos de la fuente” ya que, con un solo multiplexor la fuente tiene un
determinado número de salidas de voltaje, puede funcionar sólo con esas, pero se deja el
precepto teórico (y práctico) de cómo agregar más salidas de voltaje a la fuente, esto
conforme más módulos se le agreguen.
El módulo consiste en poner la terminal común de las resistencias multiplexadas a la
salida del 1º módulo, y la salida del segundo módulo (la resistencia de salida) será
conectada a tierra. El paso para agregar más módulos es exactamente el mismo, aunque
para la implementación propuesta sólo se tendrán 2 módulos.
En la figura 3.6 se muestra el 2º módulo de la fuente. La forma de trabajo es tener dos
resistencias en serie a la salida, (una resistencia por módulo) pero una de esas resistencias
tendrá valor cero, así, aunque existan dos resistencias en serie, el que una tome valor
prácticamente cero, es como si existiera sólo una resistencia, así se hace la multiplexación
del segundo módulo, multiplexación de 8 valores de resistencia distintos (lo que se
traduce en 8 salidas de voltaje diferentes ajustables) para que, cuando se necesiten más
valores, ahora una de las resistencias del 2º módulo tomará el valor de cero, y la
multiplexación se realizará en el 1º módulo de la fuente, teniendo otros 8 valores
diferentes de resistencia que se traducirán en 8 salidas de voltaje diferentes sumadas a las
8 que ya se habían obtenido.
Fig. 3.6 Segundo módulo de la fuente
30
3.1.5 Interfaz Pic de la fuente.
Ahora que se tiene una fuente controlada en base a un pulso conectado a un contador que
da 8 salidas diferentes de voltaje y otras 8 salidas de voltaje controladas por 3 terminales
de control de un multiplexor, se debe de realizar la interfaz con el teclado matricial.
Esta consistirá en que se tienen 4 entradas que controlan las salidas de voltaje (1 contador
y 3 terminales de control de un multiplexor) y cada pulso del teclado tiene que activar las
4 salidas antes mencionadas, dependiendo de la tecla que se oprima se mandarán un
cierto número de pulsos al contador (que serán entre 0 y 7) y los bits de control del
multiplexor tomarán un dato binario (también de 0 a 7). Teniendo la particularidad que,
para que se den los pulsos del contador, las terminales de control del multiplexor tienen
que estar en cero, y para que las terminales de control tomen un valor diferente de 0, el
contador debe de estar en cero, esto porque la fuente tiene dos módulos (revisar el
apartado explicando el segundo módulo de la fuente).
La interfaz propuesta es un Pic, donde el teclado matricial estará conectado a un puerto
del Pic, puerto configurado como entrada, y el pulso que controla al contador y las 3
terminales de control del multiplexor analógico estarán en medio puerto (4 bits)
configuradas como salidas [15].
La siguiente tabla muestra las entradas, las salidas del contador y terminales de control
así como los voltajes de salida que suministrarán.
31
Número de tecla Valor de las
terminales de
control en número
binario
Voltaje de salida
1 000 x
2 000 x
3 000 x
4 000 x
5 000 x
6 000 x
7 000 x
8 000 x
9 001 1.2
10 010 1.8
11 011 3.3
12 100 4
13 101 5.2
14 110 7.1
15 111 8.8
Tabla 3.3 Pulsos del contador y valores de las terminales de control para obtener los voltajes de salida
3.2 Generador de funciones
3.2.1 Generación de Señal senoidal de 8 puntos
Para realizar el generador de funciones, lo primero que debemos elegir es el cómo se
realizará y las herramientas para esto. Al buscar una herramienta de medición totalmente
programable, elegimos un compilador, en éste caso será el Code Composer y la interfaz,
que nos permitirá sacar la señal que se habrá de programar, se utilizará una tarjeta DSK,
el modelo TMS320C6713.
32
El primer paso para generar una señal (la primera señal que generaremos es una senoide)
es la configuración del Software conforme el hardware que utilizaremos
3.2.1.1 Configuración del CCS
Antes de comenzar a desarrollar una aplicación es necesario configurar el CCS, mediante
el Code Composer Studio Setup, para indicar el tipo de plataforma con la cual se realizará
el desarrollo de la aplicación, puede ser un sistema de emulación, el DSK, o un módulo
de evaluación EVM, o cualquier otra plataforma de hardware que incluya algún DSP. Al
abrir el CCS se desplegará una ventana como la que se observa en la figura 3.7.
Figura 3.7. Configuración del code composer studio.
Si no abre la venta de configuración, esta se debe abrir desde el menú usando File→
Import. En la pantalla de configuración se debe seleccionar C6713DSK y después oprimir
save and quit.
3.2.1.2 Desarrollo de aplicaciones en CCS
Para el desarrollo de una aplicación en CCS es necesario crear un proyecto, el cual se
encarga de guardar toda la información requerida para la creación de un ejecutable. En la
33
figura 3.8 se observan los archivos fuente, archivos de cabecera, librerías y
configuraciones.
Figura. 3.8 Vista de los archivos del proyecto.
3.2.1.2 Configuración de parámetros para la construcción de un proyecto en
CCS.
Existen cerca de 100 opciones del compilador para cambiar el tamaño, performance, etc.
En la siguiente tabla se presentan las opciones más usadas.
Tabla 3.4 Opciones del compilador.
Los proyectos contienen archivos de diferentes extensiones, estos incluyen:
1. Archivo.pjt: Archivo con el que se crea un proyecto.
34
2. File.c: Programa fuente en C.
3. File.asm: Programa fuente en ensamblador creado por el usuario, el compilador en
c o el optimizador.
4. Archivo.sa: Programa fuente en ensamblador lineal.
5. Archivo.h: Archivo de cabecera.
6. Archivo.lib: Archivo de librería.
7. Archivo.cmd: Archivo de enlace para direccionar las secciones de la memoria.
8. Archivo.obj: Archivo objeto creado por el ensamblador.
9. Archivo.out: Archivo ejecutable, este se almacena y se ejecuta en el C6713.
10. Archivo.cdb: Archivo de configuración cuando es usado el DS.
3.2.1.4 Creación del proyecto
Para crear un proyecto se selecciona Project→ New. Y se escribe el nombre del proyecto
como se muestra en la Figura 3.9
Figura. 3.9. Creación de un proyecto en code composer studio.
Para crear los archivos fuente se selecciona File→ New → Source File y en la ventana
que se abrió se escribe el código mostrado es un programa que genera una señal senoidal
de ocho puntos controlados con interruptores.
35
#include “dsk6713_aic23.h” //archivo de cabecera para la inicialización del códec Uint32 fs = DSK6713_AIC23_FREQ_8KHZ; //Frecuencia de muestreo short loop = 0; short gain = 10; //ganancia short sine_table[8]={0,707,1000,707,0,-707,-1000,-707}; //valores de la onda senoidal void main() { comm_poll(); //inicialización DSK, códec, McBSP DSK6713_LED_init(); //inicialización de LED DSK6713_DIP_init(); //inicialización del DIP switch while(1) //ciclo infinito { if(DSK6713_DIP_get(0)==0) //Si switch #0 es presionado { DSK6713_LED_on(0); //LED #0 Enciende output_sample(sine_table[loop]*gain); //Salida if (++loop > 7) loop = 0; } else DSK6713_LED_off(0); //LED #0 apagado } }
Se guarda el archivo con el nombre de Sine8_LED.c. En este programa se crea un buffer
(sine_table) y se llena con ocho puntos los cuales representan sin(t), donde t =
0,45,90,135,180,225,270, y 315 grados. Dentro de la función main es llamada la función
comm_poll que es parte del archivo c6713dskinit.c, el cual se encarga de inicializar el
DSK, el códec AIC 23 y los dos McBSPs en el procesador. Dentro del archivo
c6713dskinit.c la función DSK6713_init inicializa el archivo BSL, el cual debe ser
llamado antes que las siguientes funciones BSL, DSK6713_LED_init y
DSK6713_DIP_init, las cuales inicializan los cuatro LEDs y los cuatro dip switch de la
tarjeta.
Con while(1) dentro de la función main se crea un lazo infinito, cuando el interruptor #0
es presionado se enciende el LED #0 y la onda senoidal se genera, de otra manera
DSK6713_DIP_get(0) será falso y LED #0 permanecerá apagado.
La función output_sample, que se localiza en el archivo c6713dskinit.c, es llamada para
sacar el primer valor en el buffer sine_table[0] = 0, el ciclo se incrementa hasta que se
alcanza el ultimo valor, después se reinicializa a cero.
Cada período T = 1/Fs = 1/8000 =0.125ms, el valor del imterruptor #0 es probado y un
valor del buffer sine_table (con ganancia = 10) es mandado a la salida. El período de la
señal de salida es T = 8(0.125ms) = 1ms.
36
Seleccionamos de nuevo File→ New → Source File y se agregan códigos fuente (revisar
apéndice) que es el Programa fuente para la comunicación e inicialización del DSK
(c6713dskinit.c). y el programa Archivo de vectores (vectors_poll.asm) y el Archivo para
el mapeo de memoria (C6713dsk.cmd).
La función comm_intr( ) llama las funciones apropiadas para la inicialización del DSK.
La función input_sample( ) es usada para introducir datos mientras que la función
output_data( ) se usa para sacar datos. Con input = input_sample( ), siendo input una
variable de tipo short, se adquieren datos de 16-bit del canal izquierdo.
Con el archivo .cmd se define el tipo de memoria, el origen y la longitud de varios
espacios disponibles en la memoria, y las localidades en las que se alojan las secciones.
Después de crear estos tres archivos se deben agregar al proyecto.
Para agregar los archivos al proyecto se selecciona Project→ Add files to Project. Se
selecciona el archivo c6713dskinit.c. Se da click en el símbolo “+“que está a la izquierda
de los archivos del proyecto y se verifica que el archivo ha sido añadido al proyecto., así
mismo, siguiendo los mismos pasos se selecciona el archivo rts6700.lib del directorio
c:\CCStudio\c6000\cgtools\lib. Posteriormente se agrega el archivo dsk6713bsl.lib
localizado en el directorio c:\CCStudio\c6000\dsk6713\lib y el archivo csl6713.lib
localizado en c:\CCStudio\c6000\csl\lib.
Figura 3.10. Archivos necesarios para la creación del proyecto.
37
Se selecciona Project→ Scan All File Dependencies, posteriormente se agreguan los
siguientes archivos:
Dsk6713_aic23.h Dsk6713_led.h Dsk6713:dip.h DSK6713.h C6713dskinit.h Esos los archivos se encuentran en c:\CCStudio\c6000\dsk6713\include.
3.2.1.5 Opciones del compilador
Se selecciona Project→ Build Options, seleccione y se realizan los siguientes cambios
Fig. 3.11.
Figura. 3.11. Opciones del compilador de CCS.
38
En la categoría de preprocesador se escribe en Define Symbols {-d}: CHIP_6713y de la
categoría Feedback, se selecciona para Interlisting: OPT/C and AMS{-s}.
Figura. 3.12. Opciones del compilador.
3.2.1.6 Construcción del proyecto.
Se selecciona Project→ Rebuild All , de esta forma se compila y ensambla los archivos
en C. Los archivos objeto resultantes son enlazados con los archivos de librería y de esta
manera se crea el archivo ejecutable sine8_LED.out el cual puede ser cargado en el
procesador.
Se selecciona File→ Load Program para cargar el archivo en el procesador. Este archivo
debe estar en el folder sine8_LED\Debug. Se selecciona Debug→ Run y la señal de
salida es una señal senoidal de 1KHz (f = Fs/(número de puntos) = 8KHz/8 = 1KHz)
39
3.2.1.7 Monitoreo de Watch Window
Por medio de una herramienta que nos porporciona el CCS (el Watch window) podemos
cambiar el valor de un parámetro o monitorear una variable mientras el programa está
corriendo
Se selecciona View→ Quick Watch Window, con esto se desplegará en la parte de abajo
del CCS. En el watch window se selecciona watch y se escribe gain. El valor de la
ganancia deberá aparecer en el watch window.
Después se escribirá directamente en el programa mientras éste está corriendo el valor del
“gain” que oscila entre 10 y 30, lo que sucede cuando se varía este valor, es que la
amplitud de la onda variará dependiendo del valor que se le ponga al gain, esto en tiempo
real, para ver la onda se conecta un osciloscopio y se observa cómo varía ne tiempo real
la amplitud, ó en su defecto puede conectarse una bocina, la cual generará un tono que,
variará su frecuencia conforme se varía el gain.
GEL (General Extension Language)
Existe otro tipo de programa para agregar, uno con extensión GEL, por medio del GEL
(General Extension Language) es posible cambiar el valor de una variable deslizándose a
través de diferentes valores mientras el procesador esta ejecutando el programa. Para
crear el archivo GEL se selecciona New→ Source File y se escribe el siguiente código:
menuitem "Sine Gain" slider Gain(10,35,5,1,gain_parameter) /*incremento de valores*/ { gain = gain_parameter; /*variación de la variable ganancia del seno*/ }
Con este archivo la ganancia inicial del seno tiene un valor de 10 y se puede modificar
hasta un valor de 35 con incrementos de 5.
Hay que guardar el archivo como gain.gel, se agrega al proyecto y de nuevo se
selecciona Rebuild all para construir el proyecto. Se carga el archivo .out en el
procesador. Se selecciona GEL→ Sine Gain→ Gain, con esto se abrirá una ventana que
40
contiene la barra con la que se puede desplazar a través de los diferentes valores de la
ganancia Fig. 3.13
Fig. 3.13. Ventana que genera el archivo GEL.
4.1 Osciloscopio de estado sólido.
El funcionamiento del osciloscopio de estado sólido que se presenta en la figura 3.14 se
basa en dos circuitos integrados principalmente, el LM3914 y el CD4017B
Fig. 3.14 Osciloscopio de estado sólido
El LM3914 es un circuito integrado monolítico que censa el nivel de voltaje presente en
su entrada, y controla 10 LEDs, proveyendo una escala lineal de 10 pasos. Dispone de un
pin para cambiar el modo de funcionamiento, permitiendo elegir si la representación va a
ser una barra de luz, o solo un punto. La corriente que circula por los LEDs es regulada y
programable, de manera que no se necesitan resistencias individuales para cada uno de
41
ellos. Esta característica, entre otras, le permite trabajar con menos de 3 volts de
alimentación.
El integrado contiene su propia referencia de tensión, y un divisor de voltaje de 10 etapas,
cuyas salidas son las encargadas de manejar los LEDs.
La entrada está protegida contra sobre tensiones, por lo que no es necesario dotarlo de
protecciones adicionales si no se esperan entradas que superen los 35 voltios.
Es posible poner en cascada varios LM3914 para obtener escalas de 20, 30 o hasta 100
leds. Ambos extremos del divisor de voltaje son disponibles desde el exterior del chip.
Esta última característica permite obtener una matriz de leds más grande aumentando en
escalas de 10x10 (o sea, 100 leds más por cada adición de otro integrado LM3914 y el
CD4017B) lo que daría más resolución al osciloscopio [16].
Mientras que el CD4017B es un un contador/divisor por 10, que por cada pulso recibido
incrementa en uno el valor de la cuenta, poniendo en alto la salida correspondiente.
Contiene en su interior un contador Johnson de 5 etapas que puede dividir o contar por
cualquier valor entre 2 y 9 los pulsos que se ingresan por una de sus entradas, llamada
CLOCK (reloj).
La forma de trabajo es un mapeo vertical horizontal, donde el LM3914 censará el nivel
recibido de la señal de entrada de manera vertical, así el CD4017B activará su contador
recibiendo las señales horizontales del otro integrado, con cada pulso recibido en el pin
14 se iluminarán las salidas conforme la señal vaya entrando, esto encenderá la matriz de
leds (10x10) en el mapeo horizontal.
42
43
CAPÍTULO IV RECOMENDACIONES.
44
4.1 Sobre la fuente programable.
A futuro se recomienda usar multiplexores con más entradas, un multiplexor que ofrezca
8 terminales de control sería igual a mandar 256 señales por un mismo canal lo que se
traduce en 256 salidas diferentes de voltaje con solo 8 terminales de control que, usando
la interfaz Pic propuesta sería solamente usar un puerto completo para las salidas, además
de que, un solo multiplexor nos eliminaría una gran cantidad de resistencia de interruptor
la cual nos baja la corriente de la fuente.
También se recomienda a futuro utilizar un diseño que pueda proveer más corriente a la
fuente de alimentación, un arreglo de transistores podría solucionar ese problema
4.2 Sobre el generador de funciones
A futuro se puede considerar la posibilidad de desarrollar otro tipo de interfaces que
permitan interactuar al usuario con el DSP de forma más amigable. Esto implicará usar
controles de amplitud y frecuencia basados en por ejemplo, potenciómetros. Desde luego
que el diseño adicional de esas interfaces presenta otro tipo de retos.
4.3 Sobre el osciloscopio de estado sólido.
Esta es una buena herramienta para visualizar algunos tipos de señales, más que nada
muy económica con respecto a otro tipo de osciloscopios, que si bien, son más eficaces,
su precio los hace más inaccesibles.
El osciloscopio propuesto deja bases para poder tener más resolución, esto agregando dos
integrados por cada 100 leds a aumentar.
45
La recomendación es trabajar con una interfaz diferente a una matriz de leds, porque, si
bien, con una matriz de 20x20 ó 30x30 la resolución sería bastante aceptable, el tamaño
que tendría esta matriz sería impráctico, lo mejor e trabajar el principio de mapeo que
tiene este osciloscopio y hacer una interfaz con una pantalla LCD de un tamaño donde se
pueda visualizar perfectamente la señal sin que ésta pantalla sea de un tamaño estorboso.
46
Conclusiones
Lo más importante es dejar el precepto teórico y práctico del cómo hacer una fuente
programable que ofrezca diferentes valores de voltaje a la salida. Esto basándonos en
mandar varias señales por un mismo canal haciendo una interfaz de selección (el Pic) y
así dependiendo del número de salidas de voltaje que se deseen y el valor de estas se
configura la fuente. Es de lo más importante, que el diseño puede ser para un “n” número
de voltajes de salida y no sólo eso, además son voltajes que el usuario puede elegir y que
sólo con una calibración a las resistencias se logran tener las salidas que el usuario desea.
Se concluye que el DSP es una poderosa herramienta para procesar señales (El DSP
6713) y para fines de un generador de funciones, donde se puedan manipular un número
considerable de variables en tiempo real, es una perfecta herramienta. La facilidad que
proporciona de hacer una programación en “C” permite un entorno programable
amigable.
El hecho que, los generadores convencionales no tienen una comunicación de este tipo
con la computadora hace a este generador un elemento flexible y novedoso.
47
APENDICE A
Código de programas realizados
Código para una señal senoidal
#include “dsk6713_aic23.h” //archivo de cabecera para la inicialización del códec Uint32 fs = DSK6713_AIC23_FREQ_8KHZ; //Frecuencia de muestreo short loop = 0; short gain = 10; //ganancia short sine_table[8]={0,707,1000,707,0,-707,-1000,-707}; //valores de la onda senoidal void main() { comm_poll(); //inicialización DSK, códec, McBSP DSK6713_LED_init(); //inicialización de LED DSK6713_DIP_init(); //inicialización del DIP switch while(1) //ciclo infinito { if(DSK6713_DIP_get(0)==0) //Si switch #0 es presionado { DSK6713_LED_on(0); //LED #0 Enciende output_sample(sine_table[loop]*gain); //Salida if (++loop > 7) loop = 0; } else DSK6713_LED_off(0); //LED #0 apagado } }
Código para una señal cuadrada
//Squarewave.c Generates a squarewave using a look-up table #include "dsk6713_aic23.h" //codec-DSK interface support Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate #define table_size (int)0x40 //size of table=64 short data_table[table_size]; //data table array int i; interrupt void c_int11() //interrupt service routine { output_sample(data_table[i]); //output value each Ts if (i < table_size) ++i; //if table size is reached else i = 0; //reinitialize counter return; //return from interrupt } main() { for(i=0; i
48
Código para una Rampa
//Ramp.c Generates a ramp #include "dsk6713_aic23.h" //codec-DSK support file Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling frequency short output; interrupt void c_int11() //interrupt service routine { output_sample(output); //output each sample period output += 0x20; //incr output value if (output >= 0x7FFF) //if peak is reached output = 0; //reinitialize return; //return from interrupt } void main() { output = 0; //init output to zero comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop }
Código que genera el archivo C6713dskinit.h
#include "C6713dskinit.h" #define using_bios extern Uint32 fs; void c6713_dsk_init() //Inicialización de periféricos { DSK6713_init(); //LLama al BSL para inicializar DSK-EMIF,PLL hAIC23_handle=DSK6713_AIC23_openCodec(0, &config); DSK6713_AIC23_setFreq(hAIC23_handle, fs); //Establece frecuencia de muestreo MCBSP_config(DSK6713_AIC23_DATAHANDLE,&AIC23CfgData);//Interfaz de 32 bits AIC23 MCBSP_start(DSK6713_AIC23_DATAHANDLE, MCBSP_XMIT_START | MCBSP_RCV_START | MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC, 220); //Inicio del canal de datos } void comm_poll() { poll=1; c6713_dsk_init(); //Inicializa DSP y codec } void comm_intr() // Comunicación con interrupciones { poll=0; IRQ_globalDisable(); //Deshabilita interrupciones c6713_dsk_init(); CODECEventId=MCBSP_getXmtEventId(DSK6713_AIC23_codecdatahandle);//McBSP1 #ifndef using_bios IRQ_setVecs(vectors); #endif IRQ_map(CODECEventId, 11); IRQ_reset(CODECEventId); IRQ_globalEnable(); IRQ_nmiEnable(); IRQ_enable(CODECEventId); output_sample(0); //Inicio de McBSP para mandar las muestras a la salida } void output_sample(int out_data) //Salida de canales izquierdo y derecho { short CHANNEL_data; AIC_data.uint=0; AIC_data.uint=out_data; CHANNEL_data=AIC_data.channel[RIGHT]; AIC_data.channel[RIGHT]=AIC_data.channel[LEFT]; AIC_data.channel[LEFT]=CHANNEL_data; if (poll) while(!MCBSP_xrdy(DSK6713_AIC23_DATAHANDLE)); MCBSP_write(DSK6713_AIC23_DATAHANDLE,AIC_data.uint);//Escritura/salida datos }
49
void output_left_sample(short out_data) //Salida del canal izquierdo { AIC_data.uint=0; AIC_data.channel[LEFT]=out_data; if (poll) while(!MCBSP_xrdy(DSK6713_AIC23_DATAHANDLE)); MCBSP_write(DSK6713_AIC23_DATAHANDLE,AIC_data.uint); } void output_right_sample(short out_data) //Salida del canal derecho { AIC_data.uint=0; AIC_data.channel[RIGHT]=out_data; if (poll) while(!MCBSP_xrdy(DSK6713_AIC23_DATAHANDLE)); MCBSP_write(DSK6713_AIC23_DATAHANDLE,AIC_data.uint); } Uint32 input_sample() { short CHANNEL_data; if (poll) while(!MCBSP_rrdy(DSK6713_AIC23_DATAHANDLE)); AIC_data.uint=MCBSP_read(DSK6713_AIC23_DATAHANDLE); CHANNEL_data=AIC_data.channel[RIGHT]; AIC_data.channel[RIGHT]=AIC_data.channel[LEFT]; AIC_data.channel[LEFT]=CHANNEL_data; return(AIC_data.uint); } short input_left_sample() //Entrada canal izquierdo { if (poll) while(!MCBSP_rrdy(DSK6713_AIC23_DATAHANDLE)); AIC_data.uint=MCBSP_read(DSK6713_AIC23_DATAHANDLE); return(AIC_data.channel[LEFT]); } short input_right_sample() //Entrada canal derecho { if (poll) while(!MCBSP_rrdy(DSK6713_AIC23_DATAHANDLE)); AIC_data.uint=MCBSP_read(DSK6713_AIC23_DATAHANDLE);//Leer canal derecho return(AIC_data.channel[RIGHT]);
Código que genera el archivo Vectors_poll.asm
*Vectors_poll.asm Vector file for polling .global _vectors .global _c_int00 .global _vector1 .global _vector2 .global _vector3 .global _vector4 .global _vector5 .global _vector6 .global _vector7 .global _vector8 .global _vector9 .global _vector10 .global _vector11 .global _vector12 .global _vector13 .global _vector14 .global _vector15 .ref _c_int00 VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm _vec_dummy: B B3 NOP 5
50
.sect ".vecs" .align 1024 _vectors: _vector0: VEC_ENTRY _c_int00 _vector1: VEC_ENTRY _vec_dummy _vector2: VEC_ENTRY _vec_dummy _vector3: VEC_ENTRY _vec_dummy _vector4: VEC_ENTRY _vec_dummy _vector5: VEC_ENTRY _vec_dummy _vector6: VEC_ENTRY _vec_dummy _vector7: VEC_ENTRY _vec_dummy _vector8: VEC_ENTRY _vec_dummy _vector9: VEC_ENTRY _vec_dummy _vector10: VEC_ENTRY _vec_dummy _vector11: VEC_ENTRY _vec_dummy _vector12: VEC_ENTRY _vec_dummy _vector13: VEC_ENTRY _vec_dummy _vector14: VEC_ENTRY _vec_dummy _vector15: VEC_ENTRY _vec_dummy
Código que genera el archivo C6713dsk.cmd
MEMORY { IVECS: org=0h, len=0x220 IRAM: org=0x00000220, len=0x0002FDE0 /*memoria interna*/ SDRAM: org=0x80000000, len=0x00100000 /*memoria externa*/ FLASH: org=0x90000000, len=0x00020000 /*memoria flash*/ } SECTIONS { .EXT_RAM :> SDRAM .vectors :> IVECS /*archivo de vectores*/ .text :> IRAM .bss :> IRAM .cinit :> IRAM .stack :> IRAM .sysmem :> IRAM .const :> IRAM .switch :> IRAM .far :> IRAM .cio :> IRAM .csldata :> IRAM }
51
APENDICE B
Hojas de especificaciones utilizadas
LM317
52
53
DS1669
54
55
BIBLIOGRAFÌA
[1] N. Kehtarnavaz, B. Simsek, C6x – Based Digital Signal Processing, Prentice Hall, Upper Saddle River, NJ, 2000. [2] Proakis, Jonh, Digital Signal Processing: Using Matlab, International Thomson, 1997 [3] Proakis, Jonh, Digital Signal Processing: Principles, Algorithms, And Applications, Pearson Education, 2006 [4] Tratamiento Digital de señales Problemas y ejercicios resueltos, Soria, Matínez, Pearson, Madrid, 2009 [5] Boylestad, Introducción al análisis de circuitos, Pearson, México 2004 [6] Osciloscopios: Funcionamiento y utilización, Rateau, René, Thomson Paraninfo, España,1999. [7] Introducción al Procesamiento Digital de señales. Vignolo, Ediciones Universitarias de Valparaiso, Chile, 2008 [8] R. Chassaing, Digital Signal Processing and Applications with the C6713 and C6416 DSK, Wiley New York, 2000. [9] Avalos, Juan Gerardo. Algoritmo LMS con Error Codificado Usando un DSP, Tesis de maestría, 2008. [10]Rulph Chassaing, Processing and Applications with the C6713 and C6416 DSK Digital Signal, Wiley-intersciencie, Canadá 2005, 2º edición. [11] Wiley, Digital Signal Processing and Applications with the C6713 and C6416 DSK (2005) DDU OCR 7.0-2.6 LotB [12]LLORIS, ANTONIO. Sistemas digitales. Editorial Mc Graw-Hill [13]FLOYD, T.L. Fundamentos de Sistemas Digitales, Editorial Prentice Hall [14]JOHN F. WAKERLY. Diseño Digital: Principios y prácticas. Editorial Prentice Hall [15] Palacios, Enrique. Microcontrolador PIC16f84A. Alfaomega, México 2006, 2º edición. [16] Mims, Forrest M. Notas de Electrónica; Aplicaciones de Circuitos Integrados. McGraw-Hiil. México 1988. Página 107,108
Top Related