Акселерометр SC7A20, QIIC

Акселерометр — это прибор, позволяющий измерять ускорение тела под действием внешних сил. Подробно об устройстве этого датчика мы уже рассказывали на одном из уроков: Акселерометр: что это такое и как им определять наклон тела.

На этом уроке мы подключим к контроллеру и напишем программу для MEMS акселерометра SC7A20, который является полным аналогом LIS2DH12. Сам датчик выполнен в корпусе LGA 12 и имеет крошечные размеры 2×2, поэтому для эксперимента мы используем модуль RobotClass SC7A20.

Датчик акселерометр SC7A20 RobotClass

Модуль снабжён разъёмами QIIC, с помощью которых к нему удобно подключать другие модули и контроллеры с поддержкой QIIC.

Характеристики модуля SC7A20

  • напряжение питания: 3,3 В;
  • рабочий ток: 20 мкА (при частоте 100 Гц);
  • акселерометр, диапазон: ± 2, 4, 8, 16g;
  • разрядность АЦП: 12;
  • интерфейс: SPI либо I2C (QIIC).

Список необходимых компонентов

Для выполнения простого примера с датчиком RobotClass SC7A20, кроме самого модуля датчика, потребуется отладочная плата Графит-32S или аналогичная на основе ESP32, переходник и кабель для шины QIIC, а также немного проводов розетка-розетка. Если вам не хватает что-то из этого, можно добавить эти компоненты в корзину прямо здесь и затем оформить заказ в нашем интернет-магазине.

В корзину
В корзину
В корзину
В корзину
В корзину

Подключение

Датчик SC7A20 работает с напряжением 3.3 Вольта, а значит мы должны подключать его к контроллеру с такими же уровнями, либо использовать преобразователь уровней. В этом уроке мы используем отладочную плату Графит-32S (подойдет также любой Node-MCU).

Подключаем датчик к плате Графит-32S по стандартной схеме для I2C интерфейса:

Графит-32SGnd3.3SDA/23SCL/22
SC7A20GVCCSDASCL

Адрес I2C

По умолчанию, датчик имеет адрес 0x19. Чтобы сменить его на альтернативный — 0x18, необходимо соединить перемычку ADR на лицевой стороне платы.

Подтяжка I2C

Для правильной работы шины I2C необходимо, чтобы линии SDA и SCL были подтянуты к питанию с помощью резистора соответствующего номинала. Эту подтяжку нужно сделать всего один раз на всей линии I2C.

На лицевой стороне платы имеется тройная перемычка I2C-PU. Её необходимо полностью соединить для обеспечения подтяжки шины I2C.

Программа

Поскольку датчик SC7A20 общается по I2C по такому же протоколу, что и оригинальный LIS2DH12, то для работы будем использовать библиотеку SparkFun_LIS2DH12_Arduino_Library. Единственное отличие от старшего брата — это идентификатор, который у SC7A20 равен 0x11. Чтобы библиотека не вредничала, в самом начале программы переопределим константу LIS2DH12_ID.

Программа будет слушать шину I2C и выводить в COM-порт свежие данные по всем трём осям.

#include <Wire.h>
#include "SparkFun_LIS2DH12.h"

// принудительно устанавливаем идентификатор датчика SC7A20,
// так как он отличается от идентификатора LIS2DH12
#define LIS2DH12_ID          0x11U

SPARKFUN_LIS2DH12 accel;

void setup(){
  Serial.begin(115200);
  Serial.println("SparkFun Accel Example");

  Wire.begin();

  // если датчик не обнаружен, вводим программу в бесконечный цикл
  if (accel.begin() == false){
    Serial.println("Accelerometer not detected");
    while (1);
  }
}

void loop(){
  // если от датчика получены свежие данные, выводим их
  if (accel.available()){
    int rawX = accel.getRawX();
    int rawY = accel.getRawY();
    int rawZ = accel.getRawZ();

    Serial.print("Acc raw: ");
    Serial.print(rawX);
    Serial.print(" x, ");
    Serial.print(rawY);
    Serial.print(" y, ");
    Serial.print(rawZ);
    Serial.print(" z");
    Serial.println();
  }
}

Загружаем программу на контроллер и открываем монитор COM-порта. Не забываем указать скорость обмена — 115200 бод.

Пример Arduino датчик SC7A20 RobotClass

Полезные ссылки

Библиотека для Arduino IDE:

https://github.com/sparkfun/SparkFun_LIS2DH12_Arduino_Library

Также библиотеку можно установить через менеджер библиотек в Arduino IDE. В поисковой строке менеджера необходимо ввести «SparkFun LIS2DH12«.

Спецификация производителя:

https://download.robotclass.ru/spec/SC7A20.pdf


Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.