想知道设备是歪的还是正的,被碰了一下,还是在晃,ADXL345是一块口碑很好的三轴加速度计。它小巧、功耗低、量程可选,靠I2C或SPI通信,测倾角、震动检测、计步这些项目都能用它。这篇文章把接线和读法讲清楚。
ADXL345是什么,I2C地址记住0x53
ADXL345是一颗14位的三轴加速度传感器,能从静止加速度(重力)里算出倾角,从动态加速度变化里捕捉震动和运动。它支持±2g/±4g/±8g/±16g几个量程,分辨率在±2g下能达到不错的精度,数据通过I2C(地址0x53)或SPI读出。
市面上大多数是Breakout小板,引出VCC、GND、SCL、SDA,有的还有CS(片选)、SDO。用I2C就要把CS拉高,SDO决定I2C地址的最后一bit,习惯上SDO接地时地址是0x53。引脚示意见下。

接线表:I2C四根线搞定
ADXL345用I2C连Arduino Uno最省事:VCC接3.3V(也能接5V,但推荐3.3V更稳妥)、GND接GND、SCL接A5(Uno的SCL)、SDA接A4(Uno的SDA)。接好后库内设好0x53地址即可读到三轴原始值。
提醒一句,用I2C时要保证CS引脚的状态正确——如果是带CS的模块,把CS接高电平(接VCC)来选I2C模式,否则它可能被当成SPI设备。不同厂家的板子略有差异,先看板上的丝印标注再接线。
读数:原始值怎么换算成倾角
用库读回来的x、y、z是原始数,除以灵敏度系数就得到以g为单位的加速度。倾角计算用反三角函数:定义在平面上放着时,重力方向上的那轴接近±1g,其他轴接近0,通过这些值的比例就能算出相对水平面的倾斜角。
实际项目里常见做法是先水平校准(把模组静态放平记录零点),再做低通滤波去掉抖动,读数会稳很多。震动检测则相反,盯原始值的波动幅度,超过阈值就认为是“被震动或碰撞”。
把二值逻辑写好,就能做姿态显示、桌面被碰报警、跌倒检测、计步器这些项目。ADXL345是理解I2C通信和加速度传感很好的一课,四根线接对,姿态和震动就到手。







盯原始值波动幅度就能做桌面震动报警,挺好用
从加速度反推倾角的思路很经典,值得上手练一遍
I2C地址0x53,SCL接A5、SDA接A4这四根线就行
用I2C记得把CS拉高,不然会被当成SPI设备
先水平校准再低通滤波,倾角读数稳很多