Grove - 3軸アナログ加速度センサー 40g (ADXL356C)
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
当社のウェブサイトでは、さまざまなシナリオやニーズに対応する3軸加速度センサーを見つけることができます。今回は、産業用グレードで高い安定性、高精度、低消費電力を備えたADI ADXLシリーズの3軸加速度センサーをご紹介します。
Grove - 3軸アナログ加速度センサー ±40g (ADXL356C) は、アナログ出力のMEMS加速度センサーです。このセンサーは、±10gと±40gの2つの測定範囲を選択できます。少しのキャリブレーション作業を行うだけで、比較的正確な結果を得ることができます。オンボードのGroveポートは、2チャンネルのアナログデータを出力できます:1つはZ軸用、もう1つはX/Y軸用です。オンボードスイッチを使用して、X軸またはY軸の信号を選択して出力できます。また、4ピンのはんだ付け穴を使用して、X/Y/Z軸を同時に出力することも可能です。このセンサーの消費電力は非常に低く、通常動作モードでは150 μA、スタンバイモードではわずか21 μAです。背面のパッド接続を変更することで動作モードを切り替えることができます。
ADI ADXLシリーズ加速度センサーには、異なる測定範囲と出力ニーズに対応する4つの製品があります:
製品 | 測定範囲 | 出力ポート | 消費電力 |
---|---|---|---|
Grove - 3軸アナログ加速度センサー ±20g (ADXL356B) | ±10 / ±20g | アナログ | 測定モード:150 μA / スタンバイモード:21 μA |
Grove - 3軸アナログ加速度センサー ±40g (ADXL356C) | ±10g / ±40g | アナログ | 測定モード:150 μA / スタンバイモード:21 μA |
Grove - 3軸デジタル加速度センサー ±40g (ADXL357) | ±10g@51200 LSB/g / ±20g@25600 LSB/g / ±40g@12800 LSB/g | デジタル I2C | 測定モード:200μA |
Grove - 3軸デジタル加速度センサー ±200g (ADXL372) | ±200g | デジタル I2C | 測定モード:22μA |
特徴
- 業界トップクラスの低ノイズ、温度によるオフセットドリフトの最小化、長期安定性を実現し、最小限のキャリブレーションで精密なアプリケーションを可能にします。
- 気密パッケージにより、長期的な安定性が優れています。温度による 0 g オフセット(全軸):最大 0.75 mg/°C。
- ADXL356 の高周波数における低ノイズは、ワイヤレス状態監視に最適です。
- 低ドリフト、低ノイズ。
- 超低消費電力:通常動作モード 150 μA、スタンバイモード 21 μA。
アプリケーション
- 慣性計測ユニット(IMU)/高度および方位基準システム(AHRS)
- プラットフォーム安定化システム
- 構造健全性モニタリング
- 状態監視
- 地震イメージング
- 傾斜センサー
- ロボティクス
仕様
パラメータ | 値 |
---|---|
電源電圧 | 3.3V / 5V |
動作周囲温度 | -40 – 125℃ |
出力フルスケール範囲 (FSR) | ±10g / ±40g |
XOUT, YOUT, ZOUT の感度 / (V1P8ANA に比例) | ±10 g@80 mv/g (Typ.) / ±40 g@20 mv/g (Typ.) |
温度による感度変化 | ±0.01%/°C (TA = −40°C ~ +125°C) |
0g オフセット / (V1P8ANA/2 に基づく) | ±125 mg (Typ.) |
出力インターフェース | アナログ |
ピン配置
対応プラットフォーム
Arduino | Raspberry Pi |
---|---|
はじめに
Arduinoで遊ぶ
必要な材料
Seeeduino V4.2 | Base Shield | Grove 3軸加速度計 ADXL356C |
---|---|---|
今すぐ購入 | 今すぐ購入 | 今すぐ購入 |
さらに、Seeeduino Lotus M0+を検討することもできます。これはSeeeduino V4.2とBase Shieldの組み合わせに相当します。
ハードウェア接続
ステップ1. Grove - 3軸アナログ加速度計 ±20g (ADXL356B) をBase ShieldのA0ポートに接続します。
ステップ2. Grove - Base ShieldをSeeeduinoに差し込みます。
ステップ3. USBケーブルを使用してSeeeduinoをPCに接続します。
ソフトウェア
Arduinoを初めて使用する場合は、開始する前にArduinoの使い方をご覧になることを強くお勧めします。
- ステップ1. GithubからSeeed_ADXL_356.inoをダウンロードします。
または、以下のコードをコピーすることもできます。
このコードはADXL_356BとADXL_356Cの両方に対応しています。356Cで使用する場合は、#define MODUEL_RANGE 20
を#define MODUEL_RANGE 40
に切り替えてください。そうしないと動作しません。
#include <Arduino.h>
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
#define SERIAL SerialUSB
#define SYS_VOL 3.3
#else
#define SERIAL Serial
#define SYS_VOL 5
#endif
float cali_data_xy;
float cali_data_z;
int16_t scale;
#define MODUEL_RANGE 20
#define MODULE_VOL 1.8
#define CALI_BUF_LEN 15
#define CALI_INTERVAL_TIME 250
float cali_buf_xy[CALI_BUF_LEN];
float cali_buf_z[CALI_BUF_LEN];
#define XY_PIN A0
#define Z_PIN A1
float deal_cali_buf(float *buf)
{
float cali_val = 0;
for(int i = 0;i < CALI_BUF_LEN;i++)
{
cali_val += buf[i];
}
cali_val = cali_val/CALI_BUF_LEN;
return (float)cali_val;
}
void calibration(void)
{
SERIAL.println("モジュールを水平に置いてください!");
delay(1000);
SERIAL.println("キャリブレーションを開始します........");
for(int i=0;i<CALI_BUF_LEN;i++)
{
cali_buf_xy[i] = analogRead(XY_PIN);;
cali_buf_z[i] = analogRead(Z_PIN);
delay(CALI_INTERVAL_TIME);
}
cali_data_xy = deal_cali_buf(cali_buf_xy);
cali_data_z = (float)deal_cali_buf(cali_buf_z);
SERIAL.println("キャリブレーション完了!!");
scale = (float)1000 / (cali_data_z - cali_data_xy);
cali_data_z -= (float)980 / scale;
SERIAL.println(cali_data_xy);
SERIAL.println(cali_data_z);
SERIAL.println(scale);
}
void AccMeasurement(void)
{
int16_t val_xy = 0;
int16_t val_z = 0;
val_xy = analogRead(XY_PIN);
val_z = analogRead(Z_PIN);
SERIAL.print("生データ xy = ");
SERIAL.println(val_xy);
SERIAL.print("生データ z = ");
SERIAL.println(val_z);
SERIAL.println(" ");
val_xy -= cali_data_xy;
val_z -= cali_data_z;
SERIAL.print("x または y 方向の加速度は ");
SERIAL.print(val_xy * scale / 1000.0);
SERIAL.println(" g ");
SERIAL.print("z 方向の加速度は ");
SERIAL.print(val_z * scale / 1000.0);
SERIAL.println(" g ");
SERIAL.println(" ");
SERIAL.println(" ");
SERIAL.println(" ");
delay(1000);
}
void setup()
{
SERIAL.begin(115200);
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
analogReadResolution(12);
#endif
calibration();
SERIAL.print("スケール = ");
SERIAL.println(scale);
}
void loop()
{
AccMeasurement();
}
ステップ2. デモをアップロードします。コードのアップロード方法がわからない場合は、コードのアップロード方法を確認してください。
ステップ3. Arduino IDEのシリアルモニタを開きます。ツール->シリアルモニタをクリックするか、++ctrl+shift+m++キーを同時に押します。ボーレートを115200に設定します。
ステップ4. キャリブレーション シリアルモニタのキャリブレーション手順に従ってください。数ステップでキャリブレーションが完了します。
ステップ5. これでセンサーを使用できるようになり、出力は以下のようになります:
モジュールを水平に置いてください!
キャリブレーションを開始します........
キャリブレーション完了!!
184.93
185.03
121
スケール = 121
生データ xy = 185
生データ z = 193
x または y 方向の加速度は 0.00 g
z 方向の加速度は 0.85 g
生データ xy = 188
生データ z = 196
x または y 方向の加速度は 0.36 g
z 方向の加速度は 1.21 g
Groveポートを使用してデータを出力する場合、X軸とY軸を同時に出力することはできません。オンボードスイッチを使用して出力チャンネルを選択できます。X/Y/Zを同時に出力したい場合は、4ピンのはんだ付け穴を使用してください。
FAQ
Q1: ±10gの測定範囲を選択する方法は?
A1: 測定範囲を変更するには、ハードウェアとソフトウェアの両方を修正する必要があります。まず、±40gに接続されている背面パッドを切断し、±10gに再はんだ付けします。その後、コードブロックの12行目を以下のように変更してください。
#define MODUEL_RANGE 40
$$ \downdownarrows $$
#define MODUEL_RANGE 10
回路図オンラインビューア
リソース
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。