Upload
vohuong
View
242
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD TECNOLOGICA NACIONAL
FACULTAD REGIONAL SAN NICOLAS
INGENIERIA EN ELECTRONICA
PROBLEMA DE INGENIERÍA
TECNICAS DIGITALES III
GENERADOR DIGITAL DE SEÑALES
ARBITRARIAS
Integrantes:
- Abecasis Marco
- Valía Gabriel
Docentes:
- Profesor: Poblete Felipe
- Auxiliar: Gonzalez Mariano
AÑO 2013
Técnicas Digitales III – Problema de ingeniería
2
INDICE
1. OBJETIVOS DEL TRABAJO 3
1.1. MATERIAS INTEGRADAS ...................................................................................................... 3
1.2. POSIBLES APLICACIONES ..................................................................................................... 3
1.3. BIBLIOGRAFÍA ......................................................................................................................... 3
2. DESARROLLO 4
2.1. INTRODUCCIÓN....................................................................................................................... 4
2.2. TEORÍA DE FUNCIONAMIENTO ........................................................................................... 4
2.2.1. HARDWARE ..................................................................................................................... 4
2.2.1.1. MICROCONTROLADOR .......................................................................................... 5
2.2.1.2. INTERFAZ DEL DAC: FUNCIONAMIENTO Y CALIBRACION ......................... 7
2.2.1.3. ETAPA DE SELECCIÓN DE FILTRO ..................................................................... 8
2.2.1.4. FILTROS ..................................................................................................................... 9
2.2.1.5. ALIMENTACION .................................................................................................... 11
2.2.2 FIRMWARE ..................................................................................................................... 11
2.2.2.1. CONCEPTOS DEL ALGORITMO .......................................................................... 11
2.2.2.2. BUCLE CENTRAL .................................................................................................. 13
2.2.2.3. REPRODUCCION DESDE RAM ............................................................................ 14
2.2.2.4. REPRODUCCION DESDE TARJETA SD ............................................................. 15
2.2.2.5. TARJETA SD ........................................................................................................... 18
2.2.2.7. COMUNICACIÓN CON LA PC .............................................................................. 24
2.2.3. SOFTWARE .................................................................................................................... 27
2.2.3.1. CLASE SigGen ......................................................................................................... 27
2.2.3.1.1. GESTION DE PROTOCOLOS ......................................................................... 27
2.2.3.1.2. CREACION DE SEÑALES ............................................................................... 28
2.2.3.2. CLASE HeaderData .................................................................................................. 31
2.2.3.2.1. CREACION DE SEÑALES PERSONALIZADAS .......................................... 32
2.2.3.3. INTERFAZ DE USUARIO ...................................................................................... 34
2.3. RESULTADOS DE LAS PRUEBAS ........................................................................................ 38
3. CONCLUSIONES 42
ANEXO 1 ESQUEMATICO FUENTE: 43
ANEXO 2 ESQUEMATICO FILTRO 20 KHz: 44
ANEXO 3 ESQUEMATICO PLACA PRINCIPAL: 45
Técnicas Digitales III – Problema de ingeniería
3
1. OBJETIVOS DEL TRABAJO
Diseñar un generador de señales arbitrarias para el ensayo de circuitos con señales específicas o
típicas. Dichas señales serán diseñadas por una PC, siendo reproducibles de forma stand alone (a
partir de una señal pre-grabada), o creadas en el momento de usarlas.
1.1. MATERIAS INTEGRADAS
Técnicas digitales III: Tratamiento de señales y programación en entorno de PC.
Teoría de los circuitos II: Filtros.
Técnicas digitales II: Programación de microcontroladores.
Medidas Electrónicas I y II: Conversores digital-analógico
Electrónica aplicada I y II: Amplificadores.
1.2. POSIBLES APLICACIONES
Ensayo de filtros.
Prueba en Amplificadores.
Ensayo de sistemas embebidos frente a señales analógicas específicas de entrada.
Síntesis de señales adquiridas por otro sistema.
1.3. BIBLIOGRAFÍA
• Paper
• Manejo de una memoria SD/MMC con un PIC16F87x – Carlos Alberto Henao, Edison
Duque Cardona, Universidad Tecnológica de Pereira, Abril 2010.
• Sitios de Internet.
• Sitio 1 – Autor 1
Libros.
DsPIC30F Family referenc Manual – Microchip.
DsPIC30F Datasheet - Microchip.
LF351 Datasheet - Texas Instrument
AD7541ASE Datasheet - Analog Devices.
HC4052 Datasheet - ON Semiconductor.
LF347 Datasheet - Texas Instrument.
Sandisk Secure Digital Card Product Manual - Sandisk.
Técnicas Digitales III – Problema de ingeniería
4
2. DESARROLLO
2.1. INTRODUCCIÓN
En este informe se pretende explicar el principio de funcionamiento del generador de señales
arbitrarias desarrollado para la materia técnicas digitales III. Dicho instrumento permite reproducir
cualquier tipo de señal analógica, ya sean estándares, como senoidales, cuadradas, triangulares y
dientes de sierra, como también señales definidas por el usuario.
El sistema cuenta con un software para PC, el cual debe ser utilizado por el usuario para el diseño y
definición de cualquier señal, tanto estándar como personalizada. En dicho programa se encuentra
embebido todas las funcionalidades requeridas para la comunicación con el generador, la capacidad
de leer los archivos de señales personalizadas del usuario, y el cálculo de las señales estándares.
En la reproducción de señales estándares el usuario debe definir al menos el tipo de señal, la
frecuencia, amplitud y componente de continua de la misma, y si lo desease el filtro a de salida a
utilizar. Luego el programa se hará cargo de los cálculos y decisiones pertinentes para la carga al
generador y correcta reproducción de la señal.
En la reproducción de señales personalizadas el usuario debe diseñarla u obtenerla externamente y
cargarla en el programa especificando el archivo en el que se encuentra. En este proyecto se ha
programado un script de MATLAB denominado sample2signal que a partir de la frecuencia o
tiempo de muestreo y un vector de muestras genera los archivos de señal que pueden ser cargados
en el programa del generador. Esto le permite al usuario emplear MATLAB como herramienta para
la creación de señales.
2.2. TEORÍA DE FUNCIONAMIENTO
Para ordenar y facilitar el análisis del desarrollo del proyecto esta sección se divide en hardware,
firmware, y software. De esta forma se pretende que el lector pueda comprender el desarrollo de
una forma guiada y sencilla, en la cual cada sección aporta información detallada e introduce
conceptos para el entendimiento de las secciones posteriores.
2.2.1. HARDWARE
El hardware del generador de señales puede ser dividido en los bloques fundamentales descriptos en
la figura 2.2.1.1
PC: Representa la existencia y relación de la misma con el generador pero no forma parte
del hardware del generador propiamente dicho.
USB-UART: Permite la comunicación entre la PC y el generador, actuando como una interfaz UART desde el punto de vista del generador, y una interfaz serie desde el punto de
vista de la PC.
Microcontrolador: Es el encargado de comprender las instrucciones de la PC, gestionar el manejo de datos de la tarjeta SD, generar la señal a partir de las muestras conectándose con
Técnicas Digitales III – Problema de ingeniería
5
un DAC, interpretar y efectuar señalizaciones en hardware, y la selección del filtro de
salida.
Tarjeta SD: Provee un espacio de memoria para señales de larga duración y para el
guardado de señales para operación stand alone (que pueden ser reproducidas sin haber
sido conectada a una PC).
Conversor digital-Analógico (DAC): Convierte una entrada paralela de 12 bits en binario corrido proveniente del micro en una señal analógica cuya excursión de salida puede
comprender valores positivos y negativos de tensión.
Filtros: Se utiliza para la interpolación de los escalones que componen la señal discreta generada por el micro, es decir, se utiliza para la reconstrucción de la señal.
MUX analógico: El generador cuenta con dos filtros de reconstrucción, un filtro auxiliar
que puede construir el usuario, y una salida directa. El MUX selecciona uno de estos como
salida del generador en función de la orden del microcontrolador.
Buffer de Salida: Ofrece una alta impedancia y una protección contra sobrecarga y cortocircuito al circuito del generador y una muy baja impedancia para un comportamiento
de fuente ideal en la salida.
Figura 2.2.1.1. Diagrama en bloques del generador
2.2.1.1. MICROCONTROLADOR
El microcontrolador elegido es el dsPIC30F4011 de Microchip, que cuenta con:
Una distribución de puertos de propósito general que facilita la conexión con el DAC
seleccionado.
Una velocidad de ejecución de 30 MIPS, que cumple con los requisitos de timing para las frecuencias de muestro deseadas.
La característica de módulo addressing que permite el direccionamiento cíclico de una sección de memoria por hardware a través de un puntero.
Técnicas Digitales III – Problema de ingeniería
6
Figura 2.2.1.1.1. Pinout 30F4011segun aplicación
En la figura 2.2.1.1.1. se indica el pinout del microcontrolador en relación con el resto del hardware.
Debido a que los pines correspondientes de los bits de la entrada digital del DAC se encuentran
distribuidos con media palabra digital de un lado del chip y media palabra del otro, se emplea la
misma distribución en los pines del micro. Por esto los bits del 0 al 5 del PORTB corresponden al
lado más significativo de la palabra, y los bits del 0 al 5 del PORTE corresponden al menos
significativo. Para simplificar aún más el diseño del PCB, y queden pistas sin cruces, se rotan los
bits del PORTE (Hace [0 1 2 3 4 5] -> [5 4 3 2 1 0]). (Véase 2.2.1.2. INTERFAZ DEL DAC:
FUNCIONAMIENTO Y CALIBRACION).
Para señalizar visualmente la actividad del micro se dispone de tres luces: Luz de Encendido en el
pin RC14 para indicar que el controlador esta alimentado y ejecutando instrucciones; Luz de
Reproducción en el pin RD1 para indicar que el generador está sintetizando una señal; Luz de
BUSY en el pin RD3, que indica si se está procesando una orden de la PC por UART.
Se cuenta con un pulsador START/STOP en el pin RE8 (INT0) para iniciar o detener la
reproducción desde el hardware y eventualmente permitir el uso de la función Stand Alone, la cual
permite reproducir una señal pregrabada en la tarjeta SD sin conexión previa de la PC.
Con el fin de obtener un baudrate exacto en el UART, se selecciona un cristal de 7.3728MHz, lo
que establece una frecuencia de ejecución de instrucciones de 29,4912 MHz.
Se dispone el PORTF al control de selección del MUX analógico correspondiendo el pin RF0 a la
entrada A y el pin RF1 a la entrada B. (Véase 2.2.1.3. ETAPA DE SELECCIÓN DE FILTRO)
La información referente a las configuraciones y los protocolos en las interfaces UART y SPI se
abordaran en las secciones 2.2.2.7. COMUNICACIÓN CON PC y 2.2.2.5. TARJETA SD
respectivamente.
Técnicas Digitales III – Problema de ingeniería
7
2.2.1.2. INTERFAZ DEL DAC: FUNCIONAMIENTO Y CALIBRACION
Para la etapa de conversión digital-analógica se utilizó un conversor de 12 bits tipo R-2R AD7541A
de Analog Devices. Este cumple con los requerimientos de la cantidad de bits de entrada como la
velocidad de respuesta requerida a la frecuencia de muestreo lograda con el microcontrolador.
Como se observa en la figura 2.2.1.2.1., la estructura del chip consta de una red R-2R y el control
de los terminales de la misma se realiza a través de transistores MOSFET, lo que asegura un
aislamiento entre el microcontrolador y la etapa analógica.
Figura 2.2.1.2.1. Diagrama interno del DAC.
Figura 2.2.1.2.2. Pinout del DAC según aplicación.
Técnicas Digitales III – Problema de ingeniería
8
Considerando recomendación del fabricante, que la tensión debe excursionar entre valores positivos
y negativos, y que la codificación más usual para este tipo de salida es binario corrido, se
implementó la configuración de la figura 2.2.1.2.3. La resistencia R1 se utiliza para controlar la
referencia, R2 para controlar la realimentación del operacional A1, que es el encargado de convertir
la salida en corriente del DAC en una salida en tensión de 0 a -5V en este caso. EL capacitor C1 se
utiliza para la compensación de fase y la estabilidad del circuito. El amplificador operacional A2
permite configurar el cero y el rango de la tensión de salida (Full Scale). Los ajustes controlados por
A2 se realizan con la variación de R4 y R5.
Figura 2.2.1.2.3. Configuracion empleada del DAC.
Tomando en cuenta que las especificaciones de diseño para este generador exigen una salida de
entre -5 y +5V, y que la codificación de la palabra digital es de 12 bits binario corrido, se deben
realizar los siguientes pasos de calibración sobre el circuito de la figura 2.2.1.2.3. para asegurar el
correcto funcionamiento de toda la etapa analógica:
1. Configurar la entrada digital del DAC en 0x0800 (correspondiente a Vout = 0V).
2. Ajustar R1 y R2 hasta que la tensión de salida de A1 sea -2.5V
3. Variar R5 hasta que la salida de A2 este dentro del rango deseado (Para evitar ganancia nula
o saturación del AO).
4. Variar R4 hasta que la salida de A2 sea 0V (ajuste de cero).
5. Setear la entrada del DAC en 0x0000 (correspondiente a Vout = -5V ).
6. Variar R5 hasta que la salida de A2 sea -5V.
7. Setear la entrada del DAC en 0x0FFF (correspondiente a 5V).
8. Verificar que efectivamente Vout = 5V (típico 4,997V).
Para facilitar dicha calibración el software incluye un control manual de voltaje a fin de introducir
las palabras digitales mencionadas en los pasos anteriores.
2.2.1.3. ETAPA DE SELECCIÓN DE FILTRO
Para poder abarcar las necesidades de filtrado a distintas frecuencias de muestreo que el usuario
pudiera necesitar, el generador provee distintas alternativas. Sin embargo como el generador solo
posee una salida, se utiliza un MUX analógico que realice la selección de la alternativa deseada. El
Técnicas Digitales III – Problema de ingeniería
9
MUX empleado es el HCF4052BE de ST Microelectronics, cuyas características se describen en la
figura 2.2.1.3.1. Como solo se necesitan cuatro canales se utiliza el switch X y se anula el switch Y
con resistencias de pull-down de 100 ohm a la entrada según especificaciones del fabricante. De
estos cuatro canales, uno es la salida sin filtro, y los otros tres son salidas filtradas. Uno con
frecuencia de corte de 20KHz, otro con frecuencia de corte de 441KHz y el tercero se deja a
disposición del usuario para sus filtros ad-hoc.
Figura 2.2.1.3.1. Especificaciones del MUX HCF4052BE
Con el fin de proteger el circuito y evitar que el dispositivo conectado al generador vea la
impedancia de 220 ohm de la salida del MUX se coloca un seguidor de tensión como etapa de
salida.
2.2.1.4. FILTROS
Los filtros mencionados en la sección anterior son filtros pasa bajos tipo Bessel de orden seis de
arquitectura Sallen Key. Con esto se evita los cambios en la forma de onda por fase no lineal e
inversiones de tensión a la salida.
El criterio empleado para la selección de la frecuencia de corte consiste en abarcar diferentes
frecuencias de muestreo dentro del ancho de banda del generador:
Fc = 20KHz: Soportar señales diseñadas para trabajar en el rango de audiofrecuencia.
Fc = 441KHz: Soportar señales cuya frecuencia de muestreo se encuentra a velocidades bajas respecto a las típicas en las que trabaja el generador.
Técnicas Digitales III – Problema de ingeniería
10
Figura 2.2.1.4.1 Filtro Fc=20Khz
Figura 2.2.1.4.2 Diagrama de Bode Filtro Fc=20KHz
Figura 2.2.1.4.3 Filtro Fc=441Khz
Figura 2.2.1.4.4 Diagrama de Bode Filtro Fc=441KHz
Técnicas Digitales III – Problema de ingeniería
11
2.2.1.5. ALIMENTACION
Se diseñó una fuente partida con tensiones de entrada mínima de ±12Vdc y máxima de ±20Vdc con
salidas de ±9Vdc y ±5Vdc. Con los +5Vdc se alimentan toda la circuitería digital. Con los ±9Vdc se
alimenta los filtros, los operacionales y el DAC, y finalmente con ±5Vdc, el MUX analógico (el
esquemático de la fuente se encuentra en el ANEXO 1).
2.2.2 FIRMWARE
Para el desarrollo del Firmware se utilizó el IDE de Microchip MPLAB basado en la plataforma
Netbeans y el compilador XC16 del mismo fabricante que permite la compilación tanto de
Assembler como C en controladores de 16 bits. En este diseño, para tener conciencia sobre el
tiempo de ejecución de los procesos y considerando la dinámica con la que se trabaja con la RAM,
se optó por programar el microcontrolador enteramente en Assembler.
En las siguientes secciones se explicara en detalle los procesos y conceptos fundamentales del
Firmware, abarcando desde las rutinas de reproducción y espera, hasta los protocolos de
comunicación empleados.
2.2.2.1. CONCEPTOS DEL ALGORITMO
Para facilitar la comprensión de los temas a tratar en esta sección es necesario explicar previamente
como se distribuye la memoria RAM para la reproducción directamente desde la tarjeta SD o para
la reproducción desde la RAM.
Como se observa en la figura 2.2.2.1.1. cuando la reproducción es desde la RAM, 2 KB de la
misma están destinadas al almacenamiento de la seña,l ya que según las especificaciones previstas
es posible almacenar hasta 1000 muestras. La parte dedicada a variables de control solo conserva la
mínima cantidad de datos para retener la información específica sobre la señal y los datos de control
del propio generador. Cuando la reproducción es desde la tarjeta SD, 1024 Bytes (el equivalente a
dos blocks de la tarjeta) son dedicados al buffer de lectura del algoritmo de reproducción, 512 bytes
al buffer de fin de señal, como se explicara posteriormente, y el área de variables de control se
incrementa debido a que el algoritmo requiere manejar mayor información para su funcionamiento.
Técnicas Digitales III – Problema de ingeniería
12
Figura 2.2.2.1.1. Mapa de memoria de la RAM del Microcontrolador
Además es necesario comprender que la comunicación entre los distintos procesos que ejecuta el
microcontrolador se realiza a través de flags dedicados en un registro de 16 bits denominado
GenStatus cuya distribución se presenta en la figura 2.2.2.1.2.
Figura 2.2.2.1.2. Registro GenStatus
Técnicas Digitales III – Problema de ingeniería
13
2.2.2.2. BUCLE CENTRAL
Figura 2.2.2.2.1. Diagrama de flujo bloque central
Mientras el generador se encuentra a la espera de una orden desde la PC o desde el hardware, este
se encuentra haciendo polling a los flag de petición de inicio de reproducción por RAM (ActMEM),
o tarjeta SD (ActSD) que se encuentran en el registro GenStatus. Por lo tanto, para evitar conflicto
en cuanto a las prioridades de interrupción del microcontrolador, las órdenes del usuario se obtienen
mediante rutinas de interrupción afines, y dicho algoritmo de espera se encarga de atender a dichas
peticiones e iniciar las rutinas de reproducción correspondientes. Así los procesos de reproducción
Técnicas Digitales III – Problema de ingeniería
14
podrán ser interrumpidos y detenidos de igual modo. En la sección 2.2.2.7. COMUNICACION
CON PC, se explicará que cualquier orden que interrumpa una reproducción es interpretada como
una indicación de que esta debe ser detenida.
2.2.2.3. REPRODUCCION DESDE RAM
Figura 2.2.2.3.1 Diagrama de flujo de reproducción desde RAM
El inicio de la reproducción solo puede ser solicitado si previamente se encuentra la información en
la RAM respecto a la cantidad de muestras, velocidad de muestreo, filtro a seleccionar y las
muestras de la señal.
Existen dos formas de reproducir desde RAM. Una de ellas es utilizando la reproducción sin Offset
(a máxima velocidad) en la cual la rutina simplemente lee muestras de la tabla y las coloca en el
puerto de salida hacia el DAC de forma cíclica. La otra consiste en introducir un retardo dentro de
cada repetición, la cual por si misma ya introduce un retardo con offset de tiempo nulo. Así el
período de muestreo a máxima velocidad se obtiene como
, y el
período del que posee offset resulta
donde offset es una parámetro de 16 bits que es
transferido al generador durante la carga de la señal.
Técnicas Digitales III – Problema de ingeniería
15
Esta rutina además implementa la función Modulo Addressing del dsPIC30F4011 que permite el
direccionamiento cíclico de una sección de memoria por hardware a través de un puntero evitando
que haya retardos al devolver el puntero al inicio de la tabla.
En la figura 2.2.2.3.1. se muestra la introducción del retardo con línea punteada para representar
ambos algoritmos en un solo diagrama de flujo
2.2.2.4. REPRODUCCION DESDE TARJETA SD
La reproducción de señales desde la tarjeta SD se divide funcionalmente en dos partes. Una es la
encargada de colocar el valor de las muestras en el puerto del DAC, la cual es atendida por una
interrupción por timer, asegurando periodo de muestreo constante. La otra se encarga de leer un
nuevo block desde SD cada vez que un block es leído del buffer por la rutina anterior. La frecuencia
de muestro máxima es tal que un block de muestras no alcanza a ser enviado al DAC antes que un
block pueda ser leído desde la SD, asegurando que el buffer siempre contenga muestras disponibles
y actualizadas. Por lo tanto, se ha decidido que el buffer tenga un tamaño equivalente a 2 blocks, de
forma que mientras uno es leído desde la SD y cargado en el buffer, el otro es leído desde el buffer
y enviado al DAC a una velocidad menor que la carga.
Como no está condicionada la cantidad de muestras que puede tener la señal, es muy probable que
el final de esta ocupe parcialmente un bloque. Pero, como el proceso descripto anteriormente
contempla solamente la lectura de bloques completos, este último bloque incompleto se almacena
en RAM en la inicialización, para ser leído en el debido momento.
Técnicas Digitales III – Problema de ingeniería
16
Figura 2.2.2.4.1. Diagrama de flujo de la rutina de mantenimiento de buffer
Técnicas Digitales III – Problema de ingeniería
17
Figura 2.2.2.4.2 Diagrama de flujo de la rutina de envío de muestras al DAC
Técnicas Digitales III – Problema de ingeniería
18
2.2.2.5. TARJETA SD
La comunicación entre el microcontrolador y la tarjeta SD se realiza por el protocolo SPI soportado
por la misma, de modo que el pinout de la tarjeta queda asignado como se muestra en la figura
2.2.2.5.1. La configuración empleada para el puerto SPI es (véase dsPIC30F Family Reference
Manual):
CKE=1: La salida del puerto cambia en la transición del estado ACTIVE al IDLE del clock.
CKP=0 (IDLE=LOW, ACTIVE=HIGH).
SMP=0: Los datos son muestreados a la mitad del tiempo de presentación.
Figura 2.2.2.5.1. Pinout Tarjeta SD
Básicamente los comandos utilizados en el proyecto son los de lectura, escritura e inicialización
como se detallara a continuación.
La estructura de dichos comandos se compone de 6 bytes de los cuales el primero corresponde al
número de comando, los otros 4 corresponden al parámetro como puede ser una dirección de
memoria, y el último corresponde a un valor de CRC que carece de importancia para el transmisor y
es ignorado por el receptor. El número de comando que va en el primer byte se obtiene poniendo en
1 el 6to bit en el numero binario que corresponde al número en el nombre del comando. Así el
comando de lectura CMD18 es 0x52. Tras emitir los 6 bytes correspondientes al comando la tarjeta
siempre responde mediante el uso de 1 byte que representa el estado de la tarjeta. En el caso de
escritura de datos la tarjeta devuelve una respuesta diferente al finalizar el proceso, como se
encuentra indicado en la figura 2.2.2.5.4.
Técnicas Digitales III – Problema de ingeniería
19
Figura 2.2.2.5.2 Estructura de los comandos de la SD.
Figura 2.2.2.5.3. Estructura de la respuesta de la SD a los comandos.
Figura 2.2.2.5.4. Estructura de la respuesta ante la finalización de un proceso de escritura.
La tarjeta soporta la escritura y lectura monobloque o multibloque, los cuales son invocados
mediante distintos comandos desde el microcontrolador. Cabe destacar que tanto las lecturas como
escrituras multibloque están limitados en cuanto a la cantidad de bloques consecutivos en un mismo
comando.
A continuación se detallaran los comandos empleados en el proyecto:
CMD17: Es un comando de lectura singleblock, en el cual al transmitir el comando y tras la
espera de algunos bytes en el SPI, la tarjeta responde acertadamente con la respuesta
R1=0x00 seguido posteriormente con un token de inicio de datos 0xFE.Luego se obtienen
los 512 bytes de información seguidos por 2 bytes de CRC. Finalizado el proceso la tarjeta
queda disponible para un nuevo comando.
Técnicas Digitales III – Problema de ingeniería
20
Figura 2.2.2.5.5. Comunicación para lectura Single Block
CMD18: Es un comando de lectura Multiblock el cual tiene una funcionalidad a la del
CMD17 con la diferencia que la SD transmitirá bloques contiguos de la memoria en la
secuencia token-datos-CRC por cada block. Tanto en este caso como en cualquier otro
comando de lectura y escritura la transferencia puede ser detenida mediante el uso del
comando CMD12. Cuando se invoca este comando la línea de datos de entrada al
microcontrolador será mantenida en 0v por la tarjeta SD indicando un estado de ocupado
(BUSY). La tarjeta quedara disponible en cuanto la línea vuelva al estado HIGH.
Figura 2.2.2.5.6. Comunicación para lectura MultiBlock
CMD24: Es un comando de escritura SingleBlock el cual tras la invocación del mismo se
obtiene una respuesta R1=0x00 desde la tarjeta y a partir del cual el microcontrolador el
token 0xFE seguido de los 512 bytes de datos y 2 bytes que serán ignorados por la tarjeta a
menos que se haya activado el uso del CRC. Luego de finalizada la transferencia la tarjeta
transmitirá 1 byte denominado Data Response el cual indicará si los datos fueron aceptados
o cual fue el error de transferencia ocurrido. Luego la tarjeta mantiene en estado LOW hasta
finalizado el proceso de escritura en la memoria.
Técnicas Digitales III – Problema de ingeniería
21
Figura 2.2.2.5.7. Comunicación para escritura Single Block
2.2.2.6. INICIALIZACION DE TARJETA SD
Figura 2.2.2.6.1. Mapa de memoria empleado en la SD
Para poder almacenar la información de la señal tanto para reproducción stand alone como
reproducción directa desde la SD se dispone el mapa de memoria como se muestra en la figura
2.2.2.6.1. Como se observa se compone de un área de información específica de la señal y un área
de almacenamiento de muestras. En el área de información de señal se almacena el tamaño de la
tarjeta, un identificador para reconocer con que metodología se debe reproducir la señal, la cantidad
de muestras almacenadas, el período de muestro y el filtro a utilizar.
El proceso de inicialización de la tarjeta es el siguiente:
1. Se pasa la velocidad del SPI al modo compatibilidad (200 a 400 Kbps).
2. Se envía el comando CMD0 con la tarjeta seleccionada mediante Chip Select.
3. Enviar repetidamente el comando CMD1 hasta que la respuesta R1 pase de ser 0x01 a 0x00
indicando que la tarjeta se encuentra inicializada.
Técnicas Digitales III – Problema de ingeniería
22
4. Se configura el puerto SPI a la velocidad de trabajo (en este caso en particular
aproximadamente 15 Mbps).
5. Finalmente el controlador puede utilizar el comando CMD9 para leer el registro CSD (Card
Specific Data).
Para esta aplicación, una vez finalizada la inicialización, el microcontrolador utiliza el
registro CSD para calcular el tamaño de la memoria de la tarjeta y compararlo con el valor
almacenado en el espacio de información de señal. De esta forma determina si la tarjeta se
encuentra formateada con la estructura mencionada anteriormente. Caso contrario realiza el
proceso de formateo.
Figura 2.2.2.6.2. Diagrama de flujo de la inicialización de la SD parte 1
Técnicas Digitales III – Problema de ingeniería
23
Figura 2.2.2.6.3 Diagrama de flujo de la inicialización de la SD parte 2
Técnicas Digitales III – Problema de ingeniería
24
2.2.2.7. COMUNICACIÓN CON LA PC
La comunicación entre la PC y el microcontrolador se realizaba a través de un puerto UART
implementado con un puente USB/UART PL2303HXA. La configuración utilizada es la siguiente:
Baudrate: 19200 bps.
Sin paridad.
1 bit stop.
Sin control de flujo.
Datos de 8 bits.
Con el fin de que el software de la PC tenga una comunicación flexible sobre las acciones del
generador se diseñó un protocolo afín. Antes de proceder a la explicación se debe tener en cuenta
que:
“COMANDO” refiere a 1 o 2 bytes que indican la acción a realizar y opcionalmente algún dato adicional requerido.
“WAIT/ACK” indica que el microcontrolador puede solicitar que la PC aguarde mientras se
ejecuta un proceso mediante “WAIT” y luego la finalización del mismo con “ACK”, ó
simplemente responder “ACK”, según aplique.
Ante un error en la comunicación o en los parámetros enviados la misma será finalizada y el microcontrolador responderá con 2 bytes, uno indicando el error y el otro con la causa del
mismo.
Las secuencias aplicadas por el protocolo son:
1. Para comandos en los que el generador deba responder afirmativa o negativamente se
implementa una secuencia como la mostrada en la figura 2.2.2.7.1. donde ACK referirá a un
sí y ERR a no.
Figura 2.2.2.7.1
Los comandos que lo implementan son:
a. INFORMACION:
i. PREPMEM: Pregunta si hay datos para reproducir desde memoria interna.
ii. PREPSD: Pregunta si existen datos para reproducir desde la SD.
iii. SD_CONECTADA: Pregunta si está conectada la tarjeta SD.
iv. DATA_SD: Pregunta si hay una señal grabada en la SD (Stand Alone).
b. ALIVE: Se solicita una verificación de conexión.
Técnicas Digitales III – Problema de ingeniería
25
c. PARAR: Solicita la detención de la reproducción.
2. Para aquellos comandos cuya ejecución implica la realización de un proceso dentro del
generador y por lo tanto se podrá recibir respuestas de wait, acknowledge o una notificación
de error en el proceso, se emplea una secuencia como la mostrada en la figura 2.2.2.7.2
Figura 2.2.2.7.2.
Los comandos que implementa son:
a. GRABAR
i. TRANSFERENCIA: Copia la señal grabada para reproducirse directamente
en RAM a la memora SD. Se utiliza después de un grabado en memoria
interna para lograr la función Stand Alone del mismo tipo.
b. LEER: Prepara al generador para reproducir la señal que se encuentra almacenada en
la SD, ya sea desde RAM o de la misma tarjeta (preparación para reproducción de
una señal Stand Alone).
c. REPRODUCIR: Si hay una señal disponible para reproducir, inicia la rutina de
reproducción.
d. CONTROL
i. RESTART_SD: En caso de fallar la inicialización de la SD el usuario puede
forzar que se repita el proceso.
e. FORMATEAR: Borra los datos existentes en la SD ó restaura la tabla de
información de señal (Véase INICIALIZACION DE LA TARJETA SD).
3. Para aquellos comandos que implica la carga de una señal ya sea para reproducirse desde
RAM o desde tarjeta SD, se utiliza la secuencia de la figura 2.2.2.7.3.
Figura 2.2.2.7.3.
El comando que lo implementa es:
a. GRABAR:
i. INTERNA: Graba una señal para reproducirse desde RAM a la máxima
frecuencia de muestreo permitida por el generador.
ii. INTERNA_OFFSET: Graba la señal para reproducirse desde RAM con
frecuencia de muestreo seleccionable.
iii. USO_SD: Graba una señal para reproducirse desde la tarjeta SD.
Técnicas Digitales III – Problema de ingeniería
26
4. Para aquellos comandos que deben ser acompañados de un solo parámetro se emplea
secuencia de la figura 2.2.2.7.4
Figura 2.2.27.4
a. CONTROL
i. CALIBRAR: Permite ajustar el voltaje de salida de forma manual. Este es
empleado en la calibración del DAC.
5. Cuando no se implementa ninguna de las secuencias anteriores, el generador ante acciones
del hardware puede emitir un mensaje a la PC sin esperar ninguna respuesta. Esto se
implementa para indicar inicio o parada de reproducción desde hardware.
En el caso de cargas de señales, los datos que se transfieren cumplen las siguientes especificaciones:
Cantidad de muestras: Si la reproducción es directamente desde RAM, el valor debe ser un entero entre 1 y 1000, ó cualquier valor de 32 bits para reproducción de SD.
Tiempo: Para reproducción desde RAM cualquier entero de 16 bits, para reproducción desde SD cualquier entero de 32.
Filtro: Se transfiere un carácter que representa el filtro a utilizar.
Muestras: Se transfiere la palabra de 12 bits separado en dos partes de 6 bits como se indica en la siguiente figura.
Figura 2.2.2.7.5
En cualquiera de los casos se transfiere primero el byte más significativo y los datos de cantidad de
muestra y tiempo son siempre 32 bits.
Técnicas Digitales III – Problema de ingeniería
27
2.2.3. SOFTWARE
El software se programó en Visual Basic .NET 2010 Express Edition de Microsoft.
Siguiendo las buenas prácticas de la programación orientada a objetos, el programa fue diseñado a
partir de clases que abstraigan las distintas funciones del programa. Una clase central encargada de
la interfaz de usuario, una que permite la lectura y carga de archivos de señal personalizada, y una
tercera que controla las comunicaciones con el generador y crea las señales estándares.
2.2.3.1. CLASE SigGen
2.2.3.1.1. GESTION DE PROTOCOLOS
El protocolo mencionado en los capítulos anteriores se implementa a través de una máquina de
estado embebida en la clase SigGen, la cual determina los pasos a seguir para desarrollar cada
secuencia. Como se observa en la figura 2.2.3.1.1.1 la maquina se encuentra cumpliendo la
secuencia de espera hasta que el programa principal solicite la ejecución de un comando en el
generador, luego la clase de encargará de gestionar los pasos necesarios. Si llega a ocurrir un error
durante la ejecución de la secuencia, se esperara su byte de identificación, y se notifica al programa
principal. En cualquier caso la máquina de estado vuelve a la espera (este estado atiende y traduce
la quinta secuencia mencionada en la sección anterior).
Figura 2.2.3.1.1.1 Máquina de estado protocolos de comunicación
Técnicas Digitales III – Problema de ingeniería
28
Para que el programa principal pueda utilizar la clase, deberá emplear el método Solicitud, y si se
realizase una carga, los Seters correspondientes. Luego el mismo deberá gestionar el puerto serie y
su accionar de acuerdo a los mensajes que reciba de la clase, a través del método Enlace. En caso de
ocurrir un error éste le puede solicitar el mensaje de error correspondiente.
2.2.3.1.2. CREACION DE SEÑALES
La clase SigGen incorpora los métodos necesarios para la creación de señales estándar. Para
especificar una señal se debe introducir en la ventana principal del programa los datos de: tipo de
señal, frecuencia, amplitud, offset y si se desea implementar un filtro especifico o dejarlo en
automático. Cada vez que estos datos son modificados el programa los carga en el objeto
Generador del tipo SigGen a través de los setters correspondientes. De esta forma cuando una señal
deba ser creada para cargarla en el generador, solamente debe llamarse al método CrearSeñal,
definiendo en sus parámetros solo información respecto al tipo de señal a generar, la definición de
la memoria a la que estará destinada, y la metodología de creación de la misma.Luego toda la
información que deba enviarse al generador quedará disponible para la parte de la clase encargada
de gestionar el protocolo.
El parámetro de metodología de creación se basa en el marcado de la casilla de verificación de
selección de velocidad inteligente en la interfaz de usuario. Si se eligió la velocidad inteligente, el
algoritmo, posiblemente, elija una velocidad un poco inferior a la máxima que podría utilizarse en
favor de obtener un número teórico entero de muestras, de modo que la primera de la secuencia
coincide con la que vendría después de la última, disminuyendo el THD y el error de cruce por cero.
Caso contrario se prioriza la frecuencia de muestreo sobre la exactitud. En ambos casos si fuera
posible grabar más de un período de la señal dentro de la memoria, se buscará el grabado de varios
períodos con el fin de disminuir el error. Por ejemplo si la cantidad teórica de muestras para una
señal es de 10,5 muestras, el error de 0,5 muestras puede solucionarse grabando 2 períodos de la
señal, es decir 21 muestras.
A menos que se especifique el método de reproducción, CrearSeñal elegirá el método que permita
la reproducción a mayor frecuencia de muestro.
En el momento previo a la carga, se elige el filtro a utilizar. Si la selección se realiza de forma
automática y la señal es de tipo estándar, DecideFiltro elige un filtro cuyo ancho de banda permite
el paso del contenido armónico deseado de la señal (definido dentro del código en CrearSeñal). Si
fuese personalizada, la selección se realiza cumpliendo Nyquist ya que la frecuencia de muestreo es
conocida pero no la naturaleza de la señal.
Técnicas Digitales III – Problema de ingeniería
29
Figura 2.2.3.1.2.1 Diagrama de flujo creación de señal
Técnicas Digitales III – Problema de ingeniería
30
Figura 2.2.3.1.2.2 Diagrama de flujo creación de señal de forma exacta
Técnicas Digitales III – Problema de ingeniería
31
Figura 2.2.3.1.2.3 Diagrama de flujo creación de señal de forma “rápida”
2.2.3.2. CLASE HeaderData
Para el guardado de señales personalizadas, se ha definido un formato que sea fácil de crear y leer,
permitiendo a su vez transferir las señales creadas en MATLAB al programa para que puedan ser
cargadas. Cada señal personalizada se guarda en dos archivos, uno de extensión .hdr y otro .dat. El
primero contiene la frecuencia de muestreo y el número de muestras de la señal en formato ASCII.
El segundo contiene las muestras de la señal codificadas en UINT16 y se encuentra almacenado en
formato binario Little-endian.
La clase HeaderData se encarga de la lectura de los archivos mencionados y de entregar dicha
información al programa principal, el cual lo cargará dentro de SigGen.
Técnicas Digitales III – Problema de ingeniería
32
2.2.3.2.1. CREACION DE SEÑALES PERSONALIZADAS
La creación de la señal personalizada puede realizarse con cualquier programa siempre que se
generen los archivos .hdr y .dat mencionados en el anterior apartado. Como parte de este proyecto
se ha implementado un script de MATLAB para la creación de los archivos de las señales. Para
utilizar este script se debe crear un vector con las muestras e invocar a Sample2Signal de la
siguiente forma:
Sample2Signal (Step, tipo Step, Muestras, Tipo muestras, Nombre)
Step: Frecuencia o período de muestreo
Tipo Step: „F‟ para frecuencia, „T‟ para período.
Muetras: Vector fila de n muestras en voltaje o cuentas.
Tipo Muestras: „V‟ para voltaje, „C‟ para cuentas.
Nombre: Nombre del archivo.
Figura 2.2.3.2.1.1
A modo de ejemplo se creó la señal definida por el script de la figura 2.2.3.2.1.1, obteniendo la
gráfica de la figura 2.2.3.2.1.2. que se corresponde con el output de la figura 2.2.3.2.1.3.
Técnicas Digitales III – Problema de ingeniería
33
Figura 2.2.3.2.1.2 Grafica en MATLAB de la señal personalizada
Técnicas Digitales III – Problema de ingeniería
34
Figura 2.2.3.2.1.3. Señal personalizada observada en el osciloscopio
2.2.3.3. INTERFAZ DE USUARIO
Para que el usuario pueda interactuar con el generador, se ha desarrollado una interfaz sencilla, de
fácil configuración, y que indique el estado del generador. Su pantalla principal se muestra en la
figura 2.2.3.3.1.
En el recuadro generador, cuando se está trabajando con una señal estándar, se pueden cambiar
tanto los parámetros de la señal como el método de generación de la misma. Si se utiliza una señal
personalizada el recuadro cambia como se observa en la figura 2.2.3.3.2., donde se cuenta con el
botón de carga de archivo y la posibilidad de verificar los datos de la señal cargada.
En el marco configuración se puede confirmar el puerto por el que se conecta el generador, la
referencia de voltaje del DAC y la frecuencia del Clock. A excepción del puerto, este recuadro no
debe modificarse, a menos que haya una modificación en el firmware o en el hardware.
Se observan dos indicadores gráficos, uno que indica si se encuentra una tarjeta SD conectada al
generador y el otro si hay una señal pre-grabada para reproducción Stand Alone. Además, en la
parte inferior de la pantalla, se indica el estado del generador (reproducción, carga, conectado,
desconectado, etc).
En el menú Función (figura 2.2.3.3.2.) se cuenta con:
Señal:
o Cargar: Carga la señal configurada.
o Leer pre-grabado: Dispone el generador para reproducir una señal Stand Alone
o Habilitar Stand Alone: Al estar chequeado, asegura que la señal podrá accederse
como Stand Alone, independientemente de cómo este grabada.
Voltaje Manual: Permite fijar un voltaje de salida continuo para emplear como referencia o
en la calibración del DAC.
Formatear: Borra el contenido de la tarjeta SD.
Técnicas Digitales III – Problema de ingeniería
35
El menú Controles (figura 2.2.3.3.3.) consta de:
Conectar
Desconectar
Refrescar puertos
Comprobar conexión
Forzar Carga SD: Solicita la ejecución del algoritmo de inicialización de la SD desde
software.
Figura 2.2.3.3.1. Pantalla principal de la interfaz de usuario.
Técnicas Digitales III – Problema de ingeniería
36
Figura 2.2.3.3.2.
Figura 2.2.3.3.3. Menú Función.
Figura 2.2.3.3.4. Menú Controles.
Técnicas Digitales III – Problema de ingeniería
37
Para confirmar operaciones realizadas o alertar al usuario respecto a algún error, el programa
presenta diversos carteles explicativos al mismo tiempo que asegura la estabilidad del programa.
Figura 2.2.3.3.5.
Técnicas Digitales III – Problema de ingeniería
38
2.3. RESULTADOS DE LAS PRUEBAS
Una vez diseñado y ensamblado el prototipo se prosiguió a la prueba del dispositivo frente a las
diferentes opciones posibles.
Figura 2.3.1. Imagen del prototipo
Se comenzó con señales de baja frecuencia, observándolas correctamente generadas. Sin embargo
ante señales de mayor frecuencia se detectaba un ruido y/o distorsión montado sobre la misma.
Filtrando de forma más estrecha señales senoidales de diferentes frecuencias con el filtro digital del
osciloscopio, se detectó que el ruido era eliminado y se descartó un posible error de firmware al
observar una forma correcta en la señal de salida.
Para corroborar que el ruido era independiente de la frecuencia de la señal, se probó nuevamente
con señales de baja frecuencia pero sin ninguna etapa de filtrado y se observó que el ruido persistía.
En las figuras 2.3.2 y 2.3.3 se observa lo mencionado anteriormente y la forma detectada del ruido
sin ninguna señal en reproducción.
Con el fin de corroborar que el ruido era externo y que este podía provenir de alguna fuente
switching se midió la fuente del dispositivo en vacío observando la existencia del mismo ruido.
Figura 2.3.2. Salida del generador con señal senoidal de 15KHz con presencia de ruido
Técnicas Digitales III – Problema de ingeniería
39
Figura 2.3.3. Salida del generador sin ninguna señal en reproducción
Tras exponerlo y consultar con los profesores, se procedió a investigar la fuente del ruido e
implementar alguna solución siguiendo sus sugerencias. Se comenzó colando un filtro pasa bajos en
la entrada de la alimentación del circuito, notando que la salida del generador sin reproducción era
limpia. A pesar de esto al generar señales de diferentes frecuencias sin filtrado, se observaba una
distorsión periódica que parecía estar asociada a la característica y frecuencia de la misma.
Figura 2.3.4
Por dicha razón se procedió a conectar el plano de cobre, producto de haber fabricado el PCB con
CNC, a la masa del circuito y conectar capacitores de desacople en la alimentación de cada uno de
los integrados con el fin de intentar eliminar la distorsión y de ajustar el diseño a las buenas
practicas. Esta implementación no presentó ninguna mejora. A pesar de esto los ensayos realizados
permitieron sospechar que estas distorsiones eran producto de la respuesta de los amplificadores
operacionales a la salida del DAC. Para corroborar esto se diseñó en MATLAB una señal senoidal
con pocas muestras por periodo, y observar una posible relación entre los saltos de nivel del
muestreo y la distorsión. Como se observa en las figuras 2.3.5 a la 2.3.7, la respuesta de los AO
presenta un overshoot frente a cada salto de tensión del DAC, que distorsiona la señal. Esta
distorsión no pudo ser solucionada debido a la disponibilidad de componentes y al costo que
hubiera implicado implementar otro diseño.
Técnicas Digitales III – Problema de ingeniería
40
Figura 2.3.5 Señal senoidal con pocas muestras por periodo
Figura 2.3.6. Overshoot en Amplificador Operacional
Figura 2.3.7. Señal senoidal con pocas muestras por período.
Técnicas Digitales III – Problema de ingeniería
41
A continuación se muestran algunas imágenes del funcionamiento final del generador.
Figura 2.3.8. Señal senoidal 1KHz
Figura 2.3.9. Señal cuadrada 1KHz
Figura 2.3.10. Señal diente de sierra 1KHz
Técnicas Digitales III – Problema de ingeniería
42
3. CONCLUSIONES
En este proyecto se diseñó un generador de señales arbitrario, el cual es una herramienta muy útil en
laboratorios para el ensayo de diversos dispositivos que requieran, o no, señales específicas de
entrada.
Si bien se encontraron dificultades, que algunas fueron solucionadas y otras no, se obtuvo un
dispositivo de gran utilidad para el desarrollo de otros proyectos y se cumplió con los objetivos
planteados al inicio del desarrollo.
Se destaca, además, la característica multidisciplinaria de la electrónica en este proyecto, al abarcar
conocimientos relacionados con análisis de señales, diseño analógico, programación de
microcontroladores, programación orientada a objetos, utilización de protocolos de comunicación,
entre otros.
Técnicas Digitales III – Problema de ingeniería
43
ANEXO 1 ESQUEMATICO FUENTE:
Técnicas Digitales III – Problema de ingeniería
44
ANEXO 2 ESQUEMATICO FILTRO 20 KHz:
Técnicas Digitales III – Problema de ingeniería
45
ANEXO 3 ESQUEMATICO PLACA PRINCIPAL:
Técnicas Digitales III – Problema de ingeniería
46