GRADO EN INGENIERÍA EN
TECNOLOGÍAS INDUSTRIALES
TRABAJO FIN DE GRADO
TÍTULO: GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A AUTOR: MANUEL MAESTRO CASTRO DIRECTOR: ALFREDO PÉREZ VEGA-LEAL DEPARTAMENTO: INGENIERÍA ELECTRÓNICA FECHA: JUNIO 2014
ESCUELA TÉCNICA SUPERIOR DE
INGENIERÍA
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
2
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
3
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
I) ÍNDICE GENERAL
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
4
ÍNDICE GENERAL
-Memoria ......................................................................................................................... 5
1) Objeto, alcance y antecedentes ............................................................................. 8
2) Normas y referencias ........................................................................................... 10
3) Definiciones y abreviaturas ................................................................................ 12
4) Análisis de soluciones .......................................................................................... 13
5) Resultados finales ................................................................................................ 42
-Anexos ........................................................................................................................... 72
-Planos ............................................................................................................................ 81
-Presupuesto ................................................................................................................. 97
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
5
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
II) MEMORIA
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
6
MEMORIA
-Índice
1) Objeto, alcance y antecedentes ............................................................................. 8
2) Normas y referencias ........................................................................................... 10
2.1) Bibliografía .......................................................................................... 10
2.2) Programas de cálculo y diseño ............................................................ 11
3) Definiciones y abreviaturas ................................................................................. 12
4) Análisis de soluciones .......................................................................................... 13
4.1) Entorno de desarrollo del microcontrolador ........................................ 13
4.1.1) Características principales DSPIC30F6014A .................... 13
4.1.1.1) Características CPU ................................................ 14
4.1.1.2) Características DSP ................................................ 14
4.1.1.3) Características periféricos ...................................... 15
4.1.1.4) Características analógicas ....................................... 15
4.1.1.5) Características especiales ....................................... 15
4.1.1.6) Tecnología CMOS .................................................. 16
4.1.2) Diseño PCB ......................................................................... 17
4.1.3) Proceso de fabricación ......................................................... 20
4.1.3.1) Insolación ............................................................... 20
4.1.3.2) Revelado ................................................................. 22
4.1.3.3) Ataque..................................................................... 23
4.1.3.4) Taladrado ................................................................ 23
4.1.3.5) Soldadura ................................................................ 24
4.1.3.6) Comprobaciones finales ......................................... 24
4.1.4) Puesta en marcha ................................................................ 25
4.1.4.1) Retrasos .................................................................. 25
4.1.4.2) Oscilador rápido interno (FRC) .............................. 27
4.1.4.3) PLL ......................................................................... 27
4.1.4.4) Código de ejemplo .................................................. 28
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
7
4.2) Convertidor D/A .................................................................................. 32
4.2.1) Tipos de convertidores ............................................................. 32
4.2.2) Amplificador operacional ........................................................ 35
4.2.3) Diseño PCB ............................................................................. 37
4.2.4) Simulación Micro-Cap y testado ............................................. 38
4.3) Generador de ondas ............................................................................. 40
5) Resultados finales ................................................................................................ 42
5.1) Onda diente de sierra ........................................................................... 42
5.2) Onda triangular .................................................................................... 50
5.3) Onda cuadrada bit a bit ........................................................................ 56
5.4) Onda senoidal (18 puntos) ................................................................... 59
5.5) Onda senoidal (256 puntos) ................................................................. 66
5.6) Conclusiones ........................................................................................ 71
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
8
1) OBJETO, ALCANCE Y ANTECEDENTES
El objetivo de este proyecto es conseguir un entorno de desarrollo para el
microcontrolador dsPIC30F6014A, en el que se le pueda sacar el mayor rendimiento y
poder acoplar el máximo número de periféricos distintos posibles con una compatibilidad
absoluta y la realización de un periférico para que funcionen al unísono. Para ello se
tendrá que maximizar el espacio en la PCB donde irá el microcontrolador e intentar
disponer del máximo número de pines del microncontrolador, es decir, ver si es viable
usarlos todos y además ver que tengan cabida en la placa reduciendo el espacio lo
máximo posible, para poder dejar el mayor espacio posible de diseño para los periféricos
a usar con este entorno de desarrollo.
Con esto se conseguirá no tener que hacer un dispositivo completo desde cero,
con lo que ello supone (mayor tamaño de placas, usar más componentes), por lo que
conseguiremos ahorrar tiempo y dinero (ya que tendremos que usar menos componentes
para desarrollar distintas aplicaciones), por lo que sólo tendría que hacerse el periférico
como tal en sucesivas necesidades del microcontrolador y así sacar el mayor partido al
mismo con esa versatilidad.
Como ejemplo de uso se ha realizado un generador de ondas para el cual se ha
empleado como periférico a acoplar al entorno de desarrollo del microcontrolador un
convertidor digital-analógico R-2R.
Al no necesitar este ejemplo componentes como oscilador externo (se usará el
oscilador interno del microcontrolador), el “dip switch” o el bus can en la PCB del
entorno de desarrollo del DSPIC30F6014A, no se montarán en la placa de demostración,
aunque sí estarán reflejados todos estos componentes en el presupuesto de la placa.
Para el diseño del entorno de desarrollo no se partió desde cero, sino que se
aprovechó el diseño de una PCB para utilizar los conectores de entrada y salida de la
misma, así como las alimentaciones, driver del bus can, el cristal externo, y el conector de
programación.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
9
De aquí se han aprovechado las huellas de dichos componentes como se verá más
adelante para realizar la PCB del entorno de desarrollo del DSPIC30F6014A.
La redacción de este proyecto se ha realizado siguiendo la noma UNE 157001:
“Criterios generales para la elaboración de proyectos”, cuyos puntos más importantes
están referenciados en el documento Anexos en la sección Norma UNE 157001.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
10
2) NORMAS Y REFERENCIAS
-2.1) Bibliografía
• Datasheet DSPIC30F6014A:
http://ww1.microchip.com/downloads/en/DeviceDoc/70143C.pdf
• Datasheet amplificador operacional LM741:
http://www.ti.com/lit/ds/symlink/lm741.pdf
• Datasheet CAN transceiver (No utilizado en la placa de demostración):
http://www.ti.com/lit/ds/symlink/iso1050.pdf
• Datasheet bomba de carga ICL7666:
http://pdfserv.maximintegrated.com/en/ds/ICL7662-Si7661.pdf
• Manual MPLABX:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002027C.pdf
• Manual XC16compiler:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002071C.pdf
• Manual oscilador DSPIC30F6014A:
http://ww1.microchip.com/downloads/en/DeviceDoc/70054e.pdf
• Consulta inversores fotovoltaicos
http://www.upv.es/gep/Central_Solar/inversor.htm
• Imágenes revelado PCB:
http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Construccion_
pcb.pdf
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
11
-2.2) Programas de cálculo y diseño
• Altium designer: Es un programa de diseño con el cual se han realizado las dos
placas del proyecto. Se parte de un esquemático a realizar del circuito entero y a
partir de ahí se pasan todos los componentes a la PCB donde se colocan y se
rutan, para posteriormente obtener una impresión de las caras de la PCB que
servirán de máscara a la hora de revelar dicha PCB.
• Micro-cap: Es un programa de simulación de circuitos, tanto analógicos como
digitales, basado en una interfaz gráfica, con el que se ha simulado el convertidor
digital /analógico (CDA) para obtener el funcionamiento del generador de ondas
propuesto.
• MPLABX: Es un programa de software para desarrollar aplicaciones para
microcontroladores de Microchip y controladores de señales digitales. Es llamado
entorno de desarrollo integrado (IDE), ya que proporciona un único “medio
ambiente” integrado para desarrollar código para microcontroladores embebidos.
Sobre este programa se ha desarrollado todo el código para poder realizar el
generador de ondas sobre el DSPIC30F6014A.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
12
3) DEFINICIONES Y ABREVIATURAS
DC Corriente continua
AC Corriente alterna
CDA Convertidor analógico/digital
D/A Digital/Analógico
PCB Placa de circuito impreso
V Voltio
mV Milivoltio
kHz Kilohercio
mm Milímetros
ma Miliamperios
pf Picofaradios
uf Microfaradios
nf Nanofaradios
k Kiloohmios
Vref Tensión de referencia
Rms Root mean square, Valor cuadrático medio
ms Milisegundos
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
13
4) ANÁLISIS DE SOLUCIONES
-4.1) Entorno de desarrollo del microcontrolador
Lo primero de todo ha sido el diseño de la PCB donde se encontraría el
microcontrolador a usar, que en este caso ha sido el DSPIC30F6014A de Microchip.
El objetivo de esta PCB es obtener el máximo partido del microcontrolador por lo
que para hacer un diseño óptimo del máximo número de pines a utilizar en concordancia
con el espacio disponible (el menor posible) se hizo un estudio previo del
microcontrolador para ver la disposición y características del mismo.
-4.1.1) Características principales DSPIC30F6014A
-Arquitectura: 16 bits
-Velocidad CPU (MIPS): 30
-Memoria: Flash
-Memoria programable (KB): 144
-RAM bytes: 8,192
-Rango de temperatura (ºC): (-40 a 125)
-Rango tensión soportada (V): 2.5 a 5
-Pines I/O: 68
-Pines totales: 80
-Funciones de gestión del sistema: BOR, LVD
-Oscilador interno: 7,37MHz, 512kHz
-Periféricos de comunicación digital: 2 UART, 2SPI, 1I2C
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
14
-Periféricos analógicos: 1 A/D 16x12-bit (a 200 ksps)
-CAN: 2 CAN
-Periféricos de captura/comparación/PWM: 8/8
-Bits de resolución PWM: 16
-Timers: 5x16-bit, 2x32-bit
-Puerto paralelo: GPIO
-4.1.1.1) Características CPU
-Arquitectura Harvard modificada
-84 instrucciones básicas con modos de direccionamiento flexibles
-Instrucciones de ancho 24-bit y datos de ancho 16-bit
-Hasta 30 MIPs:
• Entrada reloj externo DC a 40 MHz
• Reloj interno FRC con PLL (4x, 8x, 16x)
• Reloj interno 4MHz-10MHz con PLL (4x, 8x, 16x)
• Reloj interno 10MHz-20MHz con PLL (4x, 8x, 16x)
-Fuentes de interrupción periférica y externa
-8 niveles de prioridad seleccionable para cada interrupción
-4.1.1.2) Características DSP
-Módulo y direccionamiento de bits invertida
-Dos acumuladores de ancho 40-bit con saturación lógica opcional
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
15
-17-bit x 17-bit ciclo hardware único multiplicador fraccional/entero
-Ciclo único de operación multiplicación-acumulación (MAC)
-40-etapas “Barrel Shifter”
-4.1.1.3) Características periféricos
-Corriente pines I/O: 25mA
-Opcionalmente se emparejan timers 16-bit en módulos timers 32-bit
-Módulos SPI de 3 hilos
-Módulo I2C soporta modo Multi-Master/Slave y direccionamiento 7-bit/10-bit
-Módulos UART direccionables con buffers FIFO y pines seleccionables
-Interfaz de conversión de datos soporta protocolos comunes de códec de audio,
incluyendo I2S y AC’97
-4.1.1.4) Características analógicas
-Convertidor A/D (CAD) 12-bit 200 Ksps
-Conversión A/D disponible durante reposo e inactividad
-1 Sample/Hold
-Múltiples opciones en la secuencia de conversión
-4.1.1.5) Características especiales
-Mejora de la memoria Flash: 10000 ciclos de escritura/borrado (min.) para un
rango de temperatura industrial, 100K (usual)
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
16
-Memoria EEPROM: 100000 ciclos de escritura/borrado (min.) para un rango de
temperatura industrial, 100K (usual)
-Auto-reprogramable bajo control por software
-Power-on Reset (POR), Power-up Timer (PWRT) y Oscillator Start-up Timer
(OST)
-Timer Watchdog (WDT) con oscilador de baja potencia RC
-Monitorización del reloj a prueba de fallos
-Detección de fallo del reloj y cambio al oscilador RC de baja potencia
-Protección de código programable
-Selección de modos de administración de energía: Suspensión, inactivo y reloj
alternativo.
4.1.1.6) Tecnología CMOS
-Baja potencia, tecnología Flash de alta velocidad
-Alto de tensión de funcionamiento: 2.5V a 5.5V
-Rangos industriales de temperatura
-Bajo consumo de energía
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
17
-4.1.2) Diseño PCB
El reto que presentaba el diseño de la PCB era poder disponer con el espacio libre
disponible (quitando conectores de entrada, salida, programación, oscilador externo,
alimentaciones y demás) del mayor número posible de los pines del microcontrolador
para obtener el máximo partido del mismo, cuya disposición se muestra según la Figura1.
Cada pin además puede tener varias funciones que se seleccionarán mediante software
según la utilidad que se le quiera dar al pin de las disponibles en cada uno de ellos. Todos
los pines del micro se encuentran detallados en el documento Anexos, en la sección
“Características principales DSPIC30F6014A”.
Figura1: Diagrama de pines DSPIC30F6014A
Autor: Datasheet DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
18
Tras haber estudiado las diversas opciones se ha decantado por motivos de
espacio y por no repercutir en la mayoría de aplicaciones del microcontrolador, de no
disponer de los siguientes pines del mismo:
• PIN6: SCK2/CN8/RG6
• PIN7: SDI2/CN9/RG7
• PIN8: SDO2/CN10/RG8
• PIN10: NOT(SS2)/CN11/RG9
• PIN13: INT1/RA12
• PIN14: INT2/RA13
• PIN64: IC5/RD12
• PIN65: IC6/CN19/RD13
Las funciones R indican que el pin tiene funcionalidad de entrada/salida
bidireccional. La siguiente letra indica a qué puerto pertenece y el número el orden que
tiene dicho pin en el puerto. Al tener el microcontrolador muchos otros pines que poseen
esta características no es inconveniente poder no utilizarlos.
Las funciones CN indican que el pin tiene funcionalidad de entrada y sirven
notificar cambios en la entrada. El número indica el orden que tiene en el
microcontrolador. Al tener 24 pines de este tipo no es inconveniente no utilizarlos.
Las funciones SCK2, SDI2, SDO2 y NOT (SS2) indican que los pines
correspondientes pertenecen a funcionalidades del SPI, más concretamente al SPI2. Al
disponer el microcontrolador de 2 SPI podemos no utilizar uno de ellos.
Las funciones INT indican que el pin es de entrada y tiene la funcionalidad de
interrupción externa. Al tener el microcontrolador 5 pines de este tipo podemos no
utilizar dos de ellos.
Las funciones IC indican que los pines son de entrada y tienen la funcionalidad de
capturas de entrada. Al tener el microcontrolador 8 pines de este tipo podemos no utilizar
dos de ellos.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
19
Durante el proceso de rutado de todos los componentes, se ha tenido la premisa de
realizar todas las pistas con el mayor ancho posible, siendo las de mayor ancho las de las
alimentaciones (1.27mm) y las de menor ancho todas las pistas que partían de los pines
del microcontrolador (0.43-0.51mm) ya que estaban limitadas al ancho de los pads de
dicho microcontrolador.
Todas las vías necesarias para comunicar la capa “top” con la “bottom” también
se han diseñado con la premisa de tener el mayor diámetro posible, ya que a la hora de
taladrar y soldar beneficia en gran medida el tener un espacio más amplio, por lo que el
diámetro exterior de las vías es de 1.52mm y el interior de 0.76mm.
Tras un primer diseño en el que todo quedó algo ajustado como se puede ver en el
documento Planos, en la sección PCB microcontrolador, así como otros pequeños errores
como no poner la mayor extensión del plano de GND posible, se decidió hacer un
pequeño rediseño.
Se procedió a maximizar los planos de GND, agrandar vías y colocar el oscilador
externo en la capa “bottom” ya que no tenía sentido mantenerlo en la capa “top” debido a
que muchas pistas provenientes del microcontrolador tenían que rodearlo y quedaba todo
muy ajustado e incluso con dificultad de satisfacer unos tamaños mínimos.
Tanto el esquemático de toda la PCB así como las huellas de las capas “top” y
“bottom” se encuentran en el documento Planos, en la sección PCB microcontrolador.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
20
-4.1.3) Proceso de fabricación
Una vez terminado el diseño de la PCB en el programa Altium Designer se
procedió a la impresión de las dos caras de la misma en papel cebolla, que actuarán
posteriormente de máscara en la insolación de la PCB, que será el primero de los cinco
pasos a realizar para la fabricación de dicha PCB. El proceso de fabricación será el
mismo para la PCB del convertidor digital/analógico (CDA), por lo que se omitirá la
explicación este paso en el diseño de dicha PCB en los apartados siguientes.
-4.1.3.1) Insolación
En esta primera fase se han utilizado los siguientes materiales y dispositivos:
• Placa de fibra de vidrio
• Insoladora
• Diseño circuito en papel cebolla
La PCB posee una resina fotosensible en la superficie de sus dos caras. Esta resina
puede ser positiva (al incidir la luz ultravioleta emitida por la insoladora sobre la resina,
esta se ablanda) o negativa (al incidir la luz ultravioleta emitida por la insoladora sobre la
resina, esta se endurece). En este caso la resina es positiva. Someter a la PCB a una
emisión constante de luz ultravioleta es en lo que consiste la insolación.
Se retira la protección en ambas caras de la PCB y se coloca cada una de las
impresiones en papel cebolla sobre la cara de la PCB que corresponda de tal manera que
la resina reacciona sólo en las zonas por donde la luz pueda pasar, es decir, donde no
exista ninguna pista, ya que la luz pasa a través del papel transparente. La mayor
complejidad de este paso consiste en hacer coincidir ambas caras perfectamente, ya que a
la hora de taladrar puede presentar un problema al no estar las vías alineadas. En la
Figura 2 y Figura 3 se puede observar la emisión de la luz UV y la reacción provocada
en la resina.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
21
Figura 2: Emisión luz ultravioleta
Autor:http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Constru
ccion_pcb.pdf
Figura 3: Reacción provocada en la resina
Autor:http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Constru
ccion_pcb.pdf
Tras la insolación la PCB quedaría según la Figura 4.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
22
Figura 4: PCB tras insolación
Autor:http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Constru
ccion_pcb.pdf
-4.1.3.2) Revelado
El siguiente paso a realizar es el revelado de la PCB. Consiste en eliminar de la
placa la resina sobre la que han incidido los rayos ultravioleta en la etapa anterior (sobre
la que no han incidido la luz se mantendrá y servirá como agente anticorrosivo), para que
sea atacada por el ácido corrosivo en el siguiente proceso. Para ello se tendrá que poner
en contacto la PCB con un líquido llamado “revelador”.
Al poco tiempo de poner en contacto la PCB con en el revelador, van apareciendo
las pistas, formando poco a poco el circuito completo. Cuando se aprecie el circuito
completo claramente y ya no se enturbie más el revelador es señal de que el proceso se ha
completado. La PCB quedaría según se observa en la Figura 5.
Figura 5: PCB tras revelado
Autor:http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Constru
ccion_pcb.pdf
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
23
-4.1.3.3) Ataque
El objetivo de este proceso es eliminar todo el cobre no protegido por la resina.
Para ello se introduce la placa en una solución corrosiva constituida por los siguientes
componentes:
• 2 partes de agua
• 1 parte de agua oxigenada 110 volúmenes
• 1 parte de agua fuerte
Durante el proceso de atacado, hay que estar atento para que las pistas no sean
atacadas por la solución corrosiva. Cuando haya desaparecido el cobre sobrante y no se
observe burbujeo en las zonas de ataque se dará por finalizado el proceso, y se obtendrá
un resultado como el que se puede observar en la Figura 6.
Figura 6: Resultado final
Autor:http://ocw.bib.upct.es/pluginfile.php/7990/mod_resource/content/1/Constru
ccion_pcb.pdf
-4.1.3.4) Taladrado
Tras el proceso de ataque es necesario hacer los agujeros para poder introducir
todos los componentes que se incluyeron en el diseño. Es importante prestar atención a la
realización de los agujeros para que todos los componentes encajen sin mayor
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
24
dificultad. Se ha tenido en cuenta a la hora de taladrar el grosor de las patas de los
componentes, por lo que se han utilizado diferentes brocas para este proceso.
-4.1.3.5) Soldadura
Antes de soldar los componentes se tiene que limpiar la PCB con acetona u
alcohol de 96º para eliminar todo tipo de residuos indeseados que no favorezcan la
soldadura.
-4.1.3.6) Comprobaciones finales
Tras tener todos los componentes soldados se tiene que comprobar que no haya
cortocircuitos entre pistas y que todas las soldaduras se han realizado correctamente para
dar por finalizado el proceso de fabricación de la PCB.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
25
-4.1.4) Puesta en marcha
Con la PCB del microcontrolador terminada, el siguiente paso fue programar
algún código sencillo con el que poder comprobar que todo funcionaba correctamente
antes de ponerse a hacer algún programa de mayor complejidad.
Como primera propuesta se realizaron pruebas para poner los pines I/O del
microcontrolador a nivel alto, a nivel bajo, y una alternancia nivel alto/nivel bajo
utilizando retrasos, comprobando posteriormente los pines usados (pin a pin) con el
osciloscopio, por lo que se obtiene una señal cuadra por cada pin para este último caso de
utilización de los retrasos. Para los demás casos de poner exclusivamente un pin a nivel
alto o bajo se puede observar la respuesta con el polímetro. Todos estos casos se
realizaron con el código de ejemplo expuesto en la sección 4.1.4.4), y cuyo resultado tras
usarlo en el convertidor D/A es el de la Figura 10.
Todos los demás códigos utilizados en este proyecto utilizarán el mismo tipo de
retrasos para su realización.
-4.1.4.1) Retrasos
Para poder acometer los retrasos se usó la función “__delay32”, perteneciente a la
librería “<libpic30.h>”, cuyo prototipo es “void __delay32( unsigned long cycles);”.
Esta función recibe como argumento “cycles”, que será el número de ciclos de
retraso que se quieran poner. El número mínimo de ciclos de retraso que admite esta
función es de 11 ciclos (un argumento menor lo interpretará como si se hubieran puesto
11 ciclos). La función incluye los procedimientos de llamada y respuesta, pero no
requiere ningún ciclo para configurar el argumento.
Según se aumenten o disminuyan el número de ciclos enviados como argumento a
la función “__delay32” se podrá aumentar o disminuir la frecuencia de los retrasos, pero
esto también dependerá de la duración de los ciclos. Dicha duración está directamente
ligada con la duración de los ciclos de reloj del microcontrolador que no
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
26
será única, como puede verse en detalle en el documento Anexos, en la sección Oscilador.
Refiriéndose a la Figura 7, la frecuencia de reloj del sistema puede ser
proporcionada por una de las cuatro fuentes disponibles. Estas fuentes son el oscilador
Primario, el oscilador Secundario, el oscilador rápido interno (FRC) y el oscilador de baja
potencia (LPRC).
Figura 7: Relación FCY y FOSC
Autor: Datasheet oscilador DSPIC30F6014A
La frecuencia de la fuente de reloj seleccionada puede ser opcionalmente reducida
mediante un escalado programado, y aumentada combinándola con el PLL (explicado
más abajo). La salida de estos escalados programados se convertirá en la fuente de reloj
del sistema, FOSC.
La fuente de reloj del sistema está dividida por cuatro para producir la instrucción
interna del ciclo de reloj, FCY. El diagrama de tiempo de la Figura 8 muestra la relación
entre la fuente de reloj del sistema y la ejecución de la instrucción.
Figura 8: Tiempo ciclo de reloj/instrucción
Autor: Dathasheet oscilador DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
27
Para obtener la FOSC se ha elegido para este ejemplo y los sucesivos de este
proyecto el oscilador rápido interno (FRC), acompañado del PLLx8 ya que nos
proporcionará una FCY de 15MHz que proporcionará un abanico de frecuencias muy
amplias con las que poder trabajar sin tener que recurrir a un oscilador externo.
-4.2.4.2) Oscilador rápido interno (FRC)
El oscilador FRC es un oscilador rápido interno que proporciona 7.37MHz de
frecuencia. Este oscilador pretende proporcionar un rango de velocidad de operación sin
el uso de un cristal externo, resonador cerámico o una red RC. Según las versiones 2 y 3
del oscilador (el microcontrolador usado en este proyecto, DSPIC30F6014A, pertenece a
la versión 3, como se puede ver en el documento Anexos en la sección Oscilador) se
podrá combinar con el PLL para obtener diferentes FOSC.
-4.1.4.3) PLL
El PLL permite modificar el FOSC del oscilador elegido de tres modos diferentes,
x4, x8, x16, como se puede observar en la Figura 9.
Figura 9: Rango de frecuencia PLL
Autor: Datasheet oscilador DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
28
-4.1.4.4) Código de ejemplo
/*
* File: LED.c
* Author: Administrador
*
* Created on 6 de mayo de 2014, 14:04
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h> //Libreria del compilador de C
#include <p30F6014A.h>
#include <delay.h>
#include <libpic30.h>
/*
*
*/
//FUSES DEL PIC 30F6014A
#pragma config FOSFPR = FRC_PLL8 // Oscillator (FRC w/PLL 8x) -> 15MHz
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
29
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw
Disabled, Mon Disabled)
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
#pragma config GCP = GSS_OFF // General Segment Code Protection (Disabled)
#pragma config MCLRE = MCLR_DIS // Master Clear Enable (Disabled)
int main(void) {
ADCON1|= 0x0F; //Deshabilitamos el ADC para que los bits sean de E/S digital
TRISB = 0x00; //Todos los bits del puerto B serán salidas
PORTB = 0x00; //Colocamos 0s en los bits del puerto B
TRISD = 0x00; //Todos los bits del puerto D serán salidas
PORTD = 0x00; //Colocamos 0s en los bits del puerto D
TRISF = 0x00; //Todos los bits del puerto F serán salidas
PORTF = 0x00; //Colocamos 0s en los bits del puerto F
TRISG = 0x00; //Todos los bits del puerto G serán salidas
PORTG = 0x00; //Colocamos 0s en los bits del puerto G
TRISA = 0x00; //Todos los bits del puerto F serán salidas
PORTA = 0x00; //Colocamos 0s en los bits del puerto A
TRISC = 0x00; //Todos los bits del puerto C serán salidas
PORTC = 0x00; //Colocamos 0s en los bits del puerto C
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
30
while(1){
PORTDbits.RD8 = 1; //Coloca un 1, nivel alto, en el pin RD8
PORTFbits.RF7 = 1; //Coloca un 1, nivel alto, en el pin RF7
PORTDbits.RD15 = 1; //Coloca un 1, nivel alto, en el pin RD15
PORTBbits.RB11 = 1; //Coloca un 1, nivel alto, en el pin RB11
PORTAbits.RA10 = 1; //Coloca un 1, nivel alto, en el pin RA10
PORTCbits.RC4 = 1; //Coloca un 1, nivel alto, en el pin RC4
PORTGbits.RG15 = 1; //Coloca un 1, nivel alto, en el pin RG15
PORTGbits.RG0 = 1; //Coloca un 1, nivel alto, en el pin RG0
__delay32(15000); // Retraso aplicado
PORTDbits.RD8 = 0; //Coloca un 0, nivel bajo, en el pin RD8
PORTFbits.RF7 = 0; //Coloca un 0, nivel bajo, en el pin RF7
PORTDbits.RD15 = 0; //Coloca un 0, nivel bajo, en el pin RD15
PORTBbits.RB11 = 0; //Coloca un 0, nivel bajo, en el pin RB11
PORTAbits.RA10 = 0; //Coloca un 0, nivel bajo, en el pin RA10
PORTCbits.RC4 = 0; //Coloca un 0, nivel bajo, en el pin RC4
PORTGbits.RG15 = 0; //Coloca un 0, nivel bajo, en el pin RG15
PORTGbits.RG0 = 0; //Coloca un 0, nivel bajo, en el pin RG0
__delay32(15000);
}
return (EXIT_SUCCESS); }
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
31
-Resultados osciloscopio
Como puede observarse en la siguiente imagen, todos los pines usados del
microcontrolador responden de manera correcta según el código utilizado anteriormente,
en el que se muestra la respuesta a nivel alto/bajo de todos los pines a la salida del
convertidor.
Figura 10: Onda cuadrada nivel alto/bajo 8 bits
Autor: Propio
Comentarios: Se puede observar como teniendo todos los pines a nivel alto, teniendo una
Vref de 3.3V, obtiene una amplitud de 3.36V, que como se verá posteriormente coincide
con la simulación realizada en Micro-Cap, cuyo valor de pico es de -3.28V. La no
exactitud de la medida se debe a los diversos errores de medida que se producen al
medir.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
32
-4.2) Convertidor D/A
Un convertidor digital/analógico es un dispositivo que genera una señal analógica
(tensión o corriente) a su salida, que es proporcional al valor numérico en binario
introducido a su entrada. Esta transformación sucede ya que el convertidor controla el
flujo de corriente según los bits activados en su entrada.
Los dos tipos de convertidores más usuales son el convertidor de red de
resistencias ponderadas y el convertidor de red de resistencias R-2R.
-4.2.1) Tipos de convertidores
-Red de resistencias ponderadas
Es un convertidor bastante simple aunque tiene el inconveniente de que las
resistencias van creciendo respecto a la anterior en progresión geométrica. Así si tenemos
un convertidor de 8 bits se necesitarán resistencias de valores R, 2R, 4R, 16R, 32R, 64R,
128R y 256R, como se puede observar en la Figura 11.
Figura 11: Convertidor D/A red de resistencias ponderadas
Autor: Modificación propia
Dado este inconveniente se decidió utilizar el siguiente tipo de convertidor
digital/analógico para realizar el proyecto.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
33
-Red de resistencias R-2R
Este tipo de convertidor presenta la gran ventaja de que sólo usa resistencias de
dos tipos como su nombre indica, de valores R y 2R como se muestra en la Figura 12,
razón por la cual se eligió este tipo de convertidor para la realización de este proyecto.
Figura 12: Convertidor D/A red de resistencias R-2R
Autor: Modificación propia
El funcionamiento de este convertidor se basa en que cada rama hace sumar una
componente de corriente proporcional a la de entrada. Mediante el teorema de
superposición se puede evaluar el aporte individual de cada rama, para obtener al final
una expresión de la tensión de la salida en función de dichas ramas:
���� � ���� �� � ���2���
�
���
Siendo Rf la resistencia que hay comunicando la salida del amplificador
operacional con su entrada inversora, y n el número de bits del convertidor.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
34
La salida obtenida del convertidor dependerá en gran medida de la magnitud
entrante en binario, de la ganancia del amplificador operacional y del voltaje de
alimentación.
Algunos datos de interés del convertidor son:
- El máximo valor alcanzado por la salida analógica cuando se le aplica a la
entrada la máxima señal posible, es decir, todos los bits a nivel alto, que para el caso
particular de este proyecto será de -3.36V.
-La diferencia en voltios que se produce por cada incremento del valor binario,
que en el caso de este proyecto al ser un convertidor de 8 bits tendremos 256 valores
posibles y al tener un máximo valor de -3.36V, tendremos por cada incremento binario un
incremento de 0,0132V.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
35
-4.2.2) Amplificador operacional
El amplificador operacional es un dispositivo electrónico cuyo comportamiento
fundamental es el de obtener a su salida el resultado de la diferencia de potencial
generada entre sus dos entradas multiplicada por su ganancia. La simbología utilizada se
muestra en la siguiente Figura 13:
Figura 13: Amplificador operacional
Autor: Propia
Siendo Vin+ la entrada no inversora, Vin- la entrada inversora, VS+ la
alimentación positiva, VS- la alimentación negativa y Voutput la salida.
Existen varias configuraciones utilizadas con el amplificador operacional como el
comparador, seguidor, inversor, no inversor, sumador inversor, integrador, derivador, etc.
En este proyecto se ha utilizado la configuración inversora para realizar el convertidor
digital/analógico R-2R tal y como se muestra en la Figura 14, que se caracteriza por la
siguiente relación entre la entrada y la salida:
������� � ���� �1�2
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
36
Figura 14: Configuración inversora amplificador operacional
Autor: Propia
El amplificador operacional utilizado en este proyecto es el LM741. Se ha
escogido ya que es el más habitual en el mercado. Para la alimentación negativa se tomó
como solución utilizar una bomba de carga como se verá en el siguiente apartado.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
37
-4.2.3) Diseño PCB
Para diseñar esta PCB se tuvo en cuenta que tendría que tener unas dimensiones
limitadas al espacio fijado por la PCB del entorno de desarrollo del DSPIC30F6014A, ya
que ambas placas están pensadas para unirse mediante conectores y deben coincidir todos
perfectamente (para que esto sea posible, se hubo de tener bastante cuidado en la
realización de los agujeros donde se alojarían dichos conectores).
Aún teniendo esa limitación de espacio, para alojar sobre esta PCB el convertidor
digital/analógico R-2R, se disponía de espacio suficiente por lo que todas las resistencias
utilizadas así como el amplificador operacional se escogieron como “through
hole”(tecnología de agujeros pasantes), al ser más baratas y de uso más común para un
primer prototipo, como se puede apreciar en los diseños “capa top” y capa “bottom” de la
PCB en el documento Planos en la sección PCB convertidor D/A.
Por último, al realizar las primeras pruebas de la PCB se decidió cambiar la
alimentación del amplificador operacional, ya que no era una forma correcta y óptima,
por lo que se hicieron sobre la PCB ciertas modificaciones (inclusión de un regulador de
tensión de 15V, corte y unión de un par de pistas), así como el cambio de dos pistas de
dos bits a otros pines del conector de entrada por presentar problemas a la hora de la
programación.
Todas estas modificaciones se realizaron sobre la marcha sobre la PCB por lo que
no se volvió a rediseñar la placa en el programa utilizado en este proyecto para el diseño
de las PCB, Altium Designer.
El diseño final se puede observar en el documento Planos en la sección PCB
convertidor D/A, sobre la que se han marcado con círculos rojos los puntos de
modificación.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
38
-4.2.4) Simulación Micro-Cap y testado
Previamente al revelado y montaje de la PCB del convertidor digital/analógico R-
2R se hizo un previo test en Micro-Cap, cuyo circuito se puede ver en el documento
Anexos en la sección Simulador del convertidor D/A en Micro-Cap.
Como primer paso se realizaron pruebas con 3 bits, y se compararon los
resultados obtenidos con un montaje previo de un CDA de 3 bits en una “protoboard”
para comprobar que hubiera correspondencia entre la respuesta del CDA y de la
simulación.
Tras comprobar dicha correspondencia se procedió a simular el comportamiento
de la PCB siendo algunos de los resultados obtenidos los mostrados en las siguientes
figuras:
Figura 15: Simulación bit más significativo
Autor: Propia
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
39
Figura 16: Simulación con todos los bits a nivel alto
Autor: Propia
Siendo la tensión de cada bit (VREF) de 3.3V, se puede observar como los
resultados obtenidos en la tensión de salida (Vo) en ambos casos es la correcta, siendo en
el primer caso la tensión a la entrada de la configuración inversora (VIN1) de 1.101V,
obteniendo a la salida (Vo) -1.646V, y en el segundo caso siendo la tensión de entrada de
la configuración inversora (VIN1) de 2.192V, obteniendo a la salida (Vo) -3.283V.
En la simulación aparece además la señal VIN, que es la tensión que hay justo en
la entrada inversora del amplificador operacional como se puede observar en el
documento Anexos en la sección Simulador del convertidor D/A en Micro-Cap.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
40
-4.3) Generador de ondas
Un generador de ondas como tal (dispositivo más conocido) es un dispositivo
electrónico que se puede encontrar en cualquier laboratorio de electrónica. Con este
dispositivo se pueden generar diferentes formas de onda de amplitud y frecuencia
variables.
Las formas de onda que normalmente se pueden generar son la onda triangular,
diente de sierra, onda senoidal y onda cuadrada.
El generador de ondas se puede usar para aplicaciones de calibración de sistemas
de audio, rampas de alimentación de osciloscopios así como calibración de otros muchos
sistemas, como los inversores que se usan en los campos fotovoltaicos para transformar la
energía de los paneles, a los que se les inyecta la energía eléctrica en corriente continua
(DC), para transformarla en corriente alterna (AC), para poder ser inyectada en red.
Éste último caso es de gran interés, ya que continuamente se tiene que estar
comprobando la energía que se está inyectando en red, y es una situación que requiere de
gran precisión.
En la referencia “http://www.upv.es/gep/Central_Solar/inversor.htm” se puede
observar que en la descripción del dispositivo inversor fotovoltaico “Tauro PRM”,
explica que:
“La tensión generada por el inversor es senoidal y se obtiene mediante la técnica de
modulación de ancho de pulsos. Un microcontrolador determina el tipo de onda que se
genera a partir de una tabla de valores disponibles en la memoria auxiliar del sistema.
De esta forma se hace trabajar a los transistores MOSFET de potencia a una
frecuencia de conmutación de 20kHz, con lo que se consigue una forma de onda senoidal
de muy baja distorsión, menor del 1% y con un contenido de armónicos bajos”.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
41
Con el generador de ondas propuesto en este proyecto se pretende poder obtener
las señales que ofrecen los generadores de ondas convencionales, con amplitud y
frecuencia variables.
Para esto se ha utilizado el convertidor D/A expuesto anteriormente, controlado
por el microcontrolador DSPIC30F6014A, que se podrá programar mediante el entorno
de programación de microchip (MPLABX).
Con él se han realizado multitud de pruebas de formas de onda senoidal,
triangular, diente de sierra, cuadrada, con diferentes amplitudes y frecuencias (que se
pueden variar de forma cómoda en el código de programación como se podrá ver más
adelante).
Todos los resultados obtenidos, así como los códigos utilizados para ello
comentados, se encuentran en la siguiente sección, Resultados Finales del documento
Memoria.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
42
5) RESULTADOS FINALES
A continuación se muestran todas las pruebas realizadas con el convertidor D/A
junto con el microcontrolador DSPIC30F6014A para demostrar el funcionamiento del
generador de ondas propuesto.
Todas las pruebas irán acompañadas de sus respectivos códigos con las que han
sido realizadas así como capturas de pantalla del osciloscopio donde se puede observar la
forma de onda resultante cuyo autor es el propio de este proyecto.
-5.1) Onda diente de sierra
-Código
/*
* File: DSIERRA.c
* Author: Administrador
*
* Created on 16 de mayo de 2014, 16:57
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h> //Librería del compilador de C
#include <p30F6014A.h>
#include <delay.h>
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
43
#include <libpic30.h>
/*
*
*/
//FUSES DEL PIC 30F6014A
// FOSC
#pragma config FOSFPR = FRC_PLL8 // Oscillator (FRC w/PLL 8x) -> 15MHz
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw
Disabled, Mon Disabled)
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
#pragma config GCP = GSS_OFF // General Segment Code Protection (Disabled)
#pragma config MCLRE = MCLR_DIS // Master Clear Enable (Disabled)
int main(void) {
int j, v[]={0,0,0,0,0,0,0,0};
ADCON1|= 0x0F; //Deshabilitamos el ADC para que los bits sean de E/S digital
TRISB = 0x00; //Todos los bits del puerto B serán salidas
PORTB = 0x00; //Colocamos 0s en los bits del puerto B
TRISD = 0x00; //Todos los bits del puerto D serán salidas
PORTD = 0x00; //Colocamos 0s en los bits del puerto D
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
44
TRISF = 0x00; //Todos los bits del puerto F serán salidas
PORTF = 0x00; //Colocamos 0s en los bits del puerto F
TRISG = 0x00; //Todos los bits del puerto G serán salidas
PORTG = 0x00; //Colocamos 0s en los bits del puerto G
TRISA = 0x00; //Todos los bits del puerto A serán salidas
PORTA = 0x00; //Colocamos 0s en los bits del puerto A
TRISC = 0x00; //Todos los bits del puerto C serán salidas
PORTC = 0x00; //Colocamos 0s en los bits del puerto C
while(1){
for(j=7;j>=0;j--) //Bucle que irá recorriendo el vector par
incrementarlo cada vez que se entre en el bucle while
{
if (v[j]==0)
{v[j]=1; j=-1;}
else
{v[j]=0;}
}
PORTDbits.RD8 = v[7]; //Se les da a cada bit el valor que le corresponda
según el vector v[]
PORTFbits.RF7 = v[6];
PORTDbits.RD15 = v[5];
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
45
PORTBbits.RB11 = v[4];
PORTAbits.RA10 = v[3];
PORTCbits.RC4 = v[2];
PORTGbits.RG15 = v[1];
PORTGbits.RG0 = v[0];
__delay32(60000); //Según el número de ciclos podremos variar la frecuencia
de la onda
}
return (EXIT_SUCCESS);
}
-Resultados osciloscopio
Con la función __delay32(), como bien se ha comentado el código, se puede
variar la frecuencia de la onda a generar. Para poder variar la amplitud se tendrá que ir
prescindiendo de bits. Por cada bit que se prescinda se reducirá la amplitud a la mitad y el
número de puntos que forman la onda también, por lo que empeorará la imagen de la
onda que se generará como se podrá ver en las capturas de pantalla del osciloscopio, ya
que al ver cada vez menor amplitud de voltaje se podrán observar también con más
detalle las imprecisiones y el ruido en general producido por todo el circuito.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
46
Figura 17: Onda diente de sierra 8 bits
Comentarios: Puede observarse una amplitud de 3.36V, siendo su valor máximo -3.36V
tal como se simuló en el programa Micro-Cap, cuya simulación nos dio -3.283V, por lo
que se han cumplido las expectativas. Se ve la onda muy limpia y sin apenas ruido ya que
utiliza todos los bits y el nivel de ruido es muy pequeño (Ver Figura 26) en comparación
con la onda.
Figura 18: Onda diente de sierra 7 bits
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
47
Comentarios: Con 7 bits se reducen los puntos de 256 a 128, por lo que la amplitud se
debe reducir a la mitad. Como se puede observar en la Figura 18, se obtiene una tensión
de pico de -1.7V (la mitad de 3.36 que era la amplitud máxima). Además se empiezan a
notar pequeñas imperfecciones de ruido en la rampa del diente de sierra, y es que al ir
decrementando la amplitud habrá menos margen con respecto al ruido (ver Figura 26).
Figura 19: Onda diente de sierra 6 bits
Comentarios: Con 6 bits pasamos de 128 puntos a utilizar 64 puntos, por lo que se
volverá a decrementar la amplitud de la señal a la mitad. Se puede observar cómo se
pasa de -1.7V a -0.9V (que es un poco más de lo que teóricamente debería dar si el
comportamiento fuera ideal, que sería -0.85V, esto es debido a la precisión con la que el
osciloscopio haya podido captar la señal, así como diversos errores en la medida que
siempre hay que manejar). También se puede apreciar cómo se va viendo con más
intensidad el ruido (ver Figura 26).
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
48
Figura 20: Onda diente de sierra 5 bits
Comentarios: Con 5 bits pasamos de 64 puntos a 32 puntos, y nuevamente se vuelve a
reducir la amplitud. Teóricamente saldría un valor de pico de -0.42V, y como puede
observarse en el osciloscopio se obtuvo una valor de pico de de -0.456V, muy próximo a
la medida. A partir de aquí, al utilizar menos bits el ruido empezará a notarse con mucha
más relevancia (Figura 26).
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
49
Figura 21: Onda diente de sierra 4 bits
Comentarios: Con 4 bits pasamos de 32 puntos a 16 puntos y se vuelve a disminuir la
amplitud a la mitad, obteniendo -0.24V. Como se comentó en la Figura 20, con 4 bits ya
se puede apreciar perfectamente la no limpieza de la forma de onda, empezándose a
apreciar el pico a pico del ruido (ver Figura 26).
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
50
-5.2) Onda triangular
-Código
/*
* File: TRIANG.c
* Author: Administrador
*
* Created on 16 de mayo de 2014, 17:25
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h> //Libreria del compilador de C
#include <p30F6014A.h>
#include <delay.h>
#include <libpic30.h>
/*
*
*/
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
51
//FUSES DEL PIC 30F6014A
// FOSC
#pragma config FOSFPR = FRC_PLL8 // Oscillator (FRC w/PLL 8x) -> 15MHz
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw
Disabled, Mon Disabled)
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
#pragma config GCP = GSS_OFF // General Segment Code Protection (Disabled)
#pragma config MCLRE = MCLR_DIS // Master Clear Enable (Disabled)
int main(void) {
int i=0, j, k=0, v[]={0,0,0,0,0,0,0,0};
ADCON1|= 0x0F; //Deshabilitamos el ADC para que los bits sean de E/S digital
TRISB = 0x00; //Todos los bits del puerto B serán salidas
PORTB = 0x00; //Colocamos 0s en los bits del puerto B
TRISD = 0x00; //Todos los bits del puerto D serán salidas
PORTD = 0x00; //Colocamos 0s en los bits del puerto D
TRISF = 0x00; //Todos los bits del puerto F serán salidas
PORTF = 0x00; //Colocamos 0s en los bits del puerto F
TRISG = 0x00; //Todos los bits del puerto G serán salidas
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
52
PORTG = 0x00; //Colocamos 0s en los bits del puerto G
TRISA = 0x00; //Todos los bits del puerto A serán salidas
PORTA = 0x00; //Colocamos 0s en los bits del puerto A
TRISC = 0x00; //Todos los bits del puerto C serán salidas
PORTC = 0x00; //Colocamos 0s en los bits del puerto C
while(1){
if (k!=1) //Rampa de subida
{
for(j=7;j>=0;j--)
{
if (v[j]==0)
{v[j]=1; j=-1;}
else
{v[j]=0;}
}
i++;
if (i==255){i=0;k=1;}
}
else //Rampa de bajada
{
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
53
for(j=7;j>=0;j--)
{
if (v[j]==1) {v[j]=0; j=-1;}
else {v[j]=1;}
}
i++;
if (i==255){i=0;k=0;}
}
PORTDbits.RD8 = v[7]; //Se les da a cada bit el valor que le corresponda según el
vector v[]
PORTFbits.RF7 = v[6];
PORTDbits.RD15 = v[5];
PORTBbits.RB11 = v[4];
PORTAbits.RA10 = v[3];
PORTCbits.RC4 = v[2];
PORTGbits.RG15 = v[1];
PORTGbits.RG0 = v[0];
__delay32(3000); //Según el número de ciclos podremos variar la frecuencia de la
onda
}
return (EXIT_SUCCESS);
}
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
54
-Resultados osciloscopio
Para este tipo de onda se hicieron dos pruebas, con 8 bits para obtener la amplitud
máxima y otra con menor amplitud como puede observarse en las figuras más abajo
mostradas.
Figura 22: Onda triangular 8 bits
Comentarios: Con la forma de onda del diente de sierra usando 8 bits (Figura 17) se
obtuvo un valor de pico de -3.36V, y aquí se puede observar que el resultado es -3.28V,
por lo que se puede sacar la conclusión de la veracidad de los resultados. Al igual que
ocurría con el diente de sierra para 8 bits se obtiene una forma de onda bastante limpia,
sin notar una presencia observable de ruido (ver Figura 26).
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
55
Figura 23: Onda triangular
Comentarios: Al reducir la amplitud de la onda se obtiene un valor de pico de -1.68V
como cabía esperar, y una forma de onda limpia, ya que como se vio en el diente de
sierra el ruido se empieza a apreciar con cierta calidad al usar menos de 4 bits.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
56
-5.3) Onda cuadra bit a bit
-Código
El código usado para esta onda es el mismo que se usó para el código de ejemplo
de la puesta en marcha del microcontrolador (página 28).
-Resultados osciloscopio
A continuación se muestran ondas cuadradas de 0 a 4 bits (4 bits), de 0 a 3 bits (3
bits), de 0 a 2 bits (2 bits) y de 0 a 1 bit (1 bit), siendo éstos los bits menos significativos.
Como se podrá observar en las capturas de pantalla al tener la onda cada vez menor
amplitud, se podrán observar más imperfecciones en la misma.
Figura 24: Onda cuadrada 4 bits
Comentarios: Con esta forma de onda se puede observar la amplitud que tienen los 4 bits
menos significativos cuando están a nivel alto. Se puede apreciar el ruido pero no de
forma tan clara como para cuantificarlo (ver Figura 26).
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
57
Figura 25: Onda cuadrada 3 bits
Comentarios: Al reducir a 3 bits se utilizarán sólo 8 puntos, y se puede observar tanto a
nivel alto como a nivel bajo con mayor claridad la amplitud del ruido. Ésta influirá en la
amplitud de la forma de onda y no dará el valor exacto que debería en el valor de pico, -
0.11V, frente a lo observado en el osciloscopio, -0.148V, aparte de las imprecisiones de
las medidas mencionadas anteriormente.
Figura 26: Onda cuadrada 2 bits
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
58
Comentarios: Con dos bits se utilizarán 4 puntos y al tener un valor de pico de -0.078V
(el valor de pico teórico sería de -0.053V), se puede hacer una estimación del valor pico
a pico del ruido, (que es la componente de tensión no deseada que se superpone con la
señal que se pretende medir), ya que la amplitud de la forma de onda al ser tan pequeña
permite cuantificarlo. Para obtener el nivel pico a pico del ruido (valor máximo y
mínimo que alcanza en su variación aleatoria), se puede observar la Figura 26, en el que
se puede apreciar que el valor pico a pico del ruido es de 30mV y cuyo valor rms es una
sexta parte del valor pico a pico, por lo que sería de 5mv.
Figura 27: Onda cuadrada 1 bit
Comentarios: Con un bit se tiene una amplitud muy pequeña, del orden de la del ruido,
por lo que cuesta trabajo diferenciar la señal en este caso. Se puede apreciar que la
amplitud del ruido en esta figura es en torno a 25mV, valor próximo al estimado en la
Figura anterior usando 2 bits.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
59
-5.4) Onda senoidal (18 puntos)
-Código
/*
* File: SEN.c
* Author: Administrador
*
* Created on 17 de mayo de 2014, 11:30
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h> //Libreria del compilador de C
#include <p30F6014A.h>
#include <delay.h>
#include <libpic30.h>
/*
*
*/
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
60
//FUSES DEL PIC 30F6014A
// FOSC
#pragma config FOSFPR = FRC_PLL8 // Oscillator (FRC w/PLL 8x) -> 15MHz
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw
Disabled, Mon Disabled)
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
#pragma config GCP = GSS_OFF // General Segment Code Protection (Disabled)
#pragma config MCLRE = MCLR_DIS // Master Clear Enable (Disabled)
int main(void) {
int x=0, k=0, v[]={1,1,1,1,1,1,1,1};
ADCON1|= 0x0F; //Deshabilitamos el ADC para que los bits sean de E/S digital
TRISB = 0x00; //Todos los bits del puerto B serán salidas
PORTB = 0x00; //Colocamos 0s en los bits del puerto B
TRISD = 0x00; //Todos los bits del puerto D serán salidas
PORTD = 0x00; //Colocamos 0s en los bits del puerto D
TRISF = 0x00; //Todos los bits del puerto F serán salidas
PORTF = 0x00; //Colocamos 0s en los bits del puerto F
TRISG = 0x00; //Todos los bits del puerto G serán salidas
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
61
PORTG = 0x00; //Colocamos 0s en los bits del puerto G
TRISA = 0x00; //Todos los bits del puerto A serán salidas
PORTA = 0x00; //Colocamos 0s en los bits del puerto A
TRISC = 0x00; //Todos los bits del puerto C serán salidas
PORTC = 0x00; //Colocamos 0s en los bits del puerto C
while(1){
if (k==0)
{
if (x==9)
{k=1; x--;}
else
{x++;}
}
else
{
if (x==1)
{k=0; x++;}
else
{x--;}
}
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
62
if (x==1)
{v[0]=1,v[1]=1,v[2]=1,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==2)
{v[0]=1,v[1]=1,v[2]=0,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==3)
{v[0]=1,v[1]=0,v[2]=1,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==4)
{v[0]=1,v[1]=0,v[2]=0,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==5)
{v[0]=0,v[1]=1,v[2]=1,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==6)
{v[0]=0,v[1]=1,v[2]=0,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==7)
{v[0]=0,v[1]=0,v[2]=1,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==8)
{v[0]=0,v[1]=0,v[2]=0,v[3]=1,v[4]=1,v[5]=1,v[6]=1,v[7]=1;}
else if(x==9)
{v[0]=0,v[1]=0,v[2]=0,v[3]=0,v[4]=0,v[5]=0,v[6]=0,v[7]=0;}
PORTDbits.RD8 = v[7]; //Se les da a cada bit el valor que le corresponda según el
vector v[]
PORTFbits.RF7 = v[6];
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
63
PORTDbits.RD15 = v[5];
PORTBbits.RB11 = v[4];
PORTAbits.RA10 = v[3];
PORTCbits.RC4 = v[2];
PORTGbits.RG15 = v[1];
PORTGbits.RG0 = v[0];
//__delay32(50000); //Retraso onda cuadrada 4 bits
if ((3<x)&&(x<7)) //Retrasos onda senoidal 18 puntos
{__delay32(25000);}
else if(((1<x)&&(x<4))||((6<x)&&(x<9)))
{__delay32(50000);}
else
{__delay32(75000);}
}
return (EXIT_SUCCESS);
}
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
64
-Resultados osciloscopio
Además de la onda senoidal de 18 puntos, se ha aprovechado éste código para
hacer una onda triangular que fuera pasando sólo por cada uno de los cuatro bits menos
significativos como se muestra a continuación.
Figura 28: Onda triangular 4 bits menos significativos
Comentarios: Esta forma de onda va recorriendo los cuatro bits menos significativos,
apreciándose como en cada escalón la amplitud se duplica, que es la propiedad de
añadir otro bit más. Al utilizarse los bits menos significativos se puede apreciar algo las
imperfecciones, sobre todo en la parte superior de la onda.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
65
Figura 29: Onda senoidal 18 puntos
Comentarios: Esta onda utiliza todos los bits como se puede apreciar en la amplitud de
la misma, -3.36V, pero tiene la peculiaridad de que no pasa por los 256 puntos posibles
que permite la utilización de los 8 bits, si no que se han seleccionado los 18 puntos más
significativos para que se pudieran apreciar los escalones entre punto y punto.
Figura 30: Onda senoidal 18 puntos
Comentarios: Igual que la anterior figura pero ampliando el eje x a 25 ms por división.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
66
-5.5) Onda senoidal (256 puntos)
-Código
/*
* File: SEN_256.c
* Author: Administrador
*
* Created on 17 de mayo de 2014, 12:21
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h> //Libreria del compilador de C
#include <p30F6014A.h>
#include <delay.h>
#include <libpic30.h>
/*
*
*/
//FUSES DEL PIC 30F6014A
// FOSC
#pragma config FOSFPR = FRC_PLL8 // Oscillator (FRC w/PLL 8x) -> 15MHz
#pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw Disabled, Mon Disabled)
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
67
#pragma config WDT = WDT_OFF // Watchdog Timer (Disabled)
#pragma config GCP = GSS_OFF // General Segment Code Protection (Disabled)
#pragma config MCLRE = MCLR_DIS // Master Clear Enable (Disabled)
int main(void) {
int i=0, j, k=0, v[]={0,0,0,0,0,0,0,0};
ADCON1|= 0x0F; //Deshabilitamos el ADC para que los bits sean de E/S digital
TRISB = 0x00; //Todos los bits del puerto B serán salidas
PORTB = 0x00; //Colocamos 0s en los bits del puerto B
TRISD = 0x00; //Todos los bits del puerto D serán salidas
PORTD = 0x00; //Colocamos 0s en los bits del puerto D
TRISF = 0x00; //Todos los bits del puerto F serán salidas
PORTF = 0x00; //Colocamos 0s en los bits del puerto F
TRISG = 0x00; //Todos los bits del puerto G serán salidas
PORTG = 0x00; //Colocamos 0s en los bits del puerto G
TRISA = 0x00; //Todos los bits del puerto A serán salidas
PORTA = 0x00; //Colocamos 0s en los bits del puerto A
TRISC = 0x00; //Todos los bits del puerto C serán salidas
PORTC = 0x00; //Colocamos 0s en los bits del puerto C
while(1){
if (k!=1)
{
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
68
for(j=7;j>=0;j--)
{
if (v[j]==0)
{v[j]=1; j=-1;}
else
{v[j]=0;}
} i++;
if (i==255){i=0;k=1;}
}
else
{
for(j=7;j>=0;j--)
{
if (v[j]==1)
{v[j]=0; j=-1;}
else
{v[j]=1;}
}
i++;
if (i==255){i=0;k=0;}
}
PORTDbits.RD8 = v[7];
PORTFbits.RF7 = v[6];
PORTDbits.RD15 = v[5];
PORTBbits.RB11 = v[4];
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
69
PORTAbits.RA10 = v[3];
PORTCbits.RC4 = v[2];
PORTGbits.RG15 = v[1];
PORTGbits.RG0 = v[0];
if ((64<i)&&(i<192))
{__delay32(15000);}
else if(((32<i)&&(i<65))||((191<i)&&(i<224)))
{__delay32(30000);}
else
{__delay32(50000);}
if ((i==255)||(i==0))
{__delay32(90000);}
}
return (EXIT_SUCCESS);
}
-Resultados osciloscopio
A continuación se muestran un par de capturas de pantalla del resultado obtenido
con éste código.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
70
Figura 31: Onda senoidal (256 puntos)
Comentarios: En este caso sí se han utilizado todos los valores posibles (256) que
permitían los 8 bits, a diferencia de las figuras 29 y 30, por lo que se consigue no
apreciar prácticamente los escalones y obtener una onda senoidal limpia.
Figura 32: Onda senoidal (256 puntos)
Comentarios: Igual que la anterior figura pero variando el muestreo del eje x a 500 ms
por división.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
71
-5.6) Conclusiones
Se ha conseguido realizar un entorno de desarrollo para el DSPIC30F6014A de
Microchip en el que se ha conseguido poner a disposición de cualquier periférico todas
las propiedades del mircrocontrolador, y casi el cien por cien de sus propiedades.
El periférico realizado, que ha sido un convertidor digital/analógico se ha
adaptado perfectamente a este entorno y se ha podido realizar la aplicación del generador
de ondas.
Todas la formas de onda realizadas se han podido obtener con un perfecto
funcionamiento del microcontrolador y un comportamiento unísono de las dos PCB, con
lo que se abre la puerta a otras vías de estudio que puedan sacar partido a la utilización de
este generador de ondas junto a las propiedades extras que ofrece el entorno de desarrollo
del DSPIC30F6014A u otras aplicaciones a desarrollar con dicho entorno.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
72
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
III) ANEXOS
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
73
ANEXOS
-Índice
1) Características principales DPSPIC30F6014A…………………………….…...74 2) Oscilador………………………………………………………………………..77 3) Norma UNE 157001……………………………………………………………79
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
74
-1) Características principales DSPIC30F6014A
Figura 1: Diagrama de bloques DSPIC30F6014A
Autor: Datasheet DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
75
Figura 2: Descripción PINOUT I/O 1
Autor: Datasheet DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
76
Figura 3: Descripción PINOUT I/O 2
Autor: Datasheet DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
77
-2) Oscilador
Figura 4: Especificaciones oscilador según sistema
Autor: Datasheet Oscilador DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
78
Figura 5: Diagrama de bloques oscilador
Autor: Datasheet Oscilador DSPIC30F6014A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
79
-3) Norma UNE 157001
La norma UNE 157001: “Criterios generales para la elaboración de proyectos” muestra
una estructura normalizada para la organización de la documentación de un proyecto.
El objeto de esta norma es establecer unas consideraciones generales que permitan una
organización de la documentación del proyecto estándar, clara y que precise las
características de los proyectos.
Algunos de los requisitos generales imponen que el proyecto tenga una presentación
limpia y ordenada, que esté redactado de manera que pueda ser entendible por personas
distintas de los autores y que tenga la siguiente estructuración de documentos básicos:
• Índice general
• Memoria
• Anexos
• Planos
• Pliego de condiciones
• Estado de mediciones
• Presupuestos
• Estudios con entidad propia (cuando proceda)
Además cada documento tiene que estar bien estructurado en capítulos y apartados.
Como especial indicación, la Memoria debe tener la siguiente estructura:
• Objeto
• Alcance
• Antecedentes
• Normas y referencias
• Definiciones y abreviaturas
• Requisitos de diseño
• Análisis de soluciones
• Resultados finales
• Planificación
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
80
• Orden de prioridad de los documentos básicos
Dependiendo del tipo de proyecto será necesario incluir la totalidad o no de los
documentos básicos así como de sus capítulos.
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
81
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
IV) PLANOS
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
82
PLANOS
-Índice
1) PCB microcontrolador ........................................................................................... 83
1.1) Esquemático ............................................................................ 83
1.2) Capa “top” inicial .................................................................... 87
1.3) Capa “bottom” inicial .............................................................. 88
1.4) Capa “top” final ....................................................................... 89
1.5) Capa “bottom” final ................................................................. 90
2) PCB convertidor D/A ............................................................................................ 91
2.1) Esquemático ............................................................................. 91
2.2) Capa “top” ................................................................................ 93
2.3) Capa “bottom” ......................................................................... 94
2.4) Diseño final .............................................................................. 95
3) Simulación convertidor D/A en Micro-Cap .......................................................... 96
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
83
-1) PCB microcontrolador
-1.1) Esquemático (Las siguientes figuras son ampliaciones de componentes mostrados
en los planos con cajetín al final de este documento. Las figuras que no tengan el pie de
foto Autor, serán por ser propias o modificadas del antecedente comentado).
Figura 1: DSPIC30F6014A
Figura 2: Conector 1 entrada a periférico Figura 3: Oscilador externo
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
84
Figura 4: Conector 2 entrada a periférico
Figura 5: Alimentación analógica Figura 6: Alimentación digital
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
85
Figura 7: Unión de tierras Figura 8: Conector de programación
Figura 9: Driver BUS CAN
Figura 10: Conectores salida de periférico y salida entorno desarrollo
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
86
Figura 11: Conector entrada entorno desarrollo
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
87
-1.2) Capa “top” inicial
Figura 12: Capa “top” inicial
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
88
-1.3) Capa “bottom” inicial
Figura 13: Capa “bottom” inicial
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
89
-1.4) Capa “top” final
Figura 14: Capa “top” final
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
90
-1.5) Capa “bottom” final
Figura 15: Capa “bottom” final
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
91
-2) PCB convertidor D/A
-2.1) Esquemático (Las siguientes figuras son ampliaciones individuales de
componentes mostrados en los planos al final de la sección de cada PCB)
Figura 16: Convertidor D/A de 8 bits
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
92
Figura 17: Conectores 2 y 1 entrada periférico
Figura 18: Conectores de salida periférico Figura 19: Bomba de carga PCB
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
93
-2.2) Capa “top”
Figura 20: Capa “top” convertidor D/A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
94
-2.3) Capa “bottom”
Figura 21: Capa “bottom” convertidor D/A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
95
-2.4) Diseño final
Figura 22: Diseño final PCB convertidor D/A
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
96
-3) Simulación convertidor D/A en Micro-Cap
Figura 23: Simulación bit más significativo
Autor: Propio
Figura 24: Simulación con todos los bits a nivel alto
Autor: Propio
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL /ANALÓGICO
SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
97
GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL/ANALÓGICO SOBRE ENTORNO DE
DESARROLLO DSPIC30F6014A
V) PRESUPUESTO
Junio 2014
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL
/ANALÓGICO SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
CÓDIGO RESUMEN UDS LONGITUD ANCHURA ALTURA PARCIALES CANTIDAD PRECIO IMPORTE
98
CAPÍ TULO 01 ENTORNO DE DES ARROLLO DS PI C30F6014A
01.01 u CONECTOR ENTRADA PCB
C ON EC TOR DIN 41612 C 96M ABC 3 M M DS 90II
01.02
u CONECTOR SALIDA PCB 1,00 2,50 2,50
H EADER, 3.81M M , R/A, 16WAY
2,00 9,60 19,20 01.03 u CONECTOR DE PROGRAMACIÓN H EADER, SQU ARE PIN , 0.1", 6WAY
1,00 2,78 2,78 01.04 u DIP SWITCH DIP SWITC H SPST 8
1,00 0,90 0,90 01.05 u DRIVER BUSCAND IC , C AN TRAN SC EIVER, ISOLATED, 5V
M EN TS) ( OPC IÓN DE M U ESTRA EN TEXAS IN STRU -
1,00 1,40 1,40 01.06 u OSCILADOR EX TERNO C RYSTAL, 8M , AT M ODE, H C 49/4H SM X
1,00 0,45 0,45 01.07 u CONECTOR SALIDA PERIFÉRICO H EADER 16
2,00 0,50 1,00 01.08 u CONECTOR 1 ENTRADA PERIFÉRICO H EADER 3
2,00 0,50 1,00 01.09 u CONECTOR 2 ENTRADA PERIFÉRICO H EADER 25
2,00 0,50 1,00 01.10 u C DE 10 uF C ON DEN SADOR DE 10 uF (SM D)
2,00 0,40 0,80 01.11 u C DE 1 uF C ON DEN SADOR DE 1 uF (SM D)
2,00 0,30 0,60 01.12 u C DE 0.1 uF C ON DEN SADOR DE 0,1 uF (SM D)
7,00 0,20 1,40 01.13 u C DE 1 nF C ON DEN SADOR DE 1 N F (SM D)
2,00 0,25 0,50
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL
/ANALÓGICO SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
CÓDIGO RESUMEN UDS LONGITUD ANCHURA ALTURA PARCIALES CANTIDAD PRECIO IMPORTE
99
01.14 u C DE 18 pF
C ON DEN SADOR DE 18 pF (SM D)
01.15 u R DE 4K7
RESISTEN C IA DE 4K7 OH M IOS (PREC IO U N ITARIO PARA PAQU ETES DE 50)
2,00 0,25 0,50
01.16 u R DE 10K
RESISTEN C IA DE 10K OH M IOS (PREC IO U N ITARIO PARA PAQU ETES DE 50)
2,00 0,05 0,10
01.17 u R DE 0.33K
RESISTEN C IA DE 0,33K OH M IOS (PREC IO U N ITARIO PARA PAQU ETES DE 50)
1,00 0,02 0,02
01.18 u R DE 0R
RESISTEN C IA DE 0 OH M IOS (PREC IO U N ITARIO PARA PAQU ETES DE 50)
1,00 0,02 0,02
01.19 u RED DE RESISTENCIAS
RED DE RESISTEN C IAS 470K (PREC IO U N ITARIO PARA PAQU ETES DE 5)
2,00 0,02 0,04
01.20 u REGULADOR DE TENSIÓN
REG. DE TEN SIÓN , LDO, 250M A, 3,3V, SOT-23A-3
1,00 0,34 0,34
01.21 u MICROCONTROLADOR DSPIC30F6014A
2,00 0,38 0,76
1,00 8,78 8,78
TOTAL CAPÍ TULO 01 ENTORNO DE DES ARROLLO DS PI C30F6014A............................................................. 44,09€
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL
/ANALÓGICO SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
CÓDIGO RESUMEN UDS LONGITUD ANCHURA ALTURA PARCIALES CANTIDAD PRECIO IMPORTE
100
CAPÍ TULO 02 PCB CONVERTI DOR D-A
02.01 u CONECTOR SALIDA PERIFÉRICO
H EADER 16
02.02 u CONECTOR 1 ENTRADA PERIFÉRICO
H EADER 3
2,00 0,50 1,00
02.03 u CONECTOR 2 ENTRADA PERIFÉRICO
H EADER 25
2,00 0,50 1,00
02.04 u C DE 10 uF
C ON DEN SADOR DE 10 uF (SM D)
2,00 0,50 1,00
02.05 u AMPLIFICADOR OPERACIONAL
AM PLIFIC ADOR OPERAC ION AL LM 741
2,00 0,40 0,80
02.06 u BOMBA DE CARGA
C ON VERTIDOR, BOM BA DE C ARGA, SM D, 7662
1,00 0,30 0,30
02.07 u REGULADOR DE TENSIÓN
REGU LADOR DE TEN SIÓN L7800 15V
1,00 4,70 4,70
02.08 u R DE 2K
RESISTEN C IA DE 2K OH M IOS (TH ROU GH H OLE { TEC N OLOGÍA DE AGU JEROS PA- SAN TES})
1,00 0,80 0,80
02.09 u R DE 1K
RESISTEN C IA DE 1K OH M IOS (TH ROU GH H OLE { TEC N OLOGÍA DE AGU JEROS PA- SAN TES})
10,00 0,05 0,50
02.10 u R DE 3K
RESISTEN C IA DE 3K OH M IOS (TH ROU GH H OLE { TEC N OLOGÍA DE AGU JEROS PA- SAN TES})
8,00 0,04 0,32
1,00 0,04 0,04
TOTAL CAPÍ TULO 02 PCB CONVERTI DOR D-A.................................................................................................. 10,46€
Manuel Maestro Castro
[GENERADOR DE ONDAS CON CONVERTIDOR DIGITAL
/ANALÓGICO SOBRE ENTORNO DE DESARROLLO DSPIC30F6014A]
CÓDIGO RESUMEN UDS LONGITUD ANCHURA ALTURA PARCIALES CANTIDAD PRECIO IMPORTE
101
CAPÍ TULO 03 PLACA DE COBRE PARA PCB
TOTAL CAPÍ TULO 03 PLACA DE COBRE PARA PCB......................................................................................... 28,00€
TOTAL...................................................................................................................................................................... 82,55€