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).

DualMCU ESP32 + RP2040 - UNIT DevLab
SOL60-100 Rollo Soldadura Estaño 100g 60/40 1mm
Catálogo Resistencias SMD 0805 4250 Piezas
Pasta para Soldar en Lata con 25 Gramos SOL-025
Conector JST SR 4 Pines Vertical BM04B-SRSS-TB(LF)(SN)
Interruptor 1 Polo 2 Tiros 3p 2.54mm Pitch
Pinzas Antiestáticas SMD Kit 6 Piezas
UNIT Regla de Referencia PCB 16cm
UNIT Kit Mega 2560 con 31 Practicas
Conector Memoria Micro SD SD-101
Kit Radio FM / AM CF210SP CD9088
Raspberry Pi RP2040 4 MB USB Tipo C

































Valoraciones
No hay valoraciones aún.