본문 바로가기

아두이노우노 R4

ADXL345 가속도계와 아두이노 UNO 연동하기

반응형

 

 

https://circuitdigest.com/microcontroller-projects/interface-adxl345-accelerometer-with-arduino-uno

 

가속도계와 자이로스코프는 주로 가속도를 감지하는 데 사용되는 가속도계와 자이로스코프에 대해 모두 알고 있습니다. 가속도계는 선형 가속도를 측정할 수 있지만 자이로스코프는 회전 가속도를 찾는 데 도움이 됩니다. 자이로스코프는 지구의 중력을 이용해 움직이는 물체의 방향을 결정하는 각속도를 측정하는 데 사용됩니다. 가속도계와 자이로스코프가 모두 있는 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와 인터페이스 합니다.

 

필요한 구성 요소

  1. Arduino UNO
  2. ADXL345 가속도계
  3. 수-암 와이어
  4. 브레드 기판

 

회로도

 

ADXL345 가속도계와 Arduino 인터페이스용 회로도는 아래에 나와 있습니다. 

 

 

ADXL345 아두이노 연결:

  • 아두이노의 A4 핀(SDA) 연결-> adxl345의 SDA 핀
  • 아두이노의 A5 핀(SCL) 연결-> adxl345의 SCL 핀
  • 아두이노의 GND 연결-> adxl345의 GND 핀
  • 아두이노의 5V 연결-> adxl345의 Vcc 연결 

 

 

ADXL345 아두이노 코드 설명

 

이 ADXL345 아두이노 프로젝트에는 ADXL345 센서용 라이브러리 두 개가 필요합니다.

  1. Adafruit ADXL345
  2. 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);

}

 

 

데모 동영상 링크

 

문서 참고한 곳은 이 링크를 따라가세요.

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩