Главная » Микроконтроллеры
Призовой фонд
на ноябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Тестер компонентов LCR-T4
Паяльник
4. 200 руб.
От пользователей

Акселерометр ADXL345

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

В формате микросхемы акселерометр не возможно изготовить чисто электрическую систему. Таким образом в таком варианте (ADXL345) акселерометр представляет собой микроэлектромеханическую систему (MEMS), где присутствует как механика, так и электроника – механическая часть акселерометра обеспечивает движение инерционной массы, а электрическая преобразовывает это движение в некоторую электрическую величину. Физически процесс преобразования механического движения в электрическую величину может быть основан на изменении емкости, на пьезорезистивном эффекте, пьезоэлектрическом эффекте, также выделяются акселерометры с нагреваемой пластиной, где преобразование в электрическую величину основано на эффекте теплопередачи , и акселерометры с нагреваемым газом, где в качестве инерционной массы используется газ, принцип действия также основан на передаче тепла. Однако, к сожалению, в документациях на датчики в основном помечается лишь то, что система является микроэлектромеханической, а на каком именно эффекте она построена, не указывается.

Теперь перейдем к самому датчику акселерометру ADXL345. 

Характеристики:

  • Напряжение питания от 2 до 3,6 вольт
  • Ток, потребляемый в рабочем режиме от 40 до 150 мкА, в зависимости от частоты опроса
  • Разрешающая способность от 10 до 13 бит
  • 3 оси акселерометра
  • Рабочий диапазон температур от -40 до +85 градусов Цельсия
  • Цифровые интерфейсы SPI (трех- или четырехпроводный) и I2C
  • Детектирование событий: толчок, двойной толчок, свободное падение, наличие активности по осям, отсутствие активности
  • 2 программируемых выхода событий
  • Корпус LGA размером 3×5×1 мм
  • Устойчив к ударам с ускорениями до 10000 g

Вполне не плохие возможности датчика стоимостью порядка 1 доллара за единицу. Приобрести такой акселерометр можно на всем известных торговых интернет площадках Aliexpress или Ebay. В продаже имеются как отдельные микросхемы датчиков, так и небольшие модули со стабилизатором напряжения на 3,3 вольта и несколькими резисторами обвязки акселерометра. По-моему единственным плюсом готового модуля является только то, что саму микросхему не нужно паять – там уже все припаяно и нужно лишь соединиться со штырьками – удобно для тестирования, макетирования и прочего.

Итак, для начала работы с акселерометром ADXL345 нам понадобятся микроконтроллер ATmega8, сам датчик, ЖК дисплей, несколько светодиодов, резисторов, конденсаторов и стабилизатор напряжения (если акселерометр в виде модуля, то стабилизатор нам не понадобится, так как он уже имеется в модуле датчика). Интерфейс будем использовать I2C, так как он требует всего 2 провода для передачи информации.

Схема устройства:

Варианты питания схемы могут варьироваться в зависимости от имеющихся, самая общая схема построена на стабилизаторах напряжения 5 вольт и 3,3 вольта. Микросхема стабилизаторов напряжения можно применять любые – от линейных стабилизаторов (LM7805, AMS1117-adj или на фиксированное напряжение или другие стабилизаторы) до импульсных (MC34063, LM2596 и другие). 5 вольт необходимы для питания ЖК дисплея, от 3,3 вольт питается вся остальная схема. Датчик используется вышеописанный ADXL345. Резисторы R12 и R13 необходимы для работы интерфейса I2C – подтягивают плюс питания к линиям передачи данных для формирования логической единицы. 12-й вывод микросхемы датчика соединен с землей для определения адреса микросхемы для цифрового интерфейса, при соединении этого вывода с плюсом питания адрес будет другим, таким образом можно использовать одновременно два таких акселерометра с разными адресами. Резистор R3 формирует на выводе reset микроконтроллера положительное напряжения для исключения самопроизвольного перезапуска. ЖК дисплей используется 2004А (4 строки по 20 символов), резистор R2 регулирует контраст символов на дисплее, резистор R1 ограничивает ток для подсветки дисплея, чтобы она не вышла из строя. Светодиод HL1 показывает наличие напряжения питания в схеме, а светодиоды HL2 – HL7 используются как индикаторы наклона по осям X и Y. Резисторы R4 – R10 ограничивают ток, протекающий через светодиоды, чтобы они не вышли из строя. Микроконтроллер Atmega8 можно использовать как в DIP, так и в TQFP корпусе. При питании микроконтроллера от напряжения 5 вольт для I2C интерфейса между датчиком и контроллером нужно будет использовать согласование уровней (либо на специализированной микросхеме, либо на простой реализации на транзисторах) для обеспечения надежной работы схемы.

Извлекать данные из акселерометра ADXL345 совсем не сложно, однако просто считать значения из регистров не получится, по умолчанию датчик находится в режиме standby. Перед началом работы (речь идет о программном коде) с акселерометром его необходимо инициализировать, а именно настроить регистры POWER_CTL (выйти из режима standby и запустить работу датчика) и DATA_FORMAT (согласно документации настроить формат данных – разрешение, выравнивание и др.). Теперь можно просто периодически считывать данные из регистров данных осей и использовать эти данные в своих целях. Насчет выходов событий – все то же самое можно легко реализовать программно в микроконтроллере или же настроить остальные регистры. Во втором случае ускоряется реакция на эти действия или события, в первом случае микроконтроллер в силу своей производительности может замедлить реакцию на эти события.

Оценив все возможности датчика собираем схему, для этого я использовал отладочную плату для микроконтроллеров Atmega8 и совместимых с ней по выводам:

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

На дисплее отображается название микросхемы акселерометра, если ID, считанный из датчика, совпадает со значением 0xE5 (согласно даташиту). На второй строке располагаются значения трех осей, считанных из регистров датчика. Далее на третьей строке рассчитанные значения углов отклонения акселерометра. По умолчанию все значения принимают цифры от 90 до -90 градусов в плоскости 180 градусов. Для значений в 360 градусов нужно будет немного подправить код программы.

 

Для прошивки микроконтроллер необходимо знать конфигурацию фьюз битов:

Это чудо инженерной мысли (имеется ввиду датчик акселерометр) можно применять в различных сферах – от мобильной техники до медицинской. Таким образом, можно детектировать падение больного или чего-то другого, активность перемещения персонала или оборудования и их состояние покоя, детектировать вибрации и толчки. При помощи акселерометра можно контролировать и корректировать положения предметов. Ну, и очень популярная сфера – сфера компьютерной и мобильной техники.

На этом, кажется, все, к статье прилагается исходник программы для микроконтроллера в AVR Studio 4, прошивка для микроконтроллера, документация на акселерометр, а также видео, демонстрирующее работу схемы с датчиком ADXL345.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
IC1 МК AVR 8-бит
ATmega8A
1 Поиск в LCSCВ блокнот
VR1 Линейный регулятор
L7805AB
1 Поиск в LCSCВ блокнот
VR2 Линейный регулятор
AMS1117-3.3
1 Поиск в LCSCВ блокнот
IC2 АкселерометрADXL3451 Поиск в LCSCВ блокнот
HG1 LCD-дисплей2004A1 Поиск в LCSCВ блокнот
R1 Резистор
22 Ом
1 Поиск в LCSCВ блокнот
R2 Подстроечный резистор10 кОм1 Поиск в LCSCВ блокнот
R3, R12, R13 Резистор
10 кОм
3 Поиск в LCSCВ блокнот
R4 Резистор
1 кОм
1 Поиск в LCSCВ блокнот
R5-R10 Резистор
150 Ом
6 Поиск в LCSCВ блокнот
R11, R14 Резистор
4.7 кОм
2 Поиск в LCSCВ блокнот
C1, C3, C5 Конденсатор100 нФ3 Поиск в LCSCВ блокнот
C2 Электролитический конденсатор470 мкФ1 Поиск в LCSCВ блокнот
C4 Электролитический конденсатор220 мкФ1 Поиск в LCSCВ блокнот
C6 Электролитический конденсатор10 мкФ1 Поиск в LCSCВ блокнот
S1 Тактовая кнопкаTC-A1091 Поиск в LCSCВ блокнот
HL1, HL4, HL5 СветодиодКрасный3 Поиск в LCSCВ блокнот
HL2, HL3, HL6, HL7 СветодиодЗеленый4 Поиск в LCSCВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 08.03.2016 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (22) | Я собрал (0) | Подписаться

0
Zheckiss #
А какие будут значения x,y,z при свободном падении датчика?
Ответить
0

[Автор]
Gauss #
ноль
Ответить
0
Zheckiss #
Т.е. Все три значения во время падения будут ноль?
Ответить
+1

[Автор]
Gauss #
В идеале
Ответить
0
Zheckiss #
Спасибо!
Ответить
0
Сергей #
Добры день. Вопрос такой, нога CS притянута у вас к земле, а в даташите написанно следующее:
With CS tied high to VDD I/O, the ADXL345 is in I2
C mode,
requiring a simple 2-wire connection, as shown in Figure 40.
Ну и как вы догадались, на рисунке CS подключена к VDD IO. Поясните пожалуйста ваше решение, сам не очень понимаю, почему у вас так.
Ответить
0

[Автор]
Gauss #
Ошибся и не заметил даже, отправил статью на исправление, спасибо.
Ответить
0
iksa #
У моего экземпляра LCD индикатора на 1 ноге VSS минус, а на ноге 2 VDD плюс. У Вас наоборот, это не опечатка?
Ответить
0

[Автор]
Gauss #
Нет
Ответить
0
iksa #
Собрал устройство, только почему то значения на экране показывает по осям X Y только от +30 до - 30 градусов, хотя датчик поворачиваю от +90 до -90 град. значение по Z незначительно меняется от -66 град. Использовал модуль GY-291. Заказывал в Китае 2 шт. у одного модуля вообще значения не меняются, видимо неисправный. Вот интересно может китайцы отправили бракованные модули или в программе что то надо исправить.
Ответить
0

[Автор]
Gauss #
Вот я сижу и думаю, если купить разбитый экранчик и он будет показывать только половину символов, что нужно в коде исправить, что бы он показывал все символы? Это как аналогия...
Ответить
0
iksa #
Ну вот и выяснили что китайцы накосячили, будем с ними разбираться....
Ответить
0

[Автор]
Gauss #
На всякий случай проверь пайку, отмой флюс, визуально проверь, что бы не было дефектов ни в пайке, ни на самих элементах
Ответить
0
Юрий #
Готовая прошивка весит 19 кб. Как ее зашить в Мегу8 если там только 8 кб памяти?
Ответить
0

[Автор]
Gauss #
никак
Ответить
0
Вячеслав #
Объясните мне пожалуйста, для чего его вообще можно применить? Этот датчик ADXL345
Ответить
0

[Автор]
Gauss #
Где угодно, где необходим контроль ориентации в пространстве
Ответить
0
supremeua #
Например, то, чем я сейчас занимаюсь - датчик уровня жидкости, все как обычно, поплавок на оси, только вместо переменного сопротивления стоит эта микросхема и регистрирует угол поворота.
Ответить
0
Алексей #
Я тоже хочу сделать датчик уровня на поплавке. Хотел узнать на счет точности и разрешающей способности такого датчика.
Ответить
0
supremeua #
В моем датчике угол меняется от 20 до 80 градусов, это около 400 единиц, получается мой объем в 200 литров я меряю с точностью пол литра. А датчик довольно таки малошумящий, если на выходе, например, 0х20, то оно так и остается, не прыгает туда сюда около 0х20. И температурная зависимость меня тоже устраивает. Летом-зимой показания те же.
PS. Сейчас вспоминаю, что получалось 300 единиц на этих углах поворота.
Отредактирован 31.08.2017 15:51
Ответить
0
zheckiss #
Кстати, согласно даташиту, у датчика совсем не 0xE5 адрес. Из-за этого ваша прога не работает
Ответить
0

[Автор]
Gauss #
Товарищи ардуинщики, учитесь читать и считать, а то совсем глупо выглядите.
The DEVID register holds a fixed device ID code of 0xE5 (345 octal).
страница 24 даташита
Я уже молчу, что в статье по русски, что это просто ID
Так что не работает что-то у вас
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Конструктор - темброблок на LM1036 USB-реле (2 канала)
вверх