cancel
Showing results for 
Search instead for 
Did you mean: 

LSM6DSV16X accelerometer settings for low noise readout for small movements

Stefan3
Associate II

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

8 REPLIES 8
Federica Bossi
ST Employee

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?

 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

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?

2025-01-17_14-54-46.PNG

 

Hi @Stefan3 ,

Yes, it is always suggested to enable the BDU bit.

In addition, high performance mode is suggested for this kind of application :)

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

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

 

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.

 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

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!

 

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?

 

 

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