Skip to main content

Grove - 3軸デジタル加速度計 40g (ADXL357)

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

pir

当社のウェブサイトでは、さまざまなシナリオやニーズに対応する3軸加速度計を見つけることができます。今回は、産業用グレードで高い安定性、高精度、低消費電力を備えたADI ADXLシリーズの3軸加速度計をご紹介します。

Grove - 3軸デジタル加速度計 ±40g (ADXL357) は、デジタル出力のMEMS加速度計です。このセンサーは、±10g@51200 LSB/g、±20g@25600 LSB/g、±40g@12800 LSB/g の3つの異なる測定範囲と精度を選択できます。わずかなキャリブレーション作業を行うだけで、比較的正確な結果を得ることができます。すべてのデータはGrove I2Cポートを介して出力され、I2Cアドレスも選択可能です。さらに、4つのモードに設定可能な2つの割り込み出力ピンも提供しています。

ADI ADXLシリーズ加速度計は、異なる測定範囲と出力ニーズに対応する4つの製品を含んでいます:

製品測定範囲出力ポート
Grove - 3軸アナログ加速度計 ±20g (ADXL356B)±10 / ±20gアナログ
Grove - 3軸アナログ加速度計 ±40g (ADXL356C)±10g / ±40gアナログ
Grove - 3軸デジタル加速度計 ±40g (ADXL357)±10g@51200 LSB/g / ±20g@25600 LSB/g / ±40g@12800 LSB/gデジタル I2C
Grove - 3軸デジタル加速度計 ±200g (ADXL372)±200gデジタル I2C

pir

特徴

  • 業界をリードする低ノイズ、温度によるオフセットドリフトの最小化、長期安定性により、最小限のキャリブレーションで精密なアプリケーションを実現
  • 密閉パッケージにより優れた長期安定性を提供:0 g オフセット vs. 温度(全軸):最大 0.75 mg/°C
  • 超低ノイズ密度(全軸):80 μg/√Hz
  • 内蔵20ビットアナログ-デジタルコンバータ(ADC)
  • 低ドリフト、低ノイズ、低消費電力
  • 2チャンネル割り込み出力をサポート
  • FIFO(96*21ビット)をサポート

アプリケーション

  • 慣性計測装置 (IMUs) / 高度および方位基準システム (AHRSs)
  • プラットフォーム安定化システム
  • 構造健全性モニタリング
  • 状態監視
  • 地震イメージング
  • 傾斜センサー
  • ロボティクス

仕様

パラメータ
供給電圧3.3V / 5V
動作周囲温度-40 – 125℃
XOUT, YOUT, ZOUT の感度 / (V1P8ANA に比例)±10 g@80 mv/g (Typ.) / ±20 g@40 mv/g (Typ.) / ±40 g@20 mv/g (Typ.)
温度による感度変化±0.01%/°C (TA = −40°C to +125°C)
0g オフセット / (V1P8ANA/2 に基づく)±125 mg(Typ.)
出力インターフェースデジタル

ピン配置

pir

pir

対応プラットフォーム

ArduinoRaspberry Pi

pir

pir

はじめに

Arduinoで遊ぶ

必要な材料

Seeeduino V4.2Base ShieldGrove 3軸加速度計 ADXL357

pir

pir

pir

今すぐ購入今すぐ購入今すぐ購入

さらに、Seeeduino Lotus M0+を検討することもできます。これはSeeeduino V4.2とBase Shieldの組み合わせに相当します。

note

1 USBケーブルを優しく差し込んでください。そうしないとポートが損傷する可能性があります。内部に4本のワイヤーがあるUSBケーブルを使用してください。2本のワイヤーしかないケーブルではデータを転送できません。お持ちのケーブルが不明な場合は、こちらから購入できます。

2 各Groveモジュールには購入時にGroveケーブルが付属しています。Groveケーブルを紛失した場合は、こちらから購入できます。

ハードウェア接続

  • ステップ1. Grove - 3軸アナログ加速度計 ±20g (ADXL357) をBase ShieldのI2Cポートに接続します。

  • ステップ2. Grove - Base ShieldをSeeeduinoに差し込みます。

  • ステップ3. USBケーブルを使用してSeeeduinoをPCに接続します。

pir

ソフトウェア

note

Arduinoを初めて使用する場合は、開始する前にArduinoの使い方を参照することを強くお勧めします。

pir

//basic_demo.ino
#include "Seeed_adxl357b.h"


#if defined(ARDUINO_ARCH_AVR)
#pragma message("Defined architecture for ARDUINO_ARCH_AVR.")
#define SERIAL Serial
#elif defined(ARDUINO_ARCH_SAM)
#pragma message("Defined architecture for ARDUINO_ARCH_SAM.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_SAMD)
#pragma message("Defined architecture for ARDUINO_ARCH_SAMD.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_STM32F4)
#pragma message("Defined architecture for ARDUINO_ARCH_STM32F4.")
#define SERIAL SerialUSB
#else
#pragma message("Not found any architecture.")
#define SERIAL Serial
#endif


#define CALI_BUF_LEN 15
#define CALI_INTERVAL_TIME 250
int32_t cali_buf[3][CALI_BUF_LEN];
int32_t cali_data[3];

float factory;

Adxl357b adxl357b;


int32_t deal_cali_buf(int32_t *buf)
{
int32_t cali_val = 0;

for(int i = 0;i < CALI_BUF_LEN;i++)
{
cali_val += buf[i];
}
cali_val = cali_val/CALI_BUF_LEN;
return (int32_t)cali_val;
}


void calibration(void)
{
int32_t x;
SERIAL.println("Please Place the module horizontally!");
delay(1000);
SERIAL.println("Start calibration........");

for(int i=0;i<CALI_BUF_LEN;i++)
{
if(adxl357b.checkDataReady())
{
if(adxl357b.readXYZAxisResultData(cali_buf[0][i],cali_buf[1][i],cali_buf[2][i]))
{
}
}
delay(CALI_INTERVAL_TIME);
// SERIAL.print('.');
}
// SERIAL.println('.');
for(int i=0;i<3;i++)
{
cali_data[i] = deal_cali_buf(cali_buf[i]);
SERIAL.println(cali_data[i]);
}
x = (((cali_data[2] - cali_data[0]) + (cali_data[2] - cali_data[1]))/2);
factory = 1.0 / (float)x;
// SERIAL.println(x);
SERIAL.println("Calibration OK!!");
}






void setup(void)
{
uint8_t value = 0;
float t;

SERIAL.begin(115200);
if(adxl357b.begin())
{
SERIAL.println("Can't detect ADXL357B device .");
while(1);
}
SERIAL.println("Init OK!");
/*Set full scale range to ±40g*/
adxl357b.setAdxlRange(FOURTY_G);
/*Switch standby mode to measurement mode.*/
adxl357b.setPowerCtr(0);
delay(100);
/*Read Uncalibration temperature.*/
adxl357b.readTemperature(t);

SERIAL.print("Uncalibration temp = ");
SERIAL.println(t);
/**/
calibration();

}


void loop(void)
{
int32_t x,y,z;
uint8_t entry = 0;
if(adxl357b.checkDataReady())
{
if(adxl357b.readXYZAxisResultData(x,y,z))
{
SERIAL.println("Get data failed!");
}
SERIAL.print("X axis = ");
SERIAL.print(x*factory);
SERIAL.println('g');
SERIAL.print("Y axis = ");
SERIAL.print(y*factory);
SERIAL.println('g');
SERIAL.print("Z axis = ");
SERIAL.print(z*factory);
SERIAL.println('g');

}
delay(100);
}




  • ステップ4. デモをアップロードします。コードのアップロード方法がわからない場合は、コードのアップロード方法を確認してください。

  • ステップ5. Arduino IDEのシリアルモニタを開きます。ツール -> シリアルモニタをクリックするか、++ctrl+shift+m++キーを同時に押します。ボーレートを115200に設定します。

  • ステップ6. キャリブレーション キャリブレーションが完了するまで数秒待ちます。

  • ステップ7. これでセンサーを使用できるようになり、出力は以下のようになります:

Start calibration.......Init OK!
Uncalibration temp = 29.20
Please Place the module horizontally!
Start calibration........
-1652
11143
6063
Calibration OK!!
X axis = -1.24g
Y axis = 8.50g
Z axis = 4.55g
X axis = -1.21g
Y axis = 8.43g

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートをご用意しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを提供しています。

Loading Comments...