Documente Academic
Documente Profesional
Documente Cultură
muestreo
cuantización
codificación
LEY DE NYQUIST
El ingeniero sueco Harry Nyquist formuló el siguiente teorema para obtener una grabación digital de
calidad:
“La frecuencia de muestreo mínima requerida para realizar una grabación digital de calidad, debe ser
igual al doble de la frecuencia de audio de la señal analógica que se pretenda digitalizar y grabar”.
Es decir, que la tasa de muestreo se debe realizar, al menos, al doble de la frecuencia de los sonidos más
agudos que puede captar el oído humano que son 20 mil hertz por segundo (20 kHz). Por ese motivo se
escogió la frecuencia de 44,1 kHz como tasa de muestreo para obtener “calidad ”, pues al ser un poco más
del doble de 20 kHz, incluye las frecuencias más altas que el sentido del oído puede captar.
PASOS PARA LA CONVERSIÓN
para convertir una señal analogica en digital el primer paso consiste en
realizar un muestreo (sampling) de esta, o lo que es igual, tomar ■ 24 000 muestras por segundo (24
diferentes muestras de tensiones o voltajes en diferentes puntos de la kHz)
onda senoidal. La frecuencia a la que se realiza el muestreo se denomina ■ 30 000 muestras por segundo (30
razón, tasa o tambien frecuencia de muestreo y se mide en kilohertz kHz)
(kHz). En el caso de una grabación digital de audio, a mayor cantidad de ■ 44 100 muestras por segundo
muestras tomadas, mayor calidad y fidelidad tendrá señal digital (44,1 kHz) (Calidad de CD)
resultante. ■ 48 000 muestras por segundo (48
kHz)
Durante el proceso de muestreo se asignan valores numéricos
equivalentes a la tensión o voltaje existente en diferentes puntos de la
sinusoide con la finalidad de realizar a continuación el proceso de
cuantización.
En la mayoría de proyectos que realizamos con Arduino necesitamos que la placa conozca magnitudes del mundo
real, como pueden ser de luz o temperatura, para que esta active una serie de actuadores, como pueden ser
motores o leds. Para ello las placas de Arduino cuentan con entradas analógicas con las que, a través, de
sensores, medimos dichas magnitudes. Las dudas vienen, cuando nos planteamos que un ordenador o
microcontrolador en este caso, es un sistema digital y las magnitudes que deseamos medir son analógicas, por
ello necesitamos un sistema que pase de analógico a digital, el cual llamaremos ADC (Analog digital coverter).
Como es lógico Arduino cuenta con un ADC. Este conversor ADC va conectado a un multiplexor, para que así,
con uno solo de estos podamos tener varías entradas, como es en el caso de las placas Arduino que normalmente
cuenta con 6 de estas. La Arduino MEGA en cambio cuenta con 16 entradas analógicas.
EJEMPLO teórico void setup(){
Serial.begin(9600);
muestreo();
void loop(){
}
}
Ejemplo teórico
Activando el serial monitor podremos ver
los resultados de nuestro experimento:
Excepto en la primera medida, las demás
tiene un tiempo de muestreo de 112
microsegundos, lo que equivale a una
frecuencia de muestreo de 8.928 kHz,
podemos tomar por válido ya que estoy
utilizando una placa Arduino UNO.
Además debemos tener en cuenta una
pequeña pérdida de tiempo que tenemos
al guardar y calcular las variables time1 y
time.
Ejemplo teórico
Otro factor a tener en cuenta del ADC es su resolución, para ello hablamos de los bits de resolución
que tiene, los bits no permiten hacer combinaciones, cuantos más tengamos mayor número de
combinaciones podremos hacer, cada una de estas combinaciones muestra una medida del sistema
analógico, la cantidad de medidas que tenemos serán 2 elevado al número de bits de resolución. Puesto
que Arduino UNO, en mi caso, tiene un ADC de 10 bits de resolución tendrá 1024 combinaciones. La
placa Arduino DUE por ejemplo cuenta con un ADC de 12 bits (4096 combinaciones). Pero hay un
segundo factor que interviene en la resolución, es el rango de medida, El rango de Voltaje de las placas
Arduino por defecto es de 5v o 3.3v. Con esto sabemos que en voltios tenemos una resolución igual a;
En la práctica
A continuación haremos un ejemplo con Arduino de la resolución midiendo el voltaje en un potenciómetro,
iremos girando las manecilla del potenciómetro y veremos que conversión da el ADC y a que corresponde en
voltaje. Comprobaremos además que el paso calculado antes de 4.88mV es correcto.
Una vez compilado el código, abrimos el serial monitor y comenzamos a girar el potenciómetro
para ver qué sucede, si ha sido montado correctamente, nos salió lo siguiente:
A partir de estos datos reales podemos conocer el resolución tenemos cuando trabajamos en el rango de voltaje de
0 a 5v, para ello cogemos dos muestras cuales quieras, por ejemplo la 21 y la 22 y hacemos lo siguiente:
Entonces pudimos comprobar que esto es cierto, ya que la resolución medida ha cuadrado con la teórica.
La conversión de una señal entrante análoga resulta en un
correspondiente numero digital de n bits. El modulo ADC tiene una
referencia de voltaje alta y baja “VREF” que es seleccionable a
través del software del microcontrolador por una combinación de
VDD, VSS, VREF+ o VREF-.
𝐶𝑉𝑅𝐶𝑂𝑁<3:0>
𝑉𝑅𝐸𝐹 = ∗ 𝑉𝐷𝐷
24
𝑏 ′ 𝑌𝑌𝑌𝑌 ′
𝑉𝑅𝐸𝐹 = ∗ 𝑉𝐷𝐷
24
ANSEL REGISTER
𝑈−0 𝑅/𝑊 − 1 𝑅/𝑊 − 1 𝑅/𝑊 − 1 𝑅/𝑊 − 1 𝑅/𝑊 − 1 𝑅/𝑊 − 1 𝑅/𝑊 − 1
Donde,
“X”: Puede ser A, B, C, etc.
“R”: Bit de solo lectura (Readable)
“W”: Bit manipulable o de escritura (Writable)
“1”: Bit puesto como set
“0”: Bit establecido como cleared o limpiado
“U”: Unused por defecto se pone en 0 y como se ve, no
posee las terminologías “R” o “W”.
ADCON0 REGISTER
𝑅/𝑊 − 0 𝑅/𝑊 − 0 𝑅/𝑊 − 0 𝑅/𝑊 − 0 𝑅/𝑊 − 0 𝑅/𝑊 − 0 𝑈−0 𝑅/𝑊 − 0
GO/DONE(
ADCS1 ADCS0 CHS2 CHS1 CHS0 --- ADON
𝑏𝑖𝑡 7 N) 𝑏𝑖𝑡 0
Harry Nyquist