Что такое акселерометр ADXL345. Как устроен и работает трехосевой цифровой акселерометр ADXL345. Как подключить ADXL345 к Arduino и считывать данные об ускорении. Какие основные характеристики у акселерометра ADXL345.
Принцип работы акселерометра ADXL345
ADXL345 — это трехосевой цифровой акселерометр с высоким разрешением (13 бит) и диапазоном измерения до ±16g. Он позволяет измерять как статическое ускорение силы тяжести при наклонах, так и динамическое ускорение в результате движения или ударов.
Принцип работы ADXL345 основан на измерении емкости дифференциального конденсатора. Подвижная масса, прикрепленная к кремниевой пластине, отклоняется под действием ускорения. Это вызывает изменение емкости между неподвижными пластинами и подвижной массой. Специальная схема преобразует это изменение емкости в выходной сигнал.
Основные особенности ADXL345:
- Три оси измерения: X, Y, Z
- Высокое разрешение: до 3.9 mg/LSB
- Выбор диапазона измерения: ±2g, ±4g, ±8g, ±16g
- Встроенная память FIFO
- Определение свободного падения
- Определение одиночных/двойных касаний
Подключение ADXL345 к Arduino
Для подключения ADXL345 к Arduino используется интерфейс I2C или SPI. Рассмотрим подключение по I2C как наиболее простой вариант:

- VCC → 3.3В
- GND → GND
- SDA → A4 (Arduino Uno)
- SCL → A5 (Arduino Uno)
- CS → Не подключается (подтянут к VCC на модуле)
Для надежной работы рекомендуется использовать подтягивающие резисторы 4.7 кОм на линиях SDA и SCL.
Программирование и считывание данных с ADXL345
Для работы с ADXL345 удобно использовать готовую библиотеку. Рассмотрим пример программы для считывания данных об ускорении:
«`cpp #includeВ этом примере мы инициализируем акселерометр, устанавливаем диапазон измерения ±16g и в бесконечном цикле считываем данные об ускорении по трем осям.

Интерпретация данных акселерометра ADXL345
Как интерпретировать полученные данные? Акселерометр измеряет проекцию вектора ускорения на каждую из осей. В состоянии покоя на датчик действует только ускорение свободного падения g ≈ 9.8 м/с².
Примеры показаний в различных положениях:
- Горизонтальное положение: X ≈ 0, Y ≈ 0, Z ≈ +9.8
- Вертикальное положение (Z вверх): X ≈ 0, Y ≈ +9.8, Z ≈ 0
- Перевернутое положение: X ≈ 0, Y ≈ 0, Z ≈ -9.8
При движении или вибрации к ускорению свободного падения добавляются динамические составляющие по соответствующим осям.
Калибровка акселерометра ADXL345
Для повышения точности измерений рекомендуется выполнить калибровку акселерометра. Как это сделать?
- Расположите датчик горизонтально и запишите показания.
- Поверните датчик на 180° вокруг каждой оси и снова запишите показания.
- Вычислите смещение нуля для каждой оси как среднее значение показаний в противоположных положениях.
- Запишите полученные значения смещения в соответствующие регистры ADXL345.
Пример кода для записи смещения:

Здесь offsetX, offsetY, offsetZ — вычисленные значения смещения в единицах ускорения, а 0.0039 — чувствительность датчика в g/LSB для диапазона ±2g.
Применение акселерометра ADXL345
Где можно использовать акселерометр ADXL345? Вот несколько популярных областей применения:
- Стабилизация изображения в фото- и видеотехнике
- Определение положения и ориентации в пространстве
- Измерение вибрации в промышленном оборудовании
- Системы безопасности и охранные устройства
- Фитнес-трекеры и спортивные гаджеты
- Навигационные системы и инерциальные измерительные модули
Благодаря своей точности, низкому энергопотреблению и дополнительным функциям, ADXL345 находит применение в самых разных проектах — от простых поделок до серьезных промышленных систем.

Расширенные возможности ADXL345
Помимо базового измерения ускорения, ADXL345 предоставляет ряд дополнительных функций. Какие возможности открывает использование этих функций?
Определение свободного падения
ADXL345 может автоматически определять состояние свободного падения. Как это работает? Когда все три оси регистрируют ускорение близкое к нулю в течение заданного времени, генерируется прерывание. Это может использоваться, например, в устройствах защиты жестких дисков ноутбуков.
Детектирование ударов
Акселерометр способен определять одиночные и двойные удары (тапы). Это позволяет реализовать управление устройством с помощью постукиваний, что удобно для носимой электроники.
Измерение активности/неактивности
ADXL345 может определять состояния активности (наличие движения) и неактивности (отсутствие движения). Как это применить? Например, для автоматического включения/выключения устройства при начале или прекращении движения.
«`cpp // Настройка определения свободного падения accel.setFreeFallThreshold(0.35); // Порог в g accel.setFreeFallDuration(0.1); // Длительность в секундах // Настройка определения ударов accel.setTapThreshold(2.5); // Порог в g accel.setTapDuration(0.02); // Длительность в секундах // Настройка определения активности/неактивности accel.setActivityThreshold(1.2); // Порог в g accel.setInactivityThreshold(0.8);// Порог в g accel.setTimeInactivity(5); // Время в секундах // Включение прерываний accel.enableFreeFallInterrupt(); accel.enableSingleTapInterrupt(); accel.enableActivityInterrupt(); accel.enableInactivityInterrupt(); «` После настройки этих функций можно обрабатывать соответствующие прерывания в основной программе, реагируя на различные события, определяемые акселерометром.
Статьи о роботах » Подключения акселерометра ADXL345 к Arduino
Статья о принципах работы модуля GY-291 на микросхеме ADXL345. Это цифровой трехосевой акселерометр.
Акселерометры используют для определения вектора ускорения. Акселерометр ADXL335 имеет три оси, и благодаря этому он может определять вектор ускорения в трёхмерном пространстве. Ввиду того, что сила земного притяжения — это тоже вектор, то акселерометр может определять свою собственную ориентацию в трёхмерном пространстве относительно центра Земли.
На иллюстрации приведены рисунки из паспорта на акселерометр ADXL335.
Посмотреть даташит микросхемы ADXL345 (формат PDF размер 847 КБ)
Здесь изображены координатные оси чувствительности акселерометра по отношению к геометрическому размещению корпуса устройства в пространстве, а также таблица значений напряжения с 3-х каналов акселерометра в зависимости от его ориентации в пространстве. Данные в таблице приводятся для находящегося в состоянии покоя датчика.
Рассмотрим подробнее, что же показывает нам акселерометр.
Пусть датчик лежит горизонтально, например, на столе. Тогда проекция вектора ускорения будет равна 1g по оси Z, или Zout = 1g. По остальным двум осям будут нули: Xout = 0 и Yout = 0.
При повороте датчика «на спину», он будет направлен в противоположную сторону относительно вектора силы тяжести, т.е. Zout = -1g.
Аналогично измерения снимаются по всем трём осям.
Понятно, что акселерометр может быть расположен как угодно в пространстве, поэтому со всех трёх каналов мы будем снимать отличные от нуля показания.
Если датчик сильно тряхнуть вдоль вертикальной оси Z, то значение Zout будет больше, чем «1g». Диапазон измерения от 2g до 16g по каждой из осей в любом из направлений (т.е. как с «плюсом», так и с «минусом»).
Чип аналогового акселерометра ADXL335 довольно мелкий и помещён в BGA корпус, и в домашних условиях его сложно смонтировать на плату.
Рассмотрим подключение акселерометра ADXL335 на примере готового модуля GY-291.
Принципиальная схема модуля GY-291 на базе микросхемы ADXL345.
Для питания акселерометра необходимо подать на вывод VCC модуля напряжение 3,3 В или 5 В. Измерительные каналы датчика подключаются к аналоговым выводам Arduino.
Библиотеки для подключения 3-осевого акселерометра GY-291 на чипе ADXL345.
Скачать ADXL345 library (архив zip 11,5 КБ) =>>
Скачать Sensor Library (архив zip 7 КБ) =>>
ADXL345 – подключение модуля акселерометра | RadioLaba.ru
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <P16F628A.INC>
LIST p=16F628A
__CONFIG H’3F18′ ;Конфигурация микроконтроллера
Sec equ 20h ;вспомогательный регистр счета
Sec1 equ 21h ;вспомогательный регистр счета
nomer equ 22h ;регистр хранения кода ascii символа
scetbit equ 23h ;регистр счета кол-ва бит
perem equ 24h ;вспомогательный регистр приема/передачи байта по spi
temp equ 25h ;вспомогательный регистр счета
tmp_symb equ 26h ;вспомогательный регистр счета для таблицы данных
shet equ 27h ;регистры подпрограммы преобразования двоичного числа
bcd1 equ 28h ;в десятичное
bcd2 equ 29h ;
bcd3 equ 2Ah ;
rezLH equ 2Bh ;
rezLL equ 2Ch ;
data_x0 equ 30h ;регистры приема и передачи данных по SPI для акселерометра
data_x1 equ 31h ;
data_y0 equ 32h ;
data_y1 equ 33h ;
data_z0 equ 34h ;
data_z1 equ 35h ;
kol_byte equ 36h ;счетчик кол-ва байт для приема/передачи по SPI
adr_byte equ 37h ;регистр адреса для приема/передачи по SPI
#DEFINE res_lcd PORTB,4 ;присвоение названий линиям ввода-вывода
#DEFINE cs PORTB,5 ;для работы с LCD дисплеем
#DEFINE dat_com PORTB,6 ;
#DEFINE sdata PORTB,7 ;
#DEFINE sclk PORTA,1 ;
#DEFINE int_1 PORTB,0 ;присвоение названий линиям ввода-вывода
#DEFINE cs_aks PORTB,1 ;для работы с акселерометром ADXL345
#DEFINE sda_aks PORTB,2 ;
#DEFINE scl_aks PORTB,3 ;
#DEFINE led PORTA,0 ;светодиод индикации передачи данных
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0000h ;начать выполнение программы с адреса 0000h
goto Start ;переход на метку Start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа
Start movlw b’00000010′ ;установка значений выходных защелок порта A
movwf PORTA ;
movlw b’00111110′ ;установка значений выходных защелок порта B
movwf PORTB ;
movlw b’00000111′ ;выключение компараторов
movwf CMCON ;
bsf STATUS,RP0 ;выбрать 1-й банк
movlw b’00000001′ ;настройка линий ввода\вывода порта B
movwf TRISB ;RB0 — на вход, остальные на выход
movlw b’11111100′ ;настройка линий ввода\вывода порта A
movwf TRISA ;RA0, RA1 на выход, остальные на вход
bcf STATUS,RP0 ;выбрать 0-й банк
call init_lcd ;вызов подпрограммы инициализации дисплея
call clear_lcd ;вызов подпрограммы очистки дисплея
call viv_not ;вывод на дисплей сообщения «— «
call paus_aks ;вызов подпрограммы паузы для полного включения акселерометра
call aks_init ;вызов подпрограммы инициализации акселерометра
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
met_1 btfss int_1 ;опрос линии прерывания акселерометра
goto met_1 ;нет прерывания: переход на метку met_1
bsf led ;получено прерывание, включаем светодиод
movlw . 50
movwf adr_byte ;адрес первого регистра результата измерения
movlw .6
movwf kol_byte ;считать 6 байт
call priem_spi ;вызов подпрограммы чтения по spi
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call ust_cur_1 ;вызов подпрограммы установки курсора в позицию X0-Y0
movlw ‘X’ ;вывод символа ‘X’
call viv_symb ;
movlw ‘:’ ;вывод символа ‘:’
call viv_symb ;
movf data_x0,W ;Загрузка двоичных значений ускорения по оси X
movwf rezLL ;в регистры подпрограммы двоично-десятичное преобраз.
movf data_x1,W ;
movwf rezLH ;
btfss rezLH,1 ;проверка отрицательного числа
goto met_2 ;число положительное, переход на метку met_2
movlw ‘-‘ ;число отрицательное, вывод символа ‘-‘
call viv_symb ;
comf rezLL,F ;инвертирование значения ускорения
comf rezLH,W ;
andlw b’00000011′ ;обнуление незначащих битов
movwf rezLH ;
movlw .1 ;прибавление числа 1, для получения положительного
addwf rezLL,F ;числа
btfsc STATUS,C ;
incf rezLH,F ;
goto met_3 ;переход на метку met_3
met_2 movlw ‘ ‘ ;вывод символа ‘ ‘
call viv_symb ;
movlw b’00000011′ ;обнуление незначащих битов
andwf rezLH,F
met_3 call bin2bcd ;вызов подпрограммы двоичо-десятичного преобразования
call vivod_usk ;вызов подпрограммы вывода на дисплей значения ускорения
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call ust_cur_2 ;вызов подпрограммы установки курсора в позицию X0-Y1
movlw ‘Y’ ;вывод символа ‘Y’
call viv_symb ;
movlw ‘:’ ;вывод символа ‘:’
call viv_symb ;
movf data_y0,W ;Загрузка двоичных значений ускорения по оси Y
movwf rezLL ;в регистры подпрограммы двоично-десятичное преобраз.
movf data_y1,W ;
movwf rezLH ;
btfss rezLH,1 ;проверка отрицательного числа
goto met_4 ;число положительное, переход на метку met_4
movlw ‘-‘ ;число отрицательное, вывод символа ‘-‘
call viv_symb ;
comf rezLL,F ;инвертирование значения ускорения
comf rezLH,W ;
andlw b’00000011′ ;обнуление незначащих битов
movwf rezLH ;
movlw .1 ;прибавление числа 1, для получения положительного
addwf rezLL,F ;числа
btfsc STATUS,C ;
incf rezLH,F ;
goto met_5 ;переход на метку met_5
met_4 movlw ‘ ‘ ;вывод символа ‘ ‘
call viv_symb ;
movlw b’00000011′ ;обнуление незначащих битов
andwf rezLH,F
met_5 call bin2bcd ;вызов подпрограммы двоичо-десятичного преобразования
call vivod_usk ;вызов подпрограммы вывода на дисплей значения ускорения
call ust_cur_3 ;вызов подпрограммы установки курсора в позицию X0-Y2
movlw ‘Z’ ;вывод символа ‘Z’
call viv_symb ;
movlw ‘:’ ;вывод символа ‘:’
call viv_symb ;
movf data_z0,W ;Загрузка двоичных значений ускорения по оси Z
movwf rezLL ;в регистры подпрограммы двоично-десятичное преобраз.
movf data_z1,W ;
movwf rezLH ;
btfss rezLH,1 ;проверка отрицательного числа
goto met_6 ;число положительное, переход на метку met_6
movlw ‘-‘ ;число отрицательное, вывод символа ‘-‘
call viv_symb ;
comf rezLL,F ;инвертирование значения ускорения
comf rezLH,W ;
andlw b’00000011′ ;обнуление незначащих битов
movwf rezLH ;
movlw .1 ;прибавление числа 1, для получения положительного
addwf rezLL,F ;числа
btfsc STATUS,C ;
incf rezLH,F ;
goto met_7 ;переход на метку met_7
met_6 movlw ‘ ‘ ;вывод символа ‘ ‘
call viv_symb ;
movlw b’00000011′ ;обнуление незначащих битов
andwf rezLH,F
met_7 call bin2bcd ;вызов подпрограммы двоичо-десятичного преобразования
call vivod_usk ;вызов подпрограммы вывода на дисплей значения ускорения
bcf led ;выключаем светодиод
goto met_1 ;переход на метку met_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vivod_usk movf bcd1,W ;извлечения разряда десятков тысяч
andlw b’00001111′ ;
addlw .48 ;
call viv_symb ;вызов подпрограммы вывода символа на дисплей
swapf bcd2,W ;извлечения разряда тысяч
andlw b’00001111′ ;
addlw . 48 ;
call viv_symb ;вызов подпрограммы вывода символа на дисплей
movf bcd2,W ;извлечения разряда сотен
andlw b’00001111′ ;
addlw .48 ;
call viv_symb ;вызов подпрограммы вывода символа на дисплей
swapf bcd3,W ;извлечения разряда десятков
andlw b’00001111′ ;
addlw .48 ;
call viv_symb ;вызов подпрограммы вывода символа на дисплей
movf bcd3,W ;извлечения разряда единиц
andlw b’00001111′ ;
addlw .48 ;
call viv_symb ;вызов подпрограммы вывода символа на дисплей
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма инициализации акселерометра
aks_init movlw .49
movwf adr_byte ;адрес регистра DATA_FORMAT
movlw .1
movwf kol_byte ;передача одного байта
movlw b’01000000′ ;самотестирование self-test отключено, 3-х проводной режим SPI,
movwf data_x0 ;активный уровень выхода прерываний — высокий, разрешение 10 бит,
;правое выравнивание результата, предел измерения 2g
call send_spi ;вызов подпрограммы записи по spi
movlw .44
movwf adr_byte ;адрес регистра BW_RATE
movlw .1
movwf kol_byte ;передача одного байта
movlw b’00000111′ ;нормальный режим работы (пониженное потребление выключено),
movwf data_x0 ;частота дискретизации 12,5 Гц (частота обновления результата измерения)
call send_spi ;вызов подпрограммы записи по spi
movlw . 46
movwf adr_byte ;адрес регистра INT_ENABLE (настройка прерываний)
movlw .1
movwf kol_byte ;передача одного байта
movlw b’10000000′ ;разрешить прерывание по готовности результата измерения DATA_READY,
movwf data_x0 ;остальные прерывания запрещены
call send_spi ;вызов подпрограммы записи по spi
movlw .30
movwf adr_byte ;адрес регистра OFSX (смещение по оси X)
movlw .3
movwf kol_byte ;передача трех байт
movlw .26 ;
movwf data_x0 ;смещение для оси X (регистр OFSX)
movlw .12 ;
movwf data_x1 ;смещение для оси Y (регистр OFSY)
movlw .150 ;
movwf data_y0 ;смещение для оси Z (регистр OFSZ)
call send_spi ;вызов подпрограммы записи по spi
movlw .45
movwf adr_byte ;адрес регистра POWER_CTL
movlw .1
movwf kol_byte ;передача одного байта
movlw b’00001000′ ;связь событий активности и бездействия выключена, режим автоматического
movwf data_x0 ;перехода в сон отключен, активировать режим измерения, спящий режим выключен,
;частота дискретизации для спящего режима 8 Гц
call send_spi ;вызов подпрограммы записи по spi
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма приема данных по SPI
priem_spi bsf adr_byte,7 ;установка бита RW для операции чтения по spi
movf kol_byte,W ;проверка кол-ва байт для приема
sublw . 1
btfss STATUS,C
goto pri_2
btfss STATUS,Z
return ;кол-во байт для приема равно 0:выход из подпрограммы
bcf adr_byte,6 ;сбрасываем бит MB, читаем только один байт данных
goto pri_3
pri_2 bsf adr_byte,6 ;устанавливаем бит MB, читаем несколько байт данных
pri_3 bsf STATUS,RP0 ;перенастройка линии sda_aks на выход
bcf TRISB,2
bcf STATUS,RP0
bcf cs_aks ;сбрасываем линию выбора CS, начало передачи данных
movf adr_byte,W
call send_sp ;передача адреса регистра акселерометра
bsf STATUS,RP0 ;перенастройка линии sda_aks на вход
bsf TRISB,2
bcf STATUS,RP0
movlw data_x0 ;установка начального регистра для приема данных
movwf FSR
decf FSR,F
pri_1 incf FSR,F
call priem_sp ;вызов подпрограммы приема данных
movwf INDF
decfsz kol_byte,F
goto pri_1
bsf cs_aks ;поднимаем линию выбора CS
return
priem_sp movlw .8 ;подпрограмма приема байта по spi
movwf scetbit
povtor1 bcf scl_aks
rlf perem,F
bsf scl_aks
btfsc sda_aks
bsf perem,0
btfss sda_aks
bcf perem,0
decfsz scetbit,F
goto povtor1
movf perem,W
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма передачи данных по SPI
send_spi bcf adr_byte,7 ;сброс бита RW для операции записи по spi
movf kol_byte,W ;проверка кол-ва байт для передачи
sublw . 1
btfss STATUS,C
goto sen_2
btfss STATUS,Z
return ;кол-во байт для передачи равно 0:выход из подпрограммы
bcf adr_byte,6 ;сбрасываем бит MB, передаем только один байт данных
goto sen_3
sen_2 bsf adr_byte,6 ;устанавливаем бит MB, передаем несколько байт данных
sen_3 bsf STATUS,RP0 ;перенастройка линии sda_aks на выход
bcf TRISB,2
bcf STATUS,RP0
bcf cs_aks ;сбрасываем линию выбора CS, начало передачи данных
movf adr_byte,W
call send_sp ;передача адреса регистра акселерометра
movlw data_x0 ;установка начального регистра для передачи данных
movwf FSR
decf FSR,F
sen_1 incf FSR,F
movf INDF,W
call send_sp ;передача данных на акселерометр
decfsz kol_byte,F
goto sen_1
bsf cs_aks ;поднимаем линию выбора CS
return
send_sp movwf perem ;подпрограмма отправки байта по spi
movlw .8
movwf scetbit
povtor bcf scl_aks
btfsc perem,7
bsf sda_aks
btfss perem,7
bcf sda_aks
bsf scl_aks
rlf perem,F
decfsz scetbit,F
goto povtor
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bin2bcd movlw . 16 ;Подпрограмма преобразования двоичного числа
movwf shet ;в десятичное
clrf bcd1 ;Двухбайтное число предварительно загружается
clrf bcd2 ;в регисты rezLH, rezLL
clrf bcd3 ;Результат преобразования:
goto bin2bcd_1 ;единицы в младшем полубайте bcd3
;десятки в старшем полубайте bcd3
adjdec movlw 0x33 ;сотни в младшем полубайте bcd2
addwf bcd1,F ;тысячи в старшем полубайте bcd2
addwf bcd2,F ;десятки тысяч в младшем полубайте bcd1
addwf bcd3,F ;
;
………………
………………
………………
End
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Акселерометра GY-291 на базе чипа ADXL345
#include <Wire.h>
#include <ADXL345.h>
ADXL345 accelerometer ;
void showRange ( void )
{
Serial . print ( «Selected measurement range: » ) ;
switch ( accelerometer . getRange ( ) )
{
case ADXL345_RANGE_16G : Serial . println ( «+/- 16 g» ) ; break ;
case ADXL345_RANGE_8G
: Serial . println
(
«+/- 8 g»
)
; break ;
case ADXL345_RANGE_4G : Serial . println ( «+/- 4 g» ) ; break ;
case ADXL345_RANGE_2G : Serial . println ( «+/- 2 g» ) ; break ;
default : Serial . println ( «Bad range» ) ; break ;
}
}
void showDataRate ( void )
{
Serial . print ( «Selected data rate: » ) ;
switch ( accelerometer . getDataRate ( ) )
{
case ADXL345_DATARATE_3200HZ : Serial . println ( «3200 Hz» ) ; break ;
case ADXL345_DATARATE_1600HZ : Serial . println ( «1600 Hz» ) ; break ;
case
ADXL345_DATARATE_800HZ : Serial . println ( «800 Hz» ) ; break ; case ADXL345_DATARATE_400HZ
: Serial . println
(
«400 Hz»
)
; break ;
case ADXL345_DATARATE_200HZ : Serial . println ( «200 Hz» ) ; break ;
case ADXL345_DATARATE_100HZ : Serial . println ( «100 Hz» ) ; break ;
case ADXL345_DATARATE_25HZ : Serial . println ( «25 Hz» ) ; break ;
case ADXL345_DATARATE_12_5HZ : Serial . println ( «12.5 Hz» ) ; break ;
case ADXL345_DATARATE_6_25HZ : Serial . println ( «6.25 Hz» ) ; break ;
case ADXL345_DATARATE_3_13HZ : Serial . println ( «3.13 Hz» ) ; break ;
case ADXL345_DATARATE_1_56HZ : Serial . println ( «1.56 Hz» ) ; break ;
case ADXL345_DATARATE_0_78HZ
: Serial . println
(
«0.78 Hz»
)
; break ;
case ADXL345_DATARATE_0_39HZ : Serial . println ( «0.39 Hz» ) ; break ;
case ADXL345_DATARATE_0_20HZ : Serial . println ( «0.20 Hz» ) ; break ;
case ADXL345_DATARATE_0_10HZ : Serial . println ( «0.10 Hz» ) ; break ;
default : Serial . println ( «Bad data rate» ) ; break ;
}
}
void setup ( void )
{
Serial . begin ( 9600 ) ;
// Инициализация ADXL345
Serial . println ( «Initialize ADXL345» ) ;
if ( ! accelerometer . begin ( ) )
{
Serial . println ( «Could not find a valid ADXL345 sensor, check wiring!» ) ;
delay ( 500 ) ;
}
// Установка диапазона измерений
// +/- 2G: ADXL345_RANGE_2G
// +/- 4G: ADXL345_RANGE_4G
// +/- 8G: ADXL345_RANGE_8G
// +/- 16G: ADXL345_RANGE_16G
accelerometer
. 2
Serial . print ( » Xnorm = » ) ;
Serial . print ( norm . XAxis ) ;
Serial . print ( » Ynorm = » ) ;
Serial . print ( norm . YAxis ) ;
Serial . print ( » Znorm = » ) ;
Serial . print ( norm . ZAxis ) ;
Serial . println ( ) ;
delay ( 100 ) ;
}
Трехосный цифровой акселерометр GY-291 (на ADXL345)
Акселерометры — это устройства, которые могут измерять проекции ускорений различных объектов (роботов, движимых частей манипулятора или летательных аппаратов). Чаще всего эти измерения происходят в трехосевой системе координат (проще говоря, в привычном нам трехмерном пространстве). Это позволяет получать полную информацию о текущем положении в пространстве.
Подключение модуля:
На плате датчика имеются 8 контактов, но для подключения к контроллеру (по I2C интерфейсу) достаточно четырех, которые имеют следующее назначение:
«VCC» — входной контакт питания
«GND» — заземление (к контакту «GND» на плате Arduino)
«SCL» — к контакту A5 на плате Arduino Uno (контакт для работы с I2C интерфейсом)
«SDA» — к контакту А4 на плате Arduino Uno (контакт для работы с I2C интерфейсом, на разных платах их назначение может меняться, например, на Arduino Mega это контакты A20 и A21)
Визуальная схема подключения представлена на картинке:
Применение данного модуля:
- Квадрокоптеры и другие беспилотные летательные аппараты
- Трехосевые пульты управления для манипуляторов, камер и других устройств
- Системы ориентирования в роботах
Характеристики модуля:
— Интерфейсы: I2C и SPI
— Диапазон измерений с акселерометра: до ± 16 g (с разрешением от 10 до 13 бит)
— Потребляемый ток (max): от 40 до 150 мкА в режиме измерений
— Рабочее напряжение для датчика: 2. ..3,6 В
— Рабочее напряжение модуля: 5 В
— Рабочая температура: -40…+85°C
— Расстояние между контактами: 2,54 мм
— Диаметр отверстий под крепление: 3 мм
— Размеры: 21 x 16 x 3 мм
— Вес: 5 г
3-осевые микромеханические акселерометры ADXL345 и ADXL346 с микропотреблением и детектором событий
Рис. 1. Структурная схема ADXL345 и расположение выводов
Таблица. 1. Назначение выводов ADXL345
Номер вывода | Обозначение | Описание |
1 | VDD I/O | Питание интерфейса ввода-вывода |
2 | GND | Должен быть подключен к общему проводу |
3 | Reserved | Зарезервирован, должен быть подключен к VS |
4 | GND | Должен быть подключен к общему проводу |
5 | GND | Должен быть подключен к общему проводу |
6 | VS | Питание |
7 | __ CS | Вход выбора МС, активный низкий |
8 | INT1 | Выход прерывания 1 |
9 | INT2 | Выход прерывания 2 |
10 | NC | Не подсоединен |
11 | Reserved | Зарезервирован, должен быть подсоединен к общему проводу или оставаться свободным |
12 | SDO/ALT ADDRESS | Выход данных для SPI или выбор адреса для I2C |
13 | SDA/SDI/SDIO | Данные для I2C или вход данных для 4-проводного SPI, или вход и выход данных для 3-проводного SPI |
14 | SCL/SCLK | Синхронизация для данных |
Распознавание легких ударов
Это событие происходит, в случае если измеренная величина ускорения превысит пороговое значение (хранящееся в регистре THRESH_TAP) на время не более того значения, которое хранится в регистре DUR. При этом будет установлен бит SINGLE_TAP.
Если за первым превышением порога, по истечении времени LATENCY TIME и в течение времени TIME WINDOW FOR SECOND TAP (см. рис. 2), которое определяется регистром WINDOW, последует второе событие, определяемое по описанным выше правилам, установится бит DOUBLE_TAP.
Рис. 2. Распознавание легких ударов |
Распознавание активности (ускорения)
Наличие активности определяется, когда величина измеренного ускорения превышает значение, хранящееся в регистре THRESH_ACT.
Отсутствие активности обнаруживается, когда величина ускорения в течение времени TIME_INACT меньше значения, хранящегося в регистре THRESH_INACT.
Описанный алгоритм работы соответствует режиму dc-coupled. Прибор также поддерживает режим работы ac-coupled, в котором, в соответствующих случаях, со значениями регистров THRESH_ACT и THRESH_INACT сравнивается модуль разницы между текущим значением ускорения и опорным — значением ускорения в начале события.
Для каждой оси возможен выбор, будет ли ускорение вдоль нее влиять на обнаружение событий активности (см. описание регистра ACT_INACT_CTL в [1]).
Диагностика состояния свободного падения
Состояние свободного падения детектируется, если величина ускорения меньше значения THRESH_FF в течение времени TIME_FF. Причем, всегда учитываются значения по всем осям, и алгоритм обработки соответствует режиму dc-coupled.
Используя сигнал с датчика, можно определить высоту падения. В простейшем случае достаточно измерить время, в течение которого генерируется событие FREE_FALL. Так например, если событие длится около 300 мс, то
Подробнее пример реализации алгоритма на Си см. в [4].
Режимы работы FIFO
Буфер FIFO позволяет снизить вычислительную нагрузку на управляющий МК и предназначен для временного хранения результатов измерения. В ADXL345 буфер имеет глубину в 32 измерения по каждой из осей и может функционировать в одном из следующих четырех режимов.
Bypass Mode — буфер отключен.
FIFO Mode — в случае переполнения буфера новые результаты измерения не сохраняются.
Stream Mode — в случае переполнения буфера самые старые значения заменяются новыми.
Trigger Mode — в этом режиме буфер функционирует аналогично Stream Mode до наступления события, определяемого полем trigger bit в регистре FIFO_CTL. После этого в буфере сохраняется число последних значений, определяемое в регистре FIFO_CTL, и дальнейшее функционирование продолжается аналогично режиму FIFO Mode.
Рекомендации по использованию FIFO см. в [5].
Примеры применения
Мониторинг состояния персонала или пациентов
Если акселерометр разместить на теле человека, можно реализовать датчик падения, происшедшего, например, в результате потери сознания человеком, нападения, если это охранник, или другого несчастного случая.
Пример кривых, отражающих величину ускорения при падении, показан на рисунке 3. В данном случае падение является не совсем свободным: тело «валится», поэтому характер изменения ускорения по осям отличается от случая свободного падения.
Рис. 3. Характер изменения ускорений при не совсем свободном падении |
В процессе падения можно выделить несколько стадий.
1. Начало падения. При свободном падении эта стадия характеризуется состоянием невесомости. Величина векторной суммы ускорений по всем трем осям близка к нулю. При падении отличном от свободного величина векторной суммы ускорений по трем осям не близка к нулю, но меньше 1g. Это первый признак падения (зона 1 на рис. 3).
2. Столкновение с поверхностью. По окончании падения происходит столкновение с поверхностью, что наблюдается на графике как резкое увеличение ускорения, вплоть до перегрузки датчика. Это второй признак падения (зона 2 на рис. 3).
3. Неподвижность. Человек не может подняться после падения немедленно — какое-то время он неподвижен. Это третий признак падения (зона 3 на рис. 3).
4. Изменение положения тела после падения. В результате того, что тело человека изменяет положение после падения, вектор ускорения свободного падения меняет направление по отношению к датчику. Это четвертый признак падения (сравните величины проекций ускорений на оси в зонах 3 и 4 на рисунке 3).
Измерение величины перемещения и вибродиагностика
В случае линейных синусоидальных колебаний их амплитуду достаточно просто вычислить. Как известно из курса физики [8], в случае гармонических синусоидальных колебаний амплитуда ускорения, частота и амплитуда колебаний связаны формулой:
,
где X0– амплитуда колебаний, a0– амплитуда ускорения,
ω – круговая частота колебаний.
Если необходимо определить текущее положение прибора с акселерометром, а движение не является равноускоренным, следует дважды провести интегрирование по времени с учетом начальных значений ускорения свободного падения, положения и скорости, как показано на рисунке 4 [9].
Простейший пример использования акселерометра при вибродиагностике износа механических деталей машин заключается в измерении интенсивности колебаний с некой характерной для данного изделия частотой. Полоса частот ADXL345 ограничена 1600 Гц, что может оказаться недостаточным. В этом случае целесообразнее использовать ADXL001 с полосой частот до 22 кГц и аналоговым выходом.
Рис. 4. Определение местоположения с использованием акселерометра |
Встроенный в механический узел датчик в этом случае должен содержать полосовой фильтр и амплитудный детектор с механизмом сигнализации. Для цифровой спектральной фильтрации сигнала с акселерометра вовсе не обязательно заниматься программированием на языках высокого уровня, можно применить МК семейства SigmaDSP® производства ADI. Подробнее об этом семействе см. [17].
Для создания фильтров с использованием SigmaDSP® достаточно приобрести отладочный набор, в состав которого входит полнофункциональная среда визуального программирования с интерфейсом ввода структуры, аналогичным LabView. С ее помощью можно быстро реализовать цифровые фильтры, в т.ч. с управляемыми извне характеристиками. Сигнал с датчика можно непосредственно оцифровать АЦП, входящим в состав SigmaDSP®, а обработанный цифровой поток вывести по последовательному интерфейсу или вновь преобразовать в аналоговый сигнал.
Построение пространственной картины измерений
Идея этого применения заключается в совместной обработке сигнала системы навигации и системы измерения, датчики которых конструктивно объединены, что позволяет построить пространственную картину измеряемой величины.
Пример 1. Металлоискатель, или функционально аналогичный прибор, в котором имеется датчик интенсивности некой физической величины. При перемещении измерительной части, на индикаторе прибора отображается не только текущее значение измеряемой величины, но и положение датчика относительно зарегистрированных минимумов и максимумов сигнала, или его градиентов. Это избавляет оператора от необходимости сравнивать текущие показания интенсивности с максимальными их значениями, анализируя направление перемещения измерительной части в поиске точек минимума и максимума.
Пример 2. Аудиометрия помещений может быть проведена гораздо быстрее, если измерительный микрофон совместить с датчиком перемещения. При этом измерения можно проводить не в точках, а по траекториям, автоматически фиксируя результаты соответствующим программным обеспечением.
Интерфейсы пользователя
Удобство применения бытовой техники имеет решающее значение в условиях конкуренции. Какой бы совершенной ни была та или иная технология, она едва ли станет успешной, если разработчикам не удалось сделать ее использование максимально интуитивным и привлекательным. Помочь завоевать будущего пользователя может применение акселерометров. Уже сейчас на рынке появилось немало устройств с недорогими акселерометрами, как специально ориентированными на использование этой технологии, так и содержащими этот компонент как опцию, благо софт в большинстве устройств можно обновить. Частными случаями такого применения является: изменение ориентации изображения на экране мобильного устройства или ноутбука; учет ориентации изображения в фотоаппарате или фоторамке; управление прокруткой изображения при встряхивании или наклоне мобильного телефона [14, 15]. Некоторые практические рекомендации по обработке данных с акселерометра при реализации интерфейсов можно найти в [16].
Детектирование свободного падения портативной аппаратуры
Использование акселерометров для защиты носителей данных получило распространение в жестких дисках портативных компьютеров. Алгоритм, реализующий обнаружение свободного падения, подробно рассмотрен в [10].
Отметим, что поскольку в этом случае требуется выдать информацию до завершения свободного падения, автор статьи рекомендует использовать для детектирования свободного падения суммы квадратов производных ускорения по осям.
Контроль сохранности грузов
Не секрет, что большая часть электронной и высокоточной механической аппаратуры резко отрицательно относится к ударам и требует бережного отношения при перевозке и эксплуатации. Как при сервисном обслуживании или перед вводом техники в эксплуатацию определить, были ли нарушены условия транспортировки и хранения? Установив акселерометр в прибор или укомплектовав упаковку электронным самописцем на базе акселерометра, всегда можно будет однозначно дать ответ на этот вопрос, причем в процессе эксплуатации прибора датчик может с успехом выполнять другие описанные выше функции. Акселерометры ADXL345 и ADXL346 прекрасно подойдут на эту роль, т.к. они обладают крайне низким потреблением и способны не только пробудить микроконтроллер при выходе величины ускорения за установленное пороговое значение, но и благодаря режиму работы FIFO Trigger Mode способны сохранить данные, отражающие картину происходящего до того, как хост-контроллер будет готов их принять для последующей обработки. Микропрограмме контроллера останется вычислить модуль вектора ускорения и сравнить его с заданным значением для принятия решения о нарушении допустимых условий транспортировки или эксплуатации.
Возможный алгоритм работы микропрограммы хост-контроллера следующий.
1. Зафиксировать текущие значения ускорения по осям.
2. В зависимости от предъявляемых условий, настроить пороги как сверху, так и снизу.
3. Перевести МК в спящий, а акселерометр – в экономичный режим.
4. Ожидание прерывания от акселерометра.
5. При поступлении сигнала прерывания начать непрерывное считывание данных с акселерометра.
6. Считать данные и вычислить модуль вектора ускорения.
7. Проверить на превышение допустимой величины; при необходимости сохранить результат проверки.
8. Проверить на установившееся значение. Если состояние не меняется, перейти к п. 1, иначе см. п. 6.
Для полноты информации необходимо указать, что для данного применения имеется специализированный компонент ADIS16240, способный отслеживать пиковые значения суммы квадратов измерений, полученных по всем трем осям. В сравнении с ADXL345, ADXL346, это готовый модуль с диапазоном измерений ±19g, однако его стоимость приблизительно на порядок выше.
Средства разработчика
Для разработки устройств с использованием акселерометров и оценки их возможностей Analog Devices выпускает специальные наборы. Для ADXL345 доступны наборы двух видов — на базе универсальной оценочной платы для инерциальных систем, внешний вид которого представлен на рисунке 5, и мини-набора разработчика (см. рис. 6).
Рис. 5. Внешней вид отладочного набора на базе универсальной отладочной платы для инерционных систем |
Рис. 6. Схема и внешний вид мини-набора разработчика |
Отладочный набор на базе универсальной оценочной платы для инерциальных систем включает в себя:
– микропотребляющий акселерометр ADXL345;
– универсальную материнскую плату для инерциальных систем;
– специфическую для каждого акселерометра дочернюю плату;
– стандартный USB-кабель для питания набора и передачи данных;
– графическую пользовательскую среду для ПВМ.
Плата большего размера обеспечивает интерфейс ввода полученных от акселерометра данных и функционирует также с другими акселерометрами производства ADI. При переходе на другой тип акселерометра достаточно приобрести дочернюю плату под интересующий тип этого датчика.
Поставляемое в комплекте программное обеспечение позволяет изменять содержимое внутренних регистров ADXL345 при помощи графического интерфейса, задавая, таким образом, режим работы акселерометра, и производить захват информации о движении с отображением ее в виде графиков на экране ПВМ. Вид графического интерфейса ПО показан на рисунке 7.
Рис. 6. Схема и внешний вид мини-набора разработчика |
Мини-набор предназначен для подключения акселерометра к системе сбора данных разработчика и упрощения задачи монтажа в процессе оценки возможностей датчика.
Оценочные средства и образцы МК можно заказать в ООО «ЭЛТЕХ».
Выводы
Применение акселерометров в современной технике позволит значительно расширить функциональные возможности существующей аппаратуры и создать приборы с уникальными характеристиками. В ряде случаев применение акселерометров позволит сэкономить рабочее время операторов, использующих оборудование с датчиками движения, и ресурс самого оборудования. Применение акселерометров в промышленности и на производстве позволит повысить безопасность персонала и сэкономить денежные средства на периодическом обслуживании.
Акселерометры производства ADI просты в применении, доступны для заказа, обеспечены необходимой для разработчика технической документацией и оценочными средствами, что, несомненно, сократит время проектирования изделия с использованием этих акселерометров.
ЛИТЕРАТУРА
1. Техническое описание компонента. www.analog.com/static/imported-files/data_sheets/ADXL345.pdf.
2. Пресс-релиз//www.analog. com/en/sensors/inertial-sensors/adxl345/products/1_19_09_ADIS_MEMS_Motion_Sensor_Delivers/press.html.
3. Краткий перевод на сайте ООО «ЭЛТЕХ»//ww.eltech.spb.ru/news.html?nid=650.
4. Определение состояния свободного падения//www.analog.com/library/analogdialogue/archives/43-07/fall_detector.html, www.analog.com/static/imported-files/application_notes/AN-1023.pdf.
5. Использование буфера FIFO//www.analog.com/static/imported-files/application_notes/AN-1025.pdf.
6. Сайт, посвященный вибродиагностике//www.vibration.ru.
7. Акселерометры: фантазии и реальность//www.analog.com.ru/Public/ADXL.pdf.
8. Курс физики//window.edu.ru/window_catalog/files/r61416/physics.pdf.
9. Инерциальная навигация//www.krugosvet.ru/enc/nauka_i_tehnika/aviaciya_i_kosmonavtika/INERTSIALNAYA_NAVIGATSIYA.html.
10. Альманах//www.eltech.spb.ru/pdf/almanah/alm_2007_1_7.pdf.
11. Ю.Г. Мартыненко. Инерциальная навигация//Соросовский образовательный журнал. №8. 1998 г.//www.pereplet.ru/nauka/Soros/pdf/9808_102.pdf.
12. Интерпретация измерений ускорений в инерциальной навигации//www.ioffe.rssi.ru/journals/jtf/2004/05/p134-135.pdf.
13. Книги и пособия издательства ИТМО: http://books.ifmo.ru/?out=stat&id=1.
14. 3D news//www.3dnews.ru/tags/%D0%B0%D0%BA%D1%81%D0%B5%D0%BB%D0%B5%D1%80%D0%BE%D0%BC%D0%B5%D1%82%D1%80.
15. Новостной портал MobileDevice.ru: http://www.mobiledevice.ru/bounce-boing-voyage-nokia-Mobile-prilozhenie-igra-akselerometr-d.aspx.
16. Принципы разработки ПО для iPhone с использованием акселерометра//http://habrahabr.ru/blogs/macosxdev/65148.
17. Страница семейства цифровых сигнальных процессоров SigmaDSP®//www.analog.com/en/embedded-processing-dsp/sigmadsp/processors/index.html.
ADXL345 Лист данных и информация о продукте
Особенности и преимущества
- Сверхнизкое энергопотребление: всего 23 мкА в режиме измерения и 0,1 мкА в режиме ожидания при В S = 2,5 В (номинал)
- Энергопотребление автоматически масштабируется в зависимости от полосы пропускания
- Разрешение, выбираемое пользователем
- Фиксированное разрешение 10 бит
- Полное разрешение, где разрешение увеличивается с диапазоном г , разрешение до 13 бит при ± 16 г (с сохранением масштабного коэффициента 4 мг / младший бит во всех диапазонах г )
- Дополнительные характеристики см.
В техническом описании.
- Загрузить техническое описание ADXL345-EP (pdf)
- Расширенный промышленный температурный диапазон: (от -55 ° C до + 105 ° C)
- Базовый уровень контролируемого производства
- Один монтажный / испытательный участок
- Одна производственная площадка
- Расширенное уведомление об изменении продукта
- Квалификационные данные доступны по запросу
- V62 / 12657 Номер чертежа DSCC
Подробнее о продукте
ADXL345 — это небольшой, тонкий, маломощный, 3-осевой акселерометр с высоким разрешением (13 бит) измерениями до ± 16 g .Цифровые выходные данные форматируются как 16-битное дополнение до двоек и доступны через SPI (3- или 4-проводный) или цифровой интерфейс I 2 C.
ADXL345 хорошо подходит для приложений мобильных устройств. Он измеряет статическое ускорение свободного падения в приложениях для измерения наклона, а также динамическое ускорение, возникающее в результате движения или удара. Его высокое разрешение (4 м, г, / LSB) позволяет измерять изменения наклона менее 1,0 °.
Предусмотрено несколько специальных функций обнаружения.Обнаружение активности и бездействия определяет наличие или отсутствие движения, а также превышение ускорения по любой оси заданного пользователем уровня. Обнаружение касания обнаруживает одиночные и двойные касания. Датчик свободного падения определяет, падает ли устройство. Эти функции могут быть сопоставлены одному из двух выходных контактов прерывания. Интегрированный, запатентованный 32-уровневый буфер «первым пришел — первым обслужен» (FIFO) может использоваться для хранения данных, чтобы минимизировать вмешательство хост-процессора.
Режимы низкого энергопотребления обеспечивают интеллектуальное управление мощностью на основе движения с измерением пороговых значений и активным измерением ускорения при чрезвычайно низком рассеянии мощности.
ADXL345 поставляется в небольшом тонком 14-выводном пластиковом корпусе размером 3 мм × 5 мм × 1 мм.
- ADXL345-EP Поддерживает оборонные и аэрокосмические приложения (AQEC)
adafruit / Adafruit_ADXL345: Унифицированный драйвер для акселерометра ADXL345
Этот драйвер предназначен для Adafruit ADXL345 Breakout (http://www.adafruit.com/products/1231) и основан на Объединенной библиотеке датчиков Adafruit (Adafruit_Sensor). Протестировано и отлично работает с платой Adafruit ADXL345 Breakout Board. Adafruit вкладывает время и ресурсы, предоставляя этот открытый исходный код, пожалуйста, поддержите Adafruit и оборудование с открытым исходным кодом, покупая продукты у Adafruit!
О ADXL345
ADXL345 — это цифровой акселерометр, поддерживающий режимы SPI и I2C, с регулируемым коэффициентом передачи данных и «диапазоном» (+/- 2/4/8 / 16g).Драйвер Adafruit_ADXL345 использует режим I2C для уменьшения общего количества выводов, необходимых для использования датчика.
Более подробную информацию о ADXL345 можно найти в таблице данных: http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
Совместимость
МК | Проверенные работы | Не работает | Не тестировалось | Банкноты |
---|---|---|---|---|
Atmega328 @ 16 МГц | X | |||
Atmega328 @ 12 МГц | X | |||
Atmega32u4 @ 16 МГц | X | |||
Atmega32u4 @ 8 МГц | X | |||
ESP8266 | X | |||
Atmega2560 @ 16 МГц | X | |||
ATSAM3X8E | X | |||
ATSAM21D | X | |||
ATtiny85 @ 16 МГц | X | эскиз слишком большой | ||
ATtiny85 @ 8 МГц | X | эскиз слишком большой | ||
Intel Curie @ 32 МГц | X | |||
STM32F2 | X |
- ATmega328 @ 16 МГц: Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini
- ATmega328 @ 12 МГц: Adafruit Pro Trinket 3V
- ATmega32u4 @ 16 МГц: Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.
0
- ATmega32u4 @ 8 МГц: Adafruit Flora, Bluefruit Micro
- ESP8266: Adafruit Huzzah
- ATmega2560 @ 16 МГц: Arduino Mega
- ATSAM3X8E: Arduino Due
- ATSAM21D: Arduino Zero, M0 Pro
- ATtiny85 @ 16 МГц: Adafruit Trinket 5V
- ATtiny85 @ 8 МГц: Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V
Что такое унифицированная библиотека датчиков Adafruit?
Единая библиотека датчиков Adafruit (https: // github.com / adafruit / Adafruit_Sensor) предоставляет общий интерфейс и тип данных для любого поддерживаемого датчика. Он определяет некоторую базовую информацию о датчике (пределы датчика и т. Д.) И возвращает стандартные единицы СИ определенного типа и масштаба для каждого поддерживаемого типа датчика.
Он обеспечивает простой уровень абстракции между вашим приложением и фактическим HW датчика, позволяя вам добавить любой сопоставимый датчик с одной или двумя строками кода для изменения в вашем проекте (по сути, конструктор, поскольку функции для чтения данных датчика и получения информация о датчике определяется в базовом классе Adafruit_Sensor).
Это важно по двум причинам:
1.) Вы можете использовать данные сразу, потому что они уже преобразованы в единицы СИ, которые вы понимаете и можете сравнивать, а не в бессмысленные значения, такие как 0..1023.
2.) Поскольку единицы СИ стандартизированы в библиотеке датчиков, вы также можете выполнить быструю проверку работоспособности, работая с новыми датчиками, или добавить любой сопоставимый датчик, если вам нужна более высокая чувствительность или если станет доступным более дешевое устройство и т. Д.
Световые датчики всегда сообщают единицы в люксах, гироскопы всегда сообщают единицы в рад / с и т. Д…. освобождая вас, чтобы сосредоточиться на данных, вместо того, чтобы копаться в таблице данных, чтобы понять, что на самом деле означают необработанные числа датчика.
Об этом драйвере
Adafruit вкладывает время и ресурсы в создание этого открытого исходного кода. Пожалуйста, поддержите Adafruit и оборудование с открытым исходным кодом, покупая продукты у Adafruit!
Взносы приветствуются! Пожалуйста, прочтите наш Кодекс поведения. прежде чем внести свой вклад, чтобы помочь этому проекту оставаться доброжелательным.
Документация и doxygen
Документация производится компанией doxygen.Вклады должны включать документацию для любого добавленного нового кода.
Некоторые примеры использования doxygen можно найти на этих страницах руководства:
https://learn.adafruit.com/the-well-automated-arduino-library/doxygen
https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips
Написано Кевином (KTOWN) Таунсендом для Adafruit Industries. Лицензия BSD, дополнительные сведения см. В файле license.txt. Весь текст выше должен быть включен в любое повторное распространение.
Для установки используйте диспетчер библиотек Arduino, найдите «Adafruit ADXL345» и установите библиотеку.
ADXL345 Распиновка модуля акселерометра, характеристики, характеристики и техническое описание
ADXL345 Модуль акселерометра
Модуль акселерометра ADXL345
Модуль акселерометра ADXL345
Распиновка модуля акселерометра ADXL345
нажмите на изображение для увеличения
ADXL345 — это небольшой, маломощный, полный 3-осевой модуль акселерометра MEMS с интерфейсами I2C и SPI.Плата ADXL345 оснащена встроенным регулятором напряжения 3,3 В и переключателем уровня, что упрощает взаимодействие с микроконтроллерами на 5 В, такими как Arduino.
Конфигурация контактов модуля ADXL345
Имя контакта | Конфигурация контактов |
ЗЕМЛЯ | Штифт заземления |
VCC | Вывод питания (от 3 В до 6 В) |
CS | Штифт выбора микросхемы |
ИНТ1 | Выход прерывания 1 |
ИНТ2 | Выход прерывания 2 |
SDO | Последовательный вывод данных |
SDA | Последовательный ввод и вывод данных |
SDL | Часы последовательной связи |
- Напряжение питания 3-6 В постоянного тока
- Встроенный стабилизатор напряжения LDO
- Встроенный преобразователь уровня напряжения (на основе MOSFET)
- Может взаимодействовать с 3.Микроконтроллер на 3 или 5 В.
- Сверхнизкое энергопотребление: 40 мкА в режиме измерения, 0,1 мкА в режиме ожидания при 2,5 В
- Обнаружение касания / двойного касания
- Обнаружение свободного падения
- Интерфейсы SPI и I2C
- Диапазон измерения: ± 16 г
- Значения измерений (от -16 г до + 16 г):
- X: от -235 до +270
- Y: от -240 до +260
- Z: от -240 до +270
Дополнительные модули датчиков: Модуль акселерометра ADXL335, Модуль магнитометра HMC5883L, Датчик влажности почвы
Связанные компоненты: ADXL345, резисторы, микросхема регулятора напряжения, микросхема переключения уровня
Краткое описание модуля акселерометраЭтот модуль акселерометра ADXL345 состоит из ИС акселерометра ADXL345, ИС регулятора напряжения, ИС переключателя уровня, резисторов и конденсаторов в интегральной схеме.Разные производители используют разные ИС регулятора напряжения.
ADXL345 IC от Analog Devices является мозгом этого модуля. ADXL345 — это небольшой, тонкий, маломощный, укомплектованный 3-осевой акселерометр с выходными сигналами напряжения. Изделие измеряет ускорение с минимальным диапазоном полной шкалы ± 16 г.
Как использовать модуль акселерометра ADXL345ADXL345 Модуль акселерометра состоит из 8 контактов.Использовать модуль ADXL345 с микроконтроллером очень просто. Подключите контакты VCC и GND к контактам 5V и GND микроконтроллера. Также подключите контакты SCL и SDA к контактам SCL и SDA Arduino.
Основная конструкция акселерометра состоит из неподвижных пластин и подвижных пластин. Когда ускорение применяется к оси, емкость между неподвижными пластинами и движущимися пластинами изменяется. В результате получается амплитуда выходного напряжения датчика, которая пропорциональна ускорению.
Применение акселерометра ADXL345
- Экономичные приложения с низким энергопотреблением, с датчиком движения и наклона
- Мобильные устройства
- Игровые системы
- Защита дисковода
- Стабилизация изображения
- Товары для спорта и здоровья
ADXL345 Акселерометр — Espruino
Обзор
Этот модуль взаимодействует с акселерометром ADXL345.Это недорогой цифровой акселерометр, который широко доступен в Интернете. Это устройство MEMS, использующее тот же принцип, что и другие акселерометры MEMS, например, используемые в смартфонах. ADXL345 может связываться с MCU через SPI или I2C, однако этот модуль поддерживает только I2C. Согласно листу данных, использование SPI более сложно, потому что другое устройство на той же шине может делать что-то, похожее на команду запуска I2C, пока CS находится на высоком уровне, поэтому они рекомендуют добавлять внешние компоненты, чтобы предотвратить прохождение чего-либо через линию данных, когда CS низкий, если используется SPI.
При использовании расширенных функций рекомендуется иметь под рукой технический паспорт. Это сложная часть с удивительным количеством функций.
http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
Электропроводка
Ниже предполагается, что вы используете коммутационную плату. Пайки паять в домашних условиях непрактично.
Подключите SDA и SCL к соответствующим контактам I2C на Espruino, а VCC и GND к 3,3 В и GND.
ADXL откалиброван для работы на 2.5 В, а не 3,3 В, и это немного искажает измерения (подробности по исправлению см. В таблице данных).
Вывод CS должен быть подключен к выводу GPIO (ADXL345, похоже, не регистрирует, что CS высокий, если это так, когда компонент включен). Контакты INT1 и INT2 могут быть подключены к любому контакту GPIO, если вы хотите использовать функцию прерывания. В противном случае не подключайте их.
Настройка
Настройте I2C, затем позвоните:
var Accel = require ("ADXL345").подключить (i2c, cspin, диапазон)
i2c — это I2C, к которому он подключен, cspin — это контакт, к которому подключен CS, поскольку ADXL345, похоже, не распознает, что CS высокий, если он высокий при запуске. Диапазон (по умолчанию 0, +/- 2 g):
0 | +/- 2 г |
1 | +/- 4 г |
2 | +/- 8 г |
3 | +/- 16 г |
По умолчанию акселерометр запускается в режиме ожидания.Чтобы получить данные, вам необходимо установить его в режим измерения. Если аргумент истинен, режим измерения будет включен, в противном случае он будет выключен. Вызов setup () также отключит режим измерения.
Чтение
мера ускорения (истина или ложь)
Чтобы прочитать значения из него, просто используйте Accel.read (). Он возвращает объект с 3 свойствами, x, y и z, преобразованными в единицы g:
ускор. Считывание ()
Вы можете откалибровать свои измерения с известными смещениями для осей x, y и / или z.Сделайте это с помощью setoffset () — все аргументы находятся в G (- или -), максимум 2 g. :
смещение ускорения (x, y, z)
Дополнительные параметры
настройка ускорения (BW_RATE, POWER_CTL)
Устанавливает два регистра настройки. Оба аргумента представляют собой байты, которые отправляются в соответствующие регистры. Обратите внимание, что для power_ctl бит 4 (измерение) принудительно отключен, поэтому его вызов отключает режим измерения. В соответствии с таблицей данных рекомендуется отключить режим измерения при внесении каких-либо изменений в состояние питания, чтобы обеспечить получение точных данных.
BW_RATE: Бит 5 — бит низкой мощности — если установлен, шум будет выше, но потребление энергии меньше. Бит 4 ~ 1 устанавливает скорость передачи данных:
Частота (Гц) | Полоса пропускания (Гц) | Код тарифа | IDD (мкА) |
---|---|---|---|
3200 | 1600 | 1111 | 140 |
1600 | 800 | 1110 | 90 |
800 | 400 | 1101 | 140 |
400 | 200 | 1100 | 140 |
200 | 100 | 1011 | 140 |
100 | 50 | 1010 | 140 |
50 | 25 | 1001 | 90 |
25 | 12.5 | 1000 | 60 |
12,5 | 6,25 | 0111 | 50 |
6,25 | 3,13 | 0110 | 45 |
3,13 | 1,56 | 0101 | 40 |
1,56 | 0,78 | 0100 | 34 |
0,78 | 0,39 | 0011 | 23 |
0.39 | 0,20 | 0010 | 23 |
0,20 | 0,10 | 0001 | 23 |
0,10 | 0,05 | 0000 | 23 |
POWER_CTL: Бит 6 связывает активность и бездействие (см. Таблицу) Бит 5 включает автоматический переход в спящий режим (см. Техническое описание). бит 4 включает измерения (принудительное отключение в setup () в соответствии с рекомендациями производителя, для включения используйте measure ()) бит 3 включает спящий режим (см. таблицу) Биты 1 и 2 устанавливают, как часто устройство выходит из спящего режима для выполнения измерения:
00 | 8 Гц |
01 | 4 Гц |
10 | 2 Гц |
11 | 1 Гц |
Прерывания
ADXL345 поддерживает прерывание на двух контактах прерывания.Вы можете подключить их к входным контактам и использовать setWatch (), чтобы реагировать на них. Приведенные ниже функции действуют как оболочки для соответствующих регистров; Это не предназначено для замены таблицы данных, и не ожидается, что это будет иметь большой смысл без таблицы.
аксел. Касание (порог, длительность, задержка, окно, оси)
Это настраивает прерывания на основе событий «касания» (т. Е. Кратковременного ускорения, как если бы вы касались устройства). Подобное прерывание используется (среди прочего) в некоторых фитнес-трекерах, у которых нет кнопок, но уже есть акселерометр, который действует как шагомер.
- Порог
- — это величина ускорения, необходимая для того, чтобы что-то квалифицировалось как нажатие (в милли-g, округленное до ближайшего 62,5).
- длительность — максимальная длина ответвления (мс)
- задержка — это время после первого касания до начала второго касания (мс) Окно
- — это длина окна, в течение которого может произойти второе нажатие или двойное нажатие. (мс)
- осей — это список байтов, оси которых могут участвовать в событиях касания. Используются только три младших бита; 0x04 — это x, 0x02 — это y, 0x01 — это z.По умолчанию 0x07 (все оси).
аксел. Выкл. (Порог, время)
Это настраивает прерывания на основе событий «свободного падения» (т. Е. Когда ускорение ниже заданного порога, как если бы объект падал). Такого рода прерывания используются для закрепления головок на жестких дисках портативных компьютеров, когда ноутбук падает, в надежде (часто тщетной) спасти накопитель.
- Порог
- — это порог, ниже которого акселерометр будет считать, что он находится в свободном падении, в миллиграммах. Спецификация рекомендует 300-600.
- time — это время, в течение которого он должен находиться в свободном падении перед срабатыванием прерывания, в мс.
Accel.act (thact, thinact, tinact, actctl)
ADXL может генерировать прерывания при активности или бездействии.
- т. Е. Порог активности (в миллиграммах, округлено до ближайшего 62,5)
- thinact — порог активности (в миллиграммах, округленный до ближайшего 62,5)
- tinact — это время, в течение которого (в секундах) ускорение должно быть ниже thinact, прежде чем устройство сочтет себя неактивным.
- actctl — это байт, определяющий, какие оси могут участвовать в определении активности и бездействия. Оси активности и бездействия можно установить отдельно. 0x77 позволяет всем осям участвовать как в активности, так и в бездействии.
аксел. Прерыв. (Включить, карта)
После настройки прерываний включите их с помощью этой функции. Таблица данных неоднократно предупреждает, что используемые прерывания должны быть настроены перед включением, чтобы не возникло неопределенное «нежелательное поведение».
Оба аргумента являются байтами; enable определяет, разрешено ли каждое прерывание (1 = разрешено), а map определяет, идет ли оно на вывод INT1 (0) или INT2 (1). Формат одинаков для обоих, с 1 битом на тип прерывания:
Бит | Тип |
---|---|
7 | Данные готовы |
6 | Одинарное нажатие |
5 | Двойное нажатие |
4 | Действия |
3 | Бездействие |
2 | свободное падение |
1 | водяной знак |
0 | перебег |
аксел.getintinfo ()
Получает информацию о последнем сработавшем прерывании. Он возвращает объект с двумя свойствами: тап (оси касания) и прерывание (содержащий текущий статус прерываний — тот же формат, что и для прерываний ())
Покупка
модулей ADXL345 можно купить во многих местах:
Эта страница автоматически создается на GitHub. Если вы заметите ошибки или у вас есть предложения, сообщите нам об этом.
Руководство по датчику акселерометра ADXL345
Инерционные датчики используются для обнаружения линейного и вращательного движения объекта.Есть два типа инерциальных датчиков — акселерометры, обнаруживающие линейное ускорение, и гироскопы, обнаруживающие вращательное движение. Акселерометры и гироскопы широко используются в нескольких приложениях, включая аэрокосмическую, военную, автомобильную, мобильные телефоны и бытовую электронику. Например, в мобильных телефонах датчики гироскопа и акселерометра используются для вращения экрана, игр, приложений виртуальной реальности и дополненной реальности. В автомобилях акселерометр и гироскоп используются для обнаружения опрокидывания автомобиля, контроля выпуска подушки безопасности, ABS, активной подвески, контроля тяги и контроля ремня безопасности.Многие военные приложения, такие как интеллектуальные боеприпасы, управление полетом и т. Д., Также используют эти датчики. В аэрокосмических приложениях эти датчики используются для измерения микрогравитации и контроля движения и вращения оборудования / устройств.
Для каждого приложения требуется акселерометр или гироскоп с определенными характеристиками. Ни один акселерометр или датчик гироскопа не подходит для всех приложений. Эти датчики всегда используются в некоторых электронных системах управления, поскольку простые значения ускорения и вращения объекта бесполезны.
ADXL345 — это небольшой 3-осевой акселерометр с динамическим диапазоном +/- 16g, разрешением 13 бит, максимальной полосой пропускания 3200 Гц и максимальной скоростью передачи данных 3200 раз в секунду. Это цифровой датчик акселерометра, который выводит цифровые значения ускорения по трем осям. Датчик выводит данные в формате 16-битного дополнения до двух, которые доступны через интерфейсы SPI или I2C. Этот датчик имеет сверхнизкое энергопотребление и потребляет всего 23 мкА в режиме измерения и 0,1 мкА в режиме ожидания.
ADXL345 имеет выбираемое пользователем разрешение и диапазоны измерения, которые можно выбрать, передав ему последовательные команды. Датчик также поддерживает гибкие режимы прерывания, которые могут быть сопоставлены любому из двух его контактов прерывания. ADXL345 имеет несколько встроенных функций считывания, которые могут быть сопоставлены контактам прерывания. Например, он имеет функции обнаружения свободного падения и обнаружения постукивания. ADXL345 может обнаруживать наличие или отсутствие движения, сравнивая значения ускорения с заданными пользователем порогами.
ADXL345 измеряет статическое ускорение под действием силы тяжести, а также динамическое ускорение от движения или удара.Датчики поставляются в 14-выводном корпусе LGA с размерами всего 3 мм x 5 мм x 1 мм. Этот датчик может использоваться в приложениях для мобильных устройств, таких как мобильные телефоны, смартфоны, игровые устройства, указывающие устройства, персональные навигационные устройства, защита жесткого диска, медицинские и промышленные приборы.
Общие сведения о технических характеристиках ADXL345
Датчик акселерометра ADXL345 имеет следующие технические характеристики —
Диапазон измерений — Датчик ADXL345 может измерять ускорение по трем осям, используя выбираемый пользователем диапазон +/- 2g, +/- 4g, +/- 8g и +/- 16g.Чем выше диапазон измерения, тем выше ускорение, которое может уловить акселерометр. Если выбран диапазон измерения +/- 2g, ADXL345 может измерять ускорение до 19,6 м / с 2 (2 * 9,8 м / с) в любом направлении по каждой оси. Если выбран диапазон измерения +/- 16g, ADXL345 может измерять ускорение до 153,6 м / с 2 (16 * 9,8 м / с) в любом направлении по каждой оси.
Выходное разрешение — ADXL345 поддерживает выходное разрешение 10 бит для диапазона измерения +/- 2g, 11 бит для +/- 4g, 12 бит для +/- 8g и 13 бит для +/- 16g.Разрешение по умолчанию — 10 бит для всех диапазонов измерения.
Чувствительность — При разрешении по умолчанию 10 бит ADXL345 имеет типичную чувствительность 3,9 мг / младший бит для диапазона измерения по умолчанию (т. Е. +/- 2g), 7,8 мг / младший бит для +/- 4g, 15,6 мг / младший бит для +/- 8g и 31,2 мг / младший значащий бит для диапазона измерения +/- 16g. Это означает, что ADXL345 с выбранным по умолчанию 10-битным разрешением может обнаруживать минимальное изменение ускорения 3,822 см / с 2 (3,9 * 9,8 / 1000 * 100) для +/- 2g, 7.64 см / с 2 для +/- 4g, 15,28 см / с 2 для +/- 8g и 30,57 см / с 2 для диапазона +/- 16g.
Выходная скорость передачи данных и полоса пропускания — Можно выбрать скорость выходных данных и полосу пропускания датчика. Скорость вывода данных может варьироваться от 0,1 Гц (один раз в 10 секунд) до 3200 Гц (3200 раз в секунду).
Рабочее напряжение и ток — Датчик требует рабочего напряжения 2,5 В в диапазоне от 2,0 В до 3,6 В. Он потребляет примерно 30 мкА для скорости передачи данных менее 10 Гц и около 140 мкА для скорости передачи данных выше 100 Гц.
Диапазон рабочих температур — ADXL345 имеет диапазон рабочих температур от -40 ° C до + 85 ° C.
Максимальные характеристики — ADXL345 выдерживает удары или ускорение до 10 000 g (98 км / с 2 ). Он выдерживает напряжение до 3,9 В и температуру до + 105˚C.
ADXL345 Описание контактов
ADXL345 поставляется в 14-выводном корпусе со следующей схемой контактов:
ADXL345 Датчик акселерометра имеет следующее описание контактов:
Датчик может быть доступен в виде модуля, в котором все или несколько контактов могут быть доступны для взаимодействия со схемой.В показанном ниже модуле датчика для использования доступны только контакты, необходимые для взаимодействия с цепью (I2C, SPI, прерывания и источник питания). Другие контакты жестко подключены к модулю, как и подтягивающие резисторы для линий I2C.
Можно отметить, что оси ускорения указаны на модуле. В противном случае оси ускорений можно найти относительно датчика сверху, как показано ниже:
Пример оси датчика акселерометра ADXL345.
Датчик ADXL345 чувствителен как к статическому ускорению (ускорение под действием силы тяжести), так и к динамическому ускорению (ускорение в результате движения или удара). Датчик имеет выходной отклик, как показано на изображении ниже, относительно его ориентации по отношению к силе тяжести.
ADXL345 выходной отклик относительно ориентации на силу тяжести.
Рабочие характеристики ADXL345
Рабочие характеристики ADXL345 доступны в виде графиков для смещения нулевого ускорения, чувствительности и отклика самотестирования.Графики приведены для отклика датчика по всем осям. Например, на следующем графике показано смещение нулевого ускорения по оси x при 25 ° C, 2,5 В.
ADXL345 тактико-технические характеристики
На графике смещение нулевого ускорения указано в мг (0,98 см / с 2 ), а процент населения указывает процент образцов тестируемого датчика. Точно так же чувствительность показана как количество младших битов на грамм для каждой оси.
Тактико-технические характеристикиADXL345.
Учитывая, что выходное разрешение ADXL345 по умолчанию равно 10 битам, мы можем сделать вывод, что изменение ускорения объекта, к которому подключен ADXL345, должно быть не менее 3.822 см / с 2 для +/- 2g или 7,64 см / с 2 для +/- 4g или 15,28 см / с 2 для +/- 8g или 30,57 см / с 2 для +/- Диапазон измерения 16g для изменения чувствительности датчика на 1 бит (LSB).
Как работает датчик ADXL345
ADXL345 — это трехосевой акселерометр, который измеряет как статическое ускорение (из-за силы тяжести), так и динамическое ускорение (из-за движения или удара). Таким образом, его можно использовать как датчик наклона или для обнаружения свободного падения. Это МЭМС-акселерометр, состоящий из структуры из поликремния с микрообработанной поверхностью, построенной на верхней части пластины из поликремния.Это емкостной датчик акселерометра. Пружины из поликремния удерживают контрольную массу, а между контрольной массой и неподвижной рамой используются дифференциальные конденсаторы для измерения ускорения. Любое ускорение вдоль оси отклоняет контрольную массу и выводит из равновесия дифференциальный конденсатор, в результате чего чувствительность датчика прямо пропорциональна ускорению. Фазочувствительная демодуляция используется для определения величины и полярности ускорения.
Датчик может быть подключен к контроллеру / встроенному компьютеру с помощью интерфейса I2C или SPI.Используя последовательные интерфейсы (I2C / 4-проводный SPI / 3-проводный SPI), контроллер / компьютер может читать и записывать данные во внутренние регистры датчика. ADXL345 имеет следующую функциональную блок-схему.
Функциональная блок-схема датчика акселерометра ADXL345.
Датчик имеет следующие регистры, в которые контроллер / компьютер может читать / писать через последовательные интерфейсы:
Путем записи данных в регистры контроллер / компьютер может выбирать диапазон измерения, формат данных, разрешение, а также прерывания управления и функции считывания ( постукивание, свободное падение и пороги).Контроллер / компьютер может считывать данные об ускорении, считывая значения из регистров с 0x32 по 0x37.
Настройка ADXL345 и считывание значений ускорения
Ниже перечислены несколько простых шагов для считывания ускорения с датчика ADXL345.
- Установите режим мощности и скорость передачи данных, записав в регистр 0x2C. Этот регистр имеет следующие биты:
Если бит LOW_POWER установлен в 0, ADXL345 работает в нормальном режиме, а если он установлен в 1, ADXL345 работает в режимах пониженного энергопотребления, в которых наблюдается более высокий уровень шума.Биты с D3 по D0 выбирают скорость передачи данных в соответствии со следующей таблицей:
- Установите формат данных, записав в регистр 0x31. Этот регистр имеет следующие биты:
Если бит САМОПРОВЕРКИ установлен в 1, к датчику прикладывается сила самопроверки, вызывающая сдвиг выходных данных. Если он установлен на 0, сила самотестирования отключена. Если бит SPI установлен в 1, ADXL345 использует режим 3-проводного SPI; в противном случае, если установлено значение 0, используется 4-проводный режим SPI. Если бит INT_INVERT установлен в 0, он устанавливает для прерываний активный высокий уровень, а если он установлен в 1, он устанавливает прерывания в активный низкий уровень.Если бит FULL_RES установлен в 1, датчик выводит значение с полным разрешением (10 бит для +/- 2g; 11 бит для +/- 4g; 12 бит для +/- 8g; 13 бит для +/- 16g), в противном случае, если он установлен в 0, используется 10-битное значение по умолчанию. Если бит выравнивания установлен в 1, значения ускорения в регистрах от 0x32 до 0x37 выравниваются по левому краю; в противном случае, если он установлен в 0, значения выравниваются по правому краю. На следующем изображении показан формат данных регистров значений данных с выравниванием по левому и правому краю и положением LSB или MSB соответственно для разных диапазонов измерения:
Примеры выровненного влево и вправо выходного отклика датчика акселерометра ADXL345.
Биты диапазона D1 и D0 выбирают диапазон измерения в соответствии со следующей таблицей:
- Если бит связи установлен в 1, функции активности и бездействия последовательно связываются (функция активности откладывается до тех пор, пока функция бездействия не будет обнаружена). В противном случае, если он установлен в 0, обе функции работают одновременно. Функция бездействия относится к ситуации, когда ускорение ниже значения THRESH_INACT (регистр 0x25) в течение как минимум времени, указанного TIME_INACT (регистр 0x26).Установите функции энергосбережения, записав в регистр 0x2D. Этот регистр имеет следующие биты:
Если бит связи установлен, а бит AUTO_SLEEP установлен в 1, он включает функцию автоматического перехода в спящий режим. В этом режиме ADXL345 автоматически переходит в спящий режим, если функция бездействия включена и обнаружено бездействие. Если активность также включена, ADXL345 автоматически выходит из спящего режима после обнаружения активности и возвращается к работе со скоростью выходных данных, установленной в регистре BW_RATE.Если бит AUTO_SLEEP установлен в 0, он отключает автоматическое переключение в спящий режим. Если бит связи не установлен, функция AUTO_SLEEP отключена, и установка бита AUTO_SLEEP не влияет на работу устройства.
Если бит измерения установлен в 1, ADXL345 работает в режиме измерения. В противном случае, если он установлен на 0, ADXL345 работает в режиме ожидания. Если бит сна установлен в 1, ADXL345 работает в спящем режиме; в противном случае, если он установлен в 0, ADXL345 работает в обычном режиме. Спящий режим подавляет DATA_READY, останавливает передачу данных в FIFO и переключает частоту дискретизации на значение, указанное битами пробуждения.В спящем режиме можно использовать только функцию активности. Биты пробуждения управляют частотой чтения в спящем режиме в соответствии со следующей таблицей:
- Ускорение чтения по оси x путем чтения регистров 0x32 и 0x33; ускорение по оси Y за счет чтения регистров 0x34 и 0x35; и ускорение по оси Z путем чтения регистров 0x36 и 0x37.
Маскируйте значения регистра в соответствии с выбранным форматом данных (регистр 0x31) и интерпретируйте значение ускорения в соответствии с выбранным диапазоном измерения.
Использование значений ускорения из ADXL345
Значения ускорения по осям X, Y и Z от датчика акселерометра ADXL345 можно использовать для обнаружения наклона, свободного падения и динамического движения объекта. Датчик необходимо установить на исследуемый объект. Значения ускорения можно использовать просто для обнаружения движения или даже для определения траектории объекта.
Скорость по каждой оси может быть определена путем интегрирования значений ускорения.Двойное интегрирование значений ускорения может определить смещение объекта по каждой оси. Следует отметить, что интеграция и двойная интеграция значений ускорения могут быть выполнены только с использованием инструментов научных вычислений, таких как библиотека SciPy в скриптах Python. Даже в этом случае мы должны учитывать ошибки, поскольку может быть несколько источников ошибок, таких как несогласованная выборка данных, ошибки в выборочных данных, ошибки из-за вычислений и т. Д. Как правило, значения смещения или скорости можно предсказать с ограниченной точностью и ограниченный диапазон в пользовательской программе с датчиком ADXL345.
Однако значения ускорения от датчика ADXL345 могут идеально использоваться в электронных системах управления, где простые значения ускорения используются для принятия решений.
[0x00] DEVIDИдентификатор устройства (DEVID @ 0x00)Битовые поля регистраРегистр DEVID содержит фиксированный код идентификатора устройства 0xE5 (345 восьмеричный). | RO | [7: 0] DEVIDDEVID @ 0x00ID устройства (DEVID [7: 0])ОпцииРегистр DEVID содержит фиксированный код ID устройства 0xE5 (345 восьмеричный). | |||||||
---|---|---|---|---|---|---|---|---|---|
[0x1D] THRESH_TAPПорог ответвления (THRESH_TAP @ 0x1D)Поля регистровРегистр THRESH_TAP состоит из восьми битов и содержит пороговое значение для прерываний ответвления. Формат данных беззнаковый, поэтому величина события касания сравнивается со значением в THRESH_TAP для нормального обнаружения постукивания. Масштабный коэффициент составляет 62,5 мг / младший значащий бит (то есть 0xFF = 16 г). Значение 0 может привести к нежелательному поведению, если разрешены прерывания с однократным / двойным касанием. | Ч / З | [7: 0] THRESH_TAPTHRESH_TAP @ 0x1DПорог ответвления (THRESH_TAP [7: 0])Регистр THRESH_TAP состоит из восьми битов и содержит пороговое значение для прерываний ответвления. Формат данных беззнаковый, поэтому величина события касания сравнивается со значением в THRESH_TAP для нормального обнаружения постукивания. Масштабный коэффициент составляет 62,5 мг / младший значащий бит (то есть 0xFF = 16 г). Значение 0 может привести к нежелательному поведению, если разрешены прерывания с однократным / двойным касанием. | |||||||
[0x1E] OFSXСмещение оси X (OFSX @ 0x1E)Поля регистровРегистры OFSX, OFSY и OFSZ состоят из восьми бит каждый и предлагают настраиваемые пользователем настройки смещения в формате дополнения до двух с масштабный коэффициент 15,6 мг / младший значащий бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | R / W | [7: 0] OFSXOFSX @ 0x1EСмещение оси X (OFSX [7: 0])Регистры OFSX, OFSY и OFSZ состоят из восьми бит каждый и предлагают пользователю: установите корректировки смещения в формате дополнения до двух с масштабным коэффициентом 15,6 мг / младший бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | |||||||
[0x1F] OFSYСмещение оси Y (OFSY @ 0x1F)Поля регистровРегистры OFSX, OFSY и OFSZ состоят из восьми бит каждый и предлагают настраиваемые пользователем настройки смещения в формате дополнения до двух масштабный коэффициент 15,6 мг / младший значащий бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | R / W | [7: 0] OFSYOFSY @ 0x1FСмещение оси Y (OFSY [7: 0])Регистры OFSX, OFSY и OFSZ состоят из восьми бит каждый и предлагают пользователю: установите корректировки смещения в формате дополнения до двух с масштабным коэффициентом 15,6 мг / младший бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | |||||||
[0x20] OFSZСмещение оси Z (OFSZ @ 0x20)Поля регистровРегистры OFSX, OFSY и OFSZ состоят из восьми бит и предлагают настраиваемые пользователем настройки смещения в формате дополнения до двух с масштабный коэффициент 15,6 мг / младший значащий бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | R / W | [7: 0] OFSZOFSZ @ 0x20Смещение оси Z (OFSZ [7: 0])Регистры OFSX, OFSY и OFSZ состоят из восьми бит каждый и предлагают пользователю: установите корректировки смещения в формате дополнения до двух с масштабным коэффициентом 15,6 мг / младший бит (то есть 0x7F = 2 г). Значение, хранящееся в регистрах смещения, автоматически добавляется к данным ускорения, а результирующее значение сохраняется в регистрах выходных данных. Дополнительные сведения о калибровке смещения и использовании регистров смещения см. В разделе «Калибровка смещения». | |||||||
[0x21] DURДлительность тапа (DUR @ 0x21)Битовые поля регистраРегистр DUR состоит из восьми битов и содержит значение времени без знака, представляющее максимальное время, в течение которого событие должно быть выше порога THRESH_TAP, чтобы квалифицироваться как событие крана. Масштабный коэффициент составляет 625 мкс / младший бит. Значение 0 отключает функции одиночного / двойного касания. | R / W | [7: 0] DURDUR @ 0x21Длительность тапа (DUR [7: 0])Регистр DUR состоит из восьми битов и содержит значение времени без знака, представляющее максимальное время, в течение которого событие должно быть выше порога THRESH_TAP, чтобы считаться событием касания.Масштабный коэффициент составляет 625 мкс / младший бит. Значение 0 отключает функции одиночного / двойного касания. | |||||||
[0x22] LATENTЗадержка касания (LATENT @ 0x22)Битовые поля регистраРегистр латентности составляет восемь битов и содержит значение времени без знака, представляющее время ожидания от обнаружения события касания до начала временное окно (определяемое регистром окна), в течение которого может быть обнаружено возможное событие второго касания. Коэффициент масштабирования составляет 1,25 мс / младший бит.Значение 0 отключает функцию двойного касания. | R / W | [7: 0] LATENTLATENT @ 0x22Задержка отвода (LATENT [7: 0])Регистр латентности составляет восемь бит и содержит значение времени без знака, представляющее время ожидания от обнаружение события касания до начала временного окна (определяемого регистром окна), в течение которого может быть обнаружено возможное второе событие касания. Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания. | |||||||
[0x23] ОКНОНажмите окно (WINDOW @ 0x23)Битовые поля регистраРегистр окна состоит из восьми битов и содержит значение времени без знака, представляющее количество времени после истечения времени задержки (определяется скрытый регистр), во время которого может начаться второй действительный отвод. Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания. | R / W | [7: 0] WINDOWWINDOW @ 0x23Tap window (WINDOW [7: 0])Регистр окна составляет восемь битов и содержит значение времени без знака, представляющее количество времени после истечение времени ожидания (определяемого регистром задержки), в течение которого может начаться второй действительный ответ.Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания. | |||||||
[0x24] THRESH_ACTПорог активности (THRESH_ACT @ 0x24)Битовые поля регистраРегистр THRESH_ACT состоит из восьми битов и содержит пороговое значение для обнаружения активности. Формат данных беззнаковый, поэтому величина события активности сравнивается со значением в регистре THRESH_ACT. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание активности. | Ч / З | [7: 0] THRESH_ACTTHRESH_ACT @ 0x24Порог активности (THRESH_ACT [7: 0])Регистр THRESH_ACT состоит из восьми битов и содержит пороговое значение для обнаружения активности. Формат данных беззнаковый, поэтому величина события активности сравнивается со значением в регистре THRESH_ACT. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание активности. | |||||||
[0x25] THRESH_INACTПорог бездействия (THRESH_INACT @ 0x25)Битовые поля регистраРегистр THRESH_INACT состоит из восьми битов и содержит пороговое значение для обнаружения бездействия.Формат данных беззнаковый, поэтому величина события бездействия сравнивается со значением в регистре THRESH_INACT. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание бездействия. | Ч / З | [7: 0] THRESH_INACTTHRESH_INACT @ 0x25Порог бездействия (THRESH_INACT [7: 0])Регистр THRESH_INACT состоит из восьми битов и содержит пороговое значение для обнаружения бездействия. Формат данных беззнаковый, поэтому величина события бездействия сравнивается со значением в регистре THRESH_INACT.Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание бездействия. | |||||||
[0x26] TIME_INACTВремя бездействия (TIME_INACT @ 0x26)Битовые поля регистраРегистр TIME_INACT состоит из восьми бит и содержит значение времени без знака, представляющее количество времени, в течение которого ускорение должно быть меньше значения в THRESH_INACT регистрирует бездействие. Коэффициент масштабирования составляет 1 сек / младший бит.В отличие от других функций прерывания, которые используют нефильтрованные данные (см. Раздел «Порог»), функция бездействия использует отфильтрованные выходные данные. По крайней мере, одна выходная выборка должна быть сгенерирована для срабатывания прерывания бездействия. Это приводит к тому, что функция не отвечает, если регистр TIME_INACT установлен на значение, меньшее постоянной времени скорости выходных данных. Значение 0 приводит к прерыванию, когда выходные данные меньше значения в регистре THRESH_INACT. | Ч / З | [7: 0] TIME_INACTTIME_INACT @ 0x26Время бездействия (TIME_INACT [7: 0])Регистр TIME_INACT состоит из восьми бит и содержит значение времени без знака, представляющее количество времени, которое ускорение должно быть меньше значения в регистре THRESH_INACT, чтобы было объявлено бездействие.Коэффициент масштабирования составляет 1 сек / младший бит. В отличие от других функций прерывания, которые используют нефильтрованные данные (см. Раздел «Порог»), функция бездействия использует отфильтрованные выходные данные. По крайней мере, одна выходная выборка должна быть сгенерирована для срабатывания прерывания бездействия. Это приводит к тому, что функция не отвечает, если регистр TIME_INACT установлен на значение, меньшее постоянной времени скорости выходных данных. Значение 0 приводит к прерыванию, когда выходные данные меньше значения в регистре THRESH_INACT. | |||||||
[0x27] ACT_INACT_CTLКонтроль включения оси для обнаружения активности и бездействия (ACT_INACT_CTL @ 0x27)Регистровые битовые поля
| R / W | [7] ACT_ACDCACT_INACT_CTL @ 0x27ACT_ACDC [7]Опции
| [6] ACT_XACT_INACT_CTL @ 0x27ACT_X [6]Управляет участием оси X в обнаружении активности. | [5] ACT_YACT_INACT_CTL @ 0x27ACT_Y [5]Управляет участием оси Y в обнаружении активности. | [4] ACT_ZACT_INACT_CTL @ 0x27ACT_Z [4]Управляет участием оси Z в обнаружении активности. | [3] INACT_ACDCACT_INACT_CTL @ 0x27INACT_ACDC [3]Опции
| [2] INACT_XACT_INACT_CTL @ 0x27INACT_X [2]Управляет участием оси X в обнаружении бездействия. | [1] INACT_YACT_INACT_CTL @ 0x27INACT_Y [1]Управляет участием оси Y в обнаружении бездействия. | [0] INACT_ZACT_INACT_CTL @ 0x27INACT_Z [0]Управляет участием оси Z в обнаружении бездействия. |
[0x28] THRESH_FFПорог свободного падения (THRESH_FF @ 0x28)Битовые поля регистраРегистр THRESH_FF состоит из восьми битов и содержит пороговое значение в формате без знака для обнаружения свободного падения.Ускорение по всем осям сравнивается со значением THRESH_FF, чтобы определить, произошло ли событие свободного падения. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Обратите внимание, что значение 0 мг может привести к нежелательному поведению, если разрешено прерывание от свободного падения. Рекомендуются значения от 300 мг до 600 мг (от 0x05 до 0x09). | R / W | [7: 0] THRESH_FFTHRESH_FF @ 0x28Порог свободного падения (THRESH_FF [7: 0])Регистр THRESH_FF состоит из восьми битов и содержит пороговое значение в формате без знака, для обнаружения свободного падения.Ускорение по всем осям сравнивается со значением THRESH_FF, чтобы определить, произошло ли событие свободного падения. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Обратите внимание, что значение 0 мг может привести к нежелательному поведению, если разрешено прерывание от свободного падения. Рекомендуются значения от 300 мг до 600 мг (от 0x05 до 0x09). | |||||||
[0x29] TIME_FFВремя свободного падения (TIME_FF @ 0x29)Битовые поля регистраРегистр TIME_FF состоит из восьми бит и хранит беззнаковое значение времени, представляющее минимальное время, в течение которого значения всех осей должны быть меньше чем THRESH_FF для генерации прерывания свободного падения.Коэффициент масштабирования составляет 5 мс / младший бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание от свободного падения. Рекомендуются значения от 100 до 350 мс (от 0x14 до 0x46). | Ч / З | [7: 0] TIME_FFTIME_FF @ 0x29Время свободного падения (TIME_FF [7: 0])Регистр TIME_FF состоит из восьми бит и хранит значение времени без знака, представляющее минимальное время что значение всех осей должно быть меньше THRESH_FF для генерации прерывания свободного падения. Коэффициент масштабирования составляет 5 мс / младший бит.Значение 0 может привести к нежелательному поведению, если разрешено прерывание от свободного падения. Рекомендуются значения от 100 до 350 мс (от 0x14 до 0x46). | |||||||
[0x2A] TAP_AXESУправление осью для одиночного / двойного касания (TAP_AXES @ 0x2A)Регистровые битовые поля
Управляет настройками участия в обнаружении отводов для каждой оси и подавлением двойного касания. | R / W | [3] SUPPRESSTAP_AXES @ 0x2ASUPPRESS [3]Установка бита подавления подавляет обнаружение двойного касания, если между отводами присутствует ускорение, превышающее значение THRESH_TAP. См. Раздел «Обнаружение касания» для более подробной информации. | [2] TAP_XTAP_AXES @ 0x2ATAP_X [2]Установка 1 в бите включения TAP_X включает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний. | [1] TAP_YTAP_AXES @ 0x2ATAP_Y [1]Установка 1 в бите включения TAP_Y разрешает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний. | [0] TAP_ZTAP_AXES @ 0x2ATAP_Z [0]Установка 1 в бите включения TAP_Z включает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний. | ||||
[0x2B] ACT_TAP_STATUSИсточник однократного / двойного касания (ACT_TAP_STATUS @ 0x2B)Регистровые битовые поля
h4. Источники ACT_x и TAP_x Источники Эти биты указывают первую ось, участвующую в событии касания или активности.Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. Когда доступны новые данные, эти биты не очищаются, а перезаписываются новыми данными. Регистр ACT_TAP_STATUS должен быть прочитан перед очисткой прерывания. Отключение оси от участия очищает соответствующий бит источника, когда происходит следующее действие или событие одиночного касания / двойного касания. h4. Спящий бит Значение 1 в бите сна указывает, что часть спит, а настройка 0 указывает, что часть не спит.Этот бит переключается, только если устройство настроено на автоматический переход в спящий режим. См. Раздел «Бит AUTO_SLEEP» для получения дополнительной информации о режиме автоматического ожидания. | RO | [6] ACT_XACT_TAP_STATUS @ 0x2BACT_X [6]Этот бит указывает, что ось X участвовала в событии активности. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | [5] ACT_YACT_TAP_STATUS @ 0x2BACT_Y [5]Этот бит указывает, что ось Y участвовала в событии активности.Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | [4] ACT_ZACT_TAP_STATUS @ 0x2BACT_Z [4]Этот бит указывает, что ось Z участвовала в событии активности. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | [3] ASLEEPACT_TAP_STATUS @ 0x2BASLEEP [3]Значение 1 в бите спящего режима указывает, что часть спит, а установка 0 указывает, что часть не спит.Этот бит переключается, только если устройство настроено на автоматический переход в спящий режим. | [2] TAP_XACT_TAP_STATUS @ 0x2BTAP_X [2]Этот бит указывает, что ось X участвовала в событии касания. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | [1] TAP_YACT_TAP_STATUS @ 0x2BTAP_Y [1]Этот бит указывает, что ось Y участвовала в событии касания. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | [0] TAP_ZACT_TAP_STATUS @ 0x2BTAP_Z [0]Этот бит указывает, что ось Z участвовала в событии касания. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. | |
[0x2C] BW_RATEУправление скоростью передачи данных и режимом мощности (BW_RATE @ 0x2C)Регистровые битовые поляh4. LOW_POWER Бит Установка 0 в бите LOW_POWER выбирает нормальную работу, а установка 1 выбирает работу с пониженной мощностью, которая имеет несколько более высокий уровень шума (подробности см. В разделе «Режимы мощности»).h4. Оценить биты Эти биты выбирают полосу пропускания устройства и скорость вывода данных (подробности см. В Таблице 7 и Таблице 8). Значение по умолчанию — 0x0A, что соответствует выходной скорости передачи данных 100 Гц. Следует выбрать скорость передачи данных, соответствующую выбранному протоколу связи и выбранной частоте. Выбор слишком высокой скорости передачи данных на выходе при низкой скорости передачи данных приводит к отбрасыванию выборок. | R / W | [4] LOW_POWERBW_RATE @ 0x2CLOW_POWER [4]Опции
| [3: 0] RATEBW_RATE @ 0x2CRATE [3: 0]Опции
Эти биты выбирают полосу пропускания устройства и скорость передачи данных (см. Таблицу 7 и Таблица 8 для подробностей).Значение по умолчанию — 0x0A, что соответствует выходной скорости передачи данных 100 Гц. Следует выбрать скорость передачи данных, соответствующую выбранному протоколу связи и выбранной частоте. Выбор слишком высокой скорости передачи данных на выходе при низкой скорости передачи данных приводит к отбрасыванию выборок. h5. Таблица 7. Типичное потребление тока в зависимости от скорости передачи данных (TA = 25 ° C, VS = 2,5 В, VDD I / O = 1,8 В) | _. Скорость выходных данных (Гц) | _. Полоса пропускания (Гц) | _. Код ставки | _. IDD (μA) | | 3200 | 1600 | 1111 | 140 | | 1600 | 800 | 1110 | 90 | | 800 | 400 | 1101 | 140 | | 400 | 200 | 1100 | 140 | | 200 | 100 | 1011 | 140 | | 100 | 50 | 1010 | 140 | | 50 | 25 | 1001 | 90 | | 25 | 12.5 | 1000 | 60 | | 12,5 | 6,25 | 0111 | 50 | | 6,25 | 3,13 | 0110 | 45 | | 3,13 | 1,56 | 0101 | 40 | | 1,56 | 0,78 | 0100 | 34 | | 0,78 | 0,39 | 0011 | 23 | | 0,39 | 0,20 | 0010 | 23 | | 0,20 | 0,10 | 0001 | 23 | | 0,10 | 0,05 | 0000 | 23 | h5. Таблица 8. Типичное потребление тока в зависимости от скорости передачи данных, режим низкого энергопотребления (TA = 25 ° C, VS = 2,5 В, VDD I / O = 1,8 В) | _. Скорость выходных данных (Гц) | _. Полоса пропускания (Гц) | _. Код ставки | _. IDD (μA) | | 400 | 200 | 1100 | 90 | | 200 | 100 | 1011 | 60 | | 100 | 50 | 1010 | 50 | | 50 | 25 | 1001 | 45 | | 25 | 12,5 | 1000 | 40 | | 12,5 | 6,25 | 0111 | 34 | | ||||||
[0x2D] POWER_CTLУправление функциями энергосбережения (POWER_CTL @ 0x2D)Регистровые битовые поля
Управляет режимом питания и энергосберегающими функциями акселерометра. | R / W | [5] LINKPOWER_CTL @ 0x2DLINK [5]Опции
Установка 1 в бите связи с включенными функциями активности и бездействия задерживает запуск функции активности до тех пор, пока не будет обнаружено бездействие. После обнаружения активности начинается обнаружение бездействия, предотвращающее обнаружение активности.Этот бит последовательно связывает функции активности и бездействия. Когда этот бит установлен в 0, функции бездействия и активности выполняются одновременно. Дополнительную информацию можно найти в разделе Link Mode. При очистке бита связи рекомендуется перевести деталь в режим ожидания, а затем вернуть ее в режим измерения с последующей записью. Это сделано для обеспечения правильного смещения устройства, если спящий режим отключен вручную; в противном случае первые несколько выборок данных после сброса бита связи могут иметь дополнительный шум, особенно если устройство находилось в спящем режиме, когда бит был очищен. | [4] AUTO_SLEEPPOWER_CTL @ 0x2DAUTO_SLEEP [4]Если бит связи установлен, установка 1 в бите AUTO_SLEEP включает функцию автоматического перехода в спящий режим. В этом режиме ADXL345 автоматически переключается в спящий режим, если функция бездействия включена и обнаруживается бездействие (то есть, когда ускорение ниже значения THRESH_INACT в течение, по крайней мере, времени, указанного TIME_INACT). Если активность также включена, ADXL345 автоматически выходит из спящего режима после обнаружения активности и возвращается к работе со скоростью выходных данных, установленной в регистре BW_RATE.Установка 0 в бите AUTO_SLEEP отключает автоматическое переключение в спящий режим. См. Описание бита сна в этом разделе для получения дополнительной информации о режиме сна. Если бит связи не установлен, функция AUTO_SLEEP отключена, и установка бита AUTO_SLEEP не влияет на работу устройства. См. Раздел «Бит связи» или раздел «Режим связи» для получения дополнительной информации об использовании функции связи. При сбросе бита AUTO_SLEEP рекомендуется перевести деталь в режим ожидания, а затем вернуть в режим измерения с последующей записью.Это сделано для обеспечения правильного смещения устройства, если спящий режим отключен вручную; в противном случае первые несколько выборок данных после сброса бита AUTO_SLEEP могут иметь дополнительный шум, особенно если устройство спало, когда бит был очищен. | [3] MEASUREPOWER_CTL @ 0x2DMEASURE [3]Установка 0 в бите такта переводит деталь в режим ожидания, а установка 1 переводит деталь в режим измерения. ADXL345 включается в режиме ожидания с минимальным энергопотреблением. | [2] SLEEPPOWER_CTL @ 0x2DSLEEP [2]Установка 0 в бите ожидания переводит компонент в нормальный режим работы, а настройка 1 переводит компонент в режим сна. Спящий режим подавляет DATA_READY, останавливает передачу данных в FIFO и переключает частоту дискретизации на значение, указанное битами пробуждения. В спящем режиме можно использовать только функцию активности. Когда прерывание DATA_READY подавляется, регистры выходных данных (регистр 0x32 — регистр 0x37) по-прежнему обновляются с частотой дискретизации, установленной битами пробуждения (D1: D0).При сбросе бита сна рекомендуется перевести деталь в режим ожидания, а затем вернуть в режим измерения с последующей записью. Это сделано для обеспечения правильного смещения устройства, если спящий режим отключен вручную; в противном случае первые несколько выборок данных после сброса бита спящего режима могут иметь дополнительный шум, особенно если устройство находилось в спящем режиме, когда бит был очищен. | [1: 0] WAKEUPPOWER_CTL @ 0x2DWAKEUP [1: 0]Опции
832 ГцЭти биты управляют частотой показаний в спящем режиме, как описано в таблице 20.h5. Таблица 20. Частота показаний в спящем режиме. | _. Настройка | _. Частота (Гц) | | 00 | 8 | | 01 | 4 | | 10 | 2 | | 11 | 1 | | |||
[0x2E] INT_ENABLEУправление разрешением прерывания (INT_ENABLE @ 0x2E)Регистровые битовые поля
Разрешены управляющие элементы. | Ч / З | [7] DATA_READYINT_ENABLE @ 0x2EDATA_READY [7]Бит DATA_READY устанавливается, когда доступны новые данные, и сбрасывается, когда новые данные недоступны. | [6] SINGLE_TAPINT_ENABLE @ 0x2ESINGLE_TAP [6]Бит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит в течение меньшего времени, чем указано в регистре DUR (адрес 0x21). | [5] DOUBLE_TAPINT_ENABLE @ 0x2EDOUBLE_TAP [5]Бит DOUBLE_TAP устанавливается, когда два события ускорения, превышающие значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени, чем указано в регистр DUR (адрес 0x21), при этом второе нажатие начинается по истечении времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23). См. Раздел «Обнаружение касания» для более подробной информации. | [4] ACTIVITYINT_ENABLE @ 0x2EACTIVITY [4]Бит активности устанавливается, когда ускорение превышает значение, сохраненное в регистре THRESH_ACT (адрес 0x24), на любой участвующей оси, установленной ACT_INACT_CTL регистр (адрес 0x27). | [3] НЕАКТИВНОСТЬINT_ENABLE @ 0x2EНЕАКТИВНОСТЬ [3]Бит неактивности устанавливается, когда ускорение меньше значения, сохраненного в регистре THRESH_INACT (адрес 0x25), наблюдается в течение большего времени, чем указано в Регистр TIME_INACT (адрес 0x26) на всех участвующих осях, как установлено регистром ACT_INACT_CTL (адрес 0x27).Максимальное значение TIME_INACT — 255 секунд. | [2] FREE_FALLINT_ENABLE @ 0x2EFREE_FALL [2]Бит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается в течение большего времени, чем указано в Регистр TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току. | [1] WATERMARKINT_ENABLE @ 0x2EWATERMARK [1]Бит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки. | [0] OVERRUNINT_ENABLE @ 0x2EOVERRUN [0]Бит переполнения устанавливается, когда новые данные заменяют непрочитанные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO. |
[0x2F] INT_MAPУправление отображением прерывания (INT_MAP @ 0x2F)Регистровые битовые поля
УправляетЛюбые биты, установленные в 0 в этом регистре, отправляют соответствующие прерывания на вывод INT1, тогда как биты, установленные в 1, отправляют соответствующие прерывания на вывод INT2. Все выбранные прерывания для данного вывода объединяются оператором ИЛИ. | R / W | [7] DATA_READYINT_MAP @ 0x2FDATA_READY [7]ОпцииБит DATA_READY устанавливается, когда новые данные доступны, и сбрасывается, когда новые данные недоступны. | [6] SINGLE_TAPINT_MAP @ 0x2FSINGLE_TAP [6]ОпцииБит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит за меньшее время чем указано в регистре DUR (адрес 0x21). | [5] DOUBLE_TAPINT_MAP @ 0x2FDOUBLE_TAP [5]ОпцииБит DOUBLE_TAP устанавливается, когда два события ускорения, которые превышают значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени указывается в регистре DUR (адрес 0x21), при этом второе нажатие начинается после времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23). См. Раздел «Обнаружение касания» для более подробной информации. | [4] ACTIVITYINT_MAP @ 0x2FACTIVITY [4]ОпцииБит активности устанавливается, когда на любой участвующей оси наблюдается ускорение, превышающее значение, сохраненное в регистре THRESH_ACT (адрес 0x24), установите регистром ACT_INACT_CTL (адрес 0x27). | [3] НЕАКТИВНОСТЬINT_MAP @ 0x2FНЕАКТИВНОСТЬ [3]ОпцииБит неактивности устанавливается, когда ускорение меньше значения, сохраненного в регистре THRESH_INACT (адрес 0x25), наблюдается дольше, чем указывается в регистре TIME_INACT (адрес 0x26) на всех участвующих осях, как установлено регистром ACT_INACT_CTL (адрес 0x27).Максимальное значение TIME_INACT — 255 секунд. | [2] FREE_FALLINT_MAP @ 0x2FFREE_FALL [2]ОпцииБит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается дольше, чем указывается в регистре TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току. | [1] WATERMARKINT_MAP @ 0x2FWATERMARK [1]ОпцииБит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки. | [0] OVERRUNINT_MAP @ 0x2FOVERRUN [0]ОпцииБит переполнения устанавливается, когда новые данные заменяют непрочитанные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO. |
[0x30] INT_SOURCEИсточник прерываний (INT_SOURCE @ 0x30)Регистровые битовые поля
[4] АКТИВНОСТЬ | [6] SINGLE_TAPINT_SOURCE @ 0x30SINGLE_TAP [6]Бит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит в течение меньшего времени, чем указано в регистре DUR (адрес 0x21). | [5] DOUBLE_TAPINT_SOURCE @ 0x30DOUBLE_TAP [5]Бит DOUBLE_TAP устанавливается, когда два события ускорения, превышающие значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени, чем указано в регистр DUR (адрес 0x21), при этом второе нажатие начинается по истечении времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23).См. Раздел «Обнаружение касания» для более подробной информации. | [4] ACTIVITYINT_SOURCE @ 0x30ACTIVITY [4]Бит активности устанавливается, когда ускорение превышает значение, сохраненное в регистре THRESH_ACT (адрес 0x24), на любой участвующей оси, установленной ACT_INACT_CTL регистр (адрес 0x27). | [3] НЕАКТИВНОСТЬINT_SOURCE @ 0x30НЕАКТИВНОСТЬ [3]Бит неактивности устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_INACT (адрес 0x25), наблюдается в течение большего времени, чем указано в Регистр TIME_INACT (адрес 0x26) на всех участвующих осях, как установлено регистром ACT_INACT_CTL (адрес 0x27).Максимальное значение TIME_INACT — 255 секунд. | [2] FREE_FALLINT_SOURCE @ 0x30FREE_FALL [2]Бит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается в течение большего времени, чем указано в Регистр TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току. | [1] WATERMARKINT_SOURCE @ 0x30WATERMARK [1]Бит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки. | [0] OVERRUNINT_SOURCE @ 0x30OVERRUN [0]Бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO. | ||
[0x31] DATA_FORMATУправление форматом данных (DATA_FORMAT @ 0x31)Регистровые битовые поля
Регистр DATA_FORMAT управляет представлением данных в регистр 0x32 через регистр 0x37.Все данные, за исключением диапазона ± 16 г, должны быть обрезаны во избежание опрокидывания. | Ч / З | [7] SELF_TESTDATA_FORMAT @ 0x31SELF_TEST [7]Установка 1 в бите SELF_TEST применяет силу самопроверки к датчику, вызывая сдвиг в выходных данных. Значение 0 отключает самопроверку. | [6] SPIDATA_FORMAT @ 0x31SPI [6]Опции
Значение A в бите SPI устанавливает устройство в режим 3-проводного SPI, а значение 0 устанавливает устройство в режим 4-проводного SPI. | [5] INT_INVERTDATA_FORMAT @ 0x31INT_INVERT [5]Опции
| [3] FULL_RESDATA_FORMAT @ 0x31FULL_RES [3]Когда этот бит установлен на значение 1, устройство находится в режиме полного разрешения, где выходное разрешение увеличивается с установленным диапазоном g битами диапазона для поддержания масштабного коэффициента 4 мг / младший бит.Когда бит FULL_RES установлен в 0, устройство находится в 10-битном режиме, а биты диапазона определяют максимальный диапазон g и масштабный коэффициент. | [2] JUSTIFYDATA_FORMAT @ 0x31JUSTIFY [2]Опции
| [1: 0] ДИАПАЗОНDATA_FORMAT @ 0x31ДИАПАЗОН [1: 0]Опции
Эти биты устанавливают диапазон g, как описано в таблице 21. h5. Таблица 21. g Диапазон настройки | _. Настройка | _. g Диапазон | | 00 | ± 2 г | | 01 | ± 4 г | | 10 | ± 8 г | | 11 | ± 16 г | | ||
[0x32] DATAX0Данные оси X 0 (DATAX0 @ 0x32)Поля регистров битовДанные измерений акселерометра оси X.Выходные данные дополняются до двух, с DATAx0 в качестве младшего байта и DATAx1 в качестве старшего байта, где x представляет X, Y или Z. Регистр DATA_FORMAT (адрес 0x31) управляет форматом данных. Рекомендуется выполнять многобайтовое чтение всех регистров, чтобы предотвратить изменение данных между чтениями последовательных регистров. | RO | [15: 0] DATAXDATAX0 @ 0x32DATAX [15: 0]Измерение акселерометра по оси X. | |||||||
[0x33] DATAX1Данные оси X 1 (DATAX1 @ 0x33) | RO | ||||||||
[0x34] DATAY0Данные оси Y 0 (DATAY0 @ 0x34)Поля регистров Y900 данные измерения акселерометра оси. Выходные данные дополняются до двух, с DATAx0 в качестве младшего байта и DATAx1 в качестве старшего байта, где x представляет X, Y или Z. Регистр DATA_FORMAT (адрес 0x31) управляет форматом данных. Рекомендуется выполнять многобайтовое чтение всех регистров, чтобы предотвратить изменение данных между чтениями последовательных регистров. | RO | [15: 0] DATAYDATAY0 @ 0x34DATAY [15: 0]Измерение акселерометра по оси Y. | |||||||
[0x35] DATAY1Данные оси Y 1 (DATAY1 @ 0x35) | RO | ||||||||
[0x36] DATAZ0Данные оси Z 0 (DATAZ0 @ 0x36)Поля регистров Z49900 данные измерения акселерометра оси. Выходные данные дополняются до двух, причем DATAx0 является младшим байтом, а DATAx1 — старшим байтом, где x представляет X, Y или Z.Регистр DATA_FORMAT (адрес 0x31) управляет форматом данных. Рекомендуется выполнять многобайтовое чтение всех регистров, чтобы предотвратить изменение данных между чтениями последовательных регистров. | RO | [15: 0] DATAZDATAZ0 @ 0x36DATAZ [15: 0]Измерение акселерометра по оси Z. | |||||||
[0x37] DATAZ1Данные оси Z 1 (DATAZ1 @ 0x37) | RO | ||||||||
[0x38] FIFO_CTLУправление FIFO (FIFO_CTL @ 0x38)Поля регистров 9282 9282: 6] FIFO_MODEУправляет поведением внутреннего FIFO. | R / W | [7: 6] FIFO_MODEFIFO_CTL @ 0x38FIFO_MODE [7: 6]Опции
Эти биты устанавливают режим FIFO, как описано в таблице 22. h5. Таблица 22. Режимы FIFO | _. Настройка | _. Режим | _. Функция | | 00 | Обход | FIFO обойден. | 01 | FIFO | FIFO собирает до 32 значений и затем прекращает сбор данных, собирая новые данные только тогда, когда FIFO не заполнен.| | 10 | Stream | FIFO содержит 32 последних значения данных. Когда FIFO заполнен, самые старые данные перезаписываются новыми данными. | 11 | Триггер | При запуске битом триггера FIFO сохраняет последние выборки данных перед событием триггера, а затем продолжает сбор данных до полного заполнения. Новые данные собираются только тогда, когда FIFO не заполнен. | [5] TRIGGERFIFO_CTL @ 0x38TRIGGER [5]ОпцииЗначение 0 в бите триггера связывает событие триггера режима триггера с INT1, а значение 1 связывает событие триггера с INT2. | [4: 0] ОБРАЗЦЫFIFO_CTL @ 0x38ОБРАЗЦЫ [4: 0]Функция этих битов зависит от выбранного режима FIFO (см. Таблицу 23). Ввод значения 0 в биты выборки немедленно устанавливает бит состояния водяного знака в регистре INT_SOURCE, независимо от того, какой режим FIFO выбран. Нежелательная операция может произойти, если значение 0 используется для битов выборки при использовании режима триггера. h5. Таблица 23. Примеры функций битов | _. Режим FIFO | _. Функция Samples Bits | | Обход | Нет.| | FIFO | Указывает, сколько записей FIFO необходимо для запуска прерывания водяного знака. | Stream | Указывает, сколько записей FIFO необходимо для запуска прерывания водяного знака. | Триггер | Определяет, сколько отсчетов FIFO сохраняется в буфере FIFO перед событием триггера. | |||||
[0x39] FIFO_STATUSСтатус FIFO (FIFO_STATUS @ 0x39)Регистровые битовые поля
| RO | [7] FIFO_TRIGFIFO_STATUS @ 0x39FIFO_TRIG [7]1 в бите FIFO_TRIG соответствует возникновению события запуска, а 0 означает, что событие запуска FIFO не произошло. | [5: 0] ЗАПИСИFIFO_STATUS @ 0x39ЗАПИСИ [5: 0]Эти биты сообщают, сколько значений данных хранится в FIFO. Доступ для сбора данных из FIFO предоставляется через регистры DATAX, DATAY и DATAZ.Чтения FIFO должны выполняться в пакетном или многобайтовом режиме, потому что каждый уровень FIFO очищается после любого чтения (одно- или многобайтового) FIFO. FIFO хранит максимум 32 записи, что соответствует максимуму 33 записям, доступным в любой момент времени, потому что дополнительная запись доступна в выходном фильтре устройства. |
Трехосевой цифровой акселерометр (ADXL345)
Описание
Описание
ACCEL — это датчик движения.Интегрированный с ADXL 345 и ACC, он может получить 3-осевое ускорение. ADXL 345 — это небольшой, тонкий 3-осевой акселерометр со сверхнизким энергопотреблением и измерением высокого разрешения (13 бит) при нагрузке до ± 16 g. Данные цифрового вывода форматируются как 16-битное дополнение до двоек и доступны через цифровой интерфейс I2C (адрес: 0x53). В этом модуле мы использовали интерфейс серии I2C.
Что такое акселерометр?
Акселерометр — это электромеханическое устройство, которое измеряет силы ускорения.Эти силы могут быть статическими, как постоянная сила тяжести, тянущая к вашим ногам, или они могут быть динамическими, вызванными перемещением или вибрацией акселерометра.
Для чего нужны акселерометры?
Измеряя величину статического ускорения, вызванного силой тяжести, вы можете определить угол наклона устройства по отношению к земле. Измеряя величину динамического ускорения — вы можете проанализировать, как движется устройство. Поначалу измерение наклона и ускорения не кажется таким уж захватывающим.Однако инженеры придумали множество способов делать с ними действительно полезные продукты.
Характеристики продукта
- Сверхнизкое энергопотребление
- Обнаружение одиночного / двойного касания
- Мониторинг активности / бездействия
- Обнаружение свободного падения
- Цифровой интерфейс I2C
- Широкий температурный диапазон
Включает
- 1x блок ACC
- 1x кабель GROVE
Приложения
- Строительный и структурный мониторинг
- Навигация
- Определение ориентации