u n i v e r s i d a d v e r a c r u z a n acdigital.uv.mx/bitstream/123456789/41537/1/jimenez... ·...
TRANSCRIPT
1
U N I V E R S I D A D V E R A C R U Z A N A
FACULTAD DE INGENIERÍA REGIÓN VERACRUZ
P O S G R A D O
PROYECTO DE INTERVENCIÓN PROFESIONAL
SISTEMA DE ACONDICIONAMIENTO DE SEÑAL INALÁMBRICO PARA UN SENSOR DE CAMPO MAGNÉTICO BASADO EN TECNOLOGÍA MEMS
QUE PARA OBTENER EL GRADO DE:
MAESTRIA EN INGENIERÍA APLICADA
PRESENTA:
ING. SÓCRATES ARAMÍS JIMÉNEZ CARRASCO
DIRECTOR DE TESIS:
M.C. SAÚL MANUEL DOMÍNGUEZ NICOLÁS
BOCA DEL RÍO, VERACRUZ. ENERO 2015.
2
AGRADECIMIENTOS
Le agradezco a Dios por darme salud para poder continuar superándome
profesional y personalmente.
Agradezco a mi esposa el apoyo incondicional que me ha brindado a lo largo de la
maestría, brindándome su comprensión y amor en todo momento, alentándome
siempre a seguir adelante. Le agradezco el tiempo que hemos tenido que
sacrificar para emplearlo en actividades y trabajos relacionados con la maestría.
Agradezco a mi madre que siempre ha estado a mi lado apoyándome para
continuar mis estudios y salir adelante en cada etapa de mi vida, y que me brinda
su ayuda siempre que la necesito. Le agradezco la educación y formación que
desde pequeño me inculcó y que debido a ello siempre estoy en busca de seguir
creciendo tanto personal como profesionalmente.
También quiero agradecer a mi suegra el apoyo que me ha brindado a mí y a mi
familia, que sin duda alguna ha sido de gran ayuda para poder seguir creciendo
personal y profesionalmente.
Agradezco a mi asesor de proyecto y tesis su enseñanza, comprensión, y apoyo, y
por compartir sus conocimientos para llevar a cabo este proyecto. Su asesoría fue
fundamental para el desarrollo de cada etapa del proyecto, así como sus
aportaciones y puntos de vista para el desarrollo de esta tesis.
Finalmente agradezco a mi hijo la dicha de tenerlo a mi lado y verlo crecer
sanamente, porqué también aprendo de él cada día que compartimos, porque él
es mi principal motivación en la vida para seguir adelante, crecer, y ser una mejor
persona y profesionista.
3
RESUMEN
En este trabajo se presenta la implementación de un sistema de generación y
acondicionamiento de señal para un sensor de campo magnético basado en
tecnología MEMS.
En el Capítulo 1 se hace una introducción al tema de sensores, control y
comunicación, y cómo estos se encuentran en nuestra vida cotidiana. Se
mencionan los objetivos y la justificación del proyecto.
En el Capítulo 2 se hace mención a los antecedentes del proyecto, ya que éste
parte de un proyecto publicado en varios artículos científicos. Se explica lo que es
un sensor de campo magnético y sus aplicaciones. Se hace mención al sensor
MEMS utilizado y sus características de operación. Se explica de manera general
en qué consiste el acondicionamiento de señales. También se hace una
introducción a las placas SBC y a la tarjeta Arduino utilizada en el proyecto.
Finalmente se plantea la hipótesis del trabajo.
En el Capítulo 3 se describe cada etapa del proyecto: la etapa de generación y
alimentación del sensor MEMS con señales cuadradas y sinusoidales, la etapa de
acondicionamiento de señal PWM a analógica, la etapa de pruebas y adquisición
de señal generada por el sensor MEMS, la etapa de resultados y conclusiones. En
cada etapa se incluyen figuras, diagramas de flujo, diagramas de bloques e
imágenes reales para una mejor comprensión del proceso y para visualización de
resultados.
4
Después del último capítulo se encuentran las conclusiones generales del
proyecto, en donde se menciona la importancia de cada etapa y de los resultados
obtenidos.
Al final del trabajo se encuentran los anexos y referencias bibliográficas que
sirvieron de apoyo para lograr la realización del presente. En los anexos se incluye
el cronograma de actividades, las metas buscadas, el esquema de la tarjeta
Arduino Nano, las tablas de valores PWM para cada tipo de frecuencia, y los
códigos para generar cada una de ellas.
5
CONTENIDO
CARÁTULA 1
AGRADECIMIENTOS 2
RESUMEN 3
CONTENIDO 5
LISTA DE FIGURAS 8
LISTA DE TABLAS 10
CAPITULO 1. INTRODUCCION 11
1.1. OBJETIVOS 13
1.1.1. OBJETIVO GENERAL 13
1.1.2. OBJETIVOS ESPECIFICOS 13
1.2. JUSTIFICACIÓN 13
CAPITULO 2. MARCO TEORICO 15
2.1 ANTECEDENTES CIENTIFICOS 15
2.2 SENSORES DE CAMPO MAGNETICO 17
2.2.1 DESCRIPCION GENERAL 17
2.2.2 SENSOR BASADO EN TECNOLOGIA MEMS 19
2.3 ACONDICIONAMIENTO DE SEÑAL DE SENSORES 21
6
2.4 PLACAS SBC 22
2.4.1 DESCRIPCION GENERAL 22
2.5 ARDUINO NANO 3.0 23
2.6 PLANTEAMIENTO DE LA HIPOTESIS 24
CAPITULO 3. DESARROLLO DEL SISTEMA 25
3.1 ALIMENTACION DEL SENSOR 25
3.2 GENERACION DE SEÑALES ANALOGICAS 26
3.2.1 ACONDICIONAMIENTO DE SEÑALES PWM A ANALOGICAS 43
3.2.2 GENERACION DE SEÑALES CUADRADAS 47
3.2.3 CONEXION DE ARDUINO AL SENSOR MEMS 52
3.3 AMPLIFICACION DE LA SEÑAL DEL SENSOR MEMS 53
3.4 DEMODULACION DE LA SEÑAL AMPLIFICADA 55
3.5 FILTRADO DE LA SEÑAL DEMODULADA 58
3.6 ADQUISICION DE LA SEÑAL 59
3.7 RESULTADOS 60
CONCLUSIONES 65
REFERENCIAS 69
ANEXOS 71
A.1 CRONOGRAMA DE ACTIVIDADES 71
A.2 METAS 73
7
A.3 ESQUEMA ARDUINO NANO 74
A.4 TABLA DE VALORES PWM PARA 1KHZ 75
A.5 TABLA DE VALORES PWM PARA 14.376KHZ 76
A.6 CODIGO ARDUINO PARA SEÑAL CUADRADA A 1KHZ 77
A.7 CODIGO ARDUINO PARA SEÑAL CUADRADA A 14.41KHZ 78
A.8 CODIGO ARDUINO PARA SEÑAL SINUSOIDAL A 1KHZ 79
A.9 CODIGO ARDUINO PARA SEÑAL SINUSOIDAL A 14.41KHZ 81
A.10 CODIGO ARDUINO PARA SEÑAL CUADRADA A 14.376KHZ 82
8
LISTA DE FIGURAS
Figura 1 Estructura general de un sistema de medición y control 11 Figura 2 Areas de aplicación de los sensores magnéticos 12 Figura 3 Uso de dispositivo MEMS en una rata 15 Figura 4 Magnetograma de una rata 16 Figura 5 Esquema de funcionamiento del sensor MEMS 16 Figura 6 Placa de hierro para pruebas del sensor MEMS 17 Figura 7 Clasificación de sensores de campo magnético 18 Figura 8 Sensor MEMS de campo magnético 19 Figura 9 Operación principal del sensor MEMS de campo magnético 20 Figura 10 Acondicionamiento de señal 21 Figura 11 Esquema general de representación de PWM 26 Figura 12 Gráfica de seno 27 Figura 13 Gráfica de seno con valores positivos 28 Figura 14 Gráfica de seno con rango de 0 a 1 28 Figura 15 Gráfica de seno con rango de 0 a 255 29 Figura 16 Diagrama de flujo para señal sinusoidal de 490Hz 31 Figura 17 Conexión Arduino Nano para generar señal PWM 32 Figura 18 Señal sinusoidal PWM 33 Figura 19 Diagrama de flujo para señal sinusoidal PWM de 1KHz 37 Figura 20 Conexión Arduino Nano para generar señal sinusoidal a 1KHz 38 Figura 21 Diagrama de flujo para señal sinusoidal de 14.376KHz 42 Figura 22 Conexión Arduino Nano para generar señal sinusoidal a 14.376KHz 43
9
Figura 23 Convertidor Digital-Analógico 44 Figura 24 Conexión Arduino Nano para generar señal analógica a 1KHz 45 Figura 25 Conexión Arduino Nano para generar señal analógica a 14.376KHz 46 Figura 26 Diagrama de flujo para señal cuadrada de 1KHz 48 Figura 27 Conexión Arduino Nano para generar señal cuadrada a 1KHz 49 Figura 28 Diagrama de flujo para señal cuadrada de 14.376KHz 51 Figura 29 Conexión Arduino Nano para generar señal cuadrada a 14.376KHz 51 Figura 30 Diagrama de conexión para amplificación de señal del sensor MEMS 53 Figura 31 Diagrama de bloques del amplificador AD524 54 Figura 32 Diagrama de conexión del amplificador AD524 54 Figura 33 Diagrama de conexión para amplificación de señal del sensor MEMS 55 Figura 34 Diagrama de bloques del modulador/demodulador AD630 56 Figura 35 Diagrama de conexión del amplificador AD524 57 Figura 36 Diagrama de conexión del amplificador AD630 57 Figura 37 Filtro de señal demodulada 58 Figura 38 Conexión de Arduino Nano para generar señal PWM 60 Figura 39 Señal cuadrada a 1KHz en un osciloscopio 61 Figura 40 Señal cuadrada a 14.376KHz en un osciloscopio 61 Figura 41 Conexión Arduino - DAC 62 Figura 42 Prueba Experimental 63 Figura 43 Gráfica de la señal de salida 64
10
LISTA DE TABLAS
Tabla 1 Especificaciones de Arduino Nano 3.0 23
Tabla 2 Valores PWM para 490Hz 30
Tabla 3 Valores de prescaler para el Timer1 33
Tabla 4 Valores de prescaler para el Timer2 34
Tabla 5 Valores PWM para 1KHz 36
Tabla 6 Valores de prescaler para el Timer0 39
Tabla 7 Valores PWM para 14.376KHz 40
11
CAPITULO 1. INTRODUCCION
Hoy en día los sensores están presentes en muchas áreas de la vida cotidiana y
en la industria, permiten medir magnitudes físicas para análisis o control. La
utilización de sensores es indispensable en áreas como automatización industrial,
robótica, control ambiental, electrodomésticos, agricultura, medicina, entre otras
áreas.
Un sistema de medición o control está compuesto por la adquisición de la
información realizada por un sensor o transductor, el procesamiento de dicha
información y la presentación de los resultados, de tal forma que puedan ser
percibidos e interpretados por el ser humano1.
Figura 1 Estructura general de un sistema de medición y control (Pallás Areny, 2005)
Existen seis tipos de señales: mecánicas, térmicas, magnéticas, eléctricas, ópticas
y moleculares (químicas). En esta tesis se realizarán mediciones de señales
magnéticas utilizando un sensor de campo magnético basado en tecnología
MEMS (Microelectromechanical Systems).
1 Pallás Areny, R. (2005). Sensores y Acondicionadores de Señal 4a Edición. Marcombo.
Sensor Acondicionador
Acondicionamiento Acondicionador
Transmisión datos
Controlador
Transmisión ordenes
Alarmas
Presentación
Supervisor Sistema planta
o proceso Perturbaciones
Objetivos
12
Los sensores de campo magnético son usados en áreas de medicina, telefonía
móvil, industria del acero, industria automotriz, navegación por GPS, entre otras
áreas.
Figura 2 Areas de aplicación de los sensores magnéticos (Reyes H.)
Un Sistema Microelectromecánico (MEMS) incluye dispositivos a escala
micrométrica que integran componentes eléctricos y mecánicos, por lo tanto los
MEMS son utilizados para reducir el tamaño, ahorrar consumo de energía y
disminuir el costo de los sensores de campo magnético (Herrera May, y otros,
2011)2.
En este proyecto se analizará y probará un sensor de campo magnético basado
en tecnología MEMS, se utilizará una tarjeta Arduino para alimentar y adquirir la
señal generada por dicho sensor, y se diseñará un sistema electrónico para
acondicionar la señal adquirida de manera que se pueda medir de forma lineal. La
transmisión de la señal acondicionada se realizará vía inalámbrica.
2 Herrera May, A. L., García Ramírez, P., Aguilera Cortés, L. A., Martínez Castillo, J., Juárez Aguirre, R.,
Domínguez Nicolás, S. M., y otros. (2011). Design, Fabrication, and Characterization of a Resonant
Magnetic Field Sensor Based on MEMS Technology. México.
13
1.1. OBJETIVOS
1.1.1. OBJETIVO GENERAL
El objetivo general del proyecto es diseñar un sistema de acondicionamiento de
señal de un sensor de campo magnético basado en tecnología MEMS
implementado en un sistema Arduino.
1.1.2. OBJETIVOS ESPECIFICOS
1. Alimentar con señales sinusoidales al sensor de campo magnético
utilizando el sistema Arduino para obtener una respuesta lineal.
2. Acondicionar la señal medida por el sensor de campo magnético.
3. Disminuir el tamaño del sistema de acondicionamiento de señal.
4. Disminuir el consumo de energía del sistema de acondicionamiento de
señal.
5. Transmitir de manera inalámbrica la señal acondicionada a un sistema
receptor el cual permitirá visualizar dicha señal.
1.2. JUSTIFICACIÓN
Existe actualmente un sistema de acondicionamiento de señal que utiliza un
sensor de campo magnético basado en tecnología MEMS el cual permite convertir
la señal de un campo magnético a una señal eléctrica. Este sistema fue
implementado en una tarjeta de circuito impreso (PCB) que contiene un
amplificador instrumental, un demodulador, un filtro paso bajo (LPF), un
convertidor analógico digital (DAC), un PIC, un convertidor de voltaje a corriente,
un sensor MEMS, entre otros componentes.
14
Se necesita optimizar este sistema de acondicionamiento de señal, reduciendo su
tamaño y consumo de energía, esto se busca lograr reemplazando algunos
componentes electrónicos de la PCB, para ello se propone utilizar la tarjeta
Arduino la cual cuenta con componentes electrónicos a pequeña escala y un
microcontrolador con capacidad para manejar señales de entrada y salida tanto
analógicas como digitales. Al disminuir el tamaño del sistema, permitirá una mayor
portabilidad del mismo, y al tener un menor consumo de energía podrá ser
alimentado con una fuente de energía más pequeña, como una pila.
Se requiere que el nuevo sistema de acondicionamiento de señal mantenga la
linealidad de la señal como lo hace el actual sistema. Además se necesita
transmitir vía inalámbrica la señal acondicionada a otro sistema receptor, el cual
será el encargado de visualizar dicha señal.
15
CAPITULO 2. MARCO TEORICO
2.1 ANTECEDENTES CIENTIFICOS
Los campos magnéticos generados por el cerebro o el corazón son muy útiles en
los diagnósticos clínicos, por lo que las señales magnéticas producidas por otros
órganos también son de gran interés.
En diversos artículos científicos se ha publicado el diseño y fabricación de un
sensor MEMS para detectar densidad de flujo magnético. Este sensor es utilizado
en un sistema de acondicionamiento de señal implementado en una PCB.
Con este sistema de acondicionamiento de señal, se realizaron pruebas en ratas
anestesiadas para detectar la densidad de flujo magnético durante su respiración.
Figura 3 Uso de dispositivo MEMS en una rata (Juárez Aguirre, y otros, 2013)
En la Figura 4 se puede ver el magnetograma de una rata durante su respiración,
mientras estaba viva (a), y después de ser sacrificada con una sobredosis (b):
16
Figura 4 Magnetograma de una rata (Juárez Aguirre, y otros, 2013)
Estas pruebas muestran que incluso después de haber sido sacrificada la rata aún
se sigue obteniendo una señal generada por el campo magnético existente.
En otro artículo se describe el diseño de un sensor MEMS para aplicación de
Fugas de Campo Magnético. Este sensor se basa en el Efecto Hall y se propone
que trabaje con corriente por tuneleo.
Este sensor busca detectar en materiales ferrosos grietas o alguna perdida de
espesor. El esquema del funcionamiento se muestra en la Figura 5:
Figura 5 Esquema de funcionamiento del sensor MEMS
17
En una prueba realizada a una placa de hierro de 80 * 30 cm y 2 cm de ancho con
diferentes tipos de fallas no se lograron detectar al 100% dichas fallas, lo que
significa que los sensores de efecto Hall promedio no pueden realizar estas
mediciones debido a la resolución insuficiente que manejan.
Figura 6 Placa de hierro para pruebas del sensor MEMS (Gutierrez Rojas, Gámez Cuatzin, & Gómez Espinosa, 2011)
2.2 SENSORES DE CAMPO MAGNETICO
2.2.1 DESCRIPCION GENERAL
Los sensores de campo magnético son dispositivos en los que una magnitud física
puede producir una alteración de un campo magnético o de un campo eléctrico,
sin que se trate de un cambio de inductancia o de capacidad. Estos sensores
detectan los campos magnéticos que provocan los imanes o las corrientes
eléctricas.
La fuerza de un campo magnético se puede medir utilizando diferentes tipos de
técnicas, cada técnica tiene propiedades únicas que la hacen más adecuada para
aplicaciones particulares. Estas aplicaciones pueden ir desde sensar la presencia
o detectar algún cambio en el campo magnético, hasta medir con precisión las
propiedades escalar y vector de un campo magnético.
20% 40% 70% 100%
30cm
80cm
2cm
18
Los sensores de campo magnético se pueden dividir en dos tipos:
Componente Vector.
Magnitud Escalar.
Los sensores de tipo Vector se pueden dividir a su vez en sensores que son
usados para medir Campo Bajo (<1 mT) y Campo Alto (>1 mT). Los instrumentos
que miden los campos bajos se les conocen normalmente como Magnetómetros, y
a los instrumentos que miden campos altos usualmente se les conoce como
Gaussímetros.
En la Figura 7 se puede ver la clasificación de los sensores de campo magnético.
Figura 7 Clasificación de sensores de campo magnético
Sensores de Campo Magnético
Magnetómetros Gaussímetros
Vector Escalar
Efecto Hall Magnetorresistivo Magnetodiodo Magnetotransistor
Precesión de Protones Bombeo Optico
Bobina de Inducción Saturación SQUID Magnetorresistivo Fibra Optica
19
2.2.2 SENSOR BASADO EN TECNOLOGIA MEMS
El sensor MEMS utilizado fue diseñado y fabricado por un Centro de Investigación
en Micro y Nanotecnología dedicado a la investigación.
Este sensor detecta la densidad del flujo de un campo magnético utilizando la
fuerza de Lorentz, esto se puede ver en la Figura 8. Tiene una estructura
resonante de 700 x 600 x 5 µm, formado por un circuito rectangular, cuatro vigas
flexibles de silicio y un arreglo de vigas de silicio transversales y longitudinales. La
estructura resonante está unida a un sustrato de silicio a través de dos vigas de
torsión (60 x 40 x 5 µm). El sensor MEMS además contiene un puente de
Wheatstone con cuatro piezoresistores tipo p, dos de ellos están posicionados
sobre vigas flexibles y los otros dos sobre la superficie del sustrato de silicio
(Juárez Aguirre, y otros, 2013)3.
Figura 8 Sensor MEMS de campo magnético (Juárez Aguirre, y otros, 2013)
3 Juárez Aguirre, R., Domínguez Nicolás, S. M., Manjarrez, E., Tapia, J. A., Figueras, E., Vázquez Leal, H., y
otros. (2013). Digital Signal Processing by Virtual Instrumentation of a MEMS Magnetic Field Sensor for
Biomedical Applications. sensors, 17
20
El sensor MEMS opera con la fuerza de Lorentz, la cual es generada por la
interacción de una densidad de flujo magnético y una corriente de excitación
sinusoidal a través de un circuito de aluminio, como se muestra en la Figura 9. La
densidad del flujo magnético es aplicada en la dirección longitudinal de la
estructura resonante. La fuerza de Lorentz es amplificada cuando la estructura
resonante opera en su primera frecuencia resonante, esto ocasiona una
deformación longitudinal en los dos piezoresistores ubicados sobre las vigas
flexibles, lo que provoca que cambien sus resistencias iniciales. Esto genera una
variación en la salida de voltaje del puente de Wheatstone. Debido a esto, esta
señal eléctrica está relacionada con la densidad de flujo magnético aplicada al
sensor MEMS (Juárez Aguirre, y otros, 2013)4.
Figura 9 Operación principal del sensor MEMS de campo magnético (Juárez Aguirre, y otros, 2013)
4 Juárez Aguirre, R., Domínguez Nicolás, S. M., Manjarrez, E., Tapia, J. A., Figueras, E., Vázquez Leal, H., y
otros. (2013). Digital Signal Processing by Virtual Instrumentation of a MEMS Magnetic Field Sensor for
Biomedical Applications. sensors, 17
21
2.3 ACONDICIONAMIENTO DE SEÑAL DE SENSORES
Los acondicionadores de señal son elementos de medida que ofrecen a partir de
una señal de salida de un sensor eléctrico, una señal adecuada para ser mostrada
o utilizada en un proceso posterior. Las funciones de los acondicionadores se
pueden clasificar en: filtrado, amplificación, modulación y demodulación, y
adaptación de impedancias.
Figura 10 Acondicionamiento de señal (Cardona Paredes)
Un filtro es un dispositivo que separa las señalas de acuerdo a su frecuencia u
otro criterio. El filtro puede estar ubicado en la etapa de entrada o intermedia.
Cuando el filtro está ubicado en la etapa de entrada, éste puede ser de tipo
eléctrico, mecánico, neumático, térmico, o electromagnético. Cuando el filtro se
encuentra ubicado en una etapa intermedia, normalmente éste es de tipo eléctrico.
Un amplificador es un dispositivo que mediante la utilización de energía, magnifica
la amplitud de un fenómeno. Para este fin se utilizan los amplificadores
operacionales, los cuales tienen como características:
Resistencia de entrada alta (cientos de MΩ).
Resistencia de salida baja (debajo de 1Ω).
Grande ganancia de lazo abierto (de 104 a 106).
Grande CMRR (common mode rejection ratio) (Gd/Gc).
Buen rango de frecuencias de operación.
Baja sensibilidad a las variaciones de la fuente de alimentación.
Gran estabilidad al cambio de temperatura ambiente.
22
La modulación es un conjunto de técnicas para transportar información sobre una
onda portadora, normalmente sinusoidal. Esto permite un mejor aprovechamiento
del canal de comunicación transmitiendo mayor información de manera simultánea
y protegiéndola de ruidos e interferencias. La demodulación como su nombre lo
indica, es lo opuesto a la modulación. Es el conjunto de técnicas para recuperar la
información transportada sobre una onda portadora. Por lo que en cualquier
telecomunicación siempre existirá por lo menos una pareja de modulador-
demodulador.
El objetivo de la adaptación de impedancia es que exista la máxima transferencia
de potencia para permitir que toda la energía enviada por la fuente sea recibida
por los dispositivos alimentados. Si la fuente tiene una impedancia menor al
dispositivo conectado, se requiere colocar resistencia igual a la impedancia de la
fuente en paralelo con el dispositivo de alta impedancia.
2.4 PLACAS SBC
2.4.1 DESCRIPCION GENERAL
Una computadora de placa reducida (SBC) es una computadora completa en un
solo circuito. Su diseño consiste en un procesador, memoria RAM, dispositivos de
entrada y salida (E/S), y todos los dispositivos necesarios para hacer una
computadora funcional en una sola tarjeta que normalmente es de tamaño
reducido y que tiene todo lo que necesita en la placa base.
Debido a los grandes niveles de integración y reducción de componentes y
conectores, las SBC son más pequeñas, livianas, confiables y tienen un mejor
manejo de potencia eléctrica que las computadoras de múltiples tarjetas.
Este tipo de tarjetas se utilizan generalmente en entornos industriales o en
sistemas embebidos que sirven como controladores e interfaces.
23
2.5 ARDUINO NANO 3.0
El Arduino Nano 3.0 es una pequeña placa basada en el microcontrolador
ATMega328, normalmente se usa conectándola a un protoboard. Este Arduino se
alimenta a través del cable USB Mini-B o con una fuente externa.
Las especificaciones del Arduino Nano 3.0 se muestran en la Tabla 1
Especificaciones de Arduino Nano 3.0
Microcontrolador ATmega328
Tensión de Operación (nivel
lógico)
5 V
Tensión de Entrada
(recomendado)
7-12 V
Tensión de Entrada (límites) 6-20 V
Pines E/S Digitales 14 (6 proveen salida PWM)
Entradas Analógicas 8
Corriente máxima por cada
PIN de E/S
40 mA
Memoria Flash 32 KB (ATmega328) de los cuales 2KB son
usados por el bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Frecuencia de reloj 16 MHz
Dimensiones 18.5mm x 43.2mm
Tabla 1 Especificaciones de Arduino Nano 3.0 (Arduino, Arduino Website)
24
La velocidad de procesamiento del Arduino Nano es de 16MHz, lo que permite
generar las señales requeridas para el sensor MEMS.
Con sus entradas analógicas el Arduino Nano permite leer señales generadas por
algún sensor, como en este caso un sensor de campo magnético. Cada una de
estas entradas analógicas provee una resolución de 10 bits, esto significa 1024
valores diferentes. También permite generar señales de salida con cualquiera de
sus 14 pines, de los cuales 6 dan la posibilidad de sacar una señal PWM, lo que
es de gran utilidad cuando se busca generar una señal cuadrada o sinusoidal.
2.6 PLANTEAMIENTO DE LA HIPOTESIS
En base al análisis de la literatura, la hipótesis sistema de acondicionamiento de
señal inalámbrico para un sensor de campo magnético basado en tecnología
MEMS utilizando la tarjeta Arduino Nano permitirá reducir el tamaño del actual
sistema de acondicionamiento de señal, reemplazando algunos de sus
componentes electrónicos implementados en la PCB, además reducirá el
consumo de energía de dicho sistema, y permitirá una mayor portabilidad del
mismo.
25
CAPITULO 3. DESARROLLO DEL SISTEMA
3.1 ALIMENTACION DEL SENSOR
El sensor es alimentado por dos señales, una con una frecuencia de 1KHz y otra
con una frecuencia de 14.376Khz. A esta frecuencia el sensor tiene una respuesta
eléctrica con un comportamiento lineal dentro de un rango de 40 µT a 2000 µT.
Para generar dichas señales se utilizó la tarjeta Arduino Nano. Se decidió utilizar
Arduino principalmente porque trabaja con un cristal de cuarzo, lo que tiene como
ventaja una gran estabilidad de frecuencia y fase.
La tarjeta Arduino Nano cuenta con 6 pines que proveen salida PWM. PWM
(pulse-width modulation) o modulación de ancho de pulso es una técnica que se
utiliza para simular una salida analógica variable con una salida digital. Esta señal
es de tipo cuadrada, y su gran característica es que se puede variar la duración
del pulso cuando este se encuentra en positivo o 5 volts. Sin embargo, esta
variación no afecta la duración entre cada pulso o ciclo, lo que significa que la
frecuencia de la señal sigue siendo la misma.
En la Figura 11 se muestra el esquema general de representación de PWM.
La importancia de PWM en este trabajo es fundamental, ya que utilizando esta
técnica se buscó generar las señales cuadradas y sinusoidales requeridas por el
sensor MEMS. Se utilizó una de las salidas PWM que proporciona la tarjeta
Arduino para generar primeramente una señal sinusoidal, que por el momento
sigue siendo una señal digital. Inicialmente se programó el Arduino Nano para
generar la señal PWM a una frecuencia de 490Hz. Se realizó a esta frecuencia
debido a que es la frecuencia predeterminada para PWM en el pin D9 de Arduino.
26
Figura 11 Esquema general de representación de PWM (Instructable)
La generación de la señal se realizó mediante software a través de la
programación del chip ATMega328 incorporado en la tarjeta Arduino Nano. Este
chip se programó en el lenguaje C++ en el IDE propio de Arduino.
Para ambas señales requeridas se generaron de tipo sinusoidales y tipo
cuadradas para determinar cuáles serían las más adecuadas para alimentar al
sensor MEMS.
3.2 GENERACION DE SEÑALES ANALOGICAS
La tarjeta Arduino maneja hasta 256 posibles valores de salida para PWM. Se
pudo haber realizado el cálculo para cada punto durante la ejecución del programa
en tiempo real, sin embargo, teniendo en consideración que el chip ATMega32 es
un dispositivo que cuenta únicamente con 32KB de memoria, se decidió por la
opción de generar una tabla con los posibles valores pre-calculados, de ésta forma,
cuando el programa se ejecuta en tiempo real, se busca en dicha tabla el valor
que le corresponde enviar como señal sin necesidad de realizar todo el cálculo.
27
Para generar esta tabla de valores pre-calculados se realizaron los siguientes
pasos:
Con la ayuda de un software para realizar cálculos, se graficó la fórmula:
Ecuación 1
Como se puede apreciar en la Figura 12, los valores de ésta función se
encuentran en el rango de -1 a 1, como se ha comentado el rango que Arduino
maneja es de 0 a 255, por lo que esta fórmula aún no es suficiente para generar
correctamente los valores de la tabla requerida.
Figura 12 Gráfica de seno
Como primer paso se buscó que el rango de valores de la función seno fueran
valores positivos únicamente, esto se realizó sumando 1 a la función, quedando
de la siguiente manera:
Ecuación 2
28
De esta forma, la gráfica de la función es representada por la Figura 13:
Figura 13 Gráfica de seno con valores positivos
Como se puede ver, el rango de los valores de la función ahora se encuentra de 0
a 2. El siguiente paso fue tener el rango de valores de 0 a 1, esto se logró
dividendo la función entre 2.
Quedando la siguiente fórmula:
Ecuación 3
En la Figura 14 se ve una función seno con valores de 0 a 1:
Figura 14 Gráfica de seno con rango de 0 a 1
29
Finalmente, para obtener el rango permitido por el PWM de Arduino (0 a 255), se
multiplicó la función por 255, quedando de la siguiente manera:
Ecuación 4
En la Figura 15 se puede ver la gráfica de la función final, en la cual el rango de
valores efectivamente es de 0 a 255.
Figura 15 Gráfica de seno con rango de 0 a 255
Para realizar el cálculo de los 256 valores para PWM primero se definió el valor de
paso entre punto y punto. Conociendo que el dominio de la función seno para un
ciclo completo en X positivo es de 0 a 2*PI, la función para el cálculo de paso
queda de la siguiente forma:
Ecuación 5
El valor de paso o incremento es: 0.024543693
30
Una vez obtenido el valor de paso, se pueden obtener los 256 valores de PWM:
Paso X Y
1 0 128
2 0.024543693 131
3 0.049087385 134
… … …
254 6.209554229 118
255 6.234097922 121
256 6.258641615 124
Tabla 2 Valores PWM para 490Hz
El valor de X es generado por la suma de Xn-1 más el valor de paso.
El valor de Y es generado por la función de seno con rango de 0 a 255.
Debido a que Arduino no permite valores decimales para PWM, los valores de Y
se han convertido de valores decimales a valores enteros únicamente.
Como se comentó previamente, la programación del Arduino Nano se desarrolló
en su propio entorno de desarrollo. El diagrama de flujo para esta primera etapa
de la generación de señales se muestra en la Figura 16.
En esta primera etapa se conectó un led a la salida PWM de la tarjeta Arduino
para visualizar la señal a través del cambio en la intensidad de luz en el led. En la
Figura 17 se muestra la conexión de la tarjeta Arduino para generar dicha señal
PWM.
31
Figura 16 Diagrama de flujo para señal sinusoidal de 490Hz
NO
SI
Inicio
Definir Tabla de valores PWM
Configuración Inicial: Pin de salida Paso inicial
Salida de señal PWM correspondiente al paso
actual
Incremento del paso en uno
¿Paso = 256?
Establecer paso = 0
32
Figura 17 Conexión Arduino Nano para generar señal PWM
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D9: Pin de salida PWM.
d) LED conectado al pin D9.
e) Conexión a PC vía USB Mini-B.
La tarjeta Arduino es alimentada a través del cable USB conectado a la
computadora de desarrollo. La tarjeta Arduino a través de sus pines 5V y GND
sacar una señal de 5 volts y tierra respectivamente, muy útiles para la conexión de
otros dispositivos electrónicos sin necesidad de una fuente externa.
El pin D9 es el pin utilizado como pin de salida PWM, al cual se le ha conectado
un led como indicador de la señal sinusoidal. Visualmente en el led va variando su
intensidad conforme va cambiando la señal de salida en el pin de PWM.
A través del puerto USB de la computadora se adquirieron los valores que se
están escribiendo como salida PWM en el pin D9 del Arduino. En la Figura 18 se
pueden ver estos valores gráficamente.
a b
c
e
d
33
Figura 18 Señal sinusoidal PWM
Para realizar la alimentación al sensor MEMS se necesitan dos señales con
frecuencias de 1KHz y 14.376KHz, en la primera etapa se consiguió generar la
señal de 490Hz, la cual se encontraba por debajo de las dos frecuencias buscadas.
Como se comentó anteriormente, la frecuencia predeterminada del PWM en el pin
D9 de Arduino es de 490Hz, sin embargo, es posible cambiar ésta frecuencia.
Esto se puede lograr modificando el valor del prescaler para el Timer1 del Arduino,
el cual controla la frecuencia del pin D9 y D10. Los posibles valores que puede
tomar el prescaler son:
Configuración Prescaler Frecuencia
0x01 1 31372.55
0x02 8 3921.16
0x03 64 490.20
0x04 256 122.55
0x05 1024 30.64
Tabla 3 Valores de prescaler para el Timer1 (Arduino, Arduino Website)
Las frecuencias mostradas en la tabla anterior se encuentran expresadas en Hz.
La configuración predeterminada es 0x03, la cual tiene una frecuencia de
490.20Hz.
0
240
120
60
180
34
Como se puede ver no existe una configuración exacta para las frecuencias de
1KHz y 14.376KHz.
El prescaler 0x02 tiene una frecuencia de 3921.16Hz, superior a la frecuencia de
1KHz, y el prescaler 0x01 tiene una frecuencia de 122.55Hz, aún más inferior que
la predeterminada. Se procedió a analizar las posibles frecuencias del Timer2.
El Timer2 de Arduino controla las frecuencias para los pines D3 y D11. Los
posibles valores que puede tomar el prescaler para este timer se muestran en la
siguiente tabla:
Configuración Prescaler Frecuencia
0x01 1 31372.55
0x02 8 3921.16
0x03 32 980.39
0x04 64 490.20
0x05 128 245.10
0x06 256 122.55
0x07 1024 30.64
Tabla 4 Valores de prescaler para el Timer2 (Arduino, Arduino Website)
Para el Timer2 la configuración predeterminada es la 0x04, la cual tiene una
frecuencia de 490.20Hz. Al igual que con el Timer1 no existe una configuración
exacta para las frecuencias de 1KHz y 14.376KHz, sin embargo, la configuración
0x03 tiene una frecuencia de 980.39Hz muy cercana a la frecuencia de 1KHz. Se
eligió utilizar este timer con la configuración 0x03 para conseguir la señal de 1KHz.
Teniendo en cuenta que son 256 posibles valores para PWM para la frecuencia de
980.39Hz, se realizó el cálculo para encontrar la cantidad de los posibles valores
que generan la frecuencia de 1KHz.
35
Fa (Frecuencia actual) = 980.36Hz
Va (Valores actuales PWM) = 256
Fb (Frecuencia buscada) = 1000.00Hz
Vb (Valores buscados PWM) = x
Se considera que los valores de las frecuencias son inversamente proporcionales
a los valores PWM. De esta forma se puede calcular la variable Valores
buscados PWM con una regla de tres inversa.
Ecuación 6
La ecuación para encontrar Vb queda de la siguiente manera:
Ecuación 7
Sustituyendo los valores en la ecuación:
La cantidad de posibles valores PWM para generar una señal con frecuencia de
1KHz es:
Redondeando el valor a número entero queda finalmente como:
36
Al igual que en la primera etapa se generó la tabla de valores PWM. Primero se
calculó el valor de paso para 251 puntos.
Ecuación 8
El valor de paso o incremento es: 0.02503261
Una vez obtenido el valor de paso, se pueden obtener los 251 valores de PWM:
Paso X Y
1 0 128
2 0.02503261 131
3 0.05006522 134
… … …
249 6.20808747 118
250 6.23312009 121
251 6.2581527 124
Tabla 5 Valores PWM para 1KHz
El valor de X es generado por la suma de Xn-1 más el valor de paso.
El valor de Y es generado por la función de seno con rango de 0 a 251.
Como se ha comentado, Arduino no permite valores decimales para PWM, por lo
que los valores de Y se han convertido de valores decimales a valores enteros
únicamente.
37
Se desarrolló el programa en Arduino considerando estos valores para generar la
primera señal buscada de 1KHz. El diagrama de flujo para dicho programa se
muestra en la Figura 19:
Figura 19 Diagrama de flujo para señal sinusoidal PWM de 1KHz
Inicio
Definir Tabla de valores PWM
Configuración Inicial: -Selección de Timer2
-Selección de prescaler 0x03 -Tope de paso
-Pin de salida D3 -Paso inicial en 0
Salida de señal PWM correspondiente al paso
actual
Incremento del paso en uno
¿Paso = 251?
Establecer paso = 0
NO
SI
38
Como se puede ver en la Figura 19, el diagrama de flujo para la señal de 1KHz es
muy parecido al diagrama de flujo de 490Hz, la diferencia está principalmente en
el proceso Configuración Inicial, ya que es ahí donde se configuran los registros
de Arduino para el Timer2, estableciendo el prescaler a utilizar y el tope de paso a
251.
Los demás procesos permanecen iguales pero con valores diferentes en la tabla
de valores PWM y en el límite de paso.
En la siguiente imagen se muestra la conexión del Arduino para generar la señal
de 1KHz:
Figura 20 Conexión Arduino Nano para generar señal sinusoidal a 1KHz
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D3: Pin de salida PWM a 1KHz conectado al osciloscopio.
d) Conexión del osciloscopio a tierra.
e) Conexión a PC vía USB Mini-B.
f) Osciloscopio.
a b
e
c
d
f
39
La segunda señal buscada es una señal PWM a la frecuencia de 14.376KHz. Se
encontraban disponibles los timers Timer0 y Timer1 del Arduino
Las frecuencias del Timer1 se mostraron en la Tabla 3 Valores de prescaler para
el Timer1 . Las frecuencias del Timer0 se muestran en la siguiente tabla:
Configuración Prescaler Frecuencia
0x01 1 62500.00
0x02 8 7812.50
0x03 64 976.5625
0x04 256 244.140625
0x05 1024 61.03515625
Tabla 6 Valores de prescaler para el Timer0 (Arduino, Arduino Website)
Se puede apreciar en la tabla superior que la frecuencia del Timer0 es el doble de
rápido que el Timer1 para el mismo prescaler. La configuración predeterminada
para el Timer0 es la 0x03 con una frecuencia de 976.5625Hz. La siguiente
frecuencia superior es de 7812.50Hz correspondiente a la configuración 0x02, y es
la más cercana a la frecuencia de 14.376KHz.
Se eligió utilizar el Timer0 con la configuración 0x02 para conseguir la señal de
14.376KHz. Al igual como se realizó el cálculo para la señal de 1KHz, se realizó
también el cálculo para encontrar la cantidad de los posibles valores que generan
la frecuencia de 14.376KHz.
Fa (Frecuencia actual) = 976.5625Hz
Va (Valores actuales PWM) = 256
Fb (Frecuencia buscada) = 14376.00Hz
Vb (Valores buscados PWM) = x
40
Utilizando la ecuación Ecuación 7 para encontrar Vb, se sustituyen los valores:
La cantidad de posibles valores PWM son:
Redondeando el valor a número entero queda finalmente como:
Se generó la tabla de valores PWM correspondiente a ésta frecuencia y número
de pasos. Primero se calculó el valor de paso para 17 puntos.
Ecuación 9
El valor de paso o incremento es: 0.04520277
Una vez obtenido el valor de paso, se pueden obtener los 139 valores de PWM:
Paso X Y
1 0 70
2 0.04520277 73
3 0.09040554 76
… … …
137 6.14757699 60
138 6.19277976 63
139 6.23798254 66
Tabla 7 Valores PWM para 14.376KHz
41
El valor de X es generado por la suma de Xn-1 más el valor de paso.
El valor de Y es generado por la función de seno con rango de 0 a 139.
Ecuación 10
Los valores de Y se han convertido de valores decimales a valores enteros.
El programa se desarrolló en Arduino para generar la señal de 14.376KHz. Como
se puede ver en la Figura 21 el diagrama de flujo para la señal de 14.376KHz, los
procesos son los mismos que el diagrama de flujo para la señal de 1KHz, sin
embargo, cambian los valores de la tabla para PWM, la selección del timer, el
límite del paso y el pin de salida.
42
Figura 21 Diagrama de flujo para señal sinusoidal PWM de 14.376KHz
Establecer paso = 0
Inicio
Definir Tabla de valores PWM
Configuración Inicial: -Selección de Timer0
-Selección de prescaler 0x02 -Tope de paso
-Pin de salida D5 -Paso inicial en 0
Salida de señal PWM correspondiente al paso
actual
Incremento del paso en uno
¿Paso = 17?
NO
SI
43
Figura 22 Conexión Arduino Nano para generar señal sinusoidal a 14.376KHz
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D5: Pin de salida PWM a 14.376KHz conectado al osciloscopio.
d) Conexión del osciloscopio a tierra.
e) Conexión a PC vía USB Mini-B.
f) Osciloscopio.
3.2.1 ACONDICIONAMIENTO DE SEÑALES PWM A ANALOGICAS
El sensor MEMS puede ser alimentado por una señal tipo cuadrada o una señal
sinusoidal analógica. Las señales generadas en el anterior fueron señales
cuadradas. Para generar señales sinusoidales se deben convertir estas señales
digitales en señales analógicas.
El Convertidor Digital-Analógico (DAC) empleado para éste propósito es un filtro
paso bajo compuesto por un arreglo de una resistencia y un capacitor. El pin de
salida PWM se conecta a la entrada del DAC, la cual es un extremo de la
a b
e
c
d
c
44
resistencia, y la salida analógica es el otro extremo de la resistencia que se une
con el capacitor.
En la Figura 23 se muestra cómo está constituido el DAC utilizado:
Figura 23 Convertidor Digital-Analógico
Para el cálculo de la resistencia y capacitor a utilizar en el DAC se realizó con la
fórmula de frecuencia:
Ecuación 11
Dónde:
fc: Es el valor de la frecuencia de la señal.
R: Es el valor de la resistencia en Ohms.
C: Es el valor del capacitor en Faradios.
El valor del capacitor a utilizar era de 0.1uF, y ya se conocía anticipadamente.
Se despejó la fórmula para encontrar el valor de la resistencia, quedando de la
siguiente manera:
Ecuación 12
45
Para encontrar el valor de la resistencia para la señal de frecuencia de 1KHz se
sustituyeron los valores correspondientes en la fórmula:
fc: 1000Hz
C: 0.0000001F
El valor de la resistencia es:
En la siguiente imagen se muestra la conexión del Arduino con el DAC para
generar la señal analógica de 1KHz:
Figura 24 Conexión Arduino Nano para generar señal analógica a 1KHz
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D3: Pin de salida PWM a 1KHz.
d) Conexión a PC vía USB Mini-B.
e) DAC.
a b
d
c
e
46
Para encontrar el valor de la resistencia para la señal de frecuencia de 14.376KHz
se sustituyeron los valores correspondientes en la fórmula Ecuación 12:
fc: 14376Hz
C: 0.0000001F
El valor de la resistencia es:
En la Figura 25 se muestra la conexión del Arduino con el DAC para generar la
señal analógica de 14.376KHz:
Figura 25 Conexión Arduino Nano para generar señal analógica a 14.376KHz
a b
d
c
e
47
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D3: Pin de salida PWM a 1KHz.
d) Conexión a PC vía USB Mini-B.
e) DAC.
3.2.2 GENERACION DE SEÑALES CUADRADAS
En los capítulos anteriores se explicó cómo se generaron las señales de 1KHz y
14.376KHz de tipo sinusoidal. Como se necesitaba conocer qué tipo de señal
mostraba mejor calidad, se generaron las señales cuadradas de las frecuencias de
1KHz y 14.376KHz para compararlas con las señales sinusoidales.
Para generar la señal cuadrada de 1KHz de frecuencia se consideró el mismo
prescaler utilizado para generar la señal analógica de esta misma frecuencia. En
la Tabla 4 se pueden ver los diferentes prescalers para el Timer2. El prescaler
0x03 tiene una frecuencia de 980.39 Hz, pero que puede ser alterada realizando
modificaciones en los registros del Timer2.
Al igual que en la generación de la señal analógica de 1KHz, en este caso también
se necesitó realizar el cálculo del valor máximo que debe contar el Timer2 para
generar una señal de 1KHz.
El valor calculado es:
48
Como la señal debe ser cuadrada, esto es, que la mitad de la onda cuadrada se
encuentre en ALTO y la otra mitad en BAJO, para ello se deben modificar los
registros comparadores OCR2A y OCR2B del Timer2.
El registro OCR2A se establece en 250, ya que el Timer cuenta a partir del cero.
El registro OCR2B se establece en 125 para que la señal permanezca la mitad en
ALTO y la otra mitad en BAJO.
En el diagrama de flujo de la Figura 26 se muestran los pasos realizados para el
desarrollo del programa en Arduino para generar la señal cuadrada de 1KHz:
Figura 26 Diagrama de flujo para señal cuadrada de 1KHz
En la Figura 27 se muestra la conexión del Arduino para generar la señal de 1KHz.
Inicio
Configuración Inicial: -Selección de Timer2
-Selección de prescaler 0x03
-Establecer OCR2A=250 -Establecer OCR2B=125
-Pin de salida D3
Lectura de señal
49
Figura 27 Conexión Arduino Nano para generar señal cuadrada a 1KHz
g) 5V: Conexión a alimentación de 5V.
h) GND: Conexión a tierra.
i) D3: Pin de salida PWM a 1KHz conectado al osciloscopio.
j) Conexión del osciloscopio a tierra.
k) Conexión a PC vía USB Mini-B.
l) Osciloscopio.
Para generar la señal cuadrada de 14.376KHz se decidió utilizar el Timer1, ya que
este Timer permite seleccionar el modo CTC (Clear Time Counter) y proporciona
una mayor precisión para frecuencias grandes.
Al igual como se realizó el cálculo para la señal de 1KHz, se realizó también el
cálculo para encontrar el valor máximo al que debe contar el Timer para generar la
frecuencia de 14.376KHz. Considerando que para este modo CTC, la frecuencia
máxima es la del cristal, que corresponde a 16MHz se realiza el siguiente cálculo:
a b
e
c
d
f
50
Fa (Frecuencia actual) = 16000000Hz
Va (Valor máximo actual) = 1
Fb (Frecuencia buscada) = 14376.00Hz
Vb (Valor máximo buscado) = x
Utilizando la Ecuación 7 para encontrar Vb, se sustituyen los valores:
El valor máximo buscado es:
Redondeando el valor a número entero queda finalmente como:
Para el modo CTC se configuran los registros ICR1 y OCR1A del Timer1.
El registro ICR1 se establece en 1113, ya que el Timer cuenta a partir del cero. El
registro OCR1A se establece en 557 para que la señal permanezca la mitad en
ALTO y la otra mitad en BAJO.
En el diagrama de flujo de la Figura 28 se muestran los pasos realizados para el
desarrollo del programa en Arduino para generar la señal cuadrada de 14.376KHz.
51
Figura 28 Diagrama de flujo para señal cuadrada de 14.376KHz
Figura 29 Conexión Arduino Nano para generar señal cuadrada a 14.376KHz
a b
e
c
d
c
Inicio
Configuración Inicial: -Selección de Timer1
-Selección de Modo CTC
-Establecer ICR1=1113 -Establecer OCR1A=557
-Pin de salida D9
Lectura de señal
52
g) 5V: Conexión a alimentación de 5V.
h) GND: Conexión a tierra.
i) D5: Pin de salida PWM a 14.376KHz conectado al osciloscopio.
j) Conexión del osciloscopio a tierra.
k) Conexión a PC vía USB Mini-B.
l) Osciloscopio.
3.2.3 CONEXION DE ARDUINO AL SENSOR MEMS
En la comparación de las señales sinusoidales y cuadradas, se observó una mejor
resolución y precisión en las señales cuadradas, ya que se acercan más a las
frecuencias deseadas y en este caso no presentan distorsión como las señales
sinusoidales.
Tomando esto en cuenta, se realizó la alimentación del sensor MEMS con las
señales cuadradas de 1KHz y 14.376KHz.
Los pines de salida del Arduino para las señales de 1KHz y 14.376KHz son los
pines 6 y 12 respectivamente.
La señal de 1KHz se conecta al sensor MEMS en el pin 4 y la señal de 14.376KHz
se conecta en el pin 5.
La conexión del Arduino al sensor MEMS se muestra en la Figura 30.
La señal de salida del sensor MEMS se encuentra en la escala de los microvolts,
por lo que es necesario utilizar un amplificador para obtener una señal en la escala
de milivolts.
53
Figura 30 Diagrama de conexión para amplificación de señal del sensor MEMS
3.3 AMPLIFICACION DE LA SEÑAL DEL SENSOR MEMS
Para la etapa de amplificación de la señal de salida del sensor MEMS se utilizó el
circuito integrado AD524, el cual es un amplificador de instrumentación diseñado
para aplicaciones de adquisición de datos de alta precisión.
Este amplificador tiene tres pines de ganancia programables de 10, 100 y 1000.
Funciona con un rango de voltaje de alimentación de ±6V a ±18V. La frecuencia
de operación es de 25MHz por lo que no se distorsiona la señal de salida con
respecto a la señal de entrada.
Su diagrama de bloques se muestra en la Figura 31.
12
11
13
15
14
7
6
8
10
9
7
8
1
2
3
6
5
4
MEMS
OUT1 OUT2
GND
GND
GND
GND
VLAZO
VPTE
1
2
5
3
ARDUINO NANO
VIN D1/T
D0/R
RESET RESET
+5V
D2 A7
1uF
+VCC
AGND
4
19
20
18
16
17
24
25
23
21
22
30
29
26
28
27 GND
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
GND
A6
A5
A4
A3
A2
A1
A0
AREF
3V3
D13
AGND AGND
1uF
54
Figura 31 Diagrama de bloques del amplificador AD524
Como se puede observar en el diagrama de bloques, los pines programables son
el pin 13, 12 y 11 para las ganancias de 10, 100 y 1000 respectivamente. Para la
amplificación de la señal del sensor MEMS se necesita una ganancia de 1000, por
lo que se utilizó el pin 11 del amplificador.
En la Figura 32 se muestra el diagrama de conexión del amplificador AD524:
Figura 32 Diagrama de conexión del amplificador AD524
El esquema de conexión para la amplificación de la señal del sensor MEMS se
muestra en la Figura 33.
55
Figura 33 Diagrama de conexión para amplificación de señal del sensor MEMS
Con esta conexión se logra amplificar la señal del sensor MEMS con una ganancia
de 1000.
El amplificador AD524 amplifica la señal de entrada del sensor MEMS como una
señal modulada de salida. Esto requiere que se tome la señal amplificada y se
demodule para obtener nuevamente una señal sinusoidal.
3.4 DEMODULACION DE LA SEÑAL AMPLIFICADA
Para demodular la señal generada por el amplificador de instrumentación se utilizó
el circuito integrado AD630. Este circuito integrado permite la modulación o
demodulación de una señal a gran velocidad y precisión.
7
8
1
2
3
6
5
4
MEMS
OUT1 OUT2
GND
GND
GND
GND
VLAZO
VPTE
13
12
2
16
8
6
10
11
9
4
5
15
14
1
3
7
AD524
V+ G10
G100
G1000
IN+
RG1
REF
SEN
IN-
RG2
V-
OUT
IN NULL
IN NULL
OUT NULL
OUT NULL
1uF
+VCC
100nF
+VCC
10k
-VCC
AGND
AGND
100nF
56
El AD630 funciona con un rango de voltaje de alimentación de ±5V a ±18V. La
frecuencia de operación es de 350KHz por lo que no se distorsiona la señal de
salida con respecto a la señal de entrada.
Su diagrama de bloques se muestra en la Figura 34:
Figura 34 Diagrama de bloques del modulador/demodulador AD630
En la Figura 35 se muestra el diagrama de conexión del modulador/demodulador
AD630.
El esquema de conexión para la demodulación de la señal amplificada del sensor
MEMS se muestra en la Figura 36.
57
Figura 35 Diagrama de conexión del amplificador AD524
Figura 36 Diagrama de conexión del amplificador AD630
13
12
2
16
8
6
10
11
9
4
5
15
14
1
3
7
AD524
V+ G10
G100
G1000
IN+
RG1
REF
SEN
IN-
RG2
V-
OUT
IN NULL
IN NULL
OUT NULL
OUT NULL
1uF 20
3
4
2
18
11
6
5
12
13
16
14
15
19
AD630
V+ DIFF ADJ
DIFF ADJ
CH A+
CH B+
CM ADJ
CM ADJ CH A-
CH B-
CMPEN
VOUT
RA
RB
RF
9
10 SEL B
SEL A
1
17 RIN A
RIN B
8 V- CS B/A
7
AGND
100nF
-VCC
AGND
100nF
+VCC
AGND
-VCC
10k
58
3.5 FILTRADO DE LA SEÑAL DEMODULADA
La señal de salida del AD630 se conecta a un filtro paso bajo de tercer orden para
eliminar el ruido en la señal, quedando el diagrama de conexión como se muestra
en la Figura 37.
Figura 37 Filtro de señal demodulada
La salida del filtro paso bajo de tercer orden es la señal final del sistema
electrónico y es la señal deseada para ser visualizada y analizada en una
computadora.
20
3
4
2
18
11
6
5
12
13
16
14
15
19
AD630
V+ DIFF ADJ
DIFF ADJ
CH A+
CH B+
CM ADJ
CM ADJ CH A--
CH B-
CMPEN
VOUT
RA
RB
RF
9
10 SEL B
SEL A
1
17 RIN A
RIN B
8 V- CS B/A
7 AGND
2uF 2uF 2uF
6.8K 6.8K 6.8K OUTPUT
SIGNAL
59
3.6 ADQUISICION DE LA SEÑAL
Una vez realizado el sistema electrónico, la adquisición de la señal se puede
realizar a través de una computadora desarrollando un instrumento virtual en
LabVIEW o desarrollando una aplicación en algún lenguaje de programación como
C, Java, .Net, etc.
60
3.7 RESULTADOS
En la etapa de generación de señales se inició programando la tarjeta Arduino
para obtener una señal PWM a la frecuencia predeterminada. El objetivo era
familiarizarse con este tipo de señales y la forma de generarlas desde el mismo
Arduino. Para esto se midió la señal de salida a través de un multímetro y se
conectó un LED al pin de salida para visualizar su comportamiento. En el
multímetro se pudo observar la variación de voltaje y en el LED la variación de su
intensidad luz.
Figura 38 Conexión de Arduino Nano para generar señal PWM
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D3: Pin de salida PWM a 1KHz conectado a un LED.
d) Conexión del osciloscopio a tierra.
e) Conexión a PC vía USB Mini-B.
Después se programó el Arduino para generar las señales de 1KHz y 14.376KHz
requeridas para el sensor.
a b
c
d
61
En la Figura 39 se puede ver la señal de 1KHz tomada de un osciloscopio
conectado al pin de salida de la tarjeta Arduino. La frecuencia real de la señal es
de 1.002KHz.
Figura 39 Señal cuadrada a 1KHz en un osciloscopio
En la Figura 40 se puede ver la señal de 14.376KHz tomada del mismo
osciloscopio. La frecuencia real de esta señal es de 14.41KHz cercana al objetivo.
Figura 40 Señal cuadrada a 14.376KHz en un osciloscopio
Para la generación de señales cuadradas no se utilizó la tabla de puntos PWM, ya
que la amplitud de la señal es fija al 50%. Sin embargo para la generación de
señales sinusoidales sí es necesaria la tabla, ya que esos valores de salida al
convertirse en una señal analógica forman la onda sinusoidal.
62
Las tablas de valores PWM para las frecuencias de 1KHz y 14.376KHz se han
incluido en los anexos A.4 y A.5 respectivamente.
Los códigos de los programas en Arduino también se han incluido en los anexos
A.6, A.7, A.8 y A.9.
En la Figura 41 se puede ver la conexión de la tarjeta Arduino al DAC creado con
un filtro paso bajo.
Figura 41 Conexión Arduino - DAC
a) 5V: Conexión a alimentación de 5V.
b) GND: Conexión a tierra.
c) D3: Pin de salida PWM a 1KHz.
d) Conexión a PC vía USB Mini-B.
e) DAC.
f) Resistencia.
g) Capacitor.
h) Pin de entrada DAC.
i) Pin de salida DAC.
a b
c
d
e
g
f
63
En la Figura 42 se muestra el montaje experimental utilizado para la
caracterización del sistema de acondicionamiento de señal en el interior de una
cámara medioambiental junto con el instrumento virtual, que se puede ejecutar en
una computadora conectada a la tarjeta de adquisición de datos PCI-DAS6031.
Figura 42 Prueba Experimental
La respuesta eléctrica del sensor a presión atmosférica se obtuvo de manera
experimental utilizando una bobina Helmholtz para aplicar densidades magnéticas
de -150 µT a +150 µT. Para esta prueba el sistema de acondicionamiento de señal
del sensor de campo magnético fue introducido en una cámara medioambiental
(Russells Technical Products modelo G8) con el fin de mantener una
temperatura controlada de 26°C. El sensor fue colocado en el centro de la bobina
Helmholtz, en donde la densidad de campo magnético es homogénea. El puente
64
de Wheatstone del sensor se alimentó con la señal de 1 kHz y el lazo de aluminio
se alimentó con la señal de 14.376 con una corriente de 20 mA.
Con el instrumento virtual se pudo medir el voltaje de salida del sistema
electrónico utilizando la tarjeta de adquisición de datos.
Figura 43 Gráfica de la señal de salida
65
CONCLUSIONES
Considero que la etapa de la generación de señales fue fundamental en el
desarrollo del sistema, ya que las siguientes etapas dependen de la calidad y
frecuencia de las señales que alimentan al sensor MEMS.
Se aprovecharon las ventajas que ofrece la técnica de PWM al permitir modular el
ancho de pulso vía software a través de Arduino, esto significa una disminución de
componentes electrónicos en la placa base, así como también un menor consumo
de energía, cambiando la fuente de alimentación de 15volts por una de 9volts,
suficiente para alimentar a la tarjeta Arduino y demás componentes.
Se realizó una investigación a detalle de las características y posibles
configuraciones de la tarjeta Arduino para generar diferentes tipos de frecuencias.
Se hizo el cálculo del valor máximo de puntos PWM para ajustar las frecuencias
de Arduino a las frecuencias que se necesitaban para alimentar al sensor MEMS,
y se obtuvieron las tablas de valores PWM para cada frecuencia.
En la etapa de generación de señales se comprobó por medio de un osciloscopio
la frecuencia de cada señal. Para la primera señal de 1KHz se generó una señal
de 1.002KHz muy cercana a la objetivo. Para la señal de 14.376KHz se logró
generar una primera señal de 14.41KHz, cercana a la objetivo, sin embargo la
diferencia de 40Hz evita que el sensor MEMS no tenga una respuesta lineal como
se desea, por lo que se buscó a través de otro método en el Timer1 del Arduino
Nano generar una señal más cercana al objetivo, logrando una señal cuadrada
con una frecuencia que variaba de 14.376KHz a 14.375KHz.
66
Debido a que el sensor MEMS genera una señal de salida muy pequeña, en la
escala de microvolts, fue necesario amplificar esta señal para obtener una que
estuviera en la escala de los milivolts. Para esta etapa de amplificación se buscó
un amplificador que trabajara con un voltaje de alimentación de 9volts para utilizar
una única fuente de alimentación para todo el sistema electrónico. Se eligió el
amplificador AD524 que funciona con una alimentación de ±6V a ±18V y que
además es utilizado para aplicaciones con señales de alta precisión. También se
consideró su frecuencia de operación para que no existiera distorsión en la
amplificación de la señal.
La señal amplificada por el AD524 es una señal modulada, por lo que se necesitó
una etapa de demodulación de la señal para recuperar la señal origen del sensor
MEMS amplificada. Para esto se buscó un demodulador que al igual que los
demás dispositivos funcionara con un voltaje de alimentación de 9volts. Se eligió
el modulador/demodulador AD630 ya que funciona con una alimentación de ±5V a
±18V y que además tiene como características que es rápido y de alta precisión.
Al igual que en la etapa de amplificación, en la etapa de demodulación se
consideró la frecuencia de operación para que no existiera distorsión en la
demodulación de la señal.
Al hacer pruebas con el demodulador se observó que se presentaba rizo en la
señal demodulada. Debido a esto se necesitó una etapa más de filtrado de la
señal para eliminar el ruido en ella.
Para la etapa de filtrado se diseñó un filtro paso bajo de tercer orden. Al pasar la
señal demodulada por este filtro se eliminó el rizo no deseado en la señal,
obteniendo una señal analógica esperada.
67
Como se ha descrito en esta tesis, el sistema electrónico desarrollado está
compuesto por varias etapas de acondicionamiento de señales, como son:
Amplificación
Demodulación
Filtrado
El sistema desarrollado está compuesto por los siguientes elementos principales:
Arduino Nano
Sensor MEMS
Amplificador de Instrumentación AD524
Modulador/Demodulador AD630
Filtro Paso Bajo de tercer orden
Adicionalmente se ocuparon algunos componentes electrónicos como capacitores,
resistencias, y potenciómetros para ajustar los principales dispositivos electrónicos
utilizados en el sistema.
El voltaje de alimentación es de 9volts por lo que con una batería pequeña que
proporcione este voltaje se puede hacer funcionar el sistema electrónico.
Este nuevo sistema presenta varias ventajas importantes respecto al actual
sistema, como son:
Menor voltaje de alimentación. El voltaje de alimentación del sistema es de
9volts. El sistema actual se alimenta con dos fuentes de alimentación, una
de 5volts y otra de 36volts.
Menor cantidad de dispositivos electrónicos. Este sistema está compuesto
por 5 dispositivos electrónicos principalmente y de algunas resistencias,
capacitores y potenciómetros. El sistema actual está compuesto por
68
aproximadamente 20 dispositivos electrónicos principales, como el sensor
MEMS, amplificadores de instrumentación, amplificadores operacionales,
PICs, DACs, demoduladores, además de utilizar una mayor cantidad de
resistencias, capacitores, potenciómetros, y otros componentes electrónicos.
Menor tamaño. Este sistema al estar compuesto por una pequeña cantidad
de dispositivos electrónicos lo hace más pequeño que el sistema actual,
además de no utilizar una fuente adicional de 36volts.
Mayor portabilidad. Debido a su menor tamaño, el sistema tiene una mayor
portabilidad que el actual, una característica muy importante en cualquier
sistema electrónico.
Menor precio. El costo de elaboración del sistema es menor al actual,
considerando la cantidad de componentes electrónicos requeridos, y el
precio de ellos.
Como se puede observar en los puntos anteriores se ha logrado una mejora en el
diseño del sistema de adquisición de señales de un sensor de campo magnético
basado en tecnología MEMS.
69
REFERENCIAS
Arduino. (s.f.). Arduino Website. Recuperado el 15 de Marzo de 2014, de
http://playground.arduino.cc/Main/TimerPWMCheatsheet
Arduino. (s.f.). Arduino Website. Recuperado el 08 de Febrero de 2014, de
http://arduino.cc/es/
Cardona Paredes, E. E. (s.f.). Blogspot. Recuperado el 08 de Febrero de 2014, de
http://1512775.blogspot.mx/2013/05/22-acondicionamiento-de-senal.html
Domínguez Nicolás, S. M., Juárez Aguirre, R., García Ramírez, P. J., & Herrera
May, A. L. (2011). Signal Conditioning System with a 4-20 mA Output for a
Resonant Magnetic Field Sensor Based on MEMS Technology. México.
Domínguez Nicolás, S. M., Juárez Aguirre, R., Herrera May, A. L., García Ramírez,
P., Figueras, E., Gutierrez D., E. A., y otros. (2013). Respiratory Magnetogram
Detected with a MEMS Device. International Journal of Medical Sciences, 6.
Gutierrez Rojas, C. A., Gámez Cuatzin, H., & Gómez Espinosa, A. (2011). Diseño
Conceptual MEMS Aplicado a la Detección de Fugas de Campo Magnético.
RISCE Revista Internacional de Sistemas Computacionales y Electrónicos, 42.
Hansman, J. (2000). Measurement, Instrumentation, and Sensors. CRC Press LLC.
Herrera May, A. L., García Ramírez, P., Aguilera Cortés, L. A., Martínez Castillo, J.,
Juárez Aguirre, R., Domínguez Nicolás, S. M., y otros. (2011). Design, Fabrication,
and Characterization of a Resonant Magnetic Field Sensor Based on MEMS
Technology. México.
70
Instructable, T. (s.f.). Instructables. Recuperado el 15 de Marzo de 2014, de
http://www.instructables.com/id/Analog-Output-Convert-PWM-to-Voltage/
Juárez Aguirre, R., Domínguez Nicolás, S. M., Manjarrez, E., Tapia, J. A., Figueras,
E., Vázquez Leal, H., y otros. (2013). Digital Signal Processing by Virtual
Instrumentation of a MEMS Magnetic Field Sensor for Biomedical Applications.
sensors, 17.
Pallás Areny, R. (2005). Sensores y Acondicionadores de Señal 4a Edición.
Marcombo.
Reyes H., L. (s.f.). Laboratorio de Electrónica. Recuperado el 08 de Febrero de
2014, de http://fisica.udea.edu.co/~lab-gicm/Lab%20electronica_2013.htm
71
ANEXOS
A.1 CRONOGRAMA DE ACTIVIDADES
Alumno: Jiménez Carrasco Sócrates Aramís Asesor:
M. C. Saúl Manuel Domínguez Nicolás
Proyecto:
Sistema de acondicionamiento de señal inalámbrico para un sensor de campo magnético basado en tecnología MEMS.
Modalidad: Tesis Fecha: 15-feb-14
Cronograma
Actividad Feb Mar Abr May Jun
1 Título y Asesor
2 Reuniones con Asesor
3 Pruebas con tarjeta Arduino
3.1 Adquisición de señales analógicas
3.2 Generación de señales analógicas
3.3 Generación de señales sinusoidales
4 Pruebas con sensor de campo magnético
4.1 Análisis de sensor
4.2 Adquisición de señales generadas por el sensor
5 Integración de Arduino con sensor de campo magnético
5.1 Alimentación del sensor usando Arduino
5.2 Adquisición de señales generadas por el sensor
5.3 Acondicionamiento de señal adquirida
5.4 Transmisión inalámbrica de la señal filtrada
6 Escritura de Tesis
Observaciones:
Las reuniones con el asesor se realizarán los días sábados.
Las pruebas son realizadas en casa y en el laboratorio.
72
Descripción del Cronograma de Actividades:
Título y Asesor: Esta es la primera actividad del proyecto, en el que se
define el título que va a llevar el trabajo a realizar y el asesor asignado para
dar seguimiento al mismo.
Reuniones con Asesor: Esta actividad se lleva a cabo a lo largo de todo
del proyecto, se revisan avances, se aclaran dudas, se realizan pruebas.
Pruebas con tarjeta Arduino: En esta actividad se investigará las
características y métodos para adquirir y generar señales digitales y
analógicas con Arduino. Primero se realizarán pruebas con la tarjeta
Arduino para adquirir señales digitales y analógicas. Después se realizarán
pruebas para generar señales digitales y analógicas. Finalmente se buscará
acondicionar las señales digitales o analógicas como señales sinusoidales
principalmente.
Pruebas con sensor de campo magnético: Para esta actividad ya se
debe haber completado la actividad anterior para realizar pruebas con el
sensor MEMS. Como primera instancia se realizará un análisis de las
características y funcionamiento del sensor. Posterior a ello, se realizarán
pruebas con el sistema actual para adquirir y analizar las señales
generadas por el sensor MEMS. Estos resultados se podrán comparar con
los del nuevo sistema para ver las diferencias entre ellos.
Integración de Arduino con sensor de campo magnético: En esta
actividad se llevará a cabo la conexión entre la tarjeta Arduino y el sensor
MEMS. Se realizarán pruebas alimentando el Arduino al sensor con señales
cuadradas y sinusoidales. Se realizarán pruebas con Arduino de
adquisición de señales generadas por el sensor MEMS. Finalmente, se
deberá integrar un componente junto a Arduino para transmitir
inalámbricamente la señal adquirida.
Escritura de Tesis: Esta actividad consiste en escribir en la tesis todos los
procedimientos utilizados para llevar a cabo el proyecto, así como pruebas
y resultados. El resultado de esta actividad deberá ser la tesis para
titulación de grado de Maestro en Ingeniería Aplicada.
73
A.2 METAS
1. Revisión de referencias bibliográficas.
2. Generación de señales cuadradas y sinusoidales a través de la tarjeta
Arduino Nano.
3. Alimentación del sensor MEMS de campo magnético con señales
cuadradas o sinusoidales a la frecuencia adecuada.
4. Diseño y desarrollo del sistema de acondicionamiento de señal inalámbrico.
5. Integración del sensor, acondicionamiento de señal y presentación de señal
acondicionada.
6. Obtención del grado de Maestro en Ingeniería Aplicada.
7. Publicación y aceptación de al menos un artículo de investigación.
74
A.3 ESQUEMA ARDUINO NANO
Especificaciones:
Microcontrolador ATmega328
Tensión de Operación (nivel lógico)
5 V
Tensión de Entrada (recomendado)
7-12 V
Tensión de Entrada (límites) 6-20 V
Pines E/S Digitales 14 (6 proveen salida PWM)
Entradas Analógicas 8
Corriente máxima por cada PIN de E/S
40 mA
Memoria Flash 32 KB (ATmega328) de los cuales 2KB son usados por el bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Frecuencia de reloj 16 MHz
Dimensiones 18.5mm x 43.2mm
75
A.4 TABLA DE VALORES PWM PARA 1KHZ
128,131,134,137,140,143,147,150,153,156,159,162,165,168,171,174,177,180,
183,186,189,191,194,197,200,202,205,207,210,212,215,217,219,221,223,225,
227,229,231,233,235,237,238,240,241,243,244,245,246,248,249,250,250,251,
252,253,253,254,254,254,255,255,255,255,255,255,255,254,254,253,253,252,
252,251,250,249,248,247,246,245,243,242,240,239,237,236,234,232,230,228,
226,224,222,220,218,216,213,211,209,206,203,201,198,196,193,190,187,184,
182,179,176,173,170,167,164,161,158,154,151,148,145,142,139,135,132,129,126
,123,120,116,113,110,107,104,101,97,94,91,88,85,82,79,76,73,71,68,65,62,
59,57,54,52,49,46,44,42,39,37,35,33,31,29,27,25,23,21,19,18,16,15,13,12,10,
9,8,7,6,5,4,3,3,2,2,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,17,18,
20,22,24,26,28,30,32,34,36,38,40,43,45,48,50,53,55,58,61,64,66,69,72,75,78,
81,84,87,90,93,96,99,102,105,108,112,115,118,121,124
76
A.5 TABLA DE VALORES PWM PARA 14.376KHZ
70,73,76,79,82,85,88,91,94,97,100,103,105,108,111,113,115,118,120,122,
124,126,128,129,131,132,134,135,136,137,137,138,138,139,139,139,139,139,
138,138,137,136,135,134,133,132,130,129,127,125,123,121,119,117,114,112,
109,107,104,101,98,96,93,90,87,84,80,77,74,71,68,65,62,59,55,52,49,46,43,41,
38,35,32,30,27,25,22,20,18,16,14,12,10,9,7,6,5,4,3,2,1,1,0,0,0,0,0,1,1,2,2,3,4,
5,7,8,10,11,13,15,17,19,21,24,26,28,31,34,36,39,42,45,48,51,54,57,60,63,66
77
A.6 CODIGO ARDUINO PARA SEÑAL CUADRADA A 1KHZ
const int pin = 3;
const int top = 251;
const int half = top / 2;
void setup()
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS21) | _BV(CS20);
OCR2A = top - 1;
OCR2B = half;
pinMode(pin, OUTPUT);
void loop()
78
A.7 CODIGO ARDUINO PARA SEÑAL CUADRADA A 14.41KHZ
const int pin = 5;
const int top = 139;
const int half = top / 2;
void setup()
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00);
TCCR0B = _BV(WGM02) | _BV(CS01);
OCR0A = top - 1;
OCR0B = half;
pinMode(pin, OUTPUT);
void loop()
79
A.8 CODIGO ARDUINO PARA SEÑAL SINUSOIDAL A 1KHZ
const int pin = 3;
const int top = 251;
const int half = top / 2;
const int steps[] =
128,131,134,137,140,143,147,150,153,156,159,162,165,168,171,174,177,180,183
,186,189,191,194,197,200,202,205,207,210,212,215,217,219,221,223,225,227,22
9,231,233,235,237,238,240,241,243,244,245,246,248,249,250,250,251,252,253,2
53,254,254,254,255,255,255,255,255,255,255,254,254,253,253,252,252,251,250,
249,248,247,246,245,243,242,240,239,237,236,234,232,230,228,226,224,222,220
,218,216,213,211,209,206,203,201,198,196,193,190,187,184,182,179,176,173,17
0,167,164,161,158,154,151,148,145,142,139,135,132,129,126,123,120,116,113,1
10,107,104,101,97,94,91,88,85,82,79,76,73,71,68,65,62,59,57,54,52,49,46,44,42,
39,37,35,33,31,29,27,25,23,21,19,18,16,15,13,12,10,9,8,7,6,5,4,3,3,2,2,1,1,0,0,0,0
,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,17,18,20,22,24,26,28,30,32,34,36,38,
40,43,45,48,50,53,55,58,61,64,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108,
112,115,118,121,124
;
int pos = 0;
void setup()
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS21) | _BV(CS20);
OCR2A = top - 1;
OCR2B = half;
pinMode(pin, OUTPUT);
81
A.9 CODIGO ARDUINO PARA SEÑAL SINUSOIDAL A 14.41KHZ
const int pin = 5;
const int top = 139;
const int half = top / 2;
const int steps[] =
70,73,76,79,82,85,88,91,94,97,100,103,105,108,111,113,115,118,120,122,124
,126,128,129,131,132,134,135,136,137,137,138,138,139,139,139,139,139,138,13
8,137,136,135,134,133,132,130,129,127,125,123,121,119,117,114,112,109,107,1
04,101,98,96,93,90,87,84,80,77,74,71,68,65,62,59,55,52,49,46,43,41,38,35,32,30,
27,25,22,20,18,16,14,12,10,9,7,6,5,4,3,2,1,1,0,0,0,0,0,1,1,2,2,3,4,5,7,8,10,11,13,1
5,17,19,21,24,26,28,31,34,36,39,42,45,48,51,54,57,60,63,66
;
int pos = 0;
void setup()
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00);
TCCR0B = _BV(WGM02) | _BV(CS01);
OCR0A = top - 1;
OCR0B = half;
pinMode(pin, OUTPUT);
void loop()
if(pos == top)
pos = 0;
analogWrite(pin, steps[pos]);
pos++;
82
A.10 CODIGO ARDUINO PARA SEÑAL CUADRADA A 14.376KHZ
const int pin = 9;
void setup()
setupFrequencyGen();
setFrequency(1114);
void loop()
void setFrequency(int d)
if(d<0)
d=-d;
if(d<2)
d=2;
TCCR1B&=0xfe;
TCNT1=0;
ICR1=d;
OCR1A=(d/2);
TCCR1B|=0x01;
void setupFrequencyGen()
TCCR1A=0b10000010;
TCCR1B=0b00011001;
setFrequency(1114);
pinMode(pin,OUTPUT);