INFORMACIÓN
El BMA255 es sensor acelerómetro digital triaxial de 12 bits, con rangos de medición programables de ±2g, ±4g, ±8g y ±16g. Presenta una resolución de 0.98 mg en el rango de ±2g, densidad de ruido típica de 150 µg/√Hz y anchos de banda configurables de 1000 Hz a 8 Hz. Soporta interfaces SPI e I2C, dispone de dos salidas de interrupción digitales y opera con voltajes de alimentación de 1.62 V a 3.6 V y 1.2 V a 3.6 V para I/O. Incluye una tira header y un arnés 4 pines para realizar conexión vía Qwiic.
El BMA255 Sensor Acelerometro 3 Ejes es ideal para realizar detección de orientación e inclinación, medición de vibraciones y monitoreo, detección de impactos y caídas, aplicaciones wearables como conteo de pasos, reconocimiento de actividad física, por mencionar algunos ejemplos.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Marca: UNIT Electronics
- País de origen: Hecho en México
- Tipo: Sensor acelerómetro
- Circuito integrado: BMM255
- Voltaje de alimentación: 3.3V a 5.5V
- Corriente de carga:
- Operación normal: 130uA
- Bajo consumo: 6 uA
- Modo suspendido: 1uA
- Ejes: 3 ejes (X,Y y Z)
- Protocolo de comunicación: I2C (via Qwiic) y SPI (via )
- Conectividad: vía conector JST (1 mm pitch)
- I2C : x1 (0x18 – 0x19)
- SPI : x1
- Temperatura de operación: -40°C a +85°C
- Dimensiones: 25.4mm x 17.23 mmx 4.5mm
- Peso: 1.75g
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Test y recomendaciones de uso
Para hacer uso del módulo sensor acelerómetro requeriremos la librería UBMA250 ,en el IDE de Arduino

Diagrama de conexión
Posteriormente, realizaremos la siguiente conexión vía Qwiic, para hacer uso del protocolo I2C. Adicional configuraremos el dip switch para poder hacer uso del protocolo I2C.

Código
Realiza la carga del siguiente código para poder observar los datos de lectura del acelerómetro (X, Y y Z).
#include <Wire.h>
#include "BMA250.h"
// I2C pins for ESP32-C6 (change as needed)
#define SDA_PIN 6
#define SCL_PIN 7
// Accelerometer sensor variables
UBMA250 accel_sensor;
int x, y, z;
double temp;
void setup() {
Serial.begin(115200);
while (!Serial && millis() < 5000) delay(10);
Serial.println("=== BMA250 I2C Local Library Example ===");
// Initialize I2C with custom pins
Wire.begin(SDA_PIN, SCL_PIN);
Serial.print("I2C initialized with SDA=");
Serial.print(SDA_PIN);
Serial.print(", SCL=");
Serial.println(SCL_PIN);
// Initialize BMA250 with I2C (using working parameters)
Serial.print("Initializing BMA250 via I2C...");
int result = accel_sensor.begin(BMA250_range_2g, BMA250_update_time_64ms);
if (result == 0) {
Serial.println(" SUCCESS!");
Serial.print("I2C Address: 0x");
Serial.println(accel_sensor.I2Caddress, HEX);
} else {
Serial.println(" FAILED!");
Serial.println("Scanning I2C bus...");
// Scan for I2C devices
int deviceCount = 0;
for (byte addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.print("Device found at 0x");
if (addr < 16) Serial.print("0");
Serial.println(addr, HEX);
deviceCount++;
}
}
if (deviceCount == 0) {
Serial.println("No I2C devices found!");
Serial.println("Check connections:");
Serial.print("- SDA → GPIO"); Serial.println(SDA_PIN);
Serial.print("- SCL → GPIO"); Serial.println(SCL_PIN);
}
}
Serial.println("Setup complete!");
Serial.println("=====================================");
}
void loop() {
// Read new data from the accelerometer
accel_sensor.read();
// Get the acceleration values from the sensor
x = accel_sensor.X;
y = accel_sensor.Y;
z = accel_sensor.Z;
temp = ((accel_sensor.rawTemp * 0.5) + 24.0);
// Check if the BMA250 is not found or connected correctly
if (x == -1 && y == -1 && z == -1) {
Serial.println("ERROR! NO BMA250 DETECTED via I2C!");
Serial.println("Check I2C connections:");
Serial.print("- SDA → GPIO"); Serial.println(SDA_PIN);
Serial.print("- SCL → GPIO"); Serial.println(SCL_PIN);
Serial.println("- SDO → GND (addr 0x18) or VCC (addr 0x19)");
} else {
// Print sensor readings
showSerial();
}
// Delay to ensure proper sensor reading timing
delay(500);
}
// Prints the sensor values to the Serial Monitor
void showSerial() {
Serial.print("X = ");
Serial.print(x);
Serial.print(" Y = ");
Serial.print(y);
Serial.print(" Z = ");
Serial.print(z);
Serial.print(" Temperature(C) = ");
Serial.println(temp);
}
En el monitor serial (115200 baud), podrás observar la lectura de los datos vía I2C.

Te invitamos a realizar las conexiones pertinentes para poder manipular el módulo bajo el protocolo SPI(SCK, MOSI, MISO, CS).

HW-070 Control de Velocidad PWM 5V-16V 10A
MechDog Standard Kit ESP32 8DOF IA Hiwonder
Kit Terminales de Anillo Termorretráctil para Soldar 50pcs
Teensy 4.0 Tarjeta de Desarrollo RT1062 Micro USB
Pila Cuadrada Alcalina 9V
ESP32-S3-WROOM-1-N16R8 16MB FLASH
Punta de Prueba SMD para Multímetro
Kit Lancha Solar STEM
RM102 Multímetro Digital Autorango RICHMETERS
Cautín Pirograbador de Madera 60W Regulable 37 Piezas
Kit Transformador de 127V a 12VCA 1A
Destornillador Eléctrico Recargable 58 en 1

































Valoraciones
No hay valoraciones aún.