赞
踩
学物联网,来万物简单IoT物联网!!
ADXL345是一款完整的3轴加速度测量系统,可选择的测量范围有士2g,士4g,士8g或士16g。它既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,这样的特性让它可作为倾斜传感器使用。该传感器还具备单击 /双击探测,自由落体探测,并允许用户设置一个加速度阀值,当加速度值超过设定阀值后可以产生一个信号输出。所有这些功能都可以映射到2个中断上。
主控板可以通过I2C或SPI和该模块进行通信,本文中的驱动仅提供通过I2C接口和它进行通信,该传感器模组管脚定义及I2C模式下的典型电路请参考下图。
名称 | 说明 |
---|---|
GND | 地线 |
VCC | 电源正极 |
CS | SPI模式下片选信号 |
INT1 | 中断1引脚 |
INT2 | 中断2引脚 |
SDO | SPI模式下数据输出引脚 |
SCL | I2C模式下时钟线 |
SDA | I2C模式下数据线 |
gyroDev = ADXL345(i2cObj)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
i2cObj | I2C | 是 | 创建I2C对象 |
from machine import I2C,Pin # 驱动库
import adxl34x # ADXL345加速度计传感器驱动库
# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ADXL345 inited!")
gyroDev = adxl34x.ADXL345(i2cObj) # 初始化ADXL345传感器对象
ADXL345 inited!
ADXL345.getAcceleration()
参数 | 类型 | 说明 |
---|---|---|
xa | int | X轴方向的加速度 |
ya | int | X轴方向的加速度 |
za | int | X轴方向的加速度 |
from machine import I2C,Pin # 驱动库
import adxl34x # ADXL345加速度计传感器驱动库
# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("ADXL345 inited!")
gyroDev = adxl34x.ADXL345(i2cObj) # 初始化ADXL345传感器对象
xa, ya, za = gyroDev.getAcceleration()
print("acceleration:", xa, ya, za)
ADXL345 inited!
acceleration: <xx> <yy> <zz>
主控芯片和ADXL345传感器之间通信所用命令字如下表所示:
序号 | 寄存器 | 功能说明 | 命令字宏定义 |
---|---|---|---|
1 | 0x0 | 读取ADC采样结果 | ADS1x15_POINTER_CONVERSION |
2 | 0x1 | 设定ADC采样参数 | ADS1x15_POINTER_CONFIG |
3 | 0x2 | 设定阈值的低8位 | ADS1x15_POINTER_LOW_THRESHOLD |
4 | 0x3 | 设定阈值的高8位 | ADS1x15_POINTER_HIGH_THRESHOLD |
通过I2C向ADS1x15_POINTER_CONFIG寄存器写入ADC量测的参数(目标通道、增益、测量模式、测量速率)
等待ADC采样结束(时间为一个采样周期(1/采样周期)+一个很小的偏差,如0.1ms)
通过I2C发送读取ADS11x5的ADS1x15_POINTER_CONVERSION寄存器值的指令
将测量结果转换成实际电压
测量的数字结果转化为实际电压算法请参考驱动中的readVoltage函数的实现
ADXL34x传感器属于微型机电系统传感器,主要由硅晶片上的微机械结构组成。该结构由多晶硅弹簧悬挂,当在X,Y和/或Z轴上受到加速度时,它可以在任何方向上平滑偏转。挠曲会导致固定板和连接到悬挂结构的板之间的电容发生变化。每个轴上的电容变化都会转换为与该轴上的加速度成比例的输出电压。该传感器便是通过对此电压进行采样从而再计算的得出每个方向上的加速度。
ADXL34x传感器的系统框图如下图所示:
[1] ADXL345 ADC转换器
[2] ADXL345 购买链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。