2025-02-23 10:52 PM
Issue with Wrist Tilt Direction Detection on LSM6DS3TR-C
Hardware & Software Details:
- Sensor: LSM6DS3TR-C
- Platform: Arduino
- Interface: I2C
Problem Statement:
We are working on detecting wrist tilt using the LSM6DS3TR-C sensor. While the tilt detection interrupt (`wrist_tilt_ia`) is triggering correctly, the tilt direction values (`wrist_tilt_ia.xpos`, `wrist_tilt_ia.xneg`, etc.) always remain zero, regardless of the actual movement.
Configuration Steps Taken:
Sensor Initialization:
Verified sensor presence using lsm6ds3tr_c_device_id_get().
Performed a software reset using lsm6ds3tr_c_reset_set().
Enabled Block Data Update (BDU) to ensure data consistency.
Sensor Configuration:
Set accelerometer output data rate to 26Hz (lsm6ds3tr_c_xl_data_rate_set()).
Set gyroscope output data rate to 26Hz (lsm6ds3tr_c_gy_data_rate_set()).
Configured accelerometer full scale to ±2g and gyroscope to ±2000 dps.
Wrist Tilt Detection Setup:
Enabled wrist tilt detection (lsm6ds3tr_c_wrist_tilt_sens_set()).
Configured tilt latency to 80 ms (lsm6ds3tr_c_tilt_latency_set()).
Configured tilt threshold to 22 (lsm6ds3tr_c_tilt_threshold_set()).
Enabled INT2 interrupt for wrist tilt (lsm6ds3tr_c_pin_int2_route_set()).
Configured tilt axis masking to detect tilts in X+ and X- directions (lsm6ds3tr_c_tilt_src_set()).
Tilt Detection Check:
Continuously reading lsm6ds3tr_c_all_sources_get() to check for tilt events.
wrist_tilt_ia interrupt is detected, but all axis direction values remain zero.
Even after configuring the `lsm6ds3tr_c_a_wrist_tilt_mask_t` register to enable detection on specific axes (X+, X-,Y+,Y-), the tilt direction does not update accordingly. We have verified that the sensor is properly initialized, and the interrupt fires, but we cannot obtain the tilt direction data.
Code: The code is added to this.
Expected Behavior:
- When tilting in a specific direction (e.g., X+), the corresponding register bit should indicate the movement.
Observed Behavior:
- The tilt interrupt (`wrist_tilt_ia`) triggers correctly.
- The tilt direction values (`wrist_tilt_ia.xpos`, `wrist_tilt_ia.xneg`, etc.) remain zero for all directions.
Output of the code provided:
page 55, 56 Configuration steps for Absolute Wrist Tilt
Page 17 from datasheet to configure AWT
Steps Taken:
1. Verified sensor detection (`whoami` check passes).
2. Enabled `wrist_tilt_sens` and configured `lsm6ds3tr_c_a_wrist_tilt_mask_t`.
3. Checked register values after tilt events, but they always remain zero.
4. Tried different threshold and latency values for tilt detection.
Question:
- Is there any additional register or configuration required to enable proper axis direction detection for wrist tilt?
- Has anyone successfully retrieved tilt direction data using this sensor, and if so, what modifications were necessary?
Any insights or suggestions would be greatly appreciated!
We’re moving the ST Community to a new platform to give you a better and more reliable community experience.