You are on page 1of 36

ALARMA WIFI CON BLYNK

Introduce tu email:

SUSCRIBIRSE

Funciona por FeedBurner

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Funciona por FeedBurner
INTRODUCCIN AL I2C BUS

2 May o, 201 2 V icente Garca

INTRODUCCIN AL IC-BUS. COMENTARIOS


(ACTUALIZADA) RECIENTES
Luis en Fuentes de
Alim entacin y
Hablar del I2C bus, en nuestros das es, poco menos que Laboratorio

arriesgado, hay que afinar mucho en lo que se dice, ya que


Diego en Controladores
cualquiera ha realizado su descripcin y creo realmente
bsicos (Driv ers).
que hay muy buenas descripciones y de esas, se bebe el
conocimiento, por parte de muchos aficionados a la
electrnica, cuando tiene que utilizar esta tcnica de Vicente Garca en
Estetoscopio Electrnico
transmisin de datos como es el I2C-bus. I2C es un
acrnimo de Inter-Integrated Circuit. En esta ocasin,
espero exponer mi puntual experiencia y dar un poco de Jair en Estetoscopio
Electrnico
luz a los que estn interesados en conocer los pasos a seguir
para utilizar con xito esta tcnica de transmisin I2C.
Vicente Garca en
Hace ya muchos aos cuando tuve conocimiento del Controladores bsicos
sistema I2C bus, en aquellos momentos mi trabajo estaba (Driv ers).

relacionado directamente con la electrnica ms puntera de


la poca, lo que se conoca como, la cresta de la ola.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Ciertamente que no estaba en mi camino el hacer prcticas
(por motivos que no vienen al caso) de esta novedosa
tcnica que, present la firma Philips Semiconductors
ENTRADAS
(ahora NXP) a principios de los 80s, sin embargo, si puse
en manos de bastantes ingenieros de la poca y las RECIENTES
Universidades de la zona, la extensa informacin que ALARMA WIFI con BLYNK
provea la mencionada empresa. EL ESP82 6 6 com o Arduino.
EL MDULO ESP82 6 6 wifi.
Los ingenieros de Philips vieron la necesidad de la
CONVERSOR DE TENSIN DE
simplificacin y normalizacin de las lneas de datos que 1 2 V A 3 V3 .
viajan entre los diversos circuitos integrados en sus GLCD Nokia 51 1 0
productos. Su solucin fue el bus I2C. Esto redujo el
nmero de cables a dos (SDA los datos, y SCL reloj).

Esta documentacin, nace sabiendo que existen otras


muchas ms profundas, solamente pretende explicar desde
mi punto de vista que es y como se comporta
CATEGORAS
superficialmente una red IC, por si alguien necesita un Elegir categora

detalle diferente.

Se supone que usted, domina el sistema binario, decimal


codificado y hexadecimal, esto le servir para una mejor
comprensin.

UN MOTIVO PARA USAR EL I2C

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Es sabido que el playgrund de Arduino tiene una NUESTRAS
descripcin sobre el I2C TWI (Two-Wire Interface), se PUBLICACIONES
trata del I2C. En dicho documento, se habla del I2C y se
Blog de electrnica prctica
refiere a enlaces relevantes, para los que tengan inters en Blog de tecnologa Wireless
el tema. cablesy conectoreshoy .com
com unicacionesinalam bricash
Por mi parte, he de decir que, hasta hace algn tiempo, no oy .com
haba puesto ningn empeo en ampliar mis conocimientos diarioelectronicohoy .com

sobre la transmisin de datos, tal vez por que no haba Electrnica Hispav ila.com
fibraopticahoy .com
tenido la necesidad. Sin embargo hace poco ms de un ao
Foro tcnico para instaladores
cuando empec a utilizar en mis ratos libres el Arduino, de fibra ptica
descubr que dispona de dos patillas que estn dotadas de industriaem bebidahoy .com

este protocolo o sistema de transmisin y bueno, mi inters instaladoresdetelecom hoy .com


instrum entacionhoy .com
no paso de la curiosidad del momento, por lo que no entre
NTDhoy .com
en detalle. seguridadprofesionalhoy .com

Por aquellos das, tuve un encuentro casual con un amigo


que, me propuso realizar un sistema de acceso a una
empresa. En el proyecto por denominarlo de algn modo,
se deba controlar los vehculos que entraban y salan de la
RSS
empresa, por puertas de entrada y salida, el sistema deba
RSS
enviar datos a un PC central, en el cual se encuentran los
permisos de los vehculos autorizados En cierto momento
del proyecto, se present la necesidad de utilizar el sistema
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
del bus IC, para economizar en las E/S del Arduino y ese
es el momento en el que surge la necesidad de conocer ms META
a fondo el modo en que se basa y como trabaja el
Acceder
mencionado protocolo. RSS de las entradas
RSS de los com entarios
Mis primeros paso fueron la adquisicin de datos, aquellos
WordPress.org
libros de Philips que guarde, ahora seran vitales, adems
de informacin que, extraje de varios documentos de
dominio pblico que, se encuentran en la red y otros libros
actuales que lo relacionan con Arduino.

Entre la documentacin de TWI (Two-Wire Interface) que


es incompleta y no explica cada funcin, como corresponde
a una funcin IC, los ejemplos de cdigo que son
anticuados y de vez en cuando incorrectos, mi carencia de
familiaridad con IC en general, adems, no teniendo un
circuito IC en funcionamiento como referencia y desde
luego mis despistes y mis muchos errores, esto puso por un
momento a relucir una falta de experiencia desconcertante
por mi parte. Esto fue un reto.

Despus, me procur una serie de circuitos integrados que


tuvieran este protocolo entre sus cualidades, encontr
bastantes dispositivos basados en este protocolo del IC y
ya slo tena que poner manos a la obra, practicar y
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
practicar, buscar la forma de servirme de aquellas
posibilidades y adaptarlas a mis necesidades. No pas
mucho tiempo para tener el xito esperado, al principio
estuvo el tema de direccionar cada dispositivo, todos los
dispositivos diseados para funcionar en este bus poseen
su propia y nica direccin de acceso, preestablecida por el
fabricante. Poder leer una direccin, ni que decir, de
escribir en una direccin, recomiendo leer las HD del
fabricante para conocer dicha direccin. Esto ya pas, con
esto quiero decir a los interesados que, no es tan difcil
aprender y aplicar el protocolo del bus IC.

QU ES EL IC-BUS?

El IC bus, no tan slo son dos cables, usados para realizar


una transmisin bidireccional de datos entre distintos
sistemas gobernados por microcontroladores de forma
eficaz. Veremos, cmo podemos controlar un importante
nmero de dispositivos con nuestro Arduino, aunque, no es
fcil de dominar. Se trata de, un bus bidireccional que
utiliza dos lneas, una de datos serie (SDA) y otra de reloj
serie (SCL), que requiere resistencias de polarizacin a
positivo (RPA). SCL es la lnea de reloj, se utiliza para
sincronizar todos los datos SDA de las transferencias
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
sincronizar todos los datos SDA de las transferencias
durante IC bus. SDA es la lnea de datos.

Las lneas SCL y SDA estn conectadas a todos los


dispositivos en el IC bus. Ambas lneas SCL y SDA son
del tipo drenador abierto asociados a un transistor de
efecto de campo (o FET), es decir, un estado similar al de
colector abierto. Esto significa que el chip puede manejar su
salida a BAJO, pero no puede manejar a ALTO. Para que la
lnea pueda ir a ALTO, se deben proporcionar resistencias
de polarizacin a 5V. Necesita de una resistencia de la lnea
SCL a la lnea de 5V y otra de la lnea SDA a la lnea de 5V.
Slo necesita un conjunto de resistencias de RPA (pull-up)
para todo el IC bus, no son necesarias para cada
dispositivo. La alimentacin del sistema, debe tener una
masa comn, tambin puede haber una alimentacin
compartida que, se distribuye entre los distintos
dispositivos.

Los dispositivos en el IC bus son maestros o esclavos. El


maestro, es siempre el dispositivo que maneja la
lnea de reloj SCL. Los esclavos, son los dispositivos que
responden al maestro. Un esclavo no puede iniciar una
transferencia a travs del IC bus, slo un maestro puede
hacer esa funcin. Generalmente son, varios esclavos en el

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
IC bus, sin embargo, normalmente hay un solo maestro.
Es posible tener varios maestros, pero es inusual y no se
comentar aqu. Los esclavos, nunca inician una
transferencia. Tanto el maestro, como el esclavo puede
transferir datos a travs del IC bus, pero la transferencia
siempre es controlada por el maestro.

Todas las direcciones IC bus son de 7 bits o 10 bits. Esto


significa que, se pueden tener hasta 128 dispositivos en el
bus IC, ya que un nmero de 7bit puede estar de 0 a 127.
El IC tiene un diseo de espacio de referencia de 7 bits de
direcciones, reservado con 16 direcciones, de modo que
finalmente, pueden comunicarse en el mismo bus un
mximo de 112 nodos. El nmero mximo de nodos est
limitado por el espacio de direcciones y tambin por la
capacidad total de los buses de 400 pF, lo que restringe la
prctica de comunicacin, a distancias de unos pocos
metros.

Cuando se enva la direccin de 7 bits, siempre seguimos


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
enviando 8 bits. El bit extra (bit 8) se usa para informar
al esclavo si el maestro est escribiendo o leyendo de l. Si
el bit 8 es 0, el maestro est escribiendo al esclavo. Si el
bit 8 es 1, el maestro esta en la lectura del esclavo.
Existen disposiciones en la norma de IC para entornos
multi-master, as como de 10 bits frente a la ms simple y
la ms comnmente usada, es la configuracin de un solo
maestro, de 7 bits de direccionamiento.

Yo se que, la localizacin de la direccin de 7 bits en la parte


superior del byte, es una fuente de confusin para los
recin llegados, pero intentar hacer un esfuerzo para dejar
lo ms claro posible este punto. No debera haber ningn
problema en que, los tres bits A0, A1 y A2
correspondientes a los pines 1, 2 y 3 seleccionan la
direccin del dispositivo, del P0 al P7 son los puertos de
E/S e INT, es una salida de interrupcin que no lo
usaremos. De modo que, para poner en servicio un
PDF8574, son necesarias dos cosas, la direccin del
dispositivo (b0100000) y un byte de datos para el pin de
salida que se necesita.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
De modo que, si ponemos los pines A0 ~ A2 a masa o GND,
la direccin de nuestro dispositivo en el sistema
binario ser 0100000, o 0x20 en formato hexadecimal. Y
con los bytes de datos, haremos lo mismo,
configurando as los pines de salida, por ejemplo: si
queremos poner todos a Alto (H), enviamos 0 en binario
que, en hexadecimal es 0, o bien para poner los cuatro
primeros a H y los segundos cuatro a L. Se utiliza
00001111 en binario que, en hexadecimal es 0x0F.

Se ha dado cuenta? Por qu razn estos datos parecen


estar al revs de lo que se ha comentado. Y por qu
enviamos un cero, convirtiendo todos los pines a H? El
motivo es, que las E/S del PCH8574 son sumideros de
corriente, esto quiere decir que, las corrientes circulan
desde los +5V, a travs de las cargas hacia los pines de E/S
del dispositivo. No olvidemos que estamos configurando los
datos del segundo byte y siguientes. Tratamos con las
entradas/salidas. Por dicho motivo, los valores de E/S que
establezcamos, se vern complementados en nuestra
instruccin.

Adems, en la instruccin, no hay que olvidar el bit0


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
(R/W), el de menor peso LSB (o Least Significant Bit, en
ingls) que le indica al bus I2C, la funcin del maestro,
segn su valor (0 para leer y 1 para escribir).

Nota: El octavo bit (LSB) es el que indica si la operacin


es, de lectura o escritura y es aadido automticamente
por el Arduino, por ese motivo, las direcciones I2C deben
ser de 7 bits.

Por ejemplo, para escribir en la direccin 0x21, realmente


se tiene que enviar 0x42, que es el 21 desplazado 1 bit a la
izquierda, para insertar el bit de lectura/escritura (R/W)
en el byte (recuerde 8bits). Veamos:
1 Bits 76543210
2 b 00100001 = 21 h; b00100001 x 10 = b01000010;
3 b 01000010 = 42 h

Esto es la base del protocolo IC-bus, el bus tiene dos


funciones para los nodos: maestro y esclavo. El
resultado de este sistema produce un anillo compuesto por
dos vas (hilos) para el desarrollo de la funcin de
comunicarse entre s, los dispositivos interconectados a las
mencionadas vas, esto permite comunicarse entre ellos
mismos con un protocolo que, consiste en que en cada
momento hay un MAESTRO y el resto son ESCLAVOS.
Un smil sera que, mientras uno habla, el resto
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
escuchan-, es decir, uno escribe y el resto leen.

En la figura anterior se puede apreciar que, la condicin


START est definida, cuando la seal de reloj SCL
permanece estable ALTO (H) adems, el nivel de la seal
de no reconocimiento, debe ser tambin ALTA (H), si en
ese preciso instante se produce un descenso (flanco de
bajada) en la seal de datos, automticamente se produce
la condicin de START (inicio) de la transmisin y el
dispositivo que la produjo se convierte en MAESTRO,
dando comienzo a la transmisin. El pulso de reconocer o
reconocimiento, conocido como ACK (del ingls
Acknowledge), se logra colocando la lnea de datos a un
nivel lgico bajo, durante el transcurso del noveno pulso de
reloj. Yo se, que esta parte, es mas compleja de lo que
parece, debe observar con atencin los pasos que sigue el
inicio de una transmisin en la figura que sigue.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Yo se, que esta parte, es mas compleja de lo que parece. Es
muy importante, debe observar con atencin, los cuatro
pasos que sigue el inicio de una transmisin, son los 4 bytes
de inicio, vea la figura anterior
1 . En el primer paso, el by t e que se env a es START, despus de
la condicin de Bit inicio (START) se env a un by te que,
contiene siet e bit s que com ponen la direccin del dispositiv o que
se quiere seleccionar y un oct avo bit R/W (que corresponde a la
operacin que se quiere realizar con l, lectura o escritura).
2 . El segundo paso, este by t e, contiene la direccin del registro
que se desea leer/escribir. Puede realizarse un reinicio com o se
m uestra en la figura.
3 . El t ercer paso, aqu se escribe la direccin con el bit m enos
significativ o LSB a niv el 1 , para indicar que se lee.
4 . El cuart o paso y siguientes continan la m ism a funcin de
lectura, no tiene por qu ser slo uno.

A cada byte transferido al bus, le sigue un noveno pulso


de reloj durante el cual, el dispositivo receptor, debe
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
generar un pulso de reconocimiento.

Para pasar a la funcin de escritura en el mismo


dispositivo, puede realizarse, enviando un bit de STOP o
de reinicio, considerado como parada e inicio. El paso que
sigue es, escribir el byte que contiene siete bits que
componen la direccin del dispositivo que se quiere
seleccionar y un octavo bit a 0 que corresponde a la
operacin que se quiere realizar con l, ahora escritura. Y
los pasos siguientes pueden ser como en el caso anterior.

Dicho esto, se debe resaltar que en el IC-bus se definen


tres tipos bsicos de mensajes, cada uno de los cuales
comienza con un START y se termina con una STOP.

1 a) Simple mensaje, donde un maestro escribe datos a un


esclavo.
2 b) Simple mensaje, donde un maestro lee datos de un es
clavo.
3 c) Mensajes combinados, donde un maestro publica y al
menos dos
4 leen/escriben a uno o varios esclavos.

En un mensaje combinado, cada uno, sea de lectura o


escritura comienza con un START y la direccin de esclavo.
Despus del primer START, tambin se pueden hacer
llamados repetidos bits de START, esto confirma que
repetidos bits START no vienen precedidos por bits de
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
STOP, que es como los esclavos conocen la prxima
transferencia que, es parte del mismo mensaje. Todo
esclavo puede slo responder a mensajes particulares, tal
como se define por su documentacin de producto.

Cuando el maestro ha terminado de escribir todos los datos


en el esclavo, se enva una secuencia de parada que
completa la transaccin. As que para escribir en un
dispositivo esclavo:
1 1. Enviar una secuencia de inicio (START).
2 2. Enviar la direccin I2C del esclavo ms el bit bajo
3 <strong>R</strong>/<strong>W</strong>.(0xC0 = b1100
000<strong>0</strong>)
4 3. Enviar el nmero de registro interno al que se quie
re
5 escribir.(ej. 0x00 = b0000 0000)
6 4. Enviar el byte de datos. (0x01 = b 0000 0001)
7 5. [Opcionalmente, enve algunos otros bytes de datos]
.
8 6. Enviar la secuencia de parada (STOP).

Para lograr este propsito, se parte de una palabra de


direccin, un byte, en los que debemos distinguir: el bit
START, con direccin del esclavo al que interrogar. Esta
direccin est formada por 4 bits de cdigo de control ms
tres bits (A0..A2) de seleccin de dispositivo y el bit de
escritura /lectura (R/W), por ltimo se enva el bit ACK
(reconocer) por que es el maestro el que est
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
transmitiendo.

FUNCIN ESCRITURA.

Cuando un dispositivo quiere decir algo se dirige al


dispositivo con el que quiere hablar, enva una seal
START (inicio) condicional y se procede al envo de un
byte con los siete bits que componen la direccin del
dispositivo esclavo con el que se quiere comunicar, mas un
octavo bit de menor peso que corresponde con la operacin
deseada (E/L), escritura = 0 (enviar al esclavo) y
lectura = 1 (recibir del esclavo), seguido del bit reconocer
ACK.

La direccin enviada es comparada por cada uno de los

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
esclavos del bus con su propia direccin, si ambas
coinciden, el esclavo se considera direccionado como
esclavo-receptor o esclavo-transmisor dependiendo del bit
de menor peso E/L. El esclavo responde enviando un bit de
reconocer ACK que le indica al dispositivo maestro que el
esclavo reconoce la solicitud y est en condiciones de
comunicarse. Y comienza el intercambio de informacin
entre ambos dispositivos.

El maestro enva la direccin del registro interno del


dispositivo, en el que se desea leer o escribir, el esclavo
responde con otro bit de reconocer, ahora el maestro
puede empezar a leer o escribir bytes de datos. Todos los
bytes de datos deben constar de 8 bits, el nmero mximo
de bytes que pueden ser enviados en una transmisin no
est restringido, siendo el esclavo quien fija esta cantidad
dependiendo de sus caractersticas. Esto se consigue por
que cada byte ledo/escrito por el maestro debe ser
obligatoriamente reconocido por un bit de reconocer por el
dispositivo maestro/esclavo.

Es conveniente recordar estos puntos que, el nmero de


bytes de datos transferidos entre las condiciones de inicio y
parada del transmisor al receptor no esta limitado. Cada
byte de ocho bits es seguido por un bit reconocer (ver Fig.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
6). El bit reconocer es un nivel ALTO puesto en el bus por
el transmisor mientras que el maestro genera un pulso de
reloj extra reconocer relacionado.

Un receptor esclavo cuando es direccionado debe generar


un reconocer despus de la recepcin de cada byte.
Tambin un maestro debe generar un reconocer despus
de la recepcin de cada byte que ha sido registrado desde
el esclavo transmisor. El dispositivo que reconoce tiene que
poner a BAJO la lnea SDA durante el pulso de reloj
reconocer, por lo que la lnea SDA es estable BAJO,
durante el perodo ALTO del pulso de reloj reconocer
relacionado, los tiempos de configuracin y mantenimiento
deben ser tenidos en cuenta.

A pesar de que el maestro normalmente controla el estado


de la lnea de reloj SCL , puede que un esclavo de baja
velocidad o que un esclavo deba detener la transferencia de
datos mientras efecta otra funcin, podra forzar la lnea
SCL a nivel bajo. Esto hara que el maestro entrase en un
estado de espera, durante el cual, no transmitir
informacin esperando a que el esclavo est listo para
continuar la transferencia en el punto donde haba sido
detenida. Cuando finaliza la comunicacin, el maestro
transmite una condicin de stop para dejar libre el bus.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
transmite una condicin de stop para dejar libre el bus.

FUNCION LECTURA.

La figura que sigue corresponde al registro en el modo


lectura. Siga las seales de la figura para comprender su
funcionamiento.

Esto es para comunicaciones simples IC casi todo, pero


hay una complicacin ms. Cuando el maestro lee del
esclavo, es el esclavo el que coloca los datos sobre la lnea
SDA, pero es el maestro quien controla el reloj. Qu pasa
si el esclavo no est listo para enviar los datos? Con
dispositivos tales como memorias EEPROM esto no es un
problema, pero cuando el dispositivo esclavo es en realidad
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
un microprocesador con otras cosas que hacer, puede ser
un problema.

El microprocesador del dispositivo esclavo tendr que ir a


una rutina de interrupcin, guardar sus registros de
trabajo, averiguar de que direccin quiere leer el maestro,
para obtener los datos y colocarlos en su registro de
transmisin. Esto puede tomar muchos uS para que ocurra,
mientras que el maestro est felizmente enviando pulsos
de reloj por la lnea SCL que, el esclavo no puede
responder.

El protocolo IC proporciona una solucin a esto: el esclavo


est autorizado a mantener la lnea SCL baja. Esto se llama
reloj de estiramiento. Cuando el esclavo recibe la orden de
lectura del maestro, este mantiene la lnea de reloj baja. El
microprocesador obtiene los datos solicitados, los coloca en
el registro de transmisin y libera la lnea de reloj que
habilita la resistencia RPA para finalmente dejarla a alto.

Desde el punto de vista de los maestros, se emitir el


primer pulso de reloj de lectura, haciendo SCL ALTO y
luego verificar si realmente se ha ido a ALTO. Si es
todava BAJO, entonces es el esclavo quien lo mantendr
BAJO y el maestro debera esperar hasta que este vaya
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
ALTO antes de continuar. Por suerte, los puertos de
hardware I2C en la mayora de los microprocesadores se
encargar de forma automtica.

NOTA.

Como se ha visto, el dispositivo maestro, para el caso de


lectura, enviar el primer pulso de reloj para la lectura de
datos del esclavo, liberando la lnea SCL para que pase a
ALTO, pero antes de continuar comprobar que SCL
realmente haya ido al nivel lgico 1, si la lnea SCL
permanece en BAJO, el dispositivo maestro interpreta que
el esclavo la mantiene as y espera a que SCL vaya a ALTO
antes de continuar. Cuando el maestro est leyendo desde
el esclavo, es el dispositivo esclavo quien pone los datos en
la lnea SDA del bus y el maestro es el que controla el pulso
de reloj.

Esto es lo que ocurre normalmente, sin embargo, que


ocurre si el esclavo no est listo para enviar un dato. Con
dispositivos como una EEPROMs esto no sera problema,
ya que son esclavos de otro dispositivo. Cuando el
dispositivo esclavo se trata de un microprocesador, el
cual se supone que tiene otras tareas que atender, aqu es
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
donde surge el problema. Dicho microprocesador, para
atender la llamada del dispositivo maestro, deber utilizar
una interrupcin, guardando el estado de sus registros de
trabajo en ese momento, determinar la direccin que desea
leer el maestro, tomar el dato y ponerlo en el registro de
transmisin.

En el tiempo que transcurre (micro segundos) con esta


transaccin, el dispositivo maestro estara enviando pulsos
de reloj ciegamente por la lnea SCL, sin que el dispositivo
esclavo le respondiera. Para este caso, el protocolo IC
ofrece una solucin; el esclavo puede mantener la lnea SCL
en BAJO, a esto se le llama estiramiento del reloj. Por
este motivo, cuando el esclavo recibe el comando de
lectura, lo primero que hace es poner la lnea de reloj en
BAJO, hasta que obtiene el dato solicitado, entonces lo
pone en el registro de transmisin e inmediatamente libera
la lnea de reloj, que pasar de inmediato a ALTO debido al
nivel que aporta la resistencia de polarizacin.

Mi experiencia personal en el uso del IC bus,


evidentemente debe mejorar con la prctica, del mismo
modo que ocurrir con la del lector interesado, si sigue
realizando proyectos y practicando con el sistema de
transmisin de datos entre dispositivos con micro-
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
controladores. La prctica ha ido mejorando mis
conocimientos sobre el I2C y algunas muestras se
encuentran en este sitio. Para una mayor informacin
refirase a las indicaciones del fabricante en
especificaciones del IC de Philips.

EL IC-BUS CON ARDUINO.

Actualmente existen muchas aplicaciones, para aplicar con


la placa Arduino; como un reloj en tiempo real,
potencimetros digitales, sensores de temperatura,
brjulas digitales, chips de memoria, servos, circuitos de
radio FM, E/S expansores, controladores de LCD,
amplificadores, etc. Y adems usted puede tener ms de
una idea para aplicar este bus, en cualquier momento,
como se ha dicho, el nmero mximo de dispositivos IC
utiliza en un momento dado es de 112 nodos.

Debe tenerse muy en cuenta el Arduino que est


utilizando, si es un Arduino Mega, el pin SDA, es pin 20 y el
SCL, es el pin 21, as que, tenga en cuenta que en los
escudos con IC, necesitan ser especficamente para el
Mega. Si usted tiene otro tipo de tarjeta, revise la hoja de
datos o consulte la pgina web de pruebas de hardware de
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Arduino. Y por ltimo, si usted est usando un
microcontrolador ATMega328 base DIP-PU, deber a
utilizar para SDA el pin 27 y SCL el pin 28.

Si slo est utilizando un dispositivo IC, las resistencias


RPA, no son necesarias ya que el microcontrolador
ATMega328 en nuestro Arduino las ha incorporado. Sin
embargo, si est empleando una serie de dispositivos,
utilice dos resistencias de 4k7 ohmios. Como todo, algunas
pruebas en un circuito protoboard o prototipo determinar
su necesidad. La longitud mxima de un bus IC es de
alrededor de un metro y es una funcin de la capacidad del
bus. Esta distancia se puede ampliar con el uso de un
circuito especial que no examinaremos en el presente
captulo.

Cada dispositivo se puede conectar al bus en cualquier


orden y como ya se ha mencionado, los dispositivos pueden
ser maestros o esclavos. En nuestra aplicacin el IDE
Arduino, es el maestro y los dispositivos que colguemos
en el bus IC son los esclavos. Podemos escribir datos en
un dispositivo o leer datos de un dispositivo. A estas alturas
ya no debe tener la duda cmo podemos diferenciar cada
dispositivo en el bus? Ms arriba, ya se ha documentado.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Cada dispositivo tiene una direccin nica. Nosotros
usaremos esa direccin en las funciones descritas ms
adelante, para dirigir nuestras peticiones de lectura o
escritura al dispositivo correcto.

Al igual que en la mayora de dispositivos, hacemos uso de


una librera Arduino, en este caso <wire.h>. A
continuacin, utilice la Wire.begin function(); dentro de la
configuracin del vod setup(); y estamos listos para
empezar.

ENVO de datos (sending), desde nuestro Arduino a los


dispositivos IC depende de dos cosas: la direccin nica
del dispositivo (que necesitamos est en hexadecimal) y al
menos un byte de datos a enviar. (Como ya se ha descrito
arriba).

Por ejemplo; la direccin del dispositivo en el ejemplo (de


abajo) es 00101111 (binario), que es 0x2F en hexadecimal.

Entonces debemos establecer el valor del puntero, que es


un valor entre 0 y 127, o sea 000 y 0x7F en hexadecimal.
As que para establecer el puntero a cero, usaramos las
funciones siguientes:

Wire.beginTransmission(0x68); // direccin nica 0x68

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
del ds1307

Esto enva la direccin del dispositivo por la lnea del bus


SDA (datos). Viaja a lo largo del bus, y avisa al dispositivo
correspondiente que tiene algunos datos que vienen

Wire.send(0x00); // inicia el puntero de la memoria del


ds1307 (es el byte)

Esto enva el byte de datos en el dispositivo en el registro


del dispositivo (o la memoria de todo tipo), que est
esperando con los brazos abiertos. Cualquier otro
dispositivo en el bus pasar por alto esto. Tenga en cuenta
que slo puede realizar una operacin IC a la vez! Luego,
cuando haya terminado de enviar datos al dispositivo,
queda la transmisin final. Esto le dice al dispositivo que
hemos terminado, y libera el bus IC para la siguiente
operacin:

Wire.endTransmission(); // termina la transmisin

Algunos dispositivos pueden tener ms de un registro y por


lo tanto requieren ms bytes de datos en cada transmisin.
Por ejemplo, el DS1307 reloj en tiempo real tiene ocho
registros para almacenar los datos de tiempo, cada uno
requiere ocho bits de datos (un byte), o puede ser una

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
RAM o una E2PROM.

Sin embargo, con el DS1307 como requiere ocho bits de


datos, enviar la totalidad del lote necesita volverlo a
reescribir cada vez. As que, en este caso, ser necesario
utilizar ocho funciones de wire.send (), cada vez. Cada
dispositivo interpreta los bytes de datos enviados al
mismo, por lo que se necesita la hoja de datos del
dispositivo, para entender cmo usarlo.

Recepcin de datos (Receiving) desde un dispositivo IC


con nuestro Arduino, requiere dos cosas: la direccin nica
del dispositivo (que necesitamos est en hexadecimal) y el
nmero de bytes de datos a aceptar desde el dispositivo.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
La recepcin de datos en este momento es un proceso que
consta de dos etapas. Si revisamos el cuadro anterior de la
hoja de datos del DS1307, tengamos en cuenta que hay
ocho registros o bytes de datos all. Lo primero que
tenemos que hacer es tener el inicio del dispositivo IC leer
el primer registro, que se realiza mediante el envo de un
cero en el dispositivo:
1 <span style="color: #339966;"> <span style="color: #00
8080;">Wire.beginTransmission(device_address);</span><
/span>
2 <span style="color: #339966;"> <span style="color: #00
8080;">Wire.send(0);</span></span>
3 <span style="color: #339966;"> <span style="color: #00
8080;">Wire.endTransmission();</span></span>

Ahora, el dispositivo I2C enviar los datos del primer


registro cuando se le solicite. Ahora, necesitamos pedir al
dispositivo los datos y la cantidad de bytes que queremos.
Por ejemplo, si un dispositivo necesita tres bytes de datos,
le pedimos para tres y, almacenar cada byte en su propia
variable (por ejemplo, tenemos tres variables de tipo byte:
a, b y c. La primera funcin a ejecutar es la siguiente:
1 <span style="color: #008080;">Wire.requestFrom(device
_address, 3); <span style="color: #339966;">//</span><
/span><span style="color: #339966;">device_address, es
la variable del dispositivo</span>

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Que le dice al dispositivo, enva tres bytes de datos de
vuelta al Arduino. A continuacin, inmediatamente
despus de esto con:
1 <span style="color: #339966;"> <span style="color: #0
08080;">*a = Wire.receive();</span></span>
2
3 <span style="color: #008080;">*b = Wire.receive();</
span>
4
5 <span style="color: #008080;">*c = Wire.receive();</
span>

No es necesario utilizar Wire.endTransmission() al


leer los datos. Ahora que los datos solicitados se
encuentran en sus respectivas variables, se pueden tratar
como cualquier otra variable de bytes ordinaria.

Para una explicacin ms detallada del bus I2C, lea el


documento explicativo u hojas de datos. Ahora vamos a
utilizar nuestro conocimiento I2C mediante el control de
una amplia gama de dispositivos

Esta es una utilidad que le puede ayudar a conocer la


direccin del dispositivo que usted ha adquirido, en el caso
de disponer de varias unidades, lea este simple artculo.
Arduino, Introduccin al I2CBus, Micros Arduino, DS1 307 ,
EEPROM, I2CBus, PCF87 54, RS232

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
RECICLADO DE UN ANALIZADOR DIGIT AL
T ECLADO 34 DE SEALES

5 THOUGHTS ON INTRODUCCIN
AL I2C BUS

Aurelio Ramrez Granados dice:


1 1 Nov iem bre, 2 01 1 a las 1 8:3 5

Buen documento
estoy migrando a procesador arduino
para aplicaciones a personas con capacidades diferentes
por lo que estoy trabajando con sesores acelermetros
gyroscopios para controlar el ratn y ejecutar aplicaciones con
movimientos de ojos, cara y ondas cerebrales as mismo
cntrolar motores para manejar sillas de ruedas para diferentes
discapacidades

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
felicidades .. buena la aportacin
nimo
Responder

V. Garcia dice:
3 Febrero, 2 01 2 a las 2 1 :1 6

Gracias por tus palabras. Espero te sirva esta informacin.


Estoy a tu entera disposicin.

Saludos.
Responder

Pablo dice:
7 May o, 2 01 2 a las 4 :56

Muy buen aporte, la verdad que es lo que necesitaba, estoy


aprendiendo todo el mundo arduino y haciendo proyectos
pequeos de forma de aprender y esto me viene de maravillas.
Siempre estube interesado en aprender el protocolo I2C y con
esto voy a veri si logro hacer algo.
Muchas gracias por poner tus conocieminetos al alcance de
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
todos.
Responder

emilio dice:
1 Marzo, 2 01 6 a las 2 3 :2 0

buen da, le el aporte y me gusto mucho, solo una pregunta,


que tal ves ya hicieron, cual es la distancia maxima entre el
esclavo y maestro usando el protocolo TWI en los avr?, de
antemano gracias por la respuesta
Responder

Vicent e Garca dice:


2 Marzo, 2 01 6 a las 1 1 :1 6

Hola, emilio.

En un principio te dir que el protocolo I2C se cre para la


intercomunicacin entre distintos dispositivos que
componan un mismo equipo como puede ser un TVC de
los aos 80, lo cual puede darnos una idea de las
distancias, ahora bien, esto no quiere decir que no podamos
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
extender estas referidas distancias mediante mtodos y
medios adecuados.

Sin embargo, se debe tener presente dotar de sistemas anti-


interferencias que se va a incrementar exponencialmente
con la distancia a cubrir por los dispositivos implicados en
la transmisin.

En otras palabras, y dado que las ITV (interferencias), son


inherentes al lugar donde se aplique el dispositivo, estas no
se pueden cuantificar por anticipado y siempre se aplicarn
los filtros adecuados a cada situacin.

En definitiva, una distancia de unas decenas de metros tal


vez no te den demasiados problemas. Debers hacer
pruebas y utilizar cable apantallado o cable trenzado, como
digo, depende del lugar y las radiaciones que hayan
alrededor.

Lamento no tener mejor respuesta.


Responder

DEJA UN COMENTARIO

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Tu direccin de correo electrnico no ser publicada. Los
campos obligatorios estn marcados con *

Comentario

Nombre *

Correo electrnico *

Web

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
PUBLICAR COMENTARIO

ENTRADAS COMENTARIOS META


RECIENTES RECIENTES
Acceder
Luis en Fuentes de RSS de las entradas
ALARMA WIFI con BLYNK
Alim entacin y RSS de los com entarios
EL ESP82 6 6 com o Arduino. WordPress.org
Laboratorio
EL MDULO ESP82 6 6 wifi.
CONVERSOR DE TENSIN Diego en
DE 1 2 V A 3 V3 . Controladores
GLCD Nokia 51 1 0 bsicos (Driv ers). SIEMPRE
Vicente Garca en
APRENDER
Estetoscopio
Electrnico Aprende lo que puedas y
La sensibilidad en el hombre,
ensea lo que sepas.
es una cualidad que hay que
Jair en Estetoscopio Aprender no es algo que te
cultiv ar, para apreciar la Electrnico pasa, es algo que haces. Lo
belleza que contienen la
que es ms, es algo que haces
msica, la pintura, una obra
todo el tiempo, si ests
literaria, el teatro o la Vicente Garca en
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
literaria, el teatro o la Vicente Garca en
preparado para ello. El
naturaleza. En definitiv a el Controladores
conocimiento es patrimonio
ARTE. by V icente Garca. bsicos (Driv ers).
de TODOS.
28.09.201 4

Cualquier persona puede


aprender a hacer lo que
sea. Slo ha de dedicarle
tiempo e intentarlo.

La sensibilidad en el hombre,
es una cualidad que hay que
cultiv ar, para apreciar la
belleza que contienen la
msica, la pintura, una obra
literaria, el teatro o la
naturaleza. En definitiv a el
ARTE. by V icente Garca.
28.09.201 4

Creado con WordPress | Tema: Fly Mag por Themeisle.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com