Professional Documents
Culture Documents
ndice
Introduccin.
Acelermetro
Comunicacin I2C
Acelermetro ADXL345
Configuracin Acelermetro.
Registros del acelermetro.
Configuracin por Arduino
Arduino Acelermetro.
Programacin en Arduino.
Recepcin y salida de datos del acelermetro por Arduino.
Ejemplo de Aplicacin (Control Coche)
Envi de datos por bluetooh.
Recepcin de datos por bluetooth.
Control de motores.
Acelermetro
Los acelermetros son dispositivos
electromecnicos que detectan las
fuerzas de aceleracin, ya sea esttica o
dinmica. Las fuerzas estticas incluyen
la gravedad, mientras que las fuerzas
dinmicas pueden incluir vibraciones y
movimiento.
Comunicacin I2C
Elbus I2C, un estndar que facilita la
comunicacin entre microcontroladores,
memorias y otros dispositivos con cierto
nivel de "inteligencia", slo requiere de
dos lneas de seal y un comn o masa.
Comunicacin I2C
Acelermetro ADXL345
Elacelermetro ADXL345de Analog
Devices es un dispositivo pensado para
aplicaciones mviles. Dispone de
sensibilidad ajustableen y una
resolucin de 16 bits. Se puede conectar
fcilmente a travs de su interfaz SPI (3 o
4 hilos) e I2C
https://www.sparkfun.com/datasheets/Sen
sors/Accelerometer/ADXL345.pdf
Configuracin Acelermetro.
Antes de la configuracin del acelermetro en la comunicacin
I2C, se puede apreciar en el Datasheets pagina 10 que el
acelermetro ADXL345 tiene la siguiente direccin.
Recepcin de datos
Creamos una Unin y Estructura en la cual
almacenaremos los datos recibido por el
acelermetro.
union XYZBuffer { // creado una unin y
estructura para el
//
almacenamiento de datos
struct {
short x,y,z;
} value;
byte buff[6];
};
Recepcin de datos
Creamos La funcin de inicio de la lectura del
acelermetro.
void readAccel(int device,union XYZBuffer *xyz) {
//iniciando lectura del
// acelermetro
Wire.beginTransmission(device); //abrimos la
transmisin
Wire.write(0x32); // Inicio del registro para la
lectura de datos x, y, z
Wire.endTransmission(); //cerramos la
Recepcin de datos
Creamos La funcin de lectura y almacenamiento del
acelermetro.
void readXYZ(int device,union XYZBuffer *xyz) {
Wire.requestFrom(device, 6);
long start=millis();
while (!Wire.available() && (millis()-start)<100);
if (millis()-start<100) {
for (int i=0;i<6;i++)
xyz->buff[i]=Wire.read(); // almacenamiento de los 6
bytes
}
}
Salida de datos
Funcin para poder apreciar los datos recibidos
por el acelermetro.
void output(XYZBuffer xyz) {
Serial.print("x= ");
Serial.print(xyz.value.x);Serial.print(", ");
Serial.print("y= ");
Serial.print(xyz.value.y);Serial.print(", ");
Serial.print("z= ");
Serial.print(xyz.value.z);Serial.println();
}
Arduino Acelermetro.
Una vez creado y programado las
funciones de configuracin , recepcin,
almacenamiento y salida de datos, es hora
de usar y probar nuestras funciones.
Programacin en Arduino
//Iniciamos declarando nuestra funcin principal de configuracin
#include <Wire.h> //Librera se comunicacin I2C
#define ACELEROMETRO 0x53 //direccin del ADXLX345
void setup(){
Serial.begin(9600); // Para ver los datos mediante le monitor Serial
Wire.begin();
Programacin en Arduino
//programa principal
void loop(){
union XYZBuffer acelerometro; // creamos nueva variable unin
readAccel(ACELEROMETRO,&acelerometro); // lectura acelermetro
output(acelerometro); // muestra el dato recibido por el monitor
Serial
}
if(dataX > 255) dataX = 255; if(dataX < -255) dataX = -255; //limitando dato recibido
if(dataY > 255) dataY = 255;
break;
}