====== Акселерометр: инструкция, схемы и примеры использования ====== Используйте [[amp>product/troyka-accelerometer?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|акселерометр]] для определения величины ускорения свободного падения по осям X, Y, Z. Датчик отвечает за поворот дисплея в современном телефоне или подсчёт шагов в фитнес-браслете. {{ :products:troyka-accelerometer:troyka-accelerometer.4.jpg?nolink |}} Если вам необходимо определить положение вашего девайса в пространстве, обратите внимания на [[amp>product/troyka-imu-10-dof?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|IMU-сенсор на 10 степеней свободы]]. ===== Видеообзор ===== Акселерометр в обзоре IMU-модуля. {{youtube>ECVbkKo--YY?large}} ===== Пример работы для Arduino и XOD ===== В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии [[amp>collection/arduino?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Arduino]], например, [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Uno]]. * [[amp>page/arduino-ide?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Как начать работу с Arduino?]] * [[amp>page/xod-ide?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Как начать работу с XOD?]] На аппаратном уровне инерционный модуль общается с управляющей электроникой по шине I²C. Но не переживайте о битах и байтах: используйте библиотеку [[https://github.com/amperka/Troyka-IMUm|TroykaIMU]] и на выходе получите готовы данные. ==== Схема устройства ==== Подключите акселерометр к пинам питания и шины I²C — SDA и SCL платформы Arduino Uno. Для коммуникации используйте [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-accelerometer:troyka-accelerometer-install-arduino.png?nolink |}} Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-accelerometer:troyka-accelerometer-install-arduino-troyka.png?nolink |}} С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-accelerometer:troyka-accelerometer-install-arduino-troyka-slot.png?nolink |}} ==== Вывод данных ==== В качестве примера выведем в Serial-порт величины ускорения свободного падения по осям X, Y и Z. // библиотека для работы I²C #include // библиотека для работы с модулями IMU #include // создаём объект для работы с акселерометром Accelerometer accel; void setup() { // открываем последовательный порт Serial.begin(115200); // выводим сообщение о начале инициализации Serial.println("Accelerometer init..."); // инициализация акселерометра accel.begin(); // устанавливаем чувствительность акселерометра // 2g — по умолчанию, 4g, 8g accel.setRange(RANGE_2G); // выводим сообщение об удачной инициализации Serial.println("Initialization completed"); } void loop() { // вывод направления и величины ускорения в м/с² по оси X Serial.print(accel.readAX()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Y Serial.print(accel.readAY()); Serial.print("\t\t"); // вывод направления и величины ускорения в м/с² по оси Z Serial.print(accel.readAZ()); Serial.print("\t\t"); Serial.println(""); delay(100); /* // вывод направления и величины ускорения в м/с² по X, Y и Z float x, y, z; accel.readAXYZ(&x, &y, &z); Serial.print(x); Serial.print("\t\t"); Serial.print(y); Serial.print("\t\t"); Serial.print(z); Serial.println(""); delay(100); */ } ===== Пример для Espruino ===== В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии [[amp>collection/espruino?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Espruino]], например, [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Iskra JS]]. [[:js:ide|Как начать работу с Espruino?]] ==== Схема устройства ==== Подключите акселерометр к пинам питания и шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте [[amp>product/wire-fm?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|соединительные провода «мама-папа»]].{{ :products:troyka-accelerometer:troyka-accelerometer-install-espruino.png?nolink |}} Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Troyka Shield]], которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|трёхпроводной шлейф «мама-мама»]], который идёт в комплекте с датчиком.{{ :products:troyka-accelerometer:troyka-accelerometer-install-espruino-troyka.png?nolink |}} С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.{{ :products:troyka-accelerometer:troyka-accelerometer-install-espruino-troyka-slot.png?nolink |}} ==== Вывод данных ==== В качестве примера выведем в консоль величины ускорения свободного падения по осям X, Y и Z. // Настраиваем шину I2C I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); // Подключаем модуль var accel = require('@amperka/accelerometer').connect(I2C1); // Инициализируем модуль accel.init(); setInterval(function(){ // Отображаем силы, действующие на акселерометр print(accel.read('G')); }, 500); ===== Пример для Raspberry Pi ===== В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Raspberry Pi]], например, [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Raspberry Pi 4]]. [[articles:rpi-guide|Подготовьте Raspberry Pi]] ==== Схема устройства ==== Подключите акселерометр к пинам SDA и SCL шины I²C компьютера Raspberry Pi. {{ :products:troyka-accelerometer:troyka-accelerometer-install-rpi.png?nolink |}} Для быстрой сборки и отладки устройства возьмите плату расширения [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Troyka Cap]], которая надевается сверху на малину методом бутерброда.{{ :products:troyka-accelerometer:troyka-accelerometer-install-rpi-cap.png?nolink |}} ==== Программная настройка ==== - [[articles:rpi-guide|Подготовьте Raspberry Pi]] - [[articles:rpi-interfaces#интерфейс_i_c|Включите шину I²C]] ==== Вывод данных ==== А написать пример кода для Raspberry Pi оставим вам домашним заданием. ===== Элементы платы ===== {{ :products:troyka-accelerometer:troyka-accelerometer-annotation.png?nolink |}} ==== Акселерометр на LIS331DLH ==== Акселерометр выполнен на чипе {{ :products:troyka-accelerometer:lis331dlh-datasheet.pdf |LIS331DLH}} и представляет собой миниатюрный датчик ускорения, разработанный по технологии MEMS от компании STMicroelectronics. Адрес устройства по умолчанию равен 0x18, но может быть изменен на 0x19. Подробности читайте в разделе [[#смена_адреса_модуля| смена адреса модуля]]. ==== Регулятор напряжения ==== Линейный понижающий регулятор напряжения {{ :products:troyka-accelerometer:ncp698sq33t1g-datasheet.pdf |NCP698SQ33T1G}} обеспечивает питание MEMS-чипа и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 150 мА. ==== Преобразователь логических уровней ==== Преобразователь логических уровней {{ :products:troyka-accelerometer:pca9306dct-datasheet.pdf |PCA9306DCT}} необходим для сопряжения датчика с разными напряжениями логических уровней от 3,3 до 5 вольт. Другими словами сенсор совместим как с 3,3 вольтовыми платами, например, Raspberry Pi, так и с 5 вольтовыми — Arduino Uno. ==== Troyka-контакты ==== Датчик подключается к управляющей электронике через две группы Troyka-контактов: * Питание (V) — соедините с рабочим напряжением микроконтроллера. * Земля (G) — соедините с землёй микроконтроллера. * Сигнальный (D) — пин данных шины I²C. Подключите к пину SDA микроконтроллера. * Сигнальный (C) — пин тактирования шины I²C. Подключите к пину SCL микроконтроллера. ===== Смена адреса модуля ===== Иногда в проекте необходимо использовать несколько акселерометров. Для этого на модуле предусмотрены контактная площадка. Для смена адреса капните каплей припоя на отведённую контактную площадку. ^ Модуль ^ Адрес без перемычки ^ Адрес с перемычкой ^ |Акселерометр | 0x18 | 0x19 | {{ :products:troyka-accelerometer:troyka-accelerometer-changes-address.gif?nolink |}} ===== Принципиальная и монтажная схемы ===== {{:products:troyka-accelerometer:troyka-accelerometer-schematic.png?direct&450 |}} {{ :products:troyka-accelerometer:troyka-accelerometer-layout-top.png?direct&220|}} {{ :products:troyka-accelerometer:troyka-accelerometer-layout-bottom.png?direct&220|}} ===== Габаритный чертёж ===== [[this>_media/products:troyka-accelerometer:troyka-accelerometer-dimensions.pdf|{{:products:troyka-accelerometer:troyka-accelerometer-dimensions.png}}]] ===== Характеристики ===== * MEMS-датчик: акселерометр LIS331DLH * Интерфейс: I²C * I²C-адрес: * без перемычки: 0x18 * с перемычкой: 0x19 * Максимальная чувствительность: 9,8×10-3 м/с² * Диапазон измерений: ±2 / ±4 / ±8 g * Напряжение питания: 3,3–5 В * Потребляемый ток: до 10 мА * Размеры: 25,4×25,4×10,1 мм ===== Ресурсы ===== * [[amp>product/troyka-accelerometer?utm_source=man&utm_campaign=troyka-accelerometer&utm_medium=wiki|Акселерометр]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/troyka-accelerometer.svg|Векторное изображение датчика]] * [[https://github.com/amperka/Troyka-IMU|Библиотека для Arduino]] * {{ :products:troyka-accelerometer:lis331dlh-datasheet.pdf |Datasheet на акселерометр ST LIS331DLH}}