Измерить расстояние перемещения. Какой датчик использовать?
Я хочу измерить длину шага – не знаю, какой датчик использовать.
Я пытаюсь убедить нескольких человек провести марш для группы. Я думаю, что Arduino подаст звуковой сигнал, когда шаг слишком короткий или слишком маленький. Думая, что Arduino будет привязан к шнуркам обуви. ИК- или ультразвуковой датчик, похоже, не подходит для использования.
Идеи?
@HenryD, 👍0
Обсуждение1 ответ
Лучший ответ:
В качестве датчика используется акселерометр. Принцип прост: измерьте ускорение, выполните двойное интегрирование и получите расстояние (после первого интегрирования вы получите скорость).
Проблема в том, что из-за двойного интегрирования небольшие ошибки в сигнале ускорения приводят к большим ошибкам в расчете расстояния. Например: ошибка e в ускорении приводит к ошибке et2 в расстоянии (где t означает время). По этой причине различные фильтры часто используются в сочетании с гироскопами и/или датчиками силы тяжести. Сигналы от гироскопов и/или датчиков силы тяжести используются для низкочастотных сигналов (долгосрочные), а сигналы акселерометра(ов) для высокочастотных сигналов (короткие вариации). Вот почему эти датчики часто объединены в один корпус (например, BNO055 от Robot Electronics https://robot-electronics.co). .uk/bno055.html).
Это сложная и высокоматематическая область науки. На самом деле вы хотите делать то же самое, что и фитнес-трекеры (и я думаю, вы стремитесь к более высокой точности, чем они) – и немногие из них действительно хорошо справляются с этой задачей.
PS Robot Electronics также продает плату компаса с компенсацией наклона с этим чипом BNO055: CMPS12 (https://robot-electronics.co.uk/cmps12-tilt-compensated-Magnetic-compass.html). С помощью этой доски вы можете сразу считывать абсолютные и относительные положения без каких-либо вычислений.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Может быть, просто перейти на низкотехнологичный подход и просто использовать веревку? Свяжите лодыжки человека вместе, чтобы тренировать мышечную память при ходьбе. Выполнение точных измерений быстро и в неконтролируемой среде — это кошмар для датчиков., @Filip Franik
Или, воспользовавшись идеей Филипа Франикса, используйте небольшую веревку на катушке, которая автоматически сворачивается. При каждом шаге из катушки будет свернута веревка, и вы можете измерить это количество, измерив вращение катушки (например, с помощью поворотного энкодера)., @chrisl