Você está na página 1de 7

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA

FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

CARRERA

PLAN DE ESTUDIOS

CLAVE DE ASIGNATURA

NOMBRE DE LA ASIGNATURA

ING.
AEROESPACIAL

2009 - 2

11361

INSTRUMENTACIN

LABORATORIO DE

NOMBRE DE LA PRCTICA

NO. PRCTICA

DURACIN

INSTRUMENTACIN

COMUNICACIN I2C

2 HORAS

1. INTRODUCCIN
Durante el desarrollo de esta prctica, el alumno se familiarizar con la comunicacin I2C con dos
Arduinos.
2. OBJETIVO
EL objetivo de la prctica, es lograr que mediante la interconexin y comunicacin por I2C de dos
Arduinos (uno Maestro y uno Esclavo) se encienda un led mediante un pushbutton.
Al Arduino Esclavo se le conectar el pushbutton y ste le enviar una seal por I2C al Arduino
Maestro para que encienda un led mientras el pushbutton se encuentre activado.
3. MARCO TERICO
I2C (Inter-Integrated Circuit) es un bus de comunicacin muy utilizado para comunicar circuitos
integrados, uno de sus usos ms comunes es la comunicacin entre un microcontrolador y sensores
perifricos.
El bus I2C cuenta con dos lineas SDA(datos) y SCL(clock) ademas de masa. Como hemos visto en
SPI a cada flanco de SCL se captura un bit de SDA, aunque la forma de transmitir la informacin es
diferente. Ademas hay que tener en cuenta que la linea SDA solo puede cambiar de valor en caso de
que la linea SCL este a 0.
Uso en Arduino
En el Arduino Uno los pines del I2C se encuentran en el pin analgico 4(SDA) y el pin analgico
5(SCL). En el Arduino Mega se encuentran en los pines 20 (SDA) y en el 21(SCL). Finalmente en
el nuevo Arduino Leonardo los pines I2C estn pintados al lado de AREF.
En lo referente a conexiones conectamos los SDA y los SCL de los dispositivos entre ellos y a la
vez una pull-up por cada linea. Estas resistencias pueden tener valores entre 1k y 10 k, dependiendo
de la velocidad de comunicacin. Un buen valor para esta velocidad es 4.7K. Aunque es cierto que
se pueden conectar sin las pull-up y funciona, en el osciloscopio la seal no se vea muy bien, as
que para evitar posibles errores lo mejor es asegurarse poniendo las pull-up.
Para usar el bus I2C en Arduino hay que incluir la librera Wire con #include <Wire.h>. A
continuacin en el setup hay que usar la funcin Wire.begin() esto inicia el bus I2C y nos define
FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

como maestros. Dentro del begin se puede poner una direccin aunque si solo hay un master no es
necesario ya que nadie nos va a solicitar datos sino que seremos nosotros los que siempre iniciemos
la comunicacin.
Una vez iniciado el bus podemos empezar a transmitir. Para ello se usan 3 instrucciones:
1.-Wire.beginTransmission(direccin): Inicia el bus y ponemos con qu direccin vamos a
comunicarnos.
2.-Wire.write(bytes): Esta funcin enva uno o varios bytes a la direccin anterior.
3.-Wire.endTransmission(): Finaliza la comunicacin con un STOP y deja el bus libre.
4. PROCEDIMIENTO (DESCRIPCIN)
EQUIPO NECESARIO
Computadora
Software de Arduino
Placa Arduino UNO
Led
Resistencia de 220ohms
Push-button
Protoboard

MATERIAL DE APOYO
Internet

5. DESARROLLO DE LA PRCTICA
Se trata de realizar un ejercicio que consiste en encender y apagar un led mediante el uso de la
comunicacin I2C entre dos Arduinos (uno Maestro y uno esclavo)

FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

Figura 1 Diagrama a bloques del funcionamiento del programa del Arduino Esclavo de lectura de botn y envo de
seal por I2C al Arduino Maestro

FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

Figura 2 Diagrama a bloques del funcionamiento del programa del Arduino Maestro de lectura de seal de I2C
enviada por Arduino Esclavo, encendido y apagado de LED.

FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

Cdigo de Arduino Esclavo:


//Comunicacion arduino - arduino - codigo esclavo
#include<Wire.h>
int boton=8;
int x=0;
void setup() {
Wire.begin(1);
Wire.onRequest(contestar);
pinMode(boton,INPUT);
Serial.begin(9600);
}
void loop() {
}
void contestar()
{ x=digitalRead(boton);
if(x==1)
{ Wire.write(1);
Serial.println("Led encendido");
}
if(x==0){
Wire.write(0);
Serial.println("Led apagado");
}
}
Cdigo de Arduino Maestro:
//Comunicacion entre 2 Arduinos i2C (ARDUINO MAESTRO)
#include<Wire.h>
int datos;
int LED=7;
void setup(){
pinMode(LED,OUTPUT);
Wire.begin();
Serial.begin(9600);
}
void loop(){
Wire.requestFrom(1,1);//(direccin que se pone en el esclavo, Cantidad de info que se desea enviar
(12bits))[indispensable para i2C]
datos= Wire.read();//lee lo que el dispositivo envia para i2C
Serial.println(datos);
FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

if(datos==1){
digitalWrite(LED,HIGH);
}
else{
digitalWrite(LED,LOW);
//muestra
}// si no hay nada
//Serial.println("");
}

Figura 3 Diagrama de conexin fsico de las placas Arduino, el Led y Pushbutton

FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

UNIVERSIDAD AUTONMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERA
CAMPUS MEXICALI

Cobos Vigueras Omar

330958

6. FRMULAS O BIBLIOGRAFA
La bibliografa utilizada para esta prctica es la ayuda que proporciona el entorno de programacin
de Arduino en su apartado de Ejemplos. Si se tiene alguna duda relacionada con la programacin en
Arduino se puede utilizar como ayuda toda la documentacin disponible en la pgina oficial de
Arduino.
http://arduino.cc/en/Tutorial/Blink
http://www.electroensaimada.com/i2c.html
7. RESULTADOS Y CONCLUSIONES
El desarrollo de esta prctica conduce al alumno a la familiarizacin con la comunicacin I2C entre
dos Arduinos, utilizando algunas funciones bsicas de programacin.

8. ANEXOS

FORMUL

REVIS

M.C. JOS MANUEL


RAMREZ ZARATE

DR. JUAN DE DIOS


OCAMPO DAZ

APROB

AUTORIZ

M.C. JORGE MIRAMON

DR. DAVID I. ROSAS


ALMEIDA

Você também pode gostar