Сегодня будем рассматривать акселерометр на микросхеме ADXL345. Напомню, что акселерометр — это устройство, которое измеряет проекцию кажущегося ускорения, то есть разницы между истинным ускорением объекта и гравитационным ускорением. По-простому – это инерционная масса, запаздывание реакции на движение которой определяет величину ускорения, чем сильнее импульс, тем больше будет это запаздывание. Эта масса закреплена на определенном подвесе и по иссяканию импульса воздействия, то есть, как лишь ускорение становится равно нулю, инерционная масса становится в исходное положение, то есть в нулевое положение.
В формате микросхемы акселерометр не возможно изготовить чисто электрическую систему. Таким образом в таком варианте (ADXL345) акселерометр представляет собой микроэлектромеханическую систему (MEMS), где присутствует как механика, так и электроника – механическая часть акселерометра обеспечивает движение инерционной массы, а электрическая преобразовывает это движение в некоторую электрическую величину. Физически процесс преобразования механического движения в электрическую величину может быть основан на изменении емкости, на пьезорезистивном эффекте, пьезоэлектрическом эффекте, также выделяются акселерометры с нагреваемой пластиной, где преобразование в электрическую величину основано на эффекте теплопередачи , и акселерометры с нагреваемым газом, где в качестве инерционной массы используется газ, принцип действия также основан на передаче тепла. Но, к сожалению, в документациях на датчики в основном помечается лишь то, что система является микроэлектромеханической, а на каком именно эффекте она построена, не указывается.
Теперь перейдем к самому датчику акселерометру ADXL345.
Характеристики:
- Напряжение питания от 2 до 3,6 вольт
- Ток, потребляемый в рабочем режиме от 40 до 150 мкА, в зависимости от частоты опроса
- Разрешающая способность от 10 до 13 бит
- 3 оси акселерометра
- Рабочий диапазон температур от -40 до +85 градусов Цельсия
- Цифровые интерфейсы SPI (3-х- или 4-хпроводный) и 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 (согласно даташиту). На второй строке располагаются значения 3-х осей, считанных из регистров датчика. Далее на третьей строке рассчитанные значения углов отклонения акселерометра. По умолчанию все значения принимают цифры от 90 до -90 градусов в плоскости 180 градусов. Для значений в 360 градусов нужно будет немного подправить код программы.
Для прошивки микроконтроллер необходимо знать конфигурацию фьюз битов:
Это чудо инженерной мысли (имеется ввиду датчик акселерометр) можно применять в различных сферах – от мобильной техники до медицинской. Таким образом, можно детектировать падение больного или чего-то другого, активность перемещения персонала или оборудования и их состояние покоя, детектировать вибрации и толчки. При помощи акселерометра можно контролировать и корректировать положения предметов. Ну, и очень популярная сфера – сфера компьютерной и мобильной техники.
На этом, кажется, все, к статье прилагается исходник программы для микроконтроллера в AVR Studio 4, прошивка для микроконтроллера, документация на акселерометр, а также видео, демонстрирующее работу схемы с датчиком ADXL345.
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
IC1
МК AVR 8-битATmega8A1
VR1
Линейный регуляторL7805AB1
VR2
Линейный регуляторAMS1117-3.31
IC2
АкселерометрADXL3451
HG1
LCD-дисплей2004A1
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-A1091
HL1, HL4, HL5
СветодиодКрасный3
HL2, HL3, HL6, HL7
СветодиодЗеленый4
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- 52.hex (19 Кб)
- 52.rar (76 Кб)
- ADXL345 (1).pdf (482 Кб)