Entradas y Salidas Analógicas y Digitales

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

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:

Un  microcontrolador  es un circuito integrado programable, capaz de ejecutar las

órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los

cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres

principales unidades funcionales de una computadora: unidad central de procesamiento

(CPU), memoria y periféricos de  entrada/salida.

Un ejemplo clásico de un microcontrolador, es el ATmega328P integrado en el modelo


Arduino UNO. Sin embargo, el microcontrolador no es específicamente todo el
conjunto que se encuentra en la placa azul cuando nos hablan de Arduino.
Ese chip (o circuito integrado) que hemos enmarcado en color rojo es el
microcontrolador. El resto de la placa que forma el Arduino contiene los componentes
necesarios para que el microcontrolador funcione, así como el hardware necesario
para que el usuario pueda conectar el Arduino por USB a la computadora y pueda
programar instrucciones que después serán bajadas al chip, lo cual coincide con la
definición de “circuito integrado programable”.

Si desea usted conocer un poco más sobre este tema, recomiendo revisar el artículo
de Gustavo Circelli:

 Microcontroladores o Arduino, ¿no es lo mismo?

Sin duda, un excelente aporte.

 Entrada/Salida

Los microconroladores poseen una serie de terminales (también llamados pines o


patas) que funcionan como entradas y salidas de señales analógicas y/o digitales.

Para comprender el concepto de entradas y salidas podemos pensar en señales de


voltaje. Una entrada es un terminal que permite que se le aplique una señal de
voltaje, lo cual le permite al microcontrolador interpretar que algo está sucediendo y
que se debe comportar de una forma determinada. Veamos un ejemplo:
Diagrama de conexión de un interruptor sencillo
En este diagrama podemos observar un sencillo circuito con un interruptor y una
resistencia. El TP es un Test Point (punto de prueba) que nos permite medir el voltaje
en el punto donde ha sido colocado. Cuando el interruptor está abierto, el voltaje
registrado es 0 voltios. Cuando se presiona el botón se cierra el interruptor y el voltaje
alcanza 5 voltios. Si donde colocamos el Test Point sacamos una conexión hacia una
entrada del microcontrolador, al presionar el botón éste registrará los 5 voltios y
podrá interpretar que el botón ha sido presionado. Entonces, por medio de la
programación adecuada, se ejecutarán las acciones que el programador haya
establecido.

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:

Como vemos, el LED se enciende durante un segundo, se apaga por un segundo y


nuevamente vuelve a encenderse. Es el clásico ejemplo Blink de Arduino. Esto es
posible al implementar una salida del microcontrolador, donde el terminal ha sido
programado para que entregue una señal durante un segundo y luego deje de
entregar esa señal durante un segundo. La programación se repite cíclicamente,
permitiendo que la salida entregue la señal de forma alternada con periodos donde
no se entrega voltaje al LED.
En resumen, las entradas permiten al microcontrolador percibir señales e interpretar
fenómenos a partir de ellas. Las salidas le permiten al microcontrolador interactuar
con el mundo real a través de los circuitos electrónicos, al poder entregar una señal
de voltaje.

 Señales analógicas y digitales

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 termómetro analógico nos muestra la temperatura en base al nivel que registra el


mercurio dentro de un tubo de vidrio, donde la temperatura dilata o comprime el
mercurio, lo que le permite aumentar o disminuir su volumen. A mayor volumen,
mayor temperatura. Se ha colocado convenientemente una escala junto al tubo
donde se encuentra el mercurio, lo cual permite que el usuario pueda cuantificar la
temperatura en grados.

El termómetro digital también nos da la temperatura en celcius, pero utilizando un


procedimiento completamente distinto al del termómetro analógico. Los
termómetros digitales utilizan semiconductores, cuyas propiedades varían en función
de la temperatura. A través de un proceso llamado muestreo se logra determinar la
temperatura, la cual es proyectada al usuario a través de una pantalla.

De forma similar, los microcontroladores pueden recibir o entregar señales


analógicas o digitales. Para explicar mejor estos conceptos, utilizaré como referencia
dos sensores de temperatura: el LM335 (analógico) y el DHT22 (digital).

Las señales analógicas son aquellas donde el voltaje varía en función del valor de la


señal. Por ejemplo, el sensor LM335 es un sensor analógico. Esto quiere decir que
podremos leer la temperatura que este registra si medimos el voltaje que está
entregando.

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.

De la misma forma como el nivel de mercurio representa la temperatura en el


termómetro analógico, el nivel de voltaje representa la temperatura en el sensor
analógico. Este es el principio de funcionamiento de la transmisión por radio, la
televisión analógica y muchas otras tecnologías utilizadas hoy en día.

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.

Señales de corriente directa (izquierda) y corriente alterna (derecha)


Las señales digitales pueden tener 2 estados bien definidos en un momento dado:
HIGH y LOW, es decir, encendido o apagado. Cuando se trabaja con señales digitales
no importa cuanto voltaje se esté aplicando, el microcontrolador solamente distingue
2 estados, ya sea encendido o apagado.

Es tal como pudimos observar en la figura del diagrama de conexión de un


interruptor sencillo. Al presionar el botón obtenemos un HIGH y al soltarlo
obtenemos un LOW (0 voltios = LOW; 5 voltios = HIGH). Las señales digitales están
compuestas de secuencias de pulsos HIGH y LOW. Cuando tenemos una serie de
pulsos HIGH y LOW simultáneos logramos transmitir información. Los pulsos HIGH y
LOW son traducidos a 1 y 0, lo cual permite utilizar lenguaje binario, que es el
lenguaje de las máquinas o computadoras.

Veamos un ejemplo de una señal digital:

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:

 Cuando tenemos un pulso bajo, estamos recibiendo un “0”.


 Un pulso alto representa un “1”.
 Un pulso bajo que dure más del tiempo establecido para cada intervalo es
considerado como una repetición de pulsos bajos, por lo que se cuentan
dos ceros (“00”),
 Luego hay un pulso alto que dura 2 intervalos, por lo que se consideran dos
unos (“11”).
 Se produce un pulso bajo que dura 3 intérvalos (“000”) y luego un pulso alto
de dos intervalos (“11”).

Hemos recibido 11 “bits”. Estos 11 bits forman el número 01001100011, el cual es un


número binario. Podemos transformar este número a un valor decimal: 01001100011
equivale a 611 en decimal (ver calculadora on-line de binario a decimal).

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

Existe protocolos de comunicación en donde a información se transmite ya sea desde


una línea o varias. Tales son los casos de UART SPI, I2C, etc.

En cuando al sensor DHT22 la hoja de datos nos muestra el procedimiento a seguir


para la obtención de las lecturas de temperatura:

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.

Si se revisa más adelante en la hoja de datos se encuentran referencias a los tiempos


que deben durar los pulsos para ser considerados altos o bajos.
Vemos que los tiempos son de apenas unos cuantos microsegundos. Esta secuencia
de pulsos es la que le permite al microcontrolador solicitar información al sensor y
que éste pueda responder.

Consideramos que la comparación entre el LM335 y el DHT22 representa muy bien


los conceptos de señales analógicas y digitales: para leer el sensor LM335 (analógico)
basta con medir el voltaje a la salida del mismo y dividirlo entre 10mV para obtener la
cantidad de grados Kelvin; para leer el sensor DHT22 (digital) es necesario enviar una
secuencia de pulsos altos y bajos con los cuales el sensor responderá con otra
secuencia de pulsos, los cuales serán interpretados a través de lenguaje binario por el
microcontrolador. Al usar señales analógicas estamos utilizando niveles de voltaje; al
utilizar señales digitales utilizamos secuencias de unos y ceros.

Entradas y Salidas Analógicas y Digitales

 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:

 Escalando unidades de conversión Analógica-Digitales

Los convertidores Analógico-Digital poseen una característica llamada resolución. Los


modelos de Arduino poseen una resolución de 10 bits, lo cual significa que,
dependiendo de la referencia (normalmente de 0 a 5 voltios), el circuito
“descompone” el voltaje en la entrada en 1024 partes iguales (10 bits, 2^10 es 1024).

Si tuviésemos un convertidor de mayor resolución, digamos 12 bits, entonces el


voltaje se dividiría en 4096 partes iguales (2 elevado a la 12 es 4096). Entonces a la
salida del convertidor, el voltaje leído representará alguno de los valores binario entre
0 y 4095. Cuando se tienen 0 voltios, el convertidor registrará 0. Si se tienen 5 voltios,
el convertidor registrará 1023 si la resolución es de 10 bits y 4095 si la resolución es
de 12 bits.

Este número que nos devuelve el convertidor es proporcional al voltaje leído en la


entrada del convertidor. Todos y cada uno de los pines analógicos del Arduino
pueden leer diferentes niveles de voltaje, siempre y cuando no superen los 5 voltios.
Al ser 10 bits la resolución máxima del Arduino, los niveles mínimos de voltaje que
podrá registrar es de 5/1024 que es igual a 0,0048828125 voltios. Es decir, el Arduino
no podrá registrar variaciones de voltaje inferiores a 0,0048828125 voltios.

Para comprender esto, veamos un ejemplo:

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

¿De donde salieron estos valores? Recordemos que el microcontrolador divide el


voltaje entre 0 y 5 voltios en 1024 partes. Cuando vemos el número 512, esto significa
que el Arduino está registrando en su entrada 512 partes de las 1024 en que dividió el
voltaje de 5 voltios. Podemos transformar estas lecturas en voltajes si los
multiplicamos los valores por la fracción 5/1024. Así, obtenemos los valores 2.5, 2.86,
3.33, 4 y 5, los cuales son los voltajes en los divisores de tensión. Así, el valor de 1023
corresponde a 5 voltios debido a que en la entrada el convertidor está registrando las
1023 partes en las cuales se ha dividido el voltaje, es decir, la escala completa.

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.

Si deseamos que el voltaje en la salida sea de 0.006 voltios, no lo podremos lograr, ya


que el DAC solo puede producir 0,0048828125 volts, luego 0,009765625,
luego 0,0146484375 (es decir, 0.00488 x 2, luego x3, y así sucesivamente).

Si deseamos que nuestro circuito genere 0.006 voltios a la salida necesitaremos un


DAC de mayor resolución, probablemente de 12 o 14 bits, aunque estos serían
dispositivos mucho más caros que un DAC de 10 bits.

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.

Para mayor información sobre conversión Digital-Analógica recomiendo este post de


Kiara Navarro:

Si desea conocer un poco más sobre PWM, recomiendo este post:

El PWM es utilizado para disminuir la intensidad luminosa de los LEDs, o la velocidad


de los motores.

 Entrada Digital

Las entradas digitales permiten recibir señales de voltaje. Por ejemplo, en


el diagrama de conexión de un interruptor sencillo si remplazamos el TP por una
conexión a una entrada digital, cada vez que presionemos el botón la entrada pasará
a HIGH; al soltar el interruptor la entrada pasará a LOW.

Un microcontrolador reconocerá un HIGH cuando se aplique más de 3 voltios (en los


microcontroladores que operan a 5 voltios, como la mayoría de los Arduinos) a un
terminal configurado como entrada digital; de lo contrario, el microcontrolador
reconocerá el estado lógico como LOW.

Como ya hemos explicado, las entradas digitales no reconocen niveles de voltaje


como tal, simplemente aceptan valores HIGH o LOW. El  umbral entre ambos estados
será un voltaje aproximadamente 60% del voltaje de operación (los 3 voltios) del
microcontrolador.

Es importante recordar que no podemos sobrepasar los límites de voltaje permitidos


por un determinado modelo de microcontolador. En el caso de Arduino, si se aplica
un voltaje mayor a 5 voltios en una entrada digital, el Arduino simplemente se
quemará. Lo mismo aplica para voltajes negativos, por lo que debemos asegurar que
el voltaje aplicado a una entrada digital se encuentre entre 0 y 5 voltios.

 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.

Esto es un criterio sumamente importante: al utilizar microcontroladores debemos


pensar que las cargas que vamos a manejar no deben superar los 5 voltios DC de
voltaje operativo y no deben consumir más de 40 mA. Sin embargo, esto no significa
que Arduino no sea capaz de manejar cargas con requerimientos de voltaje, corriente
o potencia superiores a los límites establecidos como máximos para un
microcontrolador.

En Panama Hitek hemos escrito varias veces sobre cómo controlar cargas en voltajes
superiores a los 5 voltios:

 Herramientas de control para Arduino: El BJT o Transistor de Unión Bipolar


(NPN y PNP)

También es posible manejar cargas de corriente alterna, en voltajes tan altos como
120VAC o superiores:

 Herramienta de control para Arduino: El TRIAC, conmutador para corriente


alterna
 Herramientas de control para Arduino: El relay o relevado

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.

Los conceptos descritos en esta entrega son sumamente importantes para la


comprensión del funcionamiento de cualquier tipo de microcontrolador o
microprocesador. Esperamos que lo que hemos tratado de explicar haya sido
comprendido. Cualquier duda, por favor no dude en escribirnos.

También podría gustarte