아두이노 코딩 코드 : Arduino UNO ADXL345 가속도계 인터페이스
우리는 모두 가속도계와 자이로스코프에 대해 알고 있습니다. 주로 가속도를 감지하는 데 사용됩니다. 가속도계는 선형 가속도를 측정할 수 있지만 자이로스코프는 회전 가속도를 찾는 데 도움이 됩니다. 자이로스코프는 지구의 중력을 사용하여 움직이는 물체의 방향을 결정하는 각도 속도를 측정하는 데 사용됩니다. MPU6050과 같은 센서는 가속계와 자이로스코프를 모두 갖추고 있으며 방향, 위치 및 속도를 찾는 IMU(관절 측정 장치)로 작동합니다.
여기서는 가속도 또는 속도 변화를 x, y, z축 단위로 측정하는 ADXL345 가속도계에 대해 설명합니다. 이러한 소형 센서는 자동차와 자전거에 사용되어 에어백을 전개하기 위한 사고를 감지하고 나침반이나 위치추적과 같은 다양한 용도로 휴대 전화에도 사용됩니다.
가속도계를 사용하여 아래 링크에서 확인할 수 있는 다양한 유용한 응용 프로그램을 제작했습니다.
차량 사고 경고 시스템
손 제스처 로봇은 아르뒤노를 사용하여 제어
지진 감지기 경보
탁구 게임
여기서 가속도계 기반 프로젝트를 모두 볼 수 있습니다.
가속도계 센서의 유형
시장에 출시된 MEMS 가속도계 센서에는 여러 종류가 있습니다. 정밀도, 전력 소비 및 인터페이스에 따라 분류할 수 있습니다. 이 모든 센서는 휴대용이며 웨어러블과 같은 모든 종류의 장치에 장착할 수 있습니다. 이러한 센서는 가속도를 3축(x,y,z)으로 측정합니다.
널리 사용되는 일부 센서는 다음과 같습니다.
ADXL335
ADXL345
ADXL356
이러한 가속도계 센서는 매우 인기가 있으며, 이 세 센서 외에도 ADXL354, ADXL355, ADXL372 등과 같은 다른 가속도계 센서가 많이 있습니다.
이 센서들 간의 차이점을 살펴보겠습니다.
비교: ADXL335 대 ADXL345 대 ADXL356입니다.
위의 세 가지 중 ADXL345는 디지털 특성 때문에 인터페이스가 쉽습니다. 그러나 SPI/I2C 프로토콜에서 작동하므로 프로그래밍이 어렵습니다. ADXL345는 정적 및 동적 가속도를 측정할 수 있으며 모바일 애플리케이션에 적합합니다. 또한, 이러한 센서는 실험실 보정이 필요 없으며 추가 보정이 필요하지 않습니다.
여기서는 ADXL345 센서용 Adafruit 라이브러리를 사용하여 Arduino Uno와 연결하겠습니다.
구성 요소
아두이노 UNO
ADXL345 가속도계
남자-여자 배선
브레드보드
회로 다이어그램입니다.
Arduino와 ADXL345 가속도계 인터페이스의 회로도는 다음과 같습니다.
ADXL345 Arduino 연결은 다음과 같습니다.
adxl345의 Arduino -> SDA 핀을 연결합니다.
Arduino -> adxl345의 SCL 핀을 연결합니다.
adxl345의 Arduino -> GND 핀을 연결합니다.
Arduino -> adxl345의 Vcc를 연결합니다.
ADXL345 Arduino 코드 설명
이 ADXL345 Arduino 프로젝트의 경우 ADXL345 센서를 위한 두 개의 라이브러리가 필요합니다.
아다프루트 ADXL345
아다프루트 통합 센서
위의 라이브러리를 다운로드하려면 Arduino IDE를 열고 Sketch -> 라이브러리 포함 -> 라이브러리 관리로 이동합니다. Adafruit ADXL345를 검색하여 설치합니다. 마찬가지로 Adafruit Unified 센서를 검색하여 설치합니다.
이제, 우리는 코드를 쓸 준비가 되었습니다. 예제 코드는 Files -> 예제 -> Adafruit ADXL345 -> sensorest에서 확인할 수 있습니다.
1. 먼저 센서의 기능을 지원하는 데 필요한 모든 라이브러리 헤더 파일을 포함합니다. 여기서는 I2C 통신에도 유선 라이브러리를 사용하고 있습니다.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
2. ADXL345 Arduino 라이브러리의 다양한 기능을 사용하기 위해 accel과 같은 변수를 사용하여 인스턴스를 만듭니다.
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
3. Invoid setup() 기능은 시리얼을 사용하여 시리얼 모니터에 데이터를 인쇄하도록 시리얼 통신을 초기화합니다.기능을 시작합니다. 이제 올바른 ADXL 센서가 연결되어 있는지 확인합니다. 우리는 accel에 의해 반환된 결과를 확인할 것입니다.start() 기능이 false를 반환하면 유효한 센서를 찾을 수 없는 메시지를 인쇄합니다.
void setup()
{
Serial.begin(9600);
if(!accel.begin())
{
Serial.println("No valid sensor found");
while(1);
}
}
4. 무효 루프() 기능에서 sensor_event_t structure를 사용할 변수를 만듭니다. 이 변수(이 경우 "이벤트")를 사용하여 .getevent() 함수를 사용하여 구조물 부재를 채웁니다. 이제 event.aceleration을 사용하여 가속도 값을 x,y, z축으로 인쇄합니다.x() 함수입니다.
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 가속도계 Arduino 교차를 테스트합니다.
마지막으로 ADXL345 센서를 Arduino UNO에 올바르게 연결하고 Arduino Uno 보드에 코드를 업로드합니다. 그런 다음 직렬 모니터를 열면 아래와 같이 가속도 판독값이 x, y, z축으로 표시됩니다.
센서를 모든 방향으로 천천히 이동하고 측정값을 관찰합니다.
이렇게 가속도계를 Arduino UNO와 함께 사용하여 x, y, z축의 변화를 감지할 수 있습니다.
아래에 제공된 비디오로 ADXL345 Arduino 코드를 완료합니다.
Code
#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);
}
댓글