stm32duino / ISM330DHCX

Arduino library to support the ISM330DHCX 3D accelerometer and 3D gyroscope
BSD 3-Clause "New" or "Revised" License
6 stars 8 forks source link

documentation about units #8

Closed jerabaul29 closed 1 year ago

jerabaul29 commented 2 years ago

I was a bit confused at first about which units are used; I cannot see either in the .h or the .cpp file the unit for ISM330DHCXStatusTypeDef ISM330DHCXSensor::ACC_GetAxes(int32_t *Acceleration) for example. I found the information in the example here:

https://github.com/stm32duino/ISM330DHCX/blob/16a3c67dc94a53a6c3115641330449f1e58f3da4/examples/ISM330DHCX_DataLog_Terminal/ISM330DHCX_DataLog_Terminal.ino#L108-L109

but wonder if units should be documented in details in the .h or .cpp?

It would be really useful to get the units for:

cparata commented 2 years ago

Hi @jerabaul29 , all the MEMS drivers that you can find in stm32duino repositories have the same units:

mg for accelerometer (thousandth of 1g that is 9.81 m/s^2) mdps for gyroscope (thousandth of degree/s) mgauss for magnetometer (thousandth of gauss)

regarding the GetSensitivity, exactly; it is the scaling constant that changes according the full scale and transforms the raw value to the units. We exported also GetSensitivity and GetAxesRaw APIs, so user can customize the output in the unit that he prefers. For example if you want the unit of the accelerometer in float "g" you can do:

int16_t acc_raw[3];
float acc_g[3];
float acc_sensitivity;

AccGyr.ACC_GetAxesRaw(acc_raw);
AccGyr.ACC_GetSensitivity(&acc_sensitivity);

acc_g[0] = ((float)acc_raw[0] * acc_sensitivity) / 1000.0f;
acc_g[1] = ((float)acc_raw[1] * acc_sensitivity) / 1000.0f;
acc_g[2] = ((float)acc_raw[2] * acc_sensitivity) / 1000.0f;

Best Regards, Carlo

jerabaul29 commented 2 years ago

Perfect, many thanks :) . For people who just come into this repository without knowing background information about the stm32duino conventions, and to make the repository self consistent, could it be added to the .h of .cpp documentation, and / or to the readme? :) . That would be very helpful, it is just so easy to get confused with units and dimensions :) .

cparata commented 2 years ago

Thanks for the feedback! Anyway, any improvement to the library is welcome. So, I invite you to submit pull requests also only on Readme file or some comments in the source code in order to improve the readability of the library. Any contribution from community is welcome!

jerabaul29 commented 2 years ago

:) .

I will try to find time for this over the weekend :) .

jerabaul29 commented 1 year ago

I finally found the time to write this down and open a pull request, let's discuss on the pull request if it is ok :) .