ESP8266 및 3축 가속도 센서 ADXL345로 진동 측정

ESP8266 및 3축 가속도 센서 ADXL345을 사용하여 진동을 측정하고 IoT 데이터 시각화 서비스Ambient로 시각화합니다.



3축 가속도 센서 ADXL345



ADXL345는 다음과 같은 사양의 3축 가속도 센서입니다.
  • 설정에 따라 ±2G에서 ±16G까지 측정 가능
  • 해상도는 비트 당 3.9mG (설정에 따라)
  • SPI 및 I2C로 액세스 가능

  • 이 외에도 탭, 더블 탭의 검출, 움직임의 유무의 검출 등 풍부한 기능을 가지고 있습니다.

    ADXL345의 제어에는 ESP8266을 사용합니다. ESP8266과 ADXL345는 SPI로 연결되었습니다.


    ESP8266
    ADXL345


    3V3
    VDD

    GND
    GND

    IO14
    SCL

    IO12
    SDO

    IO13
    SDA

    IO5
    CS


    프로그램



    진동이라고 해도 여러가지 진동이 있습니다만, 이번은 건물의 진동을 측정하기로 합니다. 진동의 주파수는 건물에 따라 다르지만, 50Hz 정도까지를 측정하기로 하고, 10m초 간격으로 가속도 센서의 값을 샘플링하기로 했습니다.

    센서의 x축, y축을 수평 방향, z축을 수직 방향이 되도록 설치하면, x축, y축은 거의 0G, z축은 중력의 약 1G의 가속도가 걸린 상태가 됩니다. 그래서 먼저 10m초 간격으로 100회, x축, y축, z축의 가속도를 측정하여 평균값을 구하여 이것을 기준치로 합니다. 진동의 측정값은 센서에서 읽은 값과 기준값의 차이로 합니다. ADXL345의 분해능은 1비트 3.9mG이므로 3.9배로 가속도를 얻을 수 있습니다.

    프로그램에서 빠진 것은 SPI의 모드 설정이었습니다. ADXL345 데이터시트 에는, 다음과 같이 써 있습니다.

    SCLK는 직렬 포트 클럭이고 비 전송시 CS가 하이 레벨이면 SCLK는 하이 레벨이어야한다. 데이터는 SCLK의 상승 에지에서 샘플링해야합니다.

    이 설명은 SPI Mode3입니다. 그런데
    SPI.setDataMode(SPI_MODE3);
    

    그렇다면 올바른 값을 얻을 수 없습니다. 「 ESP8266 (ESP-WROOM-02) SPI 통신 고속화, 그 2
    SPI.setDataMode(SPI_MODE2);
    

    그렇다면 올바른 값을 얻을 수있었습니다.

    이 프로그램은 Github에 게시되었습니다.
  • AmbientVibration

  • 프로그램을 빌드하려면 Ambient의 Arduino 라이브러리가 필요합니다. 설치 방법은 "Arduino ESP8266을 사용하여 온도 및 습도를 측정하고 Ambient로 전송하여 그래프화"을 참조하십시오.

    데이터 측정



    프로그램을 빌드하고 움직여 보았습니다. Wi-Fi에 접속하여 기준이 되는 x, y, z축의 가속도를 측정하여 표시한 후, 10초간 진동을 측정합니다. 시험에 센서를 둔 책상을 x축 방향, y축 방향, z축(연직) 방향으로, 각각 3회씩 가볍게 두드려 보았을 때의 모습이 최초로 실은 그래프입니다.

    x축, y축, z축 각각의 방향으로 두드렸을 때에 대응하는 방향의 진동이 검출되고 있는 것을 알 수 있습니다. y축 방향으로 두드렸을 때는 y축뿐만 아니라 x축에도 진동이 검출되고 있습니다만, 이것은 책상이 x축 방향으로 흔들리기 쉬웠을지도 모릅니다.

    z축 방향의 그래프를 확대해 본 것이 아래의 그림입니다.



    10m초의 샘플링으로 진동은 측정할 수 있는 것 같습니다.

    측정 결과는 이하의 주소로 공개하고 있습니다.

    좋은 웹페이지 즐겨찾기