03:53


Обмен баннерами.Сайты желающие обменятся банерами должны быть со схожей тематикой нашего сайта.
Каталог статей
меню

Профиль
Гость


Группа:
Гость
Время:03:53

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!


Категории раздела
Измерения [5]
Звук [10]
Автоматика [7]
Интерфейсы [6]
Видео [2]
Программы [24]
Разное [6]
Для дома [4]
Источники питания [3]
Программирование [5]

Облако тегов

Статистика





Мы вконтакте

Приветствую Вас, Гость · RSS 24.09.2018, 03:53

Главная » Файлы » Программирование

Подключение акселерометра lis3dsh (1ч.)



   Всех приветствую, сегодня мы будем подключать и настраивать MEMS-акселерометр LIS3DSH от известной компании ST Microelectronics. Акселерометр довольно интересный и более функциональный в сравнении со своим братом LIS3DH. Ну немного пробежим по параметрам: тип датчика 3х осевой; чувствительность 0.06mg/dig.; разрешение 16 bit; напряжение питания от 1,7 до 3,6 в; диапазон измерения ±2g/±4g/±6g/±8g/±16g; работает по I2C и SPI интерфейсам; имеет две 16 шаговые машины состояний, которые могут производить операции над входными данными усреднять их, сравнивать с порогом, обнаруживать максимумы и отсчитывать временные интервалы выдавая сигнал лишь в случае наступления заранее определенного события.. Все это снижает требования к вычислительной способности управляющего микроконтроллера разгружая программу. 
   Для настройки машины состояний не нужно составлять программу в классическом виде – необходимо просто занести требуемые параметры в специальные регистры. Но несмотря на относительную простоту, с помощью машины состояний можно реализовать довольно сложные алгоритмы анализа движения.
Благодаря машине состояний можно понизить общее энергопотребление системы, путем ввода управляющего контроллера в сон, так как ток потребления LIS3DSH не превышает 11 мкА в активном режиме (3.125 Гц). А при обнаружении удара, или свободного падения, машина состояний подаст сигнал для пробуждения микроконтроллера и выполнения необходимых действий. Вообщем перспективный чип)). 

   Чтобы получить от акселерометра какой-то толк его необходимо настроить, сконфигурировав регистры под свои нужды. И так.., для начала спросим кто он такой и хочет ли он с нами работать)). Подключаться будем через I2C интерфейс. 


 '-------------------------------------------------------------------------
Const Lis3dsh_addressw=H3A
Const Lis3dsh_status_reg = &H27
Const Lis3dsh_ctrl_reg4 = &H20 
Const Lis3dsh_ctrl_reg5 = &H24

Dim DataBuffer(6) As Byte 
Dim Out_x As Integer , Out_y As Integer , Out_z As Integer  

 I2creceive Lis3dsh_addressw , DataBuffer(1) , 1 , 1 
 If DataBuffer(1) = &H3F Then ' 
      Print "LIS3DSH_OK" 
 Else
      Print "LIS3DSH_ERROR" 
 End If
 '-------------------------------------------------------------------------



  Если подключение прошло успешно и датчик ответил, то в терминале выведется "LIS3DSH_OK", если нет "LIS3DSH_ERROR" - проверяйте схему подключения, питание, и настройку I2C интерфейса.

Схема подключения датчика



 Далее настраиваем регистры :




'-------------------------------------------------------------------------
'включение осей XYZ и частотой семплирования данных 100 Гц.(10ms)
I2cstart
I2cwbyte Lis3dsh_addressw
I2cwbyte Lis3dsh_ctrl_reg4
I2cwbyte &H67                                                                   
I2cstop

'фильтр 800Гц, ускорение 2g, без теста
I2cstart
I2cwbyte Lis3dsh_addressw
I2cwbyte Lis3dsh_ctrl_reg5
I2cwbyte &H00
I2cstop

Do
      DataBuffer(1) = Lis3dsh_status_reg
      I2creceive Lis3dsh_addressw , DataBuffer(1) , 1 , 1                        

      If DataBuffer(1).7 = 1 Then                                                 

         DataBuffer(1) = &HA8
         I2creceive Lis3dsh_addressw , DataBuffer(1) , 1 , 6                       
         Out_x = Makeint(DataBuffer(1) , DataBuffer(2))
         Out_y = Makeint(DataBuffer(3) , DataBuffer(4))
         Out_z = Makeint(DataBuffer(5) , DataBuffer(6))

         Shift Out_x , Right , 8
         Shift Out_y , Right , 8
         Shift Out_z , Right , 8

         Print "x=" , Out_x  
         Print "y=" , Out_y  
         Print "z=" , Out_z  

      End If

     Waitms 300
Loop

End
'-------------------------------------------------------------------------




   В терминал получаем значения ускорений по трем осям. 

Для скачивания файлов:
Войдите или Зарегистрируйтесь


[ Сообщить о нерабочей ссылке ]
Категория: Программирование | Добавил: Yuriy
Просмотров: 42 | | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Поиск Datasheet


Топ пользователей
Yuriy
Добавил статей: 55
Количество постов: 54

Sanyok
Добавил статей: 6
Количество постов: 0

snyfer
Добавил статей: 4
Количество постов: 2

4RESTER
Добавил статей: 1
Количество постов: 0

Аватар не выбран Arses
Добавил статей: 1
Количество постов: 0


Новое на сайте

 Bootloader


 LG FLATRON E2350V-PN


 Аудио Модуль USB TF Рад...


 Битовые операции И, ИЛИ...


 Учебник DipTrace для на...


 Samsung LE32R81B


 Коды ошибок


 Заправка и сброс картри...


 Сервисное меню телевизо...


 Изучаем Arduino - инст...


 Микросхемы EEPROM


 500 схем для радиолюбит...


 302 новые профессиональ...


 Сварочный инвертор. Тео...


 В копилку радиолюбителя


 В копилку радиолюбителя...


 Видеокарта GeForce 210


 Видеокарта Nvidia Gefor...


 Пульт для Сhallenger ch...


 Ноутбук Acer MS2277


 Осциллограф С1-65а



На форуме

БП ATOM IPS


Манчестер кодирование


Меню BAS


Контроллер теплых полов


Програмный Uart для BOO...


Простое шифрование данн...


433Mhz TX & RX



Опрос
Какой микроконтроллер Вы используйте?

Всего ответов: 22

Галерея

Copyright Elektron © 2018

Яндекс цитирования Проверка PR и ТИЦ