본문 바로가기

아두이노우노 R4

아두이노 가속도계 ADXL356, ADXL345, ADXL335

반응형

 

Mems 가속도계는 간단하고 휴대 가능하며 적용 가능한데 어떻게 시작해야 할까요? 다음 아두이노 프로젝트에 가장 적합한 가속도계는 무엇일까요? 이 블로그에서는 3축 가속도계로 시작하는 방법을 알려드리겠습니다: ADXL356. 비교; ADXL345와 ADXL335도 다룰 예정입니다!

 

여기 Seeed에서는 Arduino 보드와 연결할 수 있는 다양한 3축 가속도계를 제공하고 있지만 적합한 제품을 선택하는 방법이 궁금하거나 구매 가이드가 필요한 경우 관련 기사를 확인할 수 있습니다. 

 

 

ADXL356

 

Grove – 3-Axis Analog Accelerometer ±40g (ADXL356C)

 

 

ADXL356은 산업용 등급의 높은 안정성, 정밀도, 저전력 ADI ADXL 계열 3축 가속도계입니다.

 

아날로그 출력 ADXL356은 낮은 잡음 밀도, 낮은 0g 오프셋 드리프트, 측정 범위를 선택할 수 있는 저전력 3축 가속도계입니다. ADXL356은 업계 최고의 잡음, 온도에 따른 최소 오프셋 드리프트, 장기적인 안정성을 제공하여 최소한의 보정으로 정밀 애플리케이션을 구현할 수 있습니다. ADXL356은

 

±10g 및 ±20g 범위를 지원하는 ADXL356B

 

 

±10g 및 ±40g 범위를 지원하는 ADXL356C 두 가지 버전이 있습니다.

 

위에 표시된 가속도계 센서는 Grove - 3축 아날로그 가속도계 ±40g로 ADXL356C 버전에서 실행됩니다. 산업용 등급 기술로 보정 작업이 거의 필요하지 않고 비교적 정확한 결과를 얻을 수 있습니다.

 

ADXL356C를 통합하면 Grove 3축 아날로그 가속도계에서 성능 이점을 얻을 수 있습니다. 이 제품이 우수한 이유는 다음과 같습니다.

 

업계 최고의 기술 업계 최고의 소음, 온도에 따른 오프셋 드리프트 최소화 및 장기적인 안정성으로 최소한의 보정으로 정밀 애플리케이션을 구현할 수 있습니다. 장기적인 온도 안정성 밀폐형 패키지로 뛰어난 장기 안정성 온도 대비 0g 오프셋(모든 축)을 제공합니다: 최대 0.75mg/°C 무선 상태 모니터링에 이상적 고주파수에서 ADXL356의 낮은 노이즈는 무선 상태 모니터링에 이상적 초저전력 소비 일반 작동 모드 - 150 μA, 대기 모드는 21 μA에 불과

 

Grove- 3축 아날로그 가속도계 ±40g(ADXL356C)의 특별한 점은 무엇일까요?

 

이 가속도계의 통합 Grove 포트는 4핀 Grove 인터페이스를 활용하여 플러그 앤 플레이 방식으로 사용할 수 있으므로 기존의 복잡하고 지저분한 점퍼 와이어 대신 표준 Arduino 장치 또는 Seeeduino(Seeed의 Arduino 버전)와 쉽게 연결할 수 있습니다.

 

 

제품 애플리케이션:

  • 관성 측정 장치(IMU)/고도 및 방위 기준 시스템(ADHR)
  • 플랫폼 안정화 시스템
  • 상태 모니터링
  • 지진 영상
  • 기울기 감지
  • 로봇 공학

 

ADXL 시리즈 비교: ADXL356 vs ADXL345 vs ADXL335 주요 차이점

 

 

 

ADXL356: 사양 왕

 

ADXL356은 가속도계 스펙트럼의 고급형에 속하기 때문에 전반적으로 더 나은 사양을 갖춘 사양 왕이라고 결론을 내릴 수 있습니다. 따라서 다른 두 모델과 직접 비교하는 것은 가장 공정하지 않으므로 더 자세히 설명하지 않겠습니다.

 

ADXL335 vs ADXL345

 

ADXL335는 측정 모드에서 150μA의 낮은 전력을 소비하는 3축 MEMS 가속도계입니다!이 아날로그 가속도계는 최소 풀스케일 범위가 ±3g인 낮은 가속도계로, 기울기 감지 애플리케이션에서 중력의 정적 가속도뿐만 아니라 동작, 충격 또는 진동으로 인한 동적 가속도도 측정할 수 있습니다. 온보드 Grove 커넥터를 사용하여 Arduino 보드에 쉽게 플러그 앤 플레이할 수 있습니다.

 

ADXL345는 모바일 디바이스 애플리케이션에 매우 적합합니다. 기울기 감지 애플리케이션에서 정적 중력 가속도뿐만 아니라 움직임이나 충격으로 인한 동적 가속도도 측정합니다. 높은 분해능(3.9 mg/LSB)으로 1.0° 미만의 경사 변화도 측정할 수 있습니다. Grove - ADXL345는 측정 모드에서 23μA, 대기 모드에서 0.1μA의 극도로 낮은 전력을 소비합니다. 저전력 모드에서는 매우 낮은 전력 소모로 임계값 감지 및 능동 가속도 측정을 통해 지능형 모션 기반 전력 관리가 가능합니다.4핀 Grove 인터페이스(3-5VDC)가 온보드되어 있어 Arduino 보드 및 Seeeduino 보드와 쉽게 연결할 수 있습니다.

 

애플리케이션: ADXL345는 모바일 애플리케이션에 더 적합하며 디지털 인터페이스로 인해 더 많은 잠재적 프로젝트가 가능합니다.

 

사용 편의성: ADXL335는 SPI/I2C가 아닌 아날로그 인터페이스로 인해 사용하기가 더 쉬울 수 있습니다.

 

전반적인 비교: 전반적으로 ADXL335는 구형 버전의 가속도계로, ADXL345의 장점인 더 넓은 범위 더 나은 감도 다음과 같은 보너스 기능: 비활성 감지 자유낙하 감지 활동 1° 미만의 각도 측정 낮은 전력 소비 이러한 장점으로 인해 ADXL345가 더 비용 효율적인 옵션이 되지만 사용 편의성, SPI/I2C 통신 프로토콜로 인해 사용하기가 복잡하다는 점은 염두에 두어야 할 사항 중 하나입니다. 

 

권장 가속도계 비교

 

우위 등에도 불구하고 프로젝트의 목적을 파악하고 가장 적합한 가속도계를 선택해야 합니다. 각 가속도계를 다음과 같이 추천합니다:

 

가장 비용 효율적인 옵션: ADXL345

초보자/최초 사용자 옵션: ADXL335

최고의 성능과 가장 광범위한 사용 애플리케이션: ADXL356

 

*주: 모든 가속도계는 아두이노와 호환 가능 선호하는 가속도계가 없다면 개인적으로 ADXL356을 추천합니다. 가격이 비싸지만 장기적인 투자로 생각하면 좋습니다. 사용이 간편하고 응용 범위가 넓어 초보자도 쉽게 시작할 수 있고 고급 사용자도 유용하게 사용할 수 있습니다. 

 

소프트웨어 구성 아두이노를 처음 사용하는 경우 계속 진행하기 전에 아두이노 시작하기를 참조하는 것이 좋습니다. 

 

1단계: Github에서 Seeed_ADXL_356.ino를 다운로드하거나 다음 코드를 복사합니다: 

 

#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           40

#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("Please Place the module horizontally!");
    delay(1000);
    SERIAL.println("Start calibration........");

    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("Calibration OK!!");
    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("Raw data xy  = ");
    SERIAL.println(val_xy);
    SERIAL.print("Raw data z  = ");
    SERIAL.println(val_z);
    SERIAL.println(" ");

    val_xy -= cali_data_xy;
    val_z -= cali_data_z;
    SERIAL.print("x or y position acc is ");
    SERIAL.print(val_xy * scale / 1000.0);
    SERIAL.println(" g ");
    SERIAL.print("z position acc is ");
    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("Scale = ");
    SERIAL.println(scale);

}



void loop()
{
    AccMeasurement();
}

 

 

2단계: 데모를 업로드합니다. 코드를 업로드하는 방법을 잘 모르는 경우 코드 업로드 방법을 참조하세요.

 

3단계: 도구-> 직렬 모니터를 클릭하여 Arduino IDE의 직렬 모니터를 엽니다. 또는 Ctrl+Shift+M 키를 동시에 누릅니다. 전송 속도를 115200으로 설정합니다

 

4단계: 보정. 직렬 모니터의 보정 팁을 따릅니다. 몇 단계만 거치면 완료됩니다.

 

5단계: 이제 센서를 사용할 수 있으며, 출력은 다음과 같이 표시됩니다. 

 

Please Place the module horizontally!
Start calibration........
Calibration OK!!
184.93
185.03
121
Scale = 121
Raw data xy  = 185
Raw data z  = 193

x or y position acc is 0.00 g 
z position acc is 0.85 g 



Raw data xy  = 188
Raw data z  = 196

x or y position acc is 0.36 g 
z position acc is 1.21 g

 

 

 

참고:  

가속도계 구매 가이드 및 ADXL335 리뷰 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^