GRADO EN INGENIERÍA EN TECNOLOGÍAS INDUSTRIALES...

101
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

Transcript of GRADO EN INGENIERÍA EN TECNOLOGÍAS INDUSTRIALES...

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€