Mems 가속도계는 간단하고 휴대 가능하며 적용 가능한데 어떻게 시작해야 할까요? 다음 아두이노 프로젝트에 가장 적합한 가속도계는 무엇일까요? 이 블로그에서는 3축 가속도계로 시작하는 방법을 알려드리겠습니다: ADXL356. 비교; ADXL345와 ADXL335도 다룰 예정입니다!
여기 Seeed에서는 Arduino 보드와 연결할 수 있는 다양한 3축 가속도계를 제공하고 있지만 적합한 제품을 선택하는 방법이 궁금하거나 구매 가이드가 필요한 경우 관련 기사를 확인할 수 있습니다.
ADXL356
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
참고:
'아두이노우노 R4' 카테고리의 다른 글
UNO R4 WiFi BLE ④ 기압 센서 BME280을 연결 (3) | 2024.10.11 |
---|---|
UNO R4 WiFi BLE ③ LPS22의 BLE 주변기기와 연결되는 센트럴 (2) | 2024.10.11 |
Arduino를 사용한 스마트 주차 시스템 (7) | 2024.10.04 |
ADXL345 가속도계와 아두이노 UNO 연동하기 (5) | 2024.09.11 |
Arduino Uno, DFPlayer Mini 및 푸시 버튼 사용 오디오 재생 (7) | 2024.09.10 |
손가락 수를 이용한 아두이노 LED 제어 (1) | 2024.09.10 |
아두이노 온도 표시 문자 표현 (1) | 2024.09.05 |
아두이노 SH1106 OLED 동작 (4) | 2024.09.04 |
더욱 좋은 정보를 제공하겠습니다.~ ^^