Подключаем акселерометр LIS3DSH
Тема нашего сегодняшнего занятия – подключение более нового акселерометра по сравнению с тем, который мы использовали для изучения в уроке 39. Данный акселерометр – это также акселерометр, выполненный с использованием технологии MEMS – LIS3DSH .
Во-первых, данный акселерометр наряду с интерфейсом I2C может подключиться и с использованием интерфейса SPI, что делает более надёжной передачу данных и их использование. Во-вторых, данный акселерометр установлен на плате STM32F4 Discovery, с которой мы уже очень продолжительное время работаем, и она уже стала как родная. И это я считаю немаловажной мотивацией. Ну а в-третьих, имеет более совершенные технические характеристики:
Диапазон показаний ±2g/±4g/±6g/±8g/±16g;
Чувствительность 0.06-0.73 mg/digit;
Отклонение от нуля ±60 mg.
Ну а с остальными характеристиками, тонкостями, регистрами и другими подводными камнями акселерометра мы познакомимся в ходе его программирования.
Проект для Cube MX мы создадим из одного из прошлых проектов USB_OTG_CDC, так как вместо USART для передачи показаний акселерометра на ПК мы попробуем воспользоваться USB CDC Device, так как с ним работать более удобно ввиду необязательности использования каких-то промежуточных переходников. Назовем проект ACCEL407.
Запустим проект в Cube MX, отключим I2C, включим SPI1 в режим Full-Duplex Master
Ножки SPI оставим по умолчанию и никуда не перенаправляем
Включим еще 3 ножки. Одну для выбора чипа (CS), другие две для обнаружения прерываний. Возможно последние нам не понадобятся, но для порядка включим, чтобы по ошибки их не задействовать впоследствии на что-то еще.
Также включим на выход лапки портов для управления разноцветными светодиодами на плате
В настройках SPI изменим только скорость передачи
Также изменим настройки в GPIO у лапки порта PE3, выставив ему скорость Medium.
Зайдем в Project -> Settings и изменим там значения стека и кучи, чтобы USB-устройство после установки драйвера нам не давало ошибку (Код 10).
Сгенерируем проект и откроем его в Keil 5. Также по традиции настроим программатор на авторезет. Соберем проект.
Уберем всё, что касается символьного дисплея, так как он нам, скорее всего не потребуется. Уберем подключение библиотеки из main.h:
Здесь оставим только передачу в USB, чтобы проверить, работает ли она.
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
В бесконечном цикле также оставим только то, что касается передачи в USB
/* USER CODE END WHILE */
Прошьем контроллер, чтобы убедиться в работоспособности порта USB и удалим теперь всю передачу, массив строки и подготовку строки:
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* USER CODE END WHILE */
/* USER CODE END 1 */
Также из файла usbd_cdc_if.c удалим следующие строки, а одну строку раскомментируем обратно:
/* USER CODE BEGIN PRIVATE_VARIABLES */
extern char str_rx[21];
/* USER CODE END PRIVATE_VARIABLES */
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
/* USER CODE BEGIN 6 */
/* USER CODE END 6 */
Пересоберём на всякий случай проект, чтобы убедиться, что ошибок у нас нет.
Два файла для работы с акселерометром можно использовать с прошлого занятия, переименовав их подобающим образом, подключив к проекту и внеся некоторые изменения.
Названия, соответственно, изменятся на lis3dsh.h и lis3dsh.c. Заодно удалим из Inc и Src файлы lcd.h и lcd.c. Подключим данные файлы, добавив lis3dsh.c в проекте в группу Application/User, а lis3dsh.h подключив в main.h. Также внесем макроподстановки, наподобие тех, которые мы вносили в проекте под 3 discovery для удобного управления светодиодами.
#define LD_PORT GPIOD
#define LD3 GPIO_PIN_13 //ORANGE
#define LD4 GPIO_PIN_12 //GREEN
#define LD5 GPIO_PIN_14 //RED
#define LD6 GPIO_PIN_15 //BLUE
#define LD3_ON HAL_GPIO_WritePin(LD_PORT, LD3, GPIO_PIN_SET) //ORANGE
#define LD4_ON HAL_GPIO_WritePin(LD_PORT, LD4, GPIO_PIN_SET) //GREEN
#define LD5_ON HAL_GPIO_WritePin(LD_PORT, LD5, GPIO_PIN_SET) //RED
#define LD6_ON HAL_GPIO_WritePin(LD_PORT, LD6, GPIO_PIN_SET) //BLUE
#define LD3_OFF HAL_GPIO_WritePin(LD_PORT, LD3, GPIO_PIN_RESET) //ORANGE
#define LD4_OFF HAL_GPIO_WritePin(LD_PORT, LD4, GPIO_PIN_RESET) //GREEN
#define LD5_OFF HAL_GPIO_WritePin(LD_PORT, LD5, GPIO_PIN_RESET) //RED
#define LD6_OFF HAL_GPIO_WritePin(LD_PORT, LD6, GPIO_PIN_RESET) //BLUE
Состав данных файлов после внесения изменений.
Содержимое файла lis3dsh.h:
#define LD_PORT GPIOD
#define LD3 GPIO_PIN_13 //ORANGE
#define LD4 GPIO_PIN_12 //GREEN
#define LD5 GPIO_PIN_14 //RED
#define LD6 GPIO_PIN_15 //BLUE
#define LD3_ON HAL_GPIO_WritePin(LD_PORT, LD3, GPIO_PIN_SET) //ORANGE
#define LD4_ON HAL_GPIO_WritePin(LD_PORT, LD4, GPIO_PIN_SET) //GREEN
#define LD5_ON HAL_GPIO_WritePin(LD_PORT, LD5, GPIO_PIN_SET) //RED
#define LD6_ON HAL_GPIO_WritePin(LD_PORT, LD6, GPIO_PIN_SET) //BLUE
#define LD3_OFF HAL_GPIO_WritePin(LD_PORT, LD3, GPIO_PIN_RESET) //ORANGE
#define LD4_OFF HAL_GPIO_WritePin(LD_PORT, LD4, GPIO_PIN_RESET) //GREEN
#define LD5_OFF HAL_GPIO_WritePin(LD_PORT, LD5, GPIO_PIN_RESET) //RED
#define LD6_OFF HAL_GPIO_WritePin(LD_PORT, LD6, GPIO_PIN_RESET) //BLUE
Содержимое файла lis3dsh.c:
static void Error (void)
uint8_t Accel_IO_Read(uint16_t DeviceAddr, uint8_t RegisterAddr)
void Accel_IO_Write(uint16_t DeviceAddr, uint8_t RegisterAddr, uint8_t Value)
uint8_t ctrl = 0x00;
void Accel_AccFilterConfig(uint8_t FilterStruct)
void AccInit(uint16_t InitStruct)
void Accel_GetXYZ(int16_t* pData)
Вызовем инициализацию датчика в main();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
В функции-обработчике ошибки включим красный светодиод
static void Error (void)
Добавим хэндл нашего SPI:
extern SPI_HandleTypeDef hspi1;
В следующей части занятия мы мы попытаемся считать идентификатор данных, тем самым убедимся в правильных настройках шины и то, что мы работаем именно с этим датчиком.
Также напишем функцию записи данных в регистры акселерометра.
Источник: narodstream.ru
St microelectronics 3 axis digital accelerometer solution что это за программа
* УТОЧНЯЙТЕ ВОЗМОЖНОСТЬ, ЦЕНУ И СРОК ПОСТАВКИ, В СВЯЗИ С ОГРАНИЧЕНИЕМ ЭКСПОРТА ТОВАРОВ ИЗ СТРАН ЕС И ВЕЛИКОБРИТАНИИ
- Описание и тех. спецификация
- Характеристики
- Способы доставки
ST’s e-Compasses include combo solutions built around a 3-axis digital accelerometer with a 3-axis digital magnetic sensor in a single LGA package, as well as standalone 3-axis digital magnetic sensors for designing solutions where the magnetic sensor must be located in a specific position on a printed circuit board. Designed to accurately detect the direction and magnitude of external magnetic fields, ST’s e-Compasses use accelerometer measurements for tilt compensation, thus ensuring very accurate compass headings even when handheld or mobile devices are inclined.
3 magnetic field channels and 3 acceleration channels
16-bit data output
SPI / I2 C serial interfaces
Analog supply voltage 1.71 V to 3.6 V
Selectable power mode/resolution for accelerometer and magnetometer
Single measurement mode for magnetometer
Programmable interrupt generators for free-fall, motion detection and magnetic field detection
Embedded self-test
Embedded temperature sensor
Embedded FIFO
Техническая спецификация
1637327_DataSheet 1
Источник: rs-catalog.ru
Accelerometer Calibration
Accelerometer Calibration — это простое, но очень полезное приложение, которое самостоятельно откалибрует ваш акселерометр на мобильном устройстве. Бывает что со временем данный датчик теряет свои свойства, от чего плавность и точность управления движениями при помощи акселерометра снижается. Данный эффект особенно сказывается во время игры в гонки при помощи наклонов смартфона!
Следовательно время от времени стоит настраивать акселерометр, чтобы каждое ваше движение было интуитивным. Для этого всего лишь нужно запустить приложение, и наклоняя устройство установить красный кружок в центр черного квадрата. После этого нажмите на кнопку «Откалибровать», и программа самостоятельно проведёт все настройки.
Приложение также можете автоматически проверять правильность работы акселерометра, и уведомлять вас о необходимости проведения настройки. Интерфейс программы очень простой, практически каждый сможет разобраться в функционале. Скачайте и проверьте ваш смартфон, нужно ли вам откалибровать датчик наклона!
- Простой и понятный интерфейс;
- Быстрая настройка акселерометра;
- Автоматическая проверка необходимости настройки;
- Не требуется много ресурсов для работы.
Источник: androidvip.net
Digital Microscope
Digital Microscope – это программа, которая состоит из утилит и драйверов для обеспечения работы с микроскопом «CoolingTech», который подключается по USB-интерфейсу 500X. В состав установочного пакета входят вспомогательные компоненты, которые обеспечивают работу этого устройства.
Этот софт инсталлирует драйверы и инструменты, активирующие работу цифрового микроскопа. Digital Microscope распространяется на официальной основе. Закачав архив с этой программой, вы не обнаружите библиотеки .NET Framework для обладателей старых сборок OS Windows. В состав программы входит подробная справка, но драйверы созданы без русского языка.
Об устройстве
Digital Microscope, не относится к разряду профессионального оборудования, но в этом микроскопе есть множество функций. Он оснащен CMOS сенсором высокого уровня, который работает на фокусном расстоянии от 0 до 40 мм.
Кроме того, аппарат оснащён LED-подсветкой, уровень «света» которой, вы настраиваете самостоятельно. В аппарате есть такие плюсы, как увеличение цифрового масштаба в пять раз и функция «захвата» картинки в разрешении до 640 на 480.
Питание к микроскопу поставляется от USB-порта. Создатели программы и оборудования заявили о поддержке интерфейса USB версии 1.1 и 2.0. Если на вашем компьютере есть 3.0 версия, то вы можете столкнуться с проблемами. Установив соответствующий драйвер, вы подключите микроскоп к компьютеру, который обнаружится в автоматическом режиме.
Установка драйверов
Распаковав закачанный архив, запустите файл autorun.exe. В практичном меню вы можете выбрать необходимый драйвер, саму программу и вспомогательные утилиты. Не забывайте о том, что эта программа работает с неполадками на новых OS Windows. Запускайте инсталлятор, используя режим совместимости или под «Администратором».
Ключевые особенности
- инсталлирует нужный софт для микроскопа U500X;
- в драйверах удобное меню автозагрузки;
- программное обеспечение состоит из справки и вспомогательных инструментов;
- драйверы доступны бесплатно;
- на новых OS Windows программа работает с неполадками;
- графический интерфейс программы создан в простом оформлении и не содержит сложных функций;
- драйверы работают через интерфейс USB 1.1 и 2.0 версии, а на 3.0 микроскоп работает только после установки специального драйвера в операционную систему.
Источник: softdroids.com