Grove - 3軸デジタル加速度計 40g (ADXL357)
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
当社のウェブサイトでは、さまざまなシナリオやニーズに対応する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 |
特徴
- 業界をリードする低ノイズ、温度によるオフセットドリフトの最小化、長期安定性により、最小限のキャリブレーションで精密なアプリケーションを実現
- 密閉パッケージにより優れた長期安定性を提供: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.) |
出力インターフェース | デジタル |
ピン配置
対応プラットフォーム
Arduino | Raspberry Pi |
---|---|
はじめに
Arduinoで遊ぶ
必要な材料
Seeeduino V4.2 | Base Shield | Grove 3軸加速度計 ADXL357 |
---|---|---|
今すぐ購入 | 今すぐ購入 | 今すぐ購入 |
さらに、Seeeduino Lotus M0+を検討することもできます。これはSeeeduino V4.2とBase Shieldの組み合わせに相当します。
ハードウェア接続
ステップ1. Grove - 3軸アナログ加速度計 ±20g (ADXL357) をBase ShieldのI2Cポートに接続します。
ステップ2. Grove - Base ShieldをSeeeduinoに差し込みます。
ステップ3. USBケーブルを使用してSeeeduinoをPCに接続します。
ソフトウェア
Arduinoを初めて使用する場合は、開始する前にArduinoの使い方を参照することを強くお勧めします。
ステップ1. Seeed_ADXL_357ライブラリをGithubからダウンロードします。
ステップ2. Arduino用のライブラリをインストールする方法については、ライブラリのインストール方法を参照してください。
ステップ3.
example/ADXL_357/basic_demo
を開きます。
//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
回路図オンラインビューア
リソース
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートをご用意しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを提供しています。