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

Акселерометр — прибор измеряющий ускорение. Если говорить простым языком, то ускорение это скорость изменения скорости чего-либо. К примеру лежит на столе предмет. Пока его ни кто не двигает ускорение равно нулю. Когда предмет начнут перемещать ускорение будет расти. После того как предмет будет перемещаться с постоянной скоростью ускорение вновь станет нулевым. При уменьшении скорости движения ускорение тоже будет расти но уже с отрицательным знаком. Однако этот  акселерометр фиксирует даже незначительные изменения ускорения в зависимости от его положения в пространстве несмотря на то что сам находится в покое. Такие приборы нашли широкое применение в мобильных телефонах. Именно благодаря акселерометру, в телефонах есть возможно разворачивать дисплей в зависимости от того как повернут телефон. Еще говорят, что акселерометры можно встретить в некоторых моделях жестких дисков от ноутбуков. Поскольку ноутбуки эксплуатируются в самых разных условиях, то в случае резкой встряски или падения жесткий диск своевременно паркует головку. Это позволяет избежать повреждения поверхности диска внутри винчестера. Поскольку используются акселерометры в портативной технике, то их размер не внушает оптимизма — запаять такую мелкоту с первого раза не всегда просто. Без фена я бы даже не рискнул наверное :-) Смотрите сами:

Для более удобного его изучения я спаял небольшую платку с 8-ю штырьками на которые выведены питание и все выводы акселерометра необходимые для работы с ним. Кроме акселерометра, на плате еще есть конденсаторы которые рекомендует даташит. Ставить их обязательно надо. Ибо датчик очень восприимчив к помехам по питанию. От импульсного преобразователя  на 3.3 вольта  датчик работал но привирал, пришлось поставить линейный стабилизатор. Запаивать датчик надо так: Сначала лудим плату. Потом на контактные площадки наносим небольшие шарики припоя. После этого смазываем всё это дело флюсом. Я использовал ЛТИ-120 как самый липкий из всех что у меня есть. Теперь ставим наш датчик на плату и прогреваем феном. Фен я ставил на 380 градусов. Если даже датчик был поставлен немного криво то он сам встанет как надо после того как шарики припоя расплавятся. В результате получилась платка которую без проблем можно припаять куда надо:

Теперь перейдем непосредственно к самому акселерометру. Акселерометр этот трёхосевой. Это значит, что ускорение может одновременно измеряться в трёх осях X,Y и Z. В даташите большими буквами написано что акселерометр боится статики. Думаю что написано это неспроста, так что будьте с ним поосторожней на всякий случай. Для связи с внешним миром у него есть аж целых два интерфейса SPI и I2C. Тут есть один важный момент. Если используется интерфейс I2C то вывод CS нужно привязать к питанию. Я этого не знал и очень долго ломал голову почему датчик не отзывается на свой адрес. Для управления акселерометром существуют 32 (!) регистра. Описывать тут каждый регистр смысла особого нет (есть даташит), да и я с ума сойду от писанины. На практике нужно всего лишь несколько основных регистров о которых я хочу рассказать.

Основные регистры MMA7455L

Mode Control Register (0x16) — Основное назначение этого регистра управления питанием и пределом измерений. После включения питания в этом регистре 0. Это значит что акселерометр выключен и считывать показания бессмысленно. Для того чтобы запустить акселерометр надо записать в нулевой бит этого регистра единицу. Что бы выбрать предел измерений нужно изменить второй и третий биты (см даташит стр. 25).  Есть три предела: 2G, 4G, 8G. Если выбран 2G то чувствительность максимальная.

Регистры значения ускорения (0x00 — 0x08) — Из этих регистров считывается само ускорение. Первые шесть регистров хранят ускорение по всем трем осям в 10 битном виде (по два регистра на ось). Остальные три в 8-ми битном. Мне большая точность была не нужна, читал только восьмибитные, да и подозреваю что в младших разрядах десятибитных регистров будет много шума.

Вот и всё! Этих регистров вполне достаточно чтоб начать работу с акселерометром.

Практическое применение акселерометра

Чтоб посмотреть как акселерометр работает в действии я решил сотворить электронный строительный уровень. Если кто не в курсе, строительный уровень показывает отклонение  элементов различных конструкций от горизонтального или вертикального положения. Моя конструкция скорее игрушка чем настоящий уровень, и применять её в строительстве не рекомендуется  :-) Если очень хочется, то нужно увеличить число светодиодов и немного переписать код.

Самой дефицитной деталью тут пожалуй является сам акселерометр. Всё остальное вполне доставаемо. Плата для данного устройства не разрабатывалась, а само устройство было демонтировано сразу же после окончания экспериментов. Видеоролик работы прилагается:

Программный код написан на ассемблере под контроллер атмега32 (частота 1мгц). Тут вполне можно обойтись тини2313, а мегу я использовал только потому что она у меня стояла в отладочной плате. Подозреваю что флеш память у этого контроллера скоро протрётся до дыр :-) Очень уж часто я его перезаписываю. Вопросы по программе и не только принимаются в комментариях.

Исходник

Даташит на MMA7455L

Плата для датчика (Не открывается? Обновляем протеус)

Акселерометр MMA7455L: 35 комментариев

  1. О! Цифровой!
    Дорогой, наверное?
    А где покупал, если не секрет?

    P.S. Ножки INT2\INT1 это часом не сигнал о том, что ускорение превысило какой-то порог?

    1. Один из самых дешевых. Купил чисто чтоб поиграться. Может в робота его поставлю. Покупал у ТогоКогоНельзяНазывать =)
      Ноги как я понял нужны именно для этого.

  2. Хохо! припаял таки. А я попробую применит свой mad skillzz и припаять его паяльником :) Только у меня не аксель, а цифрокомпас. И там надо еще питание в 1.8 вольт подавать и конверсию уровней делать… АРРГХХ в общем напидорасили там как следует.

  3. Как-то загорелся идеей балансирующего робота, даже шасси собрал, но до электроники так дело и не дошло :(. Для реализации балансировки кроме акселерометра нужен еще и гироскоп (у акселерометра копиться ошибка). Всегда было интересно как долго пробалансирует робот без гироскопа, пока накопленная ошибка его не завалит.
    Нет в планах балансирующего робота?

    1. У меня есть задумка сотворить робота на гусеницах с рукой, радиоуправлением, камерой и кучей всяких штучек :-) Но пока нет денег и времени. А в балансирующем роботе механика сложная я думаю. Еще хочется найти недорогой миниатюрный двигатель внутреннего сгорания для этой цели. Не знаешь где бы взять?

  4. Да, в этом случае двигатель внутреннего сгорания суровая необходимость, иначе аккумы будут весить больше чем танк.
    А движек, однозначно, нада брать от скутера — дешево (взять б/у) и компактно (если можно так сказать про ту «игрушку») и самое главное там уже есть все необходимое для нормальной работы.
    Как по мне такой проект надо тянуть как минимум бригадой слесарей (работа по металлу) + токарь + электронщик + дизайнер (создание 3D модели и выкроек по ней) + автослесарь (двигатель) + еще хрен знает скока народу … Кароче как задуматься это нужно бросить все и всех и ваять танк.
    P.S. Кстати цену в 600 килорублей (как бы это фантастически не звучало) я не считаю уж очень завышенной, если учесть скока народу, материала и времени туда ушло.

  5. По работе пришлось столкнуться с этим акселерометром………
    Способ калибровки,заявленный производителем,не оправдал себя результатами(большая погрешность)…Перешли на LIS от ST

  6. Здравствуйте!

    Попытался разобраться в коде и для меня не ясно следующее: по-моему на светодиоды выводиться непосредсвенно ускорее, но видео покаызвает что измеряется координата (то есть двойной интеграл ускорения), а где и как он считается, непонятно?

    1. там по сути измеряется отклонение g от вертикали.

      т.е. как только уровень не горизонтален — появляется «горизонтальная» (в координатной системе сенсора) компонента ускорения свободного падения, которую и можно измерить

  7. Прошу прощения, но продемонстрированный на видео прибор называется «гироскоп», величина его значения меняется в зависимости от наклона по одной из осей.
    Почему все «твердолобо» называют его акселерометром — не вполне понятно, ведь акселерометр измеряет именно ускорение (как и описано в начале статьи, а не наклон…

    1. А я сижу и думаю «то ли лыжи не едут то ли я… чет не понимаю» хотел уже написать, что это, наверное все таки, гироскоп! но Вы меня опередили :)

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