LSM6DSV16X accelerometer settings for low noise readout for small movements
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-01-16 6:30 AM
I want to recognise small movements with small acceleration.
Which mode is best suited?
Is it better to have a high sampling rate or a lower one?
which filters?
where do the large peaks (incorrect values) come from?
But I can already recognise the acceleration and braking
- Labels:
-
Accelerometers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-01-16 8:13 AM
Hi @Stefan3 ,
A smaller FS range (e.g., ±2g) will provide higher sensitivity and better resolution for detecting small accelerations.
A higher sampling rate can capture more data points and provide a more detailed representation of the movement. This is useful for detecting small and rapid changes in acceleration. However, it will also increase power consumption and the amount of data to process.
I suggest you to use High-accuracy ODR (HAODR) mode. This mode typically offers better precision and lower noise.
About the incorrect values, did you enable the BDU bit?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-01-17 6:09 AM
Hi Federica
±2g is set.
I haven't done anything yet
except set CTRL1(10h) to 960Hz and read with 10mSec (100Hz) with the I2C bus (1MHz).
I have enough power available but reading faster than 100Hz is not so easy.
Should I choose low-power mode3 (8mean)? Or a high performance mode?
Should I enable the BDU bit anyway?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-01-17 6:25 AM
Hi @Stefan3 ,
Yes, it is always suggested to enable the BDU bit.
In addition, high performance mode is suggested for this kind of application :)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-02-06 12:03 AM
Hi Federica
I can select different frequencies on the LSM6DSV16X
samplerate 15,30,60,120,240,480,960,1920,3840,7680 in Hz
can i also sample these at slightly higher frequencies?
960=>1000
1920=>2000
3840=>4000
7680=>8000
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-02-06 1:07 AM
Hi @Stefan3 ,
Unfortunately, you cannot directly set the LSM6DSV16X to sample at frequencies slightly higher than these predefined rates. The ODRs are determined by the internal clock and configuration of the sensor, and they are fixed to the values specified in the datasheet.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-02-06 9:29 AM
You can sample at 1000, 2000, 4000, 8000Hz.
As mentioned above: enable HA-ODR mode (high-accuracy ODR more) - see AN5763 section 3.1 page 18, table 11. You have 3 sets of ODR available: multiples of 15Hz, multiples of 15.625Hz, and multiples of 12.5Hz.
The option in the middle is what you need: as you see in table 11!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-02-19 1:46 AM
Hi Federica, Hi Andrea
Ok I have understood. I have to set the frequencies exactly and can choose with the multiplicator set whether 7680Hz or 8000Hz.
one more question
My board with the LSM6DSV16X is extremely small and only has an I2C connection.
With some processors I have trouble sampling 8kHz. One sample read need's more than 125uSec
The I2c bus makes a long pause between the address and data.
Can I use I3C instead of I2C?
Without changing the board with the LSM6DSV16X?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-02-19 7:59 AM
Yes LSM6DSV16X main communication interface supports I2C/I3C/SPI
I2C and I3C uses 2 wires in the same way, so if you are using I2C today no changes are needed to switch to I3C
Switch to I3C can be done as explained in the datasheet: see paragraph 5.2.3.
"The device acts as a standard I²C target as long as it has an I²C static address. The device is capable of
detecting and disabling the I²C anti-spike filter after detecting the broadcast address (7'h7E/W). In order to
guarantee proper behavior of the device, the I3C master must emit the first START, 7'h7E/W at open-drain speed
using I²C fast mode plus reference timing.
After detecting the broadcast address, the device can receive the I3C dynamic address following the I3C pushpull
timing. If the device is not assigned a dynamic address, then the device continues to operate as an I²C device
with no anti-spike filter."
Driver is on GitHub: STMems_Standard_C_drivers/lsm6dsv16x_STdC at master · STMicroelectronics/STMems_Standard_C_drivers · GitHub
There are many dedicated functions:
lsm6dsv16x_i3c_reset_mode_set() and lsm6dsv16x_i3c_reset_mode_get()
lsm6dsv16x_i3c_int_en_set() and lsm6dsv16x_i3c_int_en_get()
lsm6dsv16x_i3c_ibi_time_set() and lsm6dsv16x_i3c_ibi_time_get()
and so on
