Сегодня будем рассматривать акселерометр на микросхеме 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 | Поиск в магазине Отрон | ||
VR1 | Линейный регулятор | L7805AB | 1 | Поиск в магазине Отрон | ||
VR2 | Линейный регулятор | AMS1117-3.3 | 1 | Поиск в магазине Отрон | ||
IC2 | Акселерометр | ADXL345 | 1 | Поиск в магазине Отрон | ||
HG1 | LCD-дисплей | 2004A | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 22 Ом | 1 | Поиск в магазине Отрон | ||
R2 | Подстроечный резистор | 10 кОм | 1 | Поиск в магазине Отрон | ||
R3, R12, R13 | Резистор | 10 кОм | 3 | Поиск в магазине Отрон | ||
R4 | Резистор | 1 кОм | 1 | Поиск в магазине Отрон | ||
R5-R10 | Резистор | 150 Ом | 6 | Поиск в магазине Отрон | ||
R11, R14 | Резистор | 4.7 кОм | 2 | Поиск в магазине Отрон | ||
C1, C3, C5 | Конденсатор | 100 нФ | 3 | Поиск в магазине Отрон | ||
C2 | Электролитический конденсатор | 470 мкФ | 1 | Поиск в магазине Отрон | ||
C4 | Электролитический конденсатор | 220 мкФ | 1 | Поиск в магазине Отрон | ||
C6 | Электролитический конденсатор | 10 мкФ | 1 | Поиск в магазине Отрон | ||
S1 | Тактовая кнопка | TC-A109 | 1 | Поиск в магазине Отрон | ||
HL1, HL4, HL5 | Светодиод | Красный | 3 | Поиск в магазине Отрон | ||
HL2, HL3, HL6, HL7 | Светодиод | Зеленый | 4 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- 52.hex (19 Кб)
- 52.rar (76 Кб)
- ADXL345 (1).pdf (482 Кб)
Комментарии (32) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
C mode,
requiring a simple 2-wire connection, as shown in Figure 40.
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Это всего лишь акселерометр
PS. Сейчас вспоминаю, что получалось 300 единиц на этих углах поворота.
А как же вы ускорение в градусы то переводите?
"Регистры DATAX0, DATAX1, DATAY0, DATAY1, DATAZ0, DATAZ1 хранят результат измерения ускорения."
[Автор]
The DEVID register holds a fixed device ID code of 0xE5 (345 octal).
страница 24 даташита
Я уже молчу, что в статье по русски, что это просто ID
Так что не работает что-то у вас
[Автор]