가속도계와 자이로스코프는 주로 가속도를 감지하는 데 사용되는 가속도계와 자이로스코프에 대해 모두 알고 있습니다. 가속도계는 선형 가속도를 측정할 수 있지만 자이로스코프는 회전 가속도를 찾는 데 도움이 됩니다. 자이로스코프는 지구의 중력을 이용해 움직이는 물체의 방향을 결정하는 각속도를 측정하는 데 사용됩니다. 가속도계와 자이로스코프가 모두 있는 MPU6050과 같은 센서가 있으며 방향, 위치 및 속도를 찾기 위해 관성 측정 장치(IMU)로 작동합니다.
여기서는 가속도 또는 x, y 및 z 축의 속도 변화를 측정하는 데 사용되는 ADXL345 가속도계에 대해 논의하고 있습니다. 이 소형 센서는 자동차나 자전거에서 사고를 감지하여 에어백을 전개하는 데 사용되며 휴대폰에서도 나침반 및 위치 추적과 같은 다양한 애플리케이션에 사용됩니다. 가속도계를 사용하여 아래 링크에서 확인할 수 있는 다양한 유용한 애플리케이션을 만들었습니다: 차량 사고 경보 시스템 아두이노 지진 감지기를 이용한 손동작 제어 로봇 지진 감지기 알람 핑퐁 게임
여기에서 가속도계 기반 프로젝트를 모두 볼 수 있습니다.
가속도 센서의 종류
시중에는 다양한 유형의 MEMS 가속도 센서가 나와 있습니다. 정밀도, 전력 소비 및 인터페이스를 기준으로 분류할 수 있습니다. 이 모든 센서는 휴대가 가능하며 웨어러블과 같은 모든 종류의 디바이스에 장착할 수 있습니다. 이 센서는 3축(x, y, z) 가속도를 측정합니다. 널리 사용되는 센서는 다음과 같습니다:
- ADXL335
- ADXL345
- ADXL356
이 가속도계 센서는 매우 인기가 있으며 이 세 가지 외에도 ADXL354, ADXL355, ADXL372 등과 같은 다른 가속도계 센서가 많이 있습니다.
이러한 센서의 차이점을 살펴보겠습니다.
비교: ADXL335 vs ADXL345 vs ADXL356
ADXL356 | ADXL345 | ADXL335 | |
Range | ±10g to ±40g | ±16g | ±3g, small range with precise readings |
Interface | Analog | SPI, I2C | Analog |
Power Consumption | Low Typical: 150µ |
Low Typical: 140µ |
Standard Typical: 350µ |
Pricing | High | Low | Lowest |
위의 세 가지 중 ADXL345는 디지털 특성으로 인해 인터페이스가 쉽습니다. 하지만 SPI/I2C 프로토콜에서 작동하기 때문에 프로그래밍이 어렵습니다. ADXL345는 정적 및 동적 가속도를 측정할 수 있으며 모바일 애플리케이션에 적합합니다. 또한 이 센서는 실험실에서 보정되었기 때문에 추가 보정이 필요하지 않습니다.
여기에서는 ADXL345 센서용 Adafruit 라이브러리를 사용하여 Arduino Uno와 인터페이스 합니다.
필요한 구성 요소
- Arduino UNO
- ADXL345 가속도계
- 수-암 와이어
- 브레드 기판
회로도
ADXL345 가속도계와 Arduino 인터페이스용 회로도는 아래에 나와 있습니다.
ADXL345 아두이노 연결:
- 아두이노의 A4 핀(SDA) 연결-> adxl345의 SDA 핀
- 아두이노의 A5 핀(SCL) 연결-> adxl345의 SCL 핀
- 아두이노의 GND 연결-> adxl345의 GND 핀
- 아두이노의 5V 연결-> adxl345의 Vcc 연결
ADXL345 아두이노 코드 설명
이 ADXL345 아두이노 프로젝트에는 ADXL345 센서용 라이브러리 두 개가 필요합니다.
- Adafruit ADXL345
- Adafruit 통합 센서
위의 라이브러리를 다운로드하려면 아두이노 IDE를 열고 스케치 -> 라이브러리 포함 -> 라이브러리 관리로 이동합니다. Adafruit ADXL345를 검색하여 설치합니다. 마찬가지로 Adafruit Unified 센서를 검색하여 설치합니다.
아래는 아두이노 IDE 2 버전에서 사용한다고 할 때 라이브러리 설치 방법을 설명하는 이미지입니다.
이제 코드를 작성할 준비가 되었습니다.
예제 코드는 파일 -> 예제 -> Adafruit ADXL345 -> sensortest 1에서 찾을 수 있습니다.
1. 먼저 센서의 기능을 지원하는 데 필요한 모든 라이브러리 헤더 파일을 포함합니다. 여기서는 I2C 통신을 위해 와이어 라이브러리를 사용하고 있습니다.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
2. ADXL345 아두이노 라이브러리의 다양한 기능을 사용하기 위해 accel과 같은 변수를 사용하여 인스턴스를 만듭니다.
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
3. void setup() 함수에서 Serial.start() 함수를 사용하여 직렬 모니터에 데이터를 출력할 수 있도록 직렬 통신을 초기화합니다. 이제 유효한 ADXL 센서가 연결되었는지 여부를 확인합니다. accel.begin() 함수에서 반환된 결과를 확인하여 false를 반환하면 유효한 센서를 찾지 못했다는 메시지를 출력합니다.
void setup()
{
Serial.begin(9600);
if(!accel.begin())
{
Serial.println("No valid sensor found");
while(1);
}
}
4. void loop() 함수에서 sensors_event_t 구조를 사용할 변수를 생성합니다. 이 변수(이 경우 "event")를 사용하여 .getevent() 함수를 사용하여 구조체 멤버를 채웁니다. 이제 event.acceleration.x() 함수를 사용하여 x, y, z축의 가속도 값을 출력합니다.
void loop()
{
sensors_event_t event;
accel.getEvent(&event);
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("");
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("");
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("");
Serial.println("m/s^2 ");
delay(500);
}
전체 코드와 데모 동영상은 이 글의 마지막에 제공됩니다.
ADXL345 가속도계 아두이노 인터페이스 테스트
마지막으로 ADXL345 센서와 아두이노 우노를 제대로 연결하고 아두이노 우노 보드에 코드를 업로드합니다. 그런 다음 직렬 모니터를 열면 아래와 같이 가속도 측정값이 x, y, z 축으로 표시됩니다.
센서를 모든 방향으로 천천히 움직이면서 판독값을 관찰하세요.
이것이 바로 가속도계를 아두이노 UNO와 함께 사용하여 x, y, z축의 변화를 감지하는 방법입니다. 아래 동영상을 통해 ADXL345 아두이노 코드를 완성하세요.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
void setup(void)
{
Serial.begin(9600);
if(!accel.begin())
{
Serial.println("No valid sensor found");
while(1);
}
}
void loop(void)
{
sensors_event_t event;
accel.getEvent(&event);
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" ");
Serial.println("m/s^2 ");
delay(500);
}
'아두이노우노 R4' 카테고리의 다른 글
UNO R4 WiFi BLE ⑤ BME280의 BLE peripheral (2) | 2024.10.11 |
---|---|
UNO R4 WiFi BLE ④ 기압 센서 BME280을 연결 (3) | 2024.10.11 |
UNO R4 WiFi BLE ③ LPS22의 BLE 주변기기와 연결되는 센트럴 (2) | 2024.10.11 |
Arduino를 사용한 스마트 주차 시스템 (7) | 2024.10.04 |
아두이노 가속도계 ADXL356, ADXL345, ADXL335 (5) | 2024.09.11 |
Arduino Uno, DFPlayer Mini 및 푸시 버튼 사용 오디오 재생 (7) | 2024.09.10 |
손가락 수를 이용한 아두이노 LED 제어 (1) | 2024.09.10 |
아두이노 온도 표시 문자 표현 (1) | 2024.09.05 |
더욱 좋은 정보를 제공하겠습니다.~ ^^