Кратко об ADXL345 GY-291
Модуль ADXL345 GY-291 — трёхосевой MEMS-акселерометр на чипе ADXL345 для измерения статического ускорения (гравитация, наклон) и динамического ускорения (движение, вибрация, удары) в диапазонах от ±2 g до ±16 g. Связь с контроллером — I²C или SPI, частота обновления данных 0,1–3200 Гц программируется. Встроенные функции: одиночное/двойное касание, свободное падение, активность/бездействие, буфер FIFO на 32 образца и самопроверка.
Основные характеристики
- Микросхема
- ADXL345
- Тип
- трёхосевой цифровой MEMS-акселерометр
- Диапазон измерения
- ±2 g, ±4 g, ±8 g, ±16 g (программируется)
- Масштабный коэффициент (типовой)
- в fixed 10-bit: 3,9 / 7,8 / 15,6 / 31,2 mg/LSB (256 / 128 / 64 / 32 LSB/g) соответственно диапазону; в full-resolution: около 3,9 mg/LSB во всех диапазонах [1]
- Разрешение
- фиксированные 10 бит; в full-resolution — 10 / 11 / 12 / 13 бит для ±2 / ±4 / ±8 / ±16 g [1]
- Частота обновления (ODR)
- 0,1–3200 Гц, программируется [1]
- Адрес I²C
- 0x53 (SDO/ALT ADDRESS → GND) или 0x1D (SDO/ALT ADDRESS → VDD I/O)
- Интерфейсы
- I²C (100/400 кГц), SPI (3- или 4-проводной, до 5 МГц) [1]
- Питание модуля
- 3,3–5 В на входе VCC; встроенный LDO снижает напряжение для чипа
- Питание чипа ADXL345
- 2,0–3,6 В [1]
- Ток чипа (типовой)
- от 23 мкА при низких ODR; 140 мкА при 100–800 и 3200 Гц; зависит от ODR и напряжения питания. В режиме standby — 0,1 мкА [1]
- Рабочая температура
- от −40 до +85 °C
- Размеры модуля
- 20,4 × 16,2 мм
- Контакты
- VCC, GND, SCL/SCK, SDA/SDI, SDO/ALT ADDRESS, CS, INT1, INT2
- Встроенные функции
- одиночное/двойное касание, свободное падение, активность/бездействие, FIFO на 32 образца, самопроверка [1]
Подробное описание и особенности
Принцип измерения
ADXL345 — ёмкостный MEMS-датчик: ускорение изгибает подвижную конструкцию, изменение ёмкости моста преобразуется в цифровой 16-битный дополнительный код [1]. Датчик измеряет и статическое ускорение (гравитацию — ось, направленная вверх, показывает ≈ 1 g), и динамическое ускорение от движения и вибрации, поэтому его можно использовать для электронного уровня, детектора движения и записи вибраций. Нелинейность — ±0,5 % от полной шкалы, перекрёстная чувствительность осей — до ±1 % [1]. Полоса пропускания всегда равна половине частоты обновления (ODR/2).
При условиях спецификации выход при 0 g может находиться в пределах от −150 до +150 mg для осей X/Y и от −250 до +250 mg для оси Z [1]. Значения ±35 mg для X/Y и ±40 mg для Z описывают статистическое отклонение от идеального значения, а не гарантированную максимальную погрешность каждого экземпляра [1]. После сборки устройства следует откалибровать смещение нуля, поскольку на него также влияют пайка и механические напряжения платы.
Диапазоны, разрешение и данные
Программируются четыре диапазона: ±2, ±4, ±8 и ±16 g. В режиме fixed 10-bit меньший диапазон даёт лучший масштаб: типично 3,9 mg/LSB при ±2 g, 7,8 mg/LSB при ±4 g, 15,6 mg/LSB при ±8 g и 31,2 mg/LSB при ±16 g. В full-resolution масштаб сохраняется на уровне около 3,9 mg/LSB во всех диапазонах, а с увеличением диапазона количество значащих битов возрастает от 10 до 13 [1]. Больший диапазон снижает риск насыщения при сильном ускорении.
Частота обновления программируется от 0,1 до 3200 Гц, но реальный максимум ограничен интерфейсом: через I²C при 100 кГц — до 200 Гц, при 400 кГц — до 800 Гц; частоты 1600 и 3200 Гц доступны только через SPI с тактовой частотой не менее 2 МГц [1]. Встроенный FIFO на 32 уровня (режимы bypass, FIFO, stream, trigger) накапливает образцы и снижает нагрузку на контроллер [1].
Питание и логические уровни
Встроенный LDO позволяет питать модуль GY-291 напряжением 3,3–5 В через контакт VCC, тогда как сам ADXL345 работает от 2,0–3,6 В [1]. Стабилизатор снижает только напряжение питания и не является преобразователем логических уровней. Уровень подтяжки SDA/SCL зависит от ревизии платы, поэтому совместимость с 3,3-вольтовыми GPIO необходимо проверять отдельно.
Встроенные функции событий
Распознавание событий выполняется самим чипом, а контроллер получает готовый сигнал на INT1 или INT2 (push-pull, по умолчанию активный высокий уровень, инверсия программируется) [1]. Доступны: одиночное и двойное касание (с программируемыми порогами, длительностью, задержкой и окном), свободное падение (логическое И по всем осям, таймер до 1,28 с), активность и бездействие (порог плюс время бездействия до 255 с). В режиме AUTO_SLEEP с включённым link чип после обнаружения бездействия переходит в низкочастотный sleep-режим, а после обнаружения движения автоматически возвращается к активной частоте ODR [1]. Sleep не следует путать со standby: в sleep сохраняется низкочастотное измерение активности, а в standby измерения не выполняются.
Самопроверка (SELF_TEST) прикладывает электростатическую силу к микроконструкции и изменяет выходной сигнал без механического воздействия — так можно проверить питание, связь и работу осей в собранном устройстве [1]. После подачи питания чип находится в режиме standby: измерения начинаются после установки бита Measure в регистре POWER_CTL (0x2D).
Подойдёт / не подойдёт
Подойдёт
- для измерения наклона и положения: в full-resolution масштаб около 3,9 mg/LSB позволяет различать изменения наклона менее 1° [1];
- для подсчёта шагов, детекторов активности и касаний;
- для обнаружения свободного падения, сбоев и перемещения объектов;
- для мониторинга вибраций: ODR до 3200 Гц через SPI, полоса до 1600 Гц [1];
- для батарейных устройств: типовой ток от 23 мкА при низких ODR и 0,1 мкА в режиме standby [1];
- для прототипов на макетной плате с 5-вольтовыми Arduino-совместимыми и 3,3-вольтовыми контроллерами ESP32 или Raspberry Pi после проверки логических уровней.
Не подойдёт
- если требуется измерять угловую скорость: акселерометр её не измеряет, для этого нужен IMU с гироскопом, например модуль GY-521 с MPU-6050;
- для измерения ускорений свыше ±16 g: шкала ограничена (10 000 g — только механическая стойкость чипа к удару [1]);
- для нескольких датчиков с одинаковым адресом: на шине доступны только два разных адреса (0x53 и 0x1D), для большего количества нужен I²C-мультиплексор;
- для высокоточных измерений без калибровки: смещение нуля требует компенсации, а регистры калибровки сбрасываются при каждом перезапуске питания [1].
Примеры применения
Электронный уровень / контроль наклона
Статическое ускорение позволяет определить угол наклона относительно гравитации. Диапазона ±2 g, частоты 100 Гц и усреднения нескольких образцов обычно достаточно для уровня, контроля наклона камеры или позиционирования робота.
Счётчик шагов и детектор активности
AUTO_SLEEP вместе с link-режимом позволяет при бездействии переходить в низкочастотный sleep-режим с типовым током около 23 мкА и автоматически возвращаться в активный режим после обнаружения движения [1]. Такой режим подходит для шагомеров и портативных регистраторов.
Обнаружение падения и смещения
Функция free-fall с упрощёнными рекомендуемыми порогами: THRESH_FF 0x05–0x09 (300–600 mg) и TIME_FF 0x14–0x46 (100–350 мс) [1]. Подходит для защиты приборов при падении и оповещения о перемещении объектов.
Мониторинг вибраций оборудования
Для анализа вибрации требуется высокая частота обновления: до 3200 Гц доступны через SPI (не менее 2 МГц) [1]. Считывайте пакеты через FIFO (до 32 образцов), применяйте программную фильтрацию и обеспечьте стабильное питание, качественное общее заземление с контроллером и короткий низкоимпедансный путь GND.
Первое подключение
Определите адрес I²C
Соедините контакт SDO/ALT ADDRESS с GND (адрес 0x53) или с логической шиной VDD I/O (адрес 0x1D). Не подключайте SDO/ALT ADDRESS непосредственно к входу VCC модуля, если на него подано 5 В: ADXL345 работает с логическим напряжением до 3,6 В [1]. Не оставляйте контакт без определённого уровня, иначе адрес будет неопределённым.
Настройте режим шины
Для I²C на входе CS самого ADXL345 должен быть высокий логический уровень относительно VDD I/O [1]. На GY-291 это может обеспечиваться разводкой платы; проверьте перемычку или схему своей ревизии и не подключайте CS непосредственно к 5-вольтовому входу VCC модуля. Для SPI подключите CS к совместимому GPIO контроллера. Убедитесь, что линии SDA/SCL имеют подтягивающие резисторы 4,7–10 кОм — встроенные на плате или внешние.
Выберите напряжение питания
На вход VCC модуля можно подавать 3,3 или 5 В: встроенный LDO снижает напряжение для ADXL345. Для 3,3-вольтовых контроллеров ESP32 и Raspberry Pi проще всего питать модуль от 3,3 В. Если на VCC подаётся 5 В, измерьте напряжение покоя SDA/SCL относительно GND перед соединением с GPIO.
Проверьте чип
Прочитайте регистр DEVID (адрес 0x00): корректное значение — 0xE5 [1]. Если адрес найден, а значение DEVID другое, проверьте контакты и полярность питания.
Включите измерения
Задайте диапазон и частоту обновления (регистры DATA_FORMAT 0x31 и BW_RATE 0x2C), затем установите бит Measure (D3) в POWER_CTL (0x2D) — чип запускается в режиме standby и без этой операции не выдаёт данные [1].
Совместимые товары и аксессуары
- Для 5-вольтовых макетов: плата Nano V3.0 ATmega328P — I²C/SPI и 5-вольтовая логика.
- Для IoT-проектов с Wi-Fi: модуль ESP32 MiniKit (CP2104) — 3,3-вольтовая логика, I²C и SPI.
- Для быстрого соединения без пайки: макетная плата на 400 отверстий (шаг 2,54 мм).
- Если требуется более двух I²C-датчиков: 8-канальный коммутатор I²C TCA9548A.
Ограничения и безопасность
Питание модуля и уровни SDA/SCL
Напряжение 5 В допустимо на входе VCC модуля благодаря встроенному LDO, но это не означает совместимость сигнальных линий с логикой 5 В. Во многих ревизиях GY-291 подтяжка SDA/SCL подключена к стабилизированной шине 3,3 В, однако разводка конкретной платы может отличаться. Перед подключением к 3,3-вольтовым GPIO ESP32 или Raspberry Pi подайте на модуль запланированное питание и измерьте напряжение покоя SDA и SCL относительно GND. Если оно превышает допустимый уровень входов контроллера, питайте модуль от 3,3 В или используйте преобразователь логических уровней.
SDO/ALT ADDRESS и CS нельзя оставлять неподключёнными
У чипа нет внутренних подтягивающих резисторов: без определённого уровня на SDO/ALT ADDRESS адрес I²C не определён, а неподключённый CS блокирует работу шины в режиме I²C [1]. Подавайте на эти контакты только уровни, совместимые с VDD I/O чипа; необработанные 5 В для них недопустимы.
ODR и скорость шины должны быть согласованы
Через I²C при 100 кГц максимальная частота обновления — 200 Гц, при 400 кГц — 800 Гц [1]. Более высокий ODR при медленной шине приводит к потере образцов и дополнительному шуму в данных.
Калибровка смещения и низкие частоты
Регистры калибровки OFSX/OFSY/OFSZ сбрасываются в 0 после перезапуска питания, поэтому калибровку нужно выполнять после каждого включения [1]. На частотах ниже 6,25 Гц температурный дрейф смещения заметно возрастает — для точных измерений в таком режиме нужна температурная калибровка [1].
FAQ
Почему модуль принимает 5 В, если ADXL345 работает от 2,0–3,6 В?
На плате GY-291 установлен LDO, который снижает входное напряжение VCC для питания ADXL345. Стабилизатор не преобразует логические уровни, поэтому SDA, SCL, CS и SDO необходимо подключать с учётом VDD I/O и ревизии платы.
Датчик не найден на шине I²C. Что проверить?
Сначала адрес: он зависит от контакта SDO/ALT ADDRESS — 0x53 при GND, 0x1D при VDD I/O. Затем проверьте подтяжку SDA/SCL, высокий логический уровень на CS для I²C и правильность подачи питания [1].
Как быстро проверить, что чип работает и отвечает?
Прочитайте регистр DEVID (адрес 0x00) — для ADXL345 он всегда возвращает 0xE5 [1].
Связь есть, но данные не изменяются. Почему?
После подачи питания чип находится в режиме standby [1]. Установите бит Measure (D3) в регистре POWER_CTL (адрес 0x2D), чтобы включить измерения.
Какую частоту обновления можно задать через I²C?
На шине 100 кГц — до 200 Гц, на 400 кГц — до 800 Гц [1]. Для 1600 и 3200 Гц требуется SPI с тактовой частотой не менее 2 МГц.
Сколько ADXL345 можно подключить к одной шине?
Два: один с адресом 0x53, другой с адресом 0x1D при разном подключении SDO/ALT ADDRESS. Для большего количества используйте I²C-коммутатор TCA9548A.
Какие пороги рекомендуются для обнаружения свободного падения?
THRESH_FF 0x05–0x09 (300–600 mg) и TIME_FF 0x14–0x46 (100–350 мс) — упрощённые рекомендуемые значения производителя [1]; для конкретной механики устройства пороги подбираются экспериментально.
Техническая документация
- Analog Devices, ADXL345 — 3-Axis, ±2 g/±4 g/±8 g/±16 g Digital Accelerometer, datasheet Rev. G (обновлено 10.05.2022) — параметры чипа: питание ADXL345 2,0–3,6 В, зависимость типового тока от ODR, standby 0,1 мкА, режимы fixed 10-bit и full-resolution, характеристики смещения нуля, ограничения I²C/SPI, адреса 0x53/0x1D, регистры DEVID/POWER_CTL, пороговые значения событий и самопроверка.