Você está na página 1de 3

SEÑALES ANALÓGICAS: MUESTREO Y

DETECCIÓN
Jordy Bayas Escobar
Universidad de las Fuerzas Armadas “ESPE”
Eléctrica y Electrónica
Correo-e: jhordyb3@gmail.com

Resumen- El presente informe presenta formas de diseño y producción para algunas versiones del hardware
detección de una señal continua mediante Arduino Uno, la también están disponibles. "Uno" significa uno en italiano y se
cual su entrada es representada con el módulo sensor de eligió para marcar el lanzamiento de Arduino Software (IDE)
micrófono KY-038 que capta todas las condiciones de la
señal de entrada, y su salida es un display LCD, además de 1.0. La placa Uno y la versión 1.0 de Arduino Software (IDE)
contar con un buzzer el cual será el encargado de fueron las versiones de referencia de Arduino, ahora
transmitir la señal a dicho micrófono. evolucionaron a versiones más recientes. La placa Uno es la
primera de una serie de placas Arduino USB y el modelo de
Palabras Clave- Arduino, LCD, filtro referencia para la plataforma Arduino.

I. INTRODUCCIÓN
Como se ha venido desarrollando el procesamiento de
señales cada vez es más sofisticado, y preciso, esto debido a
los distintos instrumentos que se ocupa para su tratamiento, es
decir que pequeños procesadores pueden ser utilizados para
verificar la señal de la misma, en este informe se propone la
utilización de una tarjeta de desarrollador Arduino UNO,
además de ocupar la plataforma del código denominada
ARDUINO IDE, con ello se llevará acabo los distintos
procesos para poder identificar las características de una
determinada señal. Ilustración 1 Placa de desarrollador Arduino UNO

II. OBJETIVOS  Arduino IDE


 Desarrollar y verificar, la creación de un circuito que Es una aplicación multiplataforma que está escrita en el
pueda detectar señales en un rango específico, además de lenguaje de programación Java . Se utiliza para escribir y
demostrar su frecuencia, y la duración de la misma señal cargar programas en tableros compatibles con Arduino, pero
continua. también, con la ayuda de núcleos de terceros, tableros de
 Estables una correlación entre los datos mostrados en el desarrollo de otros proveedores.
El código fuente para el IDE se publica bajo la Licencia
LCD y la entrada análoga que exista en el micrófono.
Pública General de GNU , versión 2. El IDE de Arduino
admite los idiomas C y C ++ utilizando reglas especiales de
III. MARCO TEÓRICO estructuración de códigos. El IDE de Arduino suministra
una biblioteca de software del proyecto Wiring , que
 Arduino Uno proporciona muchos procedimientos comunes de entrada y
Es una placa de microcontrolador de código abierto basada en salida.
el microcontrolador Microchip ATmega328P y desarrollada
por Arduino.cc . La placa está equipada con conjuntos de pines
de entrada / salida (E / S) digitales y analógicas que pueden
interconectarse con varias tarjetas de expansión (blindajes) y
otros circuitos. La placa tiene 14 pines digitales, 6 pines
analógicos y programables con el Arduino IDE (Entorno de
desarrollo integrado) a través de un cable USB de tipo
B. Puede ser alimentado por un cable USB o por una batería
externa de 9 voltios, aunque acepta voltajes entre 7 y 20
voltios. También es similar al Arduino Nano y Leonardo. El
diseño de referencia del hardware se distribuye bajo
una licencia Creative Commons Attribution Share-Alike 2.5 y
está disponible en el sitio web de Arduino. Los archivos de Ilustración 2 Plataforma para el desarrollador
 Módulo KY-038 pasa banda esto servirá para detectar el cruce de la
El sensor tiene como característica que es altamente frecuencia que puede estar establecida en los 500Hz
sensible, por lo que su sensor de micrófono de en el buzzer, con el otro arduino.
condensador electret (EC) permite detectar un mínimo
 La salida del módulo micrófono se conecta a la
ruido producido en el ambiente. cuenta con un LED
indicadora de suministro de energía y por el otro extremo entrada analógica 𝐴0 , porque la entrada es censada de
cuenta con otra que indica la salida. Lo interesante de este manera analógica, por lo tanto se requiere la conexión
sensor, es que la señal que nos entrega es digital y en estas entradas.
analógica, lo cual nos permite decidir cuál utilizar según  La frecuencia en la que funciona el programa es
nuestras necesidades. Si necesitamos saber el valor del máxima hasta 3kHz, esto debido a los ciclos de reloj
sensor, podremos utilizar directamente la salida analógica
del arduino, además de que Arduino no es una
para conseguir los datos crudos. Sino, podemos utilizar la
salida digital, la cual se activa o se desactiva según si el herramienta de software matemático, esto se podría
sensor llega a medir la intensidad del sonido que le mejorar con MatLab.
configuremos, mediante el potenciómetro multi vuelta.  El potenciómetro se conecta a otra entrada análoga, la
cual varía en función del valor de resistencia del
potenciómetro, estos valores varían entre (0 a 255).
Estos valores benefician para que la entrada del
sensor tenga mayor sensibilidad, a los distintos
sonidos, además cuando se encuentra el led analógico
apagada se encuentra su salida en bajo, cuando se
detecte un sonido, se activara en alto.
 La muestra obtenida de la señal del buzzer pasa a
cuantificarse, en este proceso se mide el nivel de
voltaje de cada una de las muestras obtenidas, en 1
segundo aproximadamente.
 Al final se mostrará en el LCD los valores requeridos,
Ilustración 3 Módulo KY-038 y los cuales fueron demostrados haciendo la
utilización de bucles dentro del mismo código de
IV. IMPLEMENTACIÓN arduino.
A. Materiales
 1 Módulo de micrófono de voz para Arduino KY-038 C. Código Arduino
 2 Arduino Uno
*/
 1 Capacitor (1nf) #include <Wire.h>
#include <LiquidCrystal_I2C.h>
 1 Capacitor (100nf)
 2 Resistencias (330kΩ, 3,3kΩ) LiquidCrystal_I2C lcd(0x27,20,4);
long rango=2; // este es el rongo por el que se
 Pantalla LCD disparará la salida 2 y pasa a estado lógico 1
long ultimamedicion; // contiene el valor de la
 Buzzer
última medición que disparó a lógico 1, la salida 2
 Protoboard int ciclo=0; // 1=alto 0=bajo
int cambiodeciclo=0;
 Cables de Conexión int picodetension;
int valledetension=1023;
 Módulo Ic2
long contadorvisualizacion;
 Cable MDI long contadorciclo;
long f;
B. Procedimiento int pinzumbador = 13; // pin del zumbador
 El Arduino UNO posee un cristal que puede oscilar int frecuencia = 500;
hasta los 16MHz, es decir su ciclo de reloj, pero a su
vez la utilización completa de todos, sería void setup() {
lcd.init();
equivocado, es por eso decir que en realizar nuestra
lcd.backlight();
frecuencia de reloj recomendada es máximo hasta lcd.setCursor(10, 0);
1MHz
 Para eliminar utilizar de manera eficiente el Serial.begin(9600);
micrófono se puede permitir la utilización de un filtro
pinMode(A0, INPUT); // Se establece el pin
analógico 0 como pin de lectura de datos. if (sensorValue<valledetension) // Se cumple el
} ciclo de condición
void loop() { {
long sensorValue = analogRead(A0); // Se vuelca a valledetension=sensorValue; //Se asigna a la
la varibla sensorValue el valor de la tensión medida variable valledetensión el valor medido por la
por el pin 0 analógico entrada analógica cero
}
if (micros()>contadorvisualizacion+1000000) // }
Muestra por el puerto serie los resultados, if (ciclo==1 && cambiodeciclo==0)
transcurrido un segundo {
cambiodeciclo=1;
{ // Se imprime los resultados en el puerto contadorciclo++;
serie,además del LCD }
Serial.print(" Hz="); if (ciclo==0 && cambiodeciclo==1)
Serial.println(contadorciclo); {
lcd.setCursor(0,0); cambiodeciclo=0;
lcd.print("Hz: "); }// Inicializa un nuevo ciclo para poder medir otra
lcd.print(contadorciclo); vez la frecuencia en 1s
delay(10); }
rango=(2+((picodetension-valledetension)/5));
// Se calcula el rango más adecuado para la señal,
con el fin de reducir errores en señales con ruido de
fondo D. Funcionamiento
contadorvisualizacion=micros();//Se asigna a Cabe resaltar que se tiene que verificar primeramente la
la cariable contadorvisualización el tiempo en frecuencia en la cual se trabajara el buzzer, es decir cualquier
microsegundos que lleva el programa en ejercución. otra frecuencia que no esté en el rango que se le determino al
picodetension=sensorValue;//Se asigna a la buzzer, debe ser filtrada y eliminada es por eso que se debe
variable pico de tensión el valor de la tensión leida
colocar un filtro pasa banda, es decir que debe caer a -3db en
por el puerto analógico cero.
valledetension=sensorValue;//Se asigna a 500 Hz, si es el caso de la frecuencia escogida, a continuación,
valledetension el valor de la tensión leida en el se para a través del micrófono, mediante el cálculo, se detectara
puerto A0 el período establecido que puede ser de 1s, con ello se puede
contadorciclo=0; // Se pone en 0 el contador de detectar mediante el LCD la frecuencia que está siendo
hercios ingresada y a su vez el tiempo.
} 1
if (sensorValue >= ( ultimamedicion+rango) ) // La 𝑇=
𝑓
salida 2 pasa a 1 logico si la tensión medida en la
entrada analógica 0 es mayor que la anterior lectura
V. RESULTADOS
+ latensión de RANGO
{
ultimamedicion = sensorValue; // Se asigna a la A. Generador de Frecuencias
variable ultimamedicion el valor leído por la entrada
Resaltando que los resultados fueron óptimos se aplicó la
A0
ciclo=1; utilización de un generador de frecuencias de distintos niveles
if (sensorValue>picodetension) //Si la tensión donde se comportaba de manera natural hasta los 3kHz, por lo
medida por la entrada cero, es la mayor detectada, tanto, se puede apreciar correctamente la frecuencia donde se
se asigna a la variable pico de tensión el valor leído encuentra dicho generador mediante el programa realizado,
por la entrada A0 además, de observar que, si se aplica una medida constante, se
{
va apreciando continuamente en intervalos de 1s, los distintos
picodetension=sensorValue; // Se asigna el valor
leído a pico de tensión valores de la frecuencia dada, con esto podemos denotar que el
} algoritmo establecido funciona perfectamente.
}
if (sensorValue <= ( ultimamedicion-rango)) // La
salida 2 pasa a 1 lógico si la tensión medida en la
entrada analógica 0 es menor que la anterior lectura
- la tensión de RANGO
{
ultimamedicion = sensorValue; //
ciclo=0; // El ciclo se pone a cero es decir que el
voltaje empieza a bajar a cero, entonces pierde el
pico de voltaje

Você também pode gostar