Está en la página 1de 5

I2C es un puerto y protocolo de comunicación serial, define la trama de datos y las

conexiones físicas para transferir bits entre 2 dispositivos digitales. El puerto incluye dos
cables de comunicación, SDA y SCL. Además el protocolo permite conectar hasta 127
dispositivos esclavos con esas dos líneas, con hasta velocidades de 100, 400 y 1000 kbits/s.
También es conocido como IIC ó TWI – Two Wire Interface.

El protocolo I2C es uno de los más utilizados para comunicarse con sensores digitales, ya
que a diferencia del puerto Serial, su arquitectura permite tener una confirmación de los
datos recibidos, dentro de la misma trama, entre otras ventajas.

La conexión de tantos dispositivos al mismo bus, es una de las principales ventajas.


Además si comparamos a I2C con otro protocolo serial, como Serial TTL, este incluye más
bits en su trama de comunicación que permite enviar mensajes más completos y detallados.

Los mensajes que se envían mediante un puerto I2C, incluye además del byte de
información, una dirección tanto del registro como del sensor. Para la información que se
envía siempre existe una confirmación de recepción por parte del dispositivo. Por esta
razón es bueno diferenciar a los distintos elementos involucrados en este tipo de
comunicación.

I2C – Esquema de comunicación y elementos


Siempre que hablamos de una comunicación oral, se entiende que es entre dos o más
personas. Como consecuencia podemos también indicar que en una comunicación digital
existen distintos dispositivos o elementos. En el caso de I2C se diferencian dos elementos
básicos, un MAESTRO y un ESCLAVO. La Figura-1, muestra una conexión típica de
tres dispositivos, el bus consiste de dos líneas llamadas, Serial DAta – SDA y Serial CLock
– SCL. Es decir, Datos Seriales y Reloj Serial. En particular al bus se le conectan dos
resistencias en arreglo pull-up, de entre 2.2K y 10K.

El MAESTRO I2C se encarga de controlar al cable de reloj, por sus siglas en inglés
llamada SCL – Serial CLock. Además el MAESTRO se encarga de iniciar y parar la
comunicación. La información binaria serial se envía sólo por la línea o cable de datos
seriales, en inglés se llama SDA – Serial DAta. Dos Maestros no pueden hacer uso de un
mismo puerto I2C. Puede funcionar de dos maneras, como maestro-transmisor o maestro-
receptor. Sus funciones principales son:

 Iniciar la comunicación – S
 Enviar 7 bits de dirección – ADDR
 Generar 1 bit de Lectura ó Escritura – R/W
 Enviar 8 bits de dirección de memoria
 Transmitir 8 bits de datos –
 Confirmar la recepción de datos – ACK – ACKnowledged
 Generar confirmación de No-recepción, NACK – No-ACKnowledged
 Finalizar la comunicación
El ESCLAVO I2C, generalmente suele ser un sensor. Este elemento suministra de la
información de interés al MAESTRO. Puede actuar de dos formas: esclavo-transmisor ó
esclavo-receptor.  Un dispositivo I2C esclavo, no puede generar a la señal SCL. Sus
funciones principales son:

 Enviar información en paquetes de 8 bits.


 Enviar confirmaciones de recepción, llamadas ACK

I2C – modos de comunicación


Los modos de comunicación en I2C se refieren a las distintas tramas que pueden formarse
en el bus. Estas tramas o modos dependen de por ejemplo, si queremos leer al sensor
esclavo, o si lo queremos configurar. Existen principalmente dos modos de comunicación:

 Maestro-Transmisor y Esclavo-Receptor. Este modo se usa cuando se desea configurar un


registro del esclavo I2C.
 Maestro-Receptor Y Esclavo-Transmisor. Se usa cuando queremos leer información del
sensor I2C.

Velocidad del puerto I2C


La velocidad del puerto I2C se refiere al tiempo que le toma al puerto transferir un bit de
información. Entonces, este valor se mide en bits/segundo. Típicamente vamos a encontrar
la referencia en ciclos/segundo o Herz. Existen tres velocidades estándar, 100Khz, 400Khz
y 1Mhz, es decir, 100kbits/s, 400kbits/s y 1000kbits/s. Por ejemplo, para la trama de la
Figura-2,  ese paquete de datos tiene 29 bits, por lo que a una velocidad de 100kbits/s le
tomaría al puerto 0.29 ms enviar la información.

El dato digital ó lógica que leerá cada uno de los dispositivos, corresponde el voltaje en los
flancos de subida de la señal de reloj – SCL.

Puerto serie

El puerto serie del Arduino Uno usa los pins 0(RX) y 1(TX). Estos están conectados al
controlador FTDI (ATmega 16u2) que es el que permite la traducción del formato serie
TTL a USB. Estos pins no pueden ser utilizados mientras se usa la comunicación serie.

El puerto serie del Arduino utiliza un buffer de 64 bytes. Para entender el uso del buffer
normalmente se usa el ejemplo de la sala de espera del médico. Esta sala de espera es el
buffer, que tiene una capacidad de 64 pacientes. Cada paciente es 1 byte. El médico va
atendiendo cada paciente uno por uno por orden de llegada. La enfermera que deja entrar a
los pacientes a la sala de espera son los baudios (la velocidad de recibir datos), cuando más
grande sea la velocidad, más gente entra en la sala. Si la sala está completa con 64
pacientes y llegan más, estos serán rechazados (drop o loss).

Para usar el puerto serie del Arduino hay varias funciones de programación que hay que
saber:

 -begin(velocidad)    Abre el puerto serie y establece la velocidad. La velocidad de


conexión (baudios o Baud Rate) es la velocidad que llegan los datos al puerto
serie. Normalmente se usa 9600bps o 115000bps.

-available()    Esta función devuelve el estado del buffer del puerto serie y rebela si hay
datos dentro de este.

-read()    Lee un carácter del buffer. Es importante entender que lee un solo carácter (byte).

-write()    Escribe caracteres a través del puerto serie. A diferencia de read(), escribe
tantos caracteres como quieras.

-print()    Imprime los datos al puerto serie como texto ASCII.

-println()    Imprime los datos al puerto serie como texto ASCII seguido de un retorno de
carro (ASCII 13, o ‘\r’) y un carácter de avance de línea (ASCII 10, o ‘\n’). Este
comando tiene la misma forma que Serial.print ().

-flush()    Vacía el buffer de entrada de datos.

-end()    Desactiva la comunicación serie, permitiendo a los pines 0(RX) y 1 (TX) ser
usadoscomo entradas o salidas digitales. Para volver a activar la comunicación serie, llamar
la función Serial.begin().

Para enviar y recibir datos, el Arduino utiliza el código ASCII

El display de 7 segmentos es un componente que se  utiliza para la representación de


números, es muy común encontrarlos en dispositivos electrónicos debido a su simplicidad.
Está  compuesto internamente por una serie de LEDS estratégicamente ubicados de tal
forma que forme un número 8.

A cada uno de los segmentos que forman el display se les denomina a, b, c, d, e, f y g y


están ensamblados de forma que se permita activar cada segmento por separado
consiguiendo formar cualquier dígito numérico. Muchas veces aparece un octavo segmento
denominado p.d. (punto decimal).

Existen dos tipos de display de 7 segmentos:

–          Ánodo común


–          Cátodo común

Estructura de los dos tipos de display:

El Display 16 segmentos es una forma de representar caracteres en equipos electrónicos.


Está compuesto de siete segmentos que se pueden encender o apagar individualmente. Cada
segmento tiene la forma de una pequeña línea. Muchos equipos electrónicos proporcionan
información al usuario mediante la utilización de señales luminosas, como la emisora
sintonizada en un equipo de radio o la lectura de tensión en un voltímetro digital. Para
representar las cifras numéricas se agrupan siete diodos en de segmentos. Estos diodos
tienen conectados entre si todos los ánodos o cátodos según el tipo.

Un Display de este tipo está compuesto por siete u ocho leds de diferentes formas
especiales y dispuestos sobre una base de manera que puedan representarse todos los
símbolos numéricos y algunas letras. Los primeros siete segmentos son los encargados de
formar el símbolo y con el octavo podemos encender y apagar el punto decimal. Cada uno
de los segmentos que forman la pantalla están marcados con siete primeras letras del
alfabeto (‘a’-‘g’).

Los hay de dos tipos: ánodo común y cátodo común.

En los de tipo de ánodo común, todos los ánodos de los segmentos están unidos
internamente a una patilla común que debe ser conectada a potencial positivo (nivel “1”).
El encendido de cada segmento individual se realiza aplicando potencial negativo (nivel
“0”) por la patilla correspondiente a través de una resistencia que límite el paso de la
corriente.
En los de tipo de cátodo común, todos los cátodos de los segmentos están unidos
internamente a una patilla común que debe ser conectada a potencial negativo (nivel “0”).
El encendido de cada segmento individual se realiza aplicando potencial positivo (nivel
“1”) por la patilla correspondiente a través de una resistencia que límite el paso de la
corriente.

También podría gustarte