У меня есть вывод прерывания MPU6050, подключенный к выводу GPIO34 ESP32 (Wemos D1 mini) для обнаружения прерываний движения и нулевого движения.Мне не нужно (и я не хочу) читать данные акселерометра в каждом вызове loop ().
Я наблюдаю странное поведение.
- независимо от того, какой порог яустановлен, он все еще слишком чувствителен и дает прерывание при небольшом движении (даже максимальное значение 255).Правильно ли я понимаю, что максимальная чувствительность обнаружения составляет 0,5 г (512 мг), поскольку пороговая единица измерения составляет 2 мг?
- , когда продолжительность составляет 9 (или менее), прерывание срабатывает даже при небольшом движении.Когда это 10 (или больше), прерывание не сработает, независимо от того, как сильно я трясти устройство.Почему MPU6050 обнаруживает движение в течение 9 мс, а не 10 мс, поскольку единица измерения длительности составляет 1 мс (при 1 кГц)?
- То же самое относится и к пробуждению.Я установил ESP32 для включения прерывания по PIN 34 и перевел его в режим сна.Просыпается от небольшого движения.Я пробовал разные пороги и длительности.
Код приложения доступен на GitHub https://github.com/anycode/platformio-mpu6050-test
Может кто-нибудь объяснить, как правильно установить диапазоны, шкалы, пороги и длительности, чтобы обнаруживать толькожесткие движения (как удары).Я прочитал исходники библиотеки MPU6050 Джеффа Роуберга, библиотеки I2C, спецификаций MPU6050 и карт регистров и не нашел ничего, что могло бы решить мою проблему.