Акселерометр ADXL345: принцип работы, подключение и программирование

Что такое акселерометр ADXL345. Как устроен и работает трехосевой цифровой акселерометр ADXL345. Как подключить ADXL345 к Arduino и считывать данные об ускорении. Какие основные характеристики у акселерометра ADXL345.

Содержание

Принцип работы акселерометра ADXL345

ADXL345 — это трехосевой цифровой акселерометр с высоким разрешением (13 бит) и диапазоном измерения до ±16g. Он позволяет измерять как статическое ускорение силы тяжести при наклонах, так и динамическое ускорение в результате движения или ударов.

Принцип работы ADXL345 основан на измерении емкости дифференциального конденсатора. Подвижная масса, прикрепленная к кремниевой пластине, отклоняется под действием ускорения. Это вызывает изменение емкости между неподвижными пластинами и подвижной массой. Специальная схема преобразует это изменение емкости в выходной сигнал.

Основные особенности ADXL345:

  • Три оси измерения: X, Y, Z
  • Высокое разрешение: до 3.9 mg/LSB
  • Выбор диапазона измерения: ±2g, ±4g, ±8g, ±16g
  • Низкое энергопотребление: 40 мкА в режиме измерения
  • Встроенная память 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 #include #include Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345); void setup() { Serial.begin(9600); if(!accel.begin()) { Serial.println(«Ошибка подключения ADXL345»); while(1); } accel.setRange(ADXL345_RANGE_16_G); } void loop() { sensors_event_t event; accel.getEvent(&event); Serial.print(«X: «); Serial.print(event.acceleration.x); Serial.print(» «); Serial.print(«Y: «); Serial.print(event.acceleration.y); Serial.print(» «); Serial.print(«Z: «); Serial.print(event.acceleration.z); Serial.print(» «); Serial.println(«m/s^2 «); delay(500); } «`

В этом примере мы инициализируем акселерометр, устанавливаем диапазон измерения ±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

Для повышения точности измерений рекомендуется выполнить калибровку акселерометра. Как это сделать?

  1. Расположите датчик горизонтально и запишите показания.
  2. Поверните датчик на 180° вокруг каждой оси и снова запишите показания.
  3. Вычислите смещение нуля для каждой оси как среднее значение показаний в противоположных положениях.
  4. Запишите полученные значения смещения в соответствующие регистры ADXL345.

Пример кода для записи смещения:


«`cpp // Записываем смещение для оси X accel.writeRegister(ADXL345_REG_OFSX, (int8_t)(-1 * offsetX / 0.0039)); // Записываем смещение для оси Y accel.writeRegister(ADXL345_REG_OFSY, (int8_t)(-1 * offsetY / 0.0039)); // Записываем смещение для оси Z accel.writeRegister(ADXL345_REG_OFSZ, (int8_t)(-1 * (offsetZ — 256) / 0.0039)); «`

Здесь 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_50HZ : Serial . println ( «50 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)

    Акселерометры — это устройства, которые могут измерять проекции ускорений различных объектов (роботов, движимых частей манипулятора или летательных аппаратов). Чаще всего эти измерения происходят в трехосевой системе координат (проще говоря, в привычном нам трехмерном пространстве). Это позволяет получать полную информацию о текущем положении в пространстве.

    Благодаря высокой энергоэффективности (до 150 мкА в рабочем режиме) и низкой стоимости ADXL345 — один из лучших в своем классе. На плате модуля имеется стабилизатор питания, так что можно питать его напрямую от 5 вольт, подключив к Arduino по описанным ниже инструкциям. Также в процессе программирования, для более удобной работы с датчиком используйте специальную библиотеку.    Характеристики датчика приведены внизу описания. Более подробную техническую документацию можно прочитать вот здесь.

    

Подключение модуля:

    На плате датчика имеются 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 поддерживает оборонные и аэрокосмические приложения (стандарт AQEC)
  • Загрузить техническое описание 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

Часы последовательной связи

ADXL345 Характеристики и характеристики модуля
  • Напряжение питания 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 г.

Как использовать модуль акселерометра ADXL345

ADXL345 Модуль акселерометра состоит из 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.

  1. Установите режим мощности и скорость передачи данных, записав в регистр 0x2C. Этот регистр имеет следующие биты:

Если бит LOW_POWER установлен в 0, ADXL345 работает в нормальном режиме, а если он установлен в 1, ADXL345 работает в режимах пониженного энергопотребления, в которых наблюдается более высокий уровень шума.Биты с D3 по D0 выбирают скорость передачи данных в соответствии со следующей таблицей:

  1. Установите формат данных, записав в регистр 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. Если бит связи установлен в 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 и переключает частоту дискретизации на значение, указанное битами пробуждения.В спящем режиме можно использовать только функцию активности. Биты пробуждения управляют частотой чтения в спящем режиме в соответствии со следующей таблицей:

  1. Ускорение чтения по оси x путем чтения регистров 0x32 и 0x33; ускорение по оси Y за счет чтения регистров 0x34 и 0x35; и ускорение по оси Z путем чтения регистров 0x36 и 0x37.

Маскируйте значения регистра в соответствии с выбранным форматом данных (регистр 0x31) и интерпретируйте значение ускорения в соответствии с выбранным диапазоном измерения.

Использование значений ускорения из ADXL345
Значения ускорения по осям X, Y и Z от датчика акселерометра ADXL345 можно использовать для обнаружения наклона, свободного падения и динамического движения объекта. Датчик необходимо установить на исследуемый объект. Значения ускорения можно использовать просто для обнаружения движения или даже для определения траектории объекта.

Скорость по каждой оси может быть определена путем интегрирования значений ускорения.Двойное интегрирование значений ускорения может определить смещение объекта по каждой оси. Следует отметить, что интеграция и двойная интеграция значений ускорения могут быть выполнены только с использованием инструментов научных вычислений, таких как библиотека SciPy в скриптах Python. Даже в этом случае мы должны учитывать ошибки, поскольку может быть несколько источников ошибок, таких как несогласованная выборка данных, ошибки в выборочных данных, ошибки из-за вычислений и т. Д. Как правило, значения смещения или скорости можно предсказать с ограниченной точностью и ограниченный диапазон в пользовательской программе с датчиком ADXL345.

Однако значения ускорения от датчика ADXL345 могут идеально использоваться в электронных системах управления, где простые значения ускорения используются для принятия решений.

ADXL345 3-осевой акселерометр | Библиотека устройств I2C

[0x00] DEVID

Идентификатор устройства (DEVID @ 0x00)

Битовые поля регистра

Регистр DEVID содержит фиксированный код идентификатора устройства 0xE5 (345 восьмеричный).

RO [7: 0] DEVID

DEVID @ 0x00

ID устройства (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_TAP

THRESH_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] OFSX

OFSX @ 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] OFSY

OFSY @ 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] OFSZ

OFSZ @ 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] DUR

DUR @ 0x21

Длительность тапа (DUR [7: 0])

Регистр DUR состоит из восьми битов и содержит значение времени без знака, представляющее максимальное время, в течение которого событие должно быть выше порога THRESH_TAP, чтобы считаться событием касания.Масштабный коэффициент составляет 625 мкс / младший бит. Значение 0 отключает функции одиночного / двойного касания.

[0x22] LATENT

Задержка касания (LATENT @ 0x22)

Битовые поля регистра

Регистр латентности составляет восемь битов и содержит значение времени без знака, представляющее время ожидания от обнаружения события касания до начала временное окно (определяемое регистром окна), в течение которого может быть обнаружено возможное событие второго касания. Коэффициент масштабирования составляет 1,25 мс / младший бит.Значение 0 отключает функцию двойного касания.

R / W [7: 0] LATENT

LATENT @ 0x22

Задержка отвода (LATENT [7: 0])

Регистр латентности составляет восемь бит и содержит значение времени без знака, представляющее время ожидания от обнаружение события касания до начала временного окна (определяемого регистром окна), в течение которого может быть обнаружено возможное второе событие касания. Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания.

[0x23] ОКНО

Нажмите окно (WINDOW @ 0x23)

Битовые поля регистра

Регистр окна состоит из восьми битов и содержит значение времени без знака, представляющее количество времени после истечения времени задержки (определяется скрытый регистр), во время которого может начаться второй действительный отвод. Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания.

R / W [7: 0] WINDOW

WINDOW @ 0x23

Tap window (WINDOW [7: 0])

Регистр окна составляет восемь битов и содержит значение времени без знака, представляющее количество времени после истечение времени ожидания (определяемого регистром задержки), в течение которого может начаться второй действительный ответ.Коэффициент масштабирования составляет 1,25 мс / младший бит. Значение 0 отключает функцию двойного касания.

[0x24] THRESH_ACT

Порог активности (THRESH_ACT @ 0x24)

Битовые поля регистра

Регистр THRESH_ACT состоит из восьми битов и содержит пороговое значение для обнаружения активности. Формат данных беззнаковый, поэтому величина события активности сравнивается со значением в регистре THRESH_ACT. Масштабный коэффициент составляет 62,5 мг / младший значащий бит. Значение 0 может привести к нежелательному поведению, если разрешено прерывание активности.

Ч / З [7: 0] THRESH_ACT

THRESH_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_INACT

THRESH_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_INACT

TIME_INACT @ 0x26

Время бездействия (TIME_INACT [7: 0])

Регистр TIME_INACT состоит из восьми бит и содержит значение времени без знака, представляющее количество времени, которое ускорение должно быть меньше значения в регистре THRESH_INACT, чтобы было объявлено бездействие.Коэффициент масштабирования составляет 1 сек / младший бит. В отличие от других функций прерывания, которые используют нефильтрованные данные (см. Раздел «Порог»), функция бездействия использует отфильтрованные выходные данные. По крайней мере, одна выходная выборка должна быть сгенерирована для срабатывания прерывания бездействия. Это приводит к тому, что функция не отвечает, если регистр TIME_INACT установлен на значение, меньшее постоянной времени скорости выходных данных. Значение 0 приводит к прерыванию, когда выходные данные меньше значения в регистре THRESH_INACT.

[0x27] ACT_INACT_CTL

Контроль включения оси для обнаружения активности и бездействия (ACT_INACT_CTL @ 0x27)

Регистровые битовые поля
  • [7] ACT_ACDC
  • [6] ACT_X ACT_Y
  • [4] ACT_Z
  • [3] INACT_ACDC
  • [2] INACT_X
  • [1] INACT_Y
  • 9024.Биты ACT AC / DC и INACT AC / DC Значение 0 выбирает работу по постоянному току, а настройка 1 включает работу по переменному току. В режиме связи по постоянному току текущая величина ускорения напрямую сравнивается с THRESH_ACT и THRESH_INACT, чтобы определить, обнаружена ли активность или бездействие. В по переменному току операции для обнаружения активности, значение ускорения в начале обнаружения активности берутся в качестве опорного значения. Затем новые образцы ускорения сравниваются с этим эталонным значением, и если величина разницы превышает значение THRESH_ACT, устройство запускает прерывание активности.Точно так же при работе по переменному току для обнаружения бездействия для сравнения используется эталонное значение, которое обновляется всякий раз, когда устройство превышает пороговое значение бездействия. После выбора эталонного значения устройство сравнивает величину разницы между эталонным значением и текущим ускорением с THRESH_INACT. Если разница меньше значения THRESH_INACT для времени в TIME_INACT, устройство считается неактивным, и запускается прерывание бездействия.h4. ACT_x Enable Bits и INACT_x Enable Bits Значение 1 включает участие оси x, y или z в обнаружении активности или бездействия. Значение 0 исключает выбранную ось из участия. Если все оси исключены, функция отключена. Для обнаружения активности все участвующие оси объединяются логическим ИЛИ, в результате чего функция активности срабатывает, когда любая из участвующих осей превышает пороговое значение. Для обнаружения бездействия все участвующие оси объединяются логическим И, в результате чего функция бездействия срабатывает только в том случае, если все участвующие оси находятся ниже порогового значения в течение указанного времени.

R / W [7] ACT_ACDC

ACT_INACT_CTL @ 0x27

ACT_ACDC [7]

Опции
  • 0 = работа по постоянному току
  • 1 = работа по переменному току

    Связь по переменному / постоянному току обнаружения активности.

[6] ACT_X

ACT_INACT_CTL @ 0x27

ACT_X [6]

Управляет участием оси X в обнаружении активности.

[5] ACT_Y

ACT_INACT_CTL @ 0x27

ACT_Y [5]

Управляет участием оси Y в обнаружении активности.

[4] ACT_Z

ACT_INACT_CTL @ 0x27

ACT_Z [4]

Управляет участием оси Z в обнаружении активности.

[3] INACT_ACDC

ACT_INACT_CTL @ 0x27

INACT_ACDC [3]

Опции
  • 0 = работа по постоянному току
  • 1 = работа по переменному / постоянному току
Управляющие устройства операция обнаружения бездействия.

[2] INACT_X

ACT_INACT_CTL @ 0x27

INACT_X [2]

Управляет участием оси X в обнаружении бездействия.

[1] INACT_Y

ACT_INACT_CTL @ 0x27

INACT_Y [1]

Управляет участием оси Y в обнаружении бездействия.

[0] INACT_Z

ACT_INACT_CTL @ 0x27

INACT_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_FF

THRESH_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_FF

TIME_FF @ 0x29

Время свободного падения (TIME_FF [7: 0])

Регистр TIME_FF состоит из восьми бит и хранит значение времени без знака, представляющее минимальное время что значение всех осей должно быть меньше THRESH_FF для генерации прерывания свободного падения. Коэффициент масштабирования составляет 5 мс / младший бит.Значение 0 может привести к нежелательному поведению, если разрешено прерывание от свободного падения. Рекомендуются значения от 100 до 350 мс (от 0x14 до 0x46).

[0x2A] TAP_AXES

Управление осью для одиночного / двойного касания (TAP_AXES @ 0x2A)

Регистровые битовые поля
  • [3] SUPPRESS
  • [2] TAP_X 9000] 9283 9283 TAP_Y
  • [0] TAP_Z

Управляет настройками участия в обнаружении отводов для каждой оси и подавлением двойного касания.

R / W [3] SUPPRESS

TAP_AXES @ 0x2A

SUPPRESS [3]

Установка бита подавления подавляет обнаружение двойного касания, если между отводами присутствует ускорение, превышающее значение THRESH_TAP. См. Раздел «Обнаружение касания» для более подробной информации.

[2] TAP_X

TAP_AXES @ 0x2A

TAP_X [2]

Установка 1 в бите включения TAP_X включает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний.

[1] TAP_Y

TAP_AXES @ 0x2A

TAP_Y [1]

Установка 1 в бите включения TAP_Y разрешает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний.

[0] TAP_Z

TAP_AXES @ 0x2A

TAP_Z [0]

Установка 1 в бите включения TAP_Z включает участие оси x, y или z в обнаружении отводов. Значение 0 исключает участие выбранной оси в обнаружении касаний.

[0x2B] ACT_TAP_STATUS

Источник однократного / двойного касания (ACT_TAP_STATUS @ 0x2B)

Регистровые битовые поля
  • [6] ACT_X
  • [5] ACT_X [5] ACT_8Z
  • [3] ASLEEP
  • [2] TAP_X
  • [1] TAP_Y
  • [0] TAP_Z

h4. Источники ACT_x и TAP_x Источники Эти биты указывают первую ось, участвующую в событии касания или активности.Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия. Когда доступны новые данные, эти биты не очищаются, а перезаписываются новыми данными. Регистр ACT_TAP_STATUS должен быть прочитан перед очисткой прерывания. Отключение оси от участия очищает соответствующий бит источника, когда происходит следующее действие или событие одиночного касания / двойного касания. h4. Спящий бит Значение 1 в бите сна указывает, что часть спит, а настройка 0 указывает, что часть не спит.Этот бит переключается, только если устройство настроено на автоматический переход в спящий режим. См. Раздел «Бит AUTO_SLEEP» для получения дополнительной информации о режиме автоматического ожидания.

RO [6] ACT_X

ACT_TAP_STATUS @ 0x2B

ACT_X [6]

Этот бит указывает, что ось X участвовала в событии активности. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия.

[5] ACT_Y

ACT_TAP_STATUS @ 0x2B

ACT_Y [5]

Этот бит указывает, что ось Y участвовала в событии активности.Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия.

[4] ACT_Z

ACT_TAP_STATUS @ 0x2B

ACT_Z [4]

Этот бит указывает, что ось Z участвовала в событии активности. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия.

[3] ASLEEP

ACT_TAP_STATUS @ 0x2B

ASLEEP [3]

Значение 1 в бите спящего режима указывает, что часть спит, а установка 0 указывает, что часть не спит.Этот бит переключается, только если устройство настроено на автоматический переход в спящий режим.

[2] TAP_X

ACT_TAP_STATUS @ 0x2B

TAP_X [2]

Этот бит указывает, что ось X участвовала в событии касания. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия.

[1] TAP_Y

ACT_TAP_STATUS @ 0x2B

TAP_Y [1]

Этот бит указывает, что ось Y участвовала в событии касания. Значение 1 соответствует участию в событии, а значение 0 соответствует отсутствию участия.

[0] TAP_Z

ACT_TAP_STATUS @ 0x2B

TAP_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_POWER

BW_RATE @ 0x2C

LOW_POWER [4]

Опции
  • 0 = Нормальная мощность
  • 1 = пониженная мощность 0 в бите LOW_POWER выбирает нормальную работу, а установка 1 выбирает работу с пониженным энергопотреблением, которая имеет несколько более высокий уровень шума (подробности см. В разделе «Режимы мощности»).

[3: 0] RATE

BW_RATE @ 0x2C

RATE [3: 0]

Опции
  • 0 = 0,10 Гц
  • 1 = 0,20 Гц
  • 2 2 Гц
  • 3 = 0,78 Гц
  • 4 = 1,56 Гц
  • 5 = 3,13 Гц
  • 6 = 6,25 Гц
  • 7 = 12,5 Гц (низкое энергопотребление в норме)
  • 85

    25 Гц (низкая мощность в норме)
  • 9 = 50 Гц (низкая мощность в норме)
  • 10 = 100 Гц (низкая мощность в норме)
  • 11 = 200 Гц (низкая мощность в норме)
  • 12 = 400 Гц (низкое энергопотребление в норме)
  • 13 = 800 Гц
  • 14 = 1600 Гц
  • 15 = 3200 Гц

Эти биты выбирают полосу пропускания устройства и скорость передачи данных (см. Таблицу 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)

Регистровые битовые поля
  • [5] LINK
  • [4] AUTO_SLEEP
  • [2] SLEEP
  • [1: 0] WAKEUP

Управляет режимом питания и энергосберегающими функциями акселерометра.

R / W [5] LINK

POWER_CTL @ 0x2D

LINK [5]

Опции
  • 0 = одновременное отсутствие активности / обнаружение активности
  • 1 = активность последовательного обнаружения

Установка 1 в бите связи с включенными функциями активности и бездействия задерживает запуск функции активности до тех пор, пока не будет обнаружено бездействие. После обнаружения активности начинается обнаружение бездействия, предотвращающее обнаружение активности.Этот бит последовательно связывает функции активности и бездействия. Когда этот бит установлен в 0, функции бездействия и активности выполняются одновременно. Дополнительную информацию можно найти в разделе Link Mode. При очистке бита связи рекомендуется перевести деталь в режим ожидания, а затем вернуть ее в режим измерения с последующей записью. Это сделано для обеспечения правильного смещения устройства, если спящий режим отключен вручную; в противном случае первые несколько выборок данных после сброса бита связи могут иметь дополнительный шум, особенно если устройство находилось в спящем режиме, когда бит был очищен.

[4] AUTO_SLEEP

POWER_CTL @ 0x2D

AUTO_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] MEASURE

POWER_CTL @ 0x2D

MEASURE [3]

Установка 0 в бите такта переводит деталь в режим ожидания, а установка 1 переводит деталь в режим измерения. ADXL345 включается в режиме ожидания с минимальным энергопотреблением.

[2] SLEEP

POWER_CTL @ 0x2D

SLEEP [2]

Установка 0 в бите ожидания переводит компонент в нормальный режим работы, а настройка 1 переводит компонент в режим сна. Спящий режим подавляет DATA_READY, останавливает передачу данных в FIFO и переключает частоту дискретизации на значение, указанное битами пробуждения. В спящем режиме можно использовать только функцию активности. Когда прерывание DATA_READY подавляется, регистры выходных данных (регистр 0x32 — регистр 0x37) по-прежнему обновляются с частотой дискретизации, установленной битами пробуждения (D1: D0).При сбросе бита сна рекомендуется перевести деталь в режим ожидания, а затем вернуть в режим измерения с последующей записью. Это сделано для обеспечения правильного смещения устройства, если спящий режим отключен вручную; в противном случае первые несколько выборок данных после сброса бита спящего режима могут иметь дополнительный шум, особенно если устройство находилось в спящем режиме, когда бит был очищен.

[1: 0] WAKEUP

POWER_CTL @ 0x2D

WAKEUP [1: 0]

Опции
  • 0 = 1 Гц
  • 1 = 2 Гц
  • 83

    2 Гц
  • 3 = 8 Гц

Эти биты управляют частотой показаний в спящем режиме, как описано в таблице 20.h5. Таблица 20. Частота показаний в спящем режиме. | _. Настройка | _. Частота (Гц) | | 00 | 8 | | 01 | 4 | | 10 | 2 | | 11 | 1 |

[0x2E] INT_ENABLE

Управление разрешением прерывания (INT_ENABLE @ 0x2E)

Регистровые битовые поля
  • [7] DATA_READY
  • [6] SINGLE_TAP
  • [6] SINGLE_TAP

  • [4] АКТИВНОСТЬ
  • [3] НЕАКТИВНОСТЬ
  • [2] FREE_FALL
  • [1] WATERMARK
  • [0] OVERRUN

Разрешены управляющие элементы.

Ч / З [7] DATA_READY

INT_ENABLE @ 0x2E

DATA_READY [7]

Бит DATA_READY устанавливается, когда доступны новые данные, и сбрасывается, когда новые данные недоступны.

[6] SINGLE_TAP

INT_ENABLE @ 0x2E

SINGLE_TAP [6]

Бит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит в течение меньшего времени, чем указано в регистре DUR (адрес 0x21).

[5] DOUBLE_TAP

INT_ENABLE @ 0x2E

DOUBLE_TAP [5]

Бит DOUBLE_TAP устанавливается, когда два события ускорения, превышающие значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени, чем указано в регистр DUR (адрес 0x21), при этом второе нажатие начинается по истечении времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23). См. Раздел «Обнаружение касания» для более подробной информации.

[4] ACTIVITY

INT_ENABLE @ 0x2E

ACTIVITY [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_FALL

INT_ENABLE @ 0x2E

FREE_FALL [2]

Бит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается в течение большего времени, чем указано в Регистр TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току.

[1] WATERMARK

INT_ENABLE @ 0x2E

WATERMARK [1]

Бит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки.

[0] OVERRUN

INT_ENABLE @ 0x2E

OVERRUN [0]

Бит переполнения устанавливается, когда новые данные заменяют непрочитанные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO.

[0x2F] INT_MAP

Управление отображением прерывания (INT_MAP @ 0x2F)

Регистровые битовые поля
  • [7] DATA_READY
  • [6] SINGLE_TAP
  • [6] SINGLE_TAP

    [6] SINGLE_TAP

    [4] АКТИВНОСТЬ
  • [3] НЕАКТИВНОСТЬ
  • [2] FREE_FALL
  • [1] WATERMARK
  • [0] OVERRUN
  • внутреннее отображение прерывания

УправляетЛюбые биты, установленные в 0 в этом регистре, отправляют соответствующие прерывания на вывод INT1, тогда как биты, установленные в 1, отправляют соответствующие прерывания на вывод INT2. Все выбранные прерывания для данного вывода объединяются оператором ИЛИ.

R / W [7] DATA_READY

INT_MAP @ 0x2F

DATA_READY [7]

Опции

Бит DATA_READY устанавливается, когда новые данные доступны, и сбрасывается, когда новые данные недоступны.

[6] SINGLE_TAP

INT_MAP @ 0x2F

SINGLE_TAP [6]

Опции

Бит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит за меньшее время чем указано в регистре DUR (адрес 0x21).

[5] DOUBLE_TAP

INT_MAP @ 0x2F

DOUBLE_TAP [5]

Опции

Бит DOUBLE_TAP устанавливается, когда два события ускорения, которые превышают значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени указывается в регистре DUR (адрес 0x21), при этом второе нажатие начинается после времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23). См. Раздел «Обнаружение касания» для более подробной информации.

[4] ACTIVITY

INT_MAP @ 0x2F

ACTIVITY [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_FALL

INT_MAP @ 0x2F

FREE_FALL [2]

Опции

Бит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается дольше, чем указывается в регистре TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току.

[1] WATERMARK

INT_MAP @ 0x2F

WATERMARK [1]

Опции

Бит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки.

[0] OVERRUN

INT_MAP @ 0x2F

OVERRUN [0]

Опции

Бит переполнения устанавливается, когда новые данные заменяют непрочитанные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO.

[0x30] INT_SOURCE

Источник прерываний (INT_SOURCE @ 0x30)

Регистровые битовые поля
  • [7] DATA_READY
  • [6] SINGLE_TAP

  • DOUBLE_TAP

    [4] АКТИВНОСТЬ

  • [3] НЕАКТИВНОСТЬ
  • [2] FREE_FALL
  • [1] ВОДНАЯ МАРКА
  • [0] ВЫПОЛНЕНИЕ
    8DATA ВНУТР. @ 0x30

    DATA_READY [7]

    Бит DATA_READY устанавливается, когда доступны новые данные, и сбрасывается, когда новые данные недоступны.

[6] SINGLE_TAP

INT_SOURCE @ 0x30

SINGLE_TAP [6]

Бит SINGLE_TAP устанавливается, когда единичное событие ускорения, которое превышает значение в регистре THRESH_TAP (адрес 0x1D), происходит в течение меньшего времени, чем указано в регистре DUR (адрес 0x21).

[5] DOUBLE_TAP

INT_SOURCE @ 0x30

DOUBLE_TAP [5]

Бит DOUBLE_TAP устанавливается, когда два события ускорения, превышающие значение в регистре THRESH_TAP (адрес 0x1D), происходят в течение меньшего времени, чем указано в регистр DUR (адрес 0x21), при этом второе нажатие начинается по истечении времени, указанного в скрытом регистре (адрес 0x22), но в пределах времени, указанного в регистре окна (адрес 0x23).См. Раздел «Обнаружение касания» для более подробной информации.

[4] ACTIVITY

INT_SOURCE @ 0x30

ACTIVITY [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_FALL

INT_SOURCE @ 0x30

FREE_FALL [2]

Бит FREE_FALL устанавливается, когда ускорение меньше значения, хранящегося в регистре THRESH_FF (адрес 0x28), наблюдается в течение большего времени, чем указано в Регистр TIME_FF (адрес 0x29) по всем осям (логическое И). Прерывание FREE_FALL отличается от прерывания бездействия следующим образом: все оси всегда участвуют и связаны логическим И, период таймера намного меньше (1.Максимум 28 секунд), и режим работы всегда связан по постоянному току.

[1] WATERMARK

INT_SOURCE @ 0x30

WATERMARK [1]

Бит водяного знака устанавливается, когда количество выборок в FIFO равно значению, хранящемуся в битах выборок (регистр FIFO_CTL, адрес 0x38). Бит водяного знака автоматически сбрасывается при чтении FIFO, и содержимое возвращается к значению ниже значения, хранящегося в битах выборки.

[0] OVERRUN

INT_SOURCE @ 0x30

OVERRUN [0]

Бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные.Точная работа функции переполнения зависит от режима FIFO. В режиме байпаса бит переполнения устанавливается, когда новые данные заменяют непрочитанные данные в регистрах DATAX, DATAY и DATAZ (с адреса 0x32 до адреса 0x37). Во всех других режимах бит переполнения устанавливается при заполнении FIFO. Бит переполнения автоматически сбрасывается при чтении содержимого FIFO.

[0x31] DATA_FORMAT

Управление форматом данных (DATA_FORMAT @ 0x31)

Регистровые битовые поля
  • [7] SELF_TEST
  • [6] SPI
  • INT [3] FULL_RES
  • [2] JUSTIFY
  • [1: 0] RANGE

Регистр DATA_FORMAT управляет представлением данных в регистр 0x32 через регистр 0x37.Все данные, за исключением диапазона ± 16 г, должны быть обрезаны во избежание опрокидывания.

Ч / З [7] SELF_TEST

DATA_FORMAT @ 0x31

SELF_TEST [7]

Установка 1 в бите SELF_TEST применяет силу самопроверки к датчику, вызывая сдвиг в выходных данных. Значение 0 отключает самопроверку.

[6] SPI

DATA_FORMAT @ 0x31

SPI [6]

Опции
  • 0 = 3-проводный режим SPI
  • 1 = 4-проводный режим SPI

Значение A в бите SPI устанавливает устройство в режим 3-проводного SPI, а значение 0 устанавливает устройство в режим 4-проводного SPI.

[5] INT_INVERT

DATA_FORMAT @ 0x31

INT_INVERT [5]

Опции
  • 0 = Активный высокий (нормальный)
  • 1 = Активный низкий (инвертированный)
  • значение 0
в бите INT_INVERT устанавливает прерывания на активный высокий уровень, а значение 1 устанавливает прерывания на активный низкий уровень.

[3] FULL_RES

DATA_FORMAT @ 0x31

FULL_RES [3]

Когда этот бит установлен на значение 1, устройство находится в режиме полного разрешения, где выходное разрешение увеличивается с установленным диапазоном g битами диапазона для поддержания масштабного коэффициента 4 мг / младший бит.Когда бит FULL_RES установлен в 0, устройство находится в 10-битном режиме, а биты диапазона определяют максимальный диапазон g и масштабный коэффициент.

[2] JUSTIFY

DATA_FORMAT @ 0x31

JUSTIFY [2]

Опции
  • 0 = Выровненный по правому краю с расширением знака
  • 1 = Выровненный по левому краю (MSB24) режим 9 Значение 1 в бите выравнивания выбирает режим с выравниванием по левому краю (MSB), а значение 0 выбирает режим с выравниванием по правому краю с расширением знака.

[1: 0] ДИАПАЗОН

DATA_FORMAT @ 0x31

ДИАПАЗОН [1: 0]

Опции
  • 0 = Â ± 2 г
  • 1 = Â ± 4 г
  • 2000285 = Â ± 8 g
  • 3 = Â ± 16 g

Эти биты устанавливают диапазон 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] DATAX

DATAX0 @ 0x32

DATAX [15: 0]

Измерение акселерометра по оси X.

[0x33] DATAX1

Данные оси X 1 (DATAX1 @ 0x33)

RO
[0x34] DATAY0

Данные оси Y 0 (DATAY0 @ 0x34)

Поля регистров Y
900 данные измерения акселерометра оси. Выходные данные дополняются до двух, с DATAx0 в качестве младшего байта и DATAx1 в качестве старшего байта, где x представляет X, Y или Z. Регистр DATA_FORMAT (адрес 0x31) управляет форматом данных. Рекомендуется выполнять многобайтовое чтение всех регистров, чтобы предотвратить изменение данных между чтениями последовательных регистров.

RO [15: 0] DATAY

DATAY0 @ 0x34

DATAY [15: 0]

Измерение акселерометра по оси Y.

[0x35] DATAY1

Данные оси Y 1 (DATAY1 @ 0x35)

RO
[0x36] DATAZ0

Данные оси Z 0 (DATAZ0 @ 0x36)

Поля регистров Z49
900 данные измерения акселерометра оси. Выходные данные дополняются до двух, причем DATAx0 является младшим байтом, а DATAx1 — старшим байтом, где x представляет X, Y или Z.Регистр DATA_FORMAT (адрес 0x31) управляет форматом данных. Рекомендуется выполнять многобайтовое чтение всех регистров, чтобы предотвратить изменение данных между чтениями последовательных регистров.

RO [15: 0] DATAZ

DATAZ0 @ 0x36

DATAZ [15: 0]

Измерение акселерометра по оси Z.

[0x37] DATAZ1

Данные оси Z 1 (DATAZ1 @ 0x37)

RO
[0x38] FIFO_CTL

Управление FIFO (FIFO_CTL @ 0x38)

Поля регистров 9282 9282
: 6] FIFO_MODE
  • [5] TRIGGER
  • [4: 0] SAMPLES
  • Управляет поведением внутреннего FIFO.

    R / W [7: 6] FIFO_MODE

    FIFO_CTL @ 0x38

    FIFO_MODE [7: 6]

    Опции
    • 0 = Обход
    • 1 = Обход
    • 1 0008
    • 1 Поток
    • 3 = Триггер

    Эти биты устанавливают режим FIFO, как описано в таблице 22. h5. Таблица 22. Режимы FIFO | _. Настройка | _. Режим | _. Функция | | 00 | Обход | FIFO обойден. | 01 | FIFO | FIFO собирает до 32 значений и затем прекращает сбор данных, собирая новые данные только тогда, когда FIFO не заполнен.| | 10 | Stream | FIFO содержит 32 последних значения данных. Когда FIFO заполнен, самые старые данные перезаписываются новыми данными. | 11 | Триггер | При запуске битом триггера FIFO сохраняет последние выборки данных перед событием триггера, а затем продолжает сбор данных до полного заполнения. Новые данные собираются только тогда, когда FIFO не заполнен.

    [5] TRIGGER

    FIFO_CTL @ 0x38

    TRIGGER [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)

    Регистровые битовые поля
    • [7] FIFO_TRIG
    • [5: 0 900] ENTRIES статус 9024 и размер.

    RO [7] FIFO_TRIG

    FIFO_STATUS @ 0x39

    FIFO_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

    Приложения

    • Строительный и структурный мониторинг
    • Навигация
    • Определение ориентации

    Спецификация

    Ресурсы Параметр
    Диапазон измерения ± 16 г
    Протокол связи I2C : 0x53
    Разрешение Разрешение фиксированного 10-битного разрешения увеличивается с увеличением диапазона g до 13 бит при ± 16 g
    Потребляемая мощность Когда VS = 2.

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

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