Entradas y Salidas Analógicas y Digitales
Entradas y Salidas Analógicas y Digitales
Entradas y Salidas Analógicas y Digitales
Por
Antony García González
-
diciembre 22, 2015
2
23243
El propósito de este documento es explicar de la manera más sencilla posible los
conceptos de entradas y salidas analógicas y digitales, en cuanto a
microcontroladores se refiere. Lo primero que haremos será definir los conceptos
principales.
Conceptos Importantes
Microcontrolador
Según la Wikipedia:
cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres
Si desea usted conocer un poco más sobre este tema, recomiendo revisar el artículo
de Gustavo Circelli:
Entrada/Salida
Es probable que alguna de estas acciones tenga que ver con una salida. Las salidas
son terminales que entregan señales de voltaje. Pensemos en un LED conectado a
una salida de un Arduino. Veamos un ejemplo:
Las señales analógicas y digitales son dos mundos completamente distintos, pero que
a su vez están estrechamente relacionados. Pensemos, por ejemplo, en un
termómetro. Si tenemos termómetros, uno analógico (de aquellos con mercurio en su
interior) y uno digital, ambos cumplen con la misma tarea de medir la temperatura.
Sin embargo, la metodología que utilizan es completamente distinta, así como la
forma como presentan los resultados de las mediciones.
El sensor tiene 3 patas, una para la alimentación de 5 voltios, una para el GND y otra
para entregar la data. En el terminal de la data es donde podremos medir un voltaje
que variará desde 0 hasta 5 voltios, dependiendo de la temperatura. Según la hoja de
datos, la resolución del LM335 es de 10 milivoltios por cada grado Kelvin. Esto quiere
decir que si tenemos 300 K de temperatura, el sensor debe entregar 3 voltios. Si
subimos a 500 K, entonces la salida será de 5 voltios.
En el caso de la transmisión por radio se utilizan ondas de voltaje que pueden variar
su amplitud (AM – Amplitud modulada) o su frecuencia (FM – Frecuencia Modulada).
Es decir, en las señales analógicas es relevante la amplitud y la frecuencia. En el caso
del sensor LM335, la señal de salida del sensor es de corriente directa, por lo que no
posee frecuencia. En dichos casos solo se toma en cuenta la amplitud. Cuando se
habla de radiofrecuencia, las señales son alternas (ondas sinusoidales), por lo que es
necesario tomar en cuenta tanto la amplitud como la frecuencia.
En este diagrama vemos un tren de pulsos propio de una señal digital. Se establece
que el pulso debe durar determinada cantidad de tiempo (normalmente unos
cuantos microsegundos). Vamos a interpretar esta señal:
Las señales digitales están basadas en secuencias de pulsos a alta velocidad que
permiten la comunicación entre dos o más dispositivos. Son el principio básico de las
computadoras tal como las conocemos hoy (incluyendo celulares, tablets, etc). La
transmisión de información por Internet se da a través de secuencias de unos y ceros.
Los datos viajan por paquetes. Por ejemplo, si la gráfica del tren de pulsos se
extendiera necesitaríamos establecer el tamaño de los paquetes de datos. Si
recibimos 11 bits y el tamaño del paquete es de 11 bits, entonces el próximo pulso
formaría parte de un nuevo paquete. Sin embargo, si el paquete fuese de 4 bits,
tendríamos 2 paquetes completos y un tercer paquete incompleto (en vez
de 01001100011 sería 0100 1100 011; en vez de 611 tendríamos 4-12-paquete
incompleto).
Como vemos, se trata de un tren de pulsos. La línea negra representa la señal enviada
por el microcontrolador, mientras que la línea gris es la respuesta enviada por el
sensor al microcontrolador. De esta forma, en una sola línea se transmite y recibe
información.
Entrada Analógica
Los microcontroladores poseen la capacidad de leer niveles de voltaje de tipo TTL. Por
ejemplo, un Arduino común y corriente podrá leer voltajes entre 0 y 5 voltios por
defecto (no se debe superar los 5 voltios). Para ello posee una serie de pines
llamados Entradas Analógicas.
El Arduino UNO posee 6 entradas analógicas (A0-A5), mientras que otros modelos
como el NANO (8 entradas) o el MEGA (16 entradas) poseen puertos adicionales,
aunque todos poseen la misma limitante: no pueden leer voltajes superiores a 5
voltios. Repetimos: NO SE PUEDEN APLICAR VOLTAJES SUPERIORES A 5 VOLTIOS.
Para leer los niveles de voltaje, los microcontroladores utilizan un circuito integrado
llamado Convertidor Analógico-Digital, el cual utiliza un proceso llamado muestreo. En
Panama Hitek el amigo Gustavo Circelli presentó para nosotros un aporte sobre este
tema:
Un circuito sencillo, con una resistencia fija y una resistencia variable. Al modificar el
valor de la resistencia variable se modifica el voltaje donde colocamos el Test Point.
Si conectamos el punto donde está el Test Point a 5 de las entradas analógicas del
Arduino y le pedimos que nos imprima los valores, obtendremos el siguiente
resultado:
A1: 512
A2: 586
A3: 682
A4: 819
A5: 1023
Para mayor información sobre las lecturas analógicas en Arduino, los invitamos a
revisar el aporte de Ricardo Montenegro sobre este tema:
En esta entrega se llevan las lecturas analógicas a la práctica. Muy recomendable para
principiantes.
Salida Analógica
Las salidas analógicas son señales de voltaje generadas por el microcontrolador. Por
ejemplo, si el usuario desea que un pin en específico entregue 3 voltios, lo podrá
lograr. Si se desea que dicho voltaje suba o baje, esto será posible con la
programación adecuada. Para ello se utiliza un circuito llamado Convertidor Digital
Analógico (DAC).
Este dispositivo utiliza sumadores de voltaje y trabajan según una resolución. Un DAC
con una resolución de 10 bits y un voltaje máximo de 5 voltios podrá producir voltajes
en aumentos de 5/1024 voltios, es decir, 0.0048828125 voltios.
Los Arduinos no incluyen un DAC dentro de los circuitos que forman la placa, por lo
que no son capaces de producir salidas analógicas. Sin embargo, dentro del lenguaje
Arduino podemos encontrar la función analogWrite. Esta función fue diseñada para
que el Arduino produzca una salida de PWM, lo cual no es una modulación de
amplitud de señal, sino modulación por ancho de pulsos, lo cual no es considerado
como una señal analógica, sino como una señal digital. Arduino no es capaz de
entregar voltajes variables de forma nativa.
Entrada Digital
Salida Digital
Las salidas digitales son las terminales de un microcontrolador que permiten entregar
un voltaje a un carga. Normalmente, las terminales de salida son las mismas
terminales de entrada, con la diferencia de que dentro de la programación del
microcontrolador se debe establecer la función que cumplirá determinado terminal
en un momento dado.
Por ejemplo, para utilizar el sensor DHT22 se necesita que un mismo terminal
funcione como salida y luego como entrada, tal como se puede observar en el
diagrama donde se muestra el tren de pulsos para la lectura de datos.
Los terminales de salida han sido diseñados para entregar señales de voltaje, no para
suplir corriente a un circuito. En un microcontrolador como Arduino, el máximo de
corriente que puede entregar un terminal de salida es de aproximadamente 40 mA, lo
cual es muy poco, pero más que suficiente para, por ejemplo, encender un LED o
saturar un transistor BJT.
En Panama Hitek hemos escrito varias veces sobre cómo controlar cargas en voltajes
superiores a los 5 voltios:
También es posible manejar cargas de corriente alterna, en voltajes tan altos como
120VAC o superiores:
Las función principal de las salidas digitales es entregar una señal de control que le
dará funcionalidad a un circuito electrónico que será el encargado de cumplir con las
funciones que el usuario requiera. Los microcontroladores no han sido diseñados
para alimentar cargas sino para controlar cargas, lo cual no exige el manejo de altos
voltajes o altas corrientes. Con la electrónica adecuada, un Arduino común y corriente
puede cumplir con las funciones de un PLC o cualquier dispositivo de control de
avanzada.