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

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

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);