テキスト ボックス:  ADXL345

 

 

 

I2Cセンサーの種類

3軸加速度センサー

主な機能

X・Y・Z軸の加速度センサー

XYZの各軸±2G4G8G,16Gの計測が可能

I2Cデバイス名

ADXL345

写真

 

GROVE - I2C 三軸加速度センサ ADXL345搭載

開発したデバイスの入手先 

製品名 品番・型番

スイッチサイエンス

GROVE – I2C 三軸加速度センサ ADXL345搭載(SEEED-101020054

デバイスのData-Sheet

http://www.analog.com/media/en/technical-documentation/data-sheets/ADXL345.pdf

デバイスの主な仕様

 

電源電圧

I2Cアドレス

分解能

I2C通信速度

検出軸

2.0~3.6V (5Vでは使えません)

0X1D,0X3A,0X3B,0X53,0XA6,0XA7CSALTPinで選択可能)

10bit

100K/400kbps

X軸、Y軸、Z軸の加速度検出

説明

測定時は23μA,スタンバイ時0.1μAと超低消費電力で電源電圧も2.0V~と電池駆動も可能な低消費電力です。

I/Oの電圧も1.7V~VDD1.8V回路でも利用可能なI2Cデバイスです。

また、用途の例としてハードデスク(HDD)のプロテクション等があり、高感度の

計測が可能で10KGまでのショックに耐える事ができます。

また、シングルタップ、ダブルタップ等の検出も可能と成っています。

 

測定値の読み出す場合X,Y,Zは、全て10bitですので2つの8bitのレジスタよりデータを得て合算や1bit単位での設定が有りますが、I2Cセンサードライバーでは10bitへの合算/分割はドライバー内部で処理し、10進数でプロパティへセットされます。

 

通常のレジスタの読み書きは、register
address
を指定した後に処理を行いますが、I2Cセンサー・ドライバーを使用する場合は使用するプロパティにregister addressが紐づけして有る為レジスタアドレスの指定は不要でプロパティへ値の代入、読み出しのみで可能です。

 

 

 

 

開発・テスト風景

IMG_2417

チョットの動きでも、結構値が変化します。高感度です。

 

I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)

 

I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド

プロパティ

機能名

機能説明

DEVID

Device IDを取得します。

THRESH_TAP

タップしきい値を取得または設定します。

OFSX

X-axisオフセットを取得または設定します。

OFSY

Y-axisオフセットを取得または設定します。

OFSZ

Z-axisオフセットを取得または設定します。

DUR

タップ持続時間を取得または設定します。

Latent

タップ待ち時間を取得または設定します。

Window

タップWindowを取得または設定します。

THRESH_ACT

Activityしきい値を取得または設定します。

THRESH_INACT

Inactivityしきい値を取得または設定します。

TIME_INACT

Inactivity timeを取得または設定します。

INACT_Z_enable

INACT_Z_enableを取得または設定します。

INACT_Y_enable

INACT_Y_enableを取得または設定します。

 

機能名

機能説明

INACT_X_enable

INACT_X_enableを取得または設定します。

INACT_acdc

INACT_acdcを取得または設定します。

ACT_Z_enable

ACT_Z_enableを取得または設定します。

ACT_Y_enable

ACT_Y_enableを取得または設定します。

ACT_X_enable

ACT_X_enableを取得または設定します。

ACT_acdc

ACT_acdcを取得または設定します。

THRESH_FF

Free-fallしきい値を取得または設定します。

TIME_FF

Free-fall timeを取得または設定します。

TAP_Z_enable

TAP_Z_enableを取得または設定します。

TAP_Y_enable

TAP_Y_enableを取得または設定します。

TAP_X_enable

TAP_X_enableを取得または設定します。

Suppress

Suppressを取得または設定します。

TAP_Z_source

TAP_Z_sourceを取得します。

TAP_Y_source

TAP_Y_sourceを取得します。

TAP_X_source

TAP_X_sourceを取得します。

Asleep

Asleepを取得します。

ACT_Z_source

ACT_Z_sourceを取得します。

ACT_Y_source

ACT_Y_sourceを取得します。

ACT_X_source

ACT_X_sourceを取得します。

Rate

Rateを取得または設定します。

 

 

機能名

機能説明

LOW_POWER

LOW_POWERを取得または設定します。

Wakeup

Wakeupを取得または設定します。

Sleep

Sleepを取得または設定します。

Measure

Measureを取得または設定します。

AUTO_SLEEP

AUTO_SLEEPを取得または設定します。

Link

Linkを取得または設定します。

INT_ENABLE_Overrun

INT_ENABLEOverrunを取得または設定します。

INT_ENABLE_Watermark

INT_ENABLEWatermarkを取得または設定します。

INT_ENABLE_FREE_FALL

INT_ENABLEFREE_FALLを取得または設定します。

INT_ENABLE_Inactivity

INT_ENABLEInactivityを取得または設定します。

INT_ENABLE_Activity

INT_ENABLEActivityを取得または設定します。

INT_ENABLE_DOUBLE_TAP

INT_ENABLEDOUBLE_TAPを取得または設定します。

INT_ENABLE_SINGLE_TAP

INT_ENABLESINGLE_TAPを取得または設定します。

INT_ENABLE_DATA_READY

INT_ENABLEDATA_READYを取得または設定します。

INT_MAP_Overrun

INT_MAPOverrunを取得または設定します。

INT_MAP_Watermark

INT_MAPWatermarkを取得または設定します。

INT_MAP_FREE_FALL

INT_MAPFREE_FALLを取得または設定します。

INT_MAP_Inactivity

INT_MAPInactivityを取得または設定します。

INT_MAP_Activity

INT_MAPActivityを取得または設定します。

INT_MAP_DOUBLE_TAP

INT_MAPDOUBLE_TAPを取得または設定します。

 

機能名

機能説明

INT_MAP_SINGLE_TAP

INT_MAPSINGLE_TAPを取得または設定します。

INT_MAP_DATA_READY

INT_MAPDATA_READYを取得または設定します。

INT_SOURCE_Overrun

INT_SOURCEOverrunを取得します。

INT_SOURCE_Watermark

INT_SOURCEWatermarkを取得します。

INT_SOURCE_FREE_FALL

INT_SOURCEFREE_FALLを取得します。

INT_SOURCE_Inactivity

INT_SOURCEInactivityを取得します。

INT_SOURCE_Activity

INT_SOURCEActivityを取得します。

INT_SOURCE_DOUBLE_TAP

INT_SOURCEDOUBLE_TAPを取得します。

INT_SOURCE_SINGLE_TAP

INT_SOURCESINGLE_TAPを取得します。

INT_SOURCE_DATA_READY

INT_SOURCEDATA_READYを取得します。

Range

Rangeを取得または設定します。

Justify

Justifyを取得または設定します。

FULL_RES

FULL_RESを取得または設定します。

INT_INVERT

INT_INVERTを取得または設定します。

SPI

SPIを取得または設定します。

SELF_TEST

SELF_TESTを取得または設定します。

DATAX

X-Axis Dataを取得します。

DATAY

Y-Axis Dataを取得します。

DATAZ

Z-Axis Dataを取得します。

Samples

Samplesを取得または設定します。

Trigger

Triggerを取得または設定します。

FIFO_MODE

FIFO_MODEを取得または設定します。

Entries

Entriesを取得します。

FIFO_TRIG

FIFO_TRIGを取得します。

 

メソッド

機能名

機能説明

Init

I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。

Read

指定レジスタ読込

Write

指定レジスタ書込

定数

機能名

機能説明

定数値

REG_ADDR.DEVID

レジスタDEVID

0x00

REG_ADDR.THRESH_TAP

レジスタTHRESH_TAP

0x1D

REG_ADDR.OFSX

レジスタOFSX

0x1E

REG_ADDR.DUR

レジスタDUR

0x21

REG_ADDR.Latent

レジスタLatent

0x22

REG_ADDR.Window

レジスタWindow

0x23

REG_ADDR.THRESH_ACT

レジスタTHRESH_ACT

0x24

REG_ADDR.THRESH_INACT

レジスタTHRESH_INACT

0x25

REG_ADDR.TIME_INACT

レジスタTIME_INACT

0x26

REG_ADDR.ACT_INACT_CTL

レジスタACT_INACT_CTL

0x27

REG_ADDR.THRESH_FF

レジスタTHRESH_FF

0x28

REG_ADDR.TIME_FF

レジスタTIME_FF

0x29

REG_ADDR.TAP_AXES

レジスタTAP_AXES

0x2A

REG_ADDR.ACT_TAP_STATUS

レジスタACT_TAP_STATUS

0x2B

REG_ADDR.BW_RATE

レジスタBW_RATE

0x2C

REG_ADDR.POWER_CTL

レジスタPOWER_CTL

0x2D

REG_ADDR.INT_ENABLE

レジスタINT_ENABLE

0x2E

 

REG_ADDR.INT_MAP

レジスタINT_MAP

0x2F

REG_ADDR.INT_SOURCE

レジスタINT_SOURCE

0x30

REG_ADDR.DATA_FORMAT

レジスタDATA_FORMAT

0x31

REG_ADDR.DATAX0

レジスタDATAX0

0x32

REG_ADDR.FIFO_CTL

レジスタFIFO_CTL

0x38

REG_ADDR.FIFO_STATUS

レジスタFIFO_STATUS

0x39

 

 

I2Cセンサードライバーを使ったVBでのサンプルソース

Imports I2CLibrary

Public NotInheritable Class ADXL345Page

 Inherits Page

 Private Const ADXL345_Address As Byte = &H53

 Private ADXL345 As ADXL345 = New ADXL345()

 Private WithEvents RefreshTimer As DispatcherTimer = New DispatcherTimer()

 Public Sub New()

  InitializeComponent()

  Call Init()

 End Sub

 

 Private Async Sub Init()

  Await ADXL345.Init(ADXL345_Address)

 End Sub

 

 Private Sub btnStart_Click(sender As Object, e As RoutedEventArgs)

  ADXL345.Read(ADXL345.REG_ADDR.DATA_FORMAT)

  ADXL345.Read(ADXL345.REG_ADDR.POWER_CTL)

  ADXL345.Read(ADXL345.REG_ADDR.BW_RATE)

  ADXL345.Read(ADXL345.REG_ADDR.INT_ENABLE)

  ADXL345.Read(ADXL345.REG_ADDR.TAP_AXES)

 

  ADXL345.Range = 0 ‘+-2G

  ADXL345.Rate = 10 ‘100Hz

  ADXL345.Measure = 1 ‘測定モード

  ADXL345.INT_ENABLE_SINGLE_TAP = 1   シングルタップ検知

  ADXL345.TAP_X_enable = 1

  ADXL345.TAP_Y_enable = 1

  ADXL345.TAP_Z_enable = 1

 

  ADXL345.Write(ADXL345.REG_ADDR.DATA_FORMAT)

  ADXL345.Write(ADXL345.REG_ADDR.POWER_CTL)

  ADXL345.Write(ADXL345.REG_ADDR.BW_RATE)

  ADXL345.Write(ADXL345.REG_ADDR.INT_ENABLE)

  ADXL345.Write(ADXL345.REG_ADDR.TAP_AXES)

 

  ADXL345.THRESH_TAP = &H30 ‘タップ割り込みのしきい値

  ADXL345.DUR = &H10 最大タップ持続時間

 

  ADXL345.Write(ADXL345.REG_ADDR.THRESH_TAP)

  ADXL345.Write(ADXL345.REG_ADDR.DUR)

   RefreshTimer.Interval = TimeSpan.FromMilliseconds(100)

  RefreshTimer.Start()

 End Sub

 Private Sub Measurement(sender As Object, e As Object) Handles  RefreshTimer.Tick

  RefreshTimer.Stop()

 

  ADXL345.Read(ADXL345.REG_ADDR.DATAX0)

  ADXL345.Read(ADXL345.REG_ADDR.INT_SOURCE)

 

  Debug.WriteLine(“X-Axis{0:D}”, ADXL345.DATAX)

  Debug.WriteLine(“Y-Axis{0:D}”, ADXL345.DATAY)

  Debug.WriteLine(“Z-Axis{0:D}”, ADXL345.DATAZ)

 

  If ADXL345.INT_SOURCE_SINGLE_TAP = 1 Then

   Debug.WriteLine(“SINGLE_TAP detect”)

  End If

 

  RefreshTimer.Start()

 End Sub

 

 Private Sub btnStop_Click(sender As Object, e As RoutedEventArgs)

  ADXL345.Read(ADXL345.REG_ADDR.POWER_CTL)

 

  ADXL345.Measure = 0

 

  ADXL345.Write(ADXL345.REG_ADDR.POWER_CTL)

 

  RefreshTimer.Stop()

 End Sub

 

 Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs)

  RefreshTimer.Stop()

  ADXL345.close()

  App.rootFrame.Navigate(GetType(MenuPage))

 End Sub

 

End Class