Цифровой акселерометр LIS302DL

В этой статье я постораюсь поделится опытом работы с цифровым акселерометром от ST Microelectronics.

LIS302dl

Такой датчик позволяет получать данные о своем ускорении. В отличии от аналоговых датчиков, где для чтения нужен АЦП, здесь необходимо лишь настроить сенсор на нужный режим работы и считать готовую инфу. Чтение происходит посредством либо SPI, либо I2C интерфейса, на выбор. Получив данные, микроконтроллер может использовать их как угодно.

Мне доводилось работать с 2-мя датчиками семейства — lis202dl и lis302dl. Отличаются они только количеством осей, поэтому далее буду говорить о 3-х осевом.

Основные фичи:
Программируемый предел измерения. Можно выбрать 2 фиксированных значения: 2G/8G. Нужно выставлять в зависимости от применения. Если поставить 2G, то можно точнее измерять не очень большие ускорения и наоборот для 8G.

Внутренний программный фильтр. Мега полезная вещь. Меняет характер выдаваемых данных с относительного на абсолютный и наоборот. Поясню на примере: при выключенном фильтре сенсор будет постоянно «чувствовать» притяжение земли и если его ось Z будет направлена перпендикулярно земле, то по ней мы будем постоянно иметь максимальные значение ускорения. А если включить фильтр и оставить датчик в покое, то пока мы не приложим к нему ускорение, на всех осях будет 0.

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

Основной и сильно заметный (для начинающего) минус датчика — размер. Он очень маленький. Корпус (LGA14) совершенно не паябельный, но это только на первый взгляд. Я паял его по методу уважаемого DI HALT'а из его статьи о аналоговом акселерометре MMA7260Q. Нарисовал footprint с направляющими уголками. Нанес припоя на дорожки, обильно смазал флюсом, отцентрировал по уголкам, и касаясь дорожек паяльником запаял датчик. Если кто-то захочет повторить, то footprint'ы для Sprint Layout 5 и DipTrace можно найти в конце статьи.
Если же вы не уверены в твердости рук или просто не хотите парится, то можно найти готовые платки переходники, где все уже запаяно до нас. Также есть отладочные платы и от самих ST в том числе.

Схемы подключения на примере Tiny2313:
I2C — не забываем подтяжку обоих линий до VCC. Чтобы чип понял что мы хотим пообщаться с ним по 2-м проводам, нужно седьмую ногу (CS) подтянуть к VCC. Нога SDO в этом режиме служит для задания I2C адреса датчика: если её притянуть к VCC, то датчик отзовется на адрес 0b0011101, если к земле (как в примере) — на 0b0011100.
Подключение по I2C

SPI — вывод CS (Chip Select) можно подключать к любой ноге МК, аппаратный интерфейс его не контролирует и приходится дергать его программно.
Подключение по SPI

На обоих схемах подключены выводы прерываний (INT1, INT2 — восьмая и девятая ноги). Это необязательно, их нужно подключать по необходимости.

Датчик питается напряжением от 2,16 до 3,6 В. Если у МК тоже низкое напряжения питания (в моем случае он с индексом «V», то есть с пониженным VCC), то оптимально питать их от одного источника, например в 3,3 В. Если же у МК VCC = 5В, то варианта 2: либо согласовывать I/O линии по уровням, либо забить и не согласовывать. В одном из девайсов я так и поступил, все работало, но так делать не стоит. Я вас предупредил:)

Что касается программы, то используются аппаратная реализация интерфейса (USI). В прилагаемом архиве лежит проект на СИ для AVR STUDIO. МК — Tiny2313. Подключение к датчику по SPI. Программа читает регистр «WHO I AM» и шлет данные о ускорении по оси X через USART.

Цена сенсора на момент написания ~ 170 р.

Скачать архив с footprint'ами
Скачать архив с программой
  • 0
  • 16 июня 2010, 19:14
  • Mr_Pink

Комментарии (1)

RSS свернуть / развернуть
+
0
Привет! я вот решил по и2ц работать с ним…
i2c_start;
i2c_write(0b00111000);
i2c_write(0x0f);
i2c_start;
i2c_write(0b00111001);
who=i2c_read(1);
printf(" WHO = ");
printf("%u",who);

результат 255..(???)
cs на питании
sdo на земле.в чём косяк
avatar

andrej666

  • 20 мая 2012, 12:18

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.