Apéndice 8. Conversor analógico-digital (A/D)

De CNB
Ir a la navegación Ir a la búsqueda
Busca en cnbGuatemala con Google

Un conversor analógico-digital es un dispositivo electrónico capaz de convertir una señal analógica en un valor binario, en otras palabras, este se encarga de transformar señales analógicas a digitales (0's y 1's).

Conversor analógico-digital (A/D)

El dispositivo establece una relación entre su entrada (señal analógica) y su salida (Digital) dependiendo de su resolución . La resolución determina la precisión con la que se reproduce la señal original.

Esta resolución se pude saber, siempre y cuando conozcamos el valor máximo de la entrada a convertir y la cantidad máxima de la salida en dígitos binarios.

Resolución = +Vref/2n(n-bits)

Por ejemplo, un conversor A/D de 8-bits puede convertir valores que van desde 0V hasta el voltaje de referencia (Vref) y su resolución será de:

Resolución = Vref/256 (28)

Lo que quiere decir que mapeará los valores de voltaje de entrada, entre 0 y Vref voltios, a valores enteros comprendidos entre 0 y 255 (2n-1).

La tarjeta Arduino utiliza un conversor A/D de 10-bits, así que: Resolución = Vref/1024 (210)

Mapeará los valores de voltaje de entrada, entre 0 y Vref voltios, a valores enteros comprendidos entre 0 y 1023 (2n-1). Con otras palabras, esto quiere decir que nuestros sensores analógicos están caracterizados con un valor comprendido entre 0 y 1023. (Ver analogRead()).

Si Vref es igual a 5v, la resolución es aproximadamente de 5 milivoltios. Por lo tanto el error en las medidas de voltaje será siempre de sólo 5 milivoltios.

Caso de transmisión o envío de datos (comunicación) por el puerto serie:[editar | editar código]

Al enviar datos por el puerto serie, tenemos que tener en cuenta que la comunicación se realiza a través de valores con una longitud de 8-bits (Ver serialWrite(c) o serialRead(c) ), mientras que como ya se hemos indicado, el A/D (Convertidor) de Arduino tiene una resolución de 10-bits. 

Por ejemplo, si capturamos los valores de un sensor analógico (e.j. potenciómetro) y los enviamos por el puerto serie al PC, una solución podría se transformarlos en un rango entre 0 y 9 y en modo de codificación ASCII (carácter).

(dato capturado del sensor analógico * 9 / 1024) + 48;

0 ASCII -->decimal = 48

1 ASCII -->decimal = 49

etc.

En forma de código podría quedar como:

value1 = analogRead(analogPin1); //captura del valor de sensor analógico (0-1023)

serialWrite(treatValue(value1)); //volcado al puerto serie 8-bits

int treatValue(int data) {

return (data * 9 / 1024) + 48;// fórmula de transformación

}

Otra fórmula sería dividiendo por 4 ¿Esto es correcto? (1024/256)los valores capturados de los sensores analógicos, para convertirlos en valor de byte válido (0 - 255).

value = analogRead(analogPin)/4;

serialWrite(value);