Post Go back to editing

ADIS16375 with ADIS16IMU/PCBZ , problem in getting output

Thread Summary

The user encountered inconsistent readings from the ADIS16375BMLZ IMU's accelerometer and gyroscope registers when interfacing with a TI Tiva microcontroller via SPI. After debugging, the issue was resolved by correcting the register address settings. The user now seeks guidance on obtaining proper Delta Angle and Velocity measurements, which may require configuring the DEC_RATE register.
AI Generated Content

Hello,

I have installed the ADIS16375IMU (ADIS16375BMLZ) onto the ADIS16IMU/PCBZ board in order to interface it to a TI Tiva micro-controller via SPI.

Having read relative posts on the AD forum concerning the start-up behaviour of the IMU and respective interfacing issues I am still a bit puzzled on how to solve my issue.

First and foremost, following the wiki page for ADIS16IMU/PCBZ I have install the JP1 jumper , but the C1 and C2 are not populated. Since I am a software engineer , I am confused as to if I should install capacitors on the PCB in order to achieve correct operation. I am not interested on the RTC functionality of the IMU itself.

I have developed the SPI driver, using MODE_3 and 16bit length , MSB first , running at a CLK of 12 MHZ (also tested lower clock speeds). I can successfully read the PROD_ID, TEMP_OUT register every time without an issue. But when I attempt to read the ACCEL_OUT and GYRO_OUT registers I get inconsistent output.

I am powering the PCB from a power supply unit, and have twisted the cables as discussed in previous posts. The unit seems to be drawing a current of 0.16 A at 3.46 Volts.

Below you can see an example of the data I am getting ( btw I use the interrupt on DIO2 in order to commence data reading and have also tried reading data without using the interrupt, just with proper timing between writes and reads). Values are printed out both in decimal and hex for reference.

27/03/2015 13:12:25.943 [RX] -

ACC_X_OUT : -24832 0x9f00

ACC_Y_OUT : 1746 0x6d2

ACC_Z_OUT : 19641 0x4cb9

GYRO_X_OUT : -15392 0xc3e0

GYRO_Y_OUT : -23096 0xa5c8

GYRO_Z_OUT : 29869 0x74ad

27/03/2015 13:12:26.320 [RX] -

ACC_X_OUT : 9089 0x2381

ACC_Y_OUT : -21731 0xab1d

ACC_Z_OUT : 9142 0x23b6

GYRO_X_OUT : -4406 0xeeca

GYRO_Y_OUT : 16218 0x3f5a

GYRO_Z_OUT : -29740 0x8bd4

27/03/2015 13:12:30.816 [RX] - Temp : 0xff20 23.734400

27/03/2015 13:12:31.378 [RX] - Temp : 0xff1e 23.723100

27/03/2015 13:12:31.972 [RX] - Temp : 0xff23 23.751350

27/03/2015 13:12:32.488 [RX] - Temp : 0xff21 23.740050

I am also attaching some pictures of from the board connections.

I have also tried installing a capacitor (max 10V, 1500uF) in the VDD and GND connection but that did not have any effect.

Could you provide me with some insight as to what might be the problem or what to do in order to figure it out.

Thank you in advance,

Pavlos

attachments.zip
  • Thank you for posting this in the forum and for giving us a chance to help. The power supply currents are within reason and the consistency in reading PROD_ID and TEMP_OUT suggest that the device has started-up correctly, so there is no need to worry about the capacitors on the board.  What do the calibration registers (All but GLOB_CMD in Table 58) and FNCIO_CTRL register have in them? 

  • Hello, I apologize for not replying earlier, I was dealing with other programming tasks and just came back to the IMU interface.

    Here is the list of values of the Table 58 registers.

    X_GYRO_OFF_L : 0x0

    X_GYRO_OFF_H : 0x0

    Y_GYRO_OFF_H : 0x0

    Z_GYRO_OFF_L : 0x0

    Z_GYRO_OFF_H : 0x0

    X_ACC_OFF_L : 0x0

    X_ACC_OFF_H : 0x0

    Y_ACC_OFF_L : 0x0

    Y_ACC_OFF_H : 0x0

    Z_ACC_OFF_L : 0x0

    Z_ACC_OFF_H : 0x0

    X_GYRO_SCALE : 0x0

    Y_GYRO_SCALE : 0x0

    Z_GYRO_SCALE : 0x0

    X_ACC_SCALE : 0x0

    Y_ACC_SCALE : 0x0

    Z_ACC_SCALE : 0x0

    GEN_CONFIG : 0xc0

    NULL_CONFIG : 0x70b

    DEC_RATE : 0x0

    After some debugging, I found an issue with register addresses and I can now properly read the output for the gyroscope and accelerometer. It was a mishandled register address setting, sorry for that.

    However, now I have an issue with getting proper values for Delta Angle and Velocity. Is the unit supposed to provide such measurements when it is reset in its default state or should I configure the DEC_RATE register to have a value greater than 0 ?

    These are the values I get when the IMU is flat on a surface

    GYRO X : 0.380132

    GYRO Y : -0.498104

    GYRO Z : -0.013108

    ACC X : -2.457600

    ACC Y : 12.288000

    ACC Z : 1019.904000

    DELTA X : 0.000000

    DELTA Y : 0.000000

    DELTA Z : -0.005430

    DELTA VEL X : -3.051800

    DELTA VEL Y : 0.000000

    DELTA VEL Z : 3.051800

    And this is what I get when I rotate it by 90 degrees on the Y axis (standing up)

    GYRO X : -1.179720

    GYRO Y : 1.494312

    GYRO Z : 0.000000

    ACC X : 1008.435200

    ACC Y : 49.152000

    ACC Z : 33.587200

    DELTA X : -0.005430

    DELTA Y : 0.000000

    DELTA Z : 0.000000

    DELTA VEL X : 3.051800

    DELTA VEL Y : 0.000000

    DELTA VEL Z : 0.000000

  • FYI, I marked this discussion with Correct Answer, since you revealed that this was done in the following text:

    After some debugging, I found an issue with register addresses and I can now properly read the output for the gyroscope and accelerometer. It was a mishandled register address setting, sorry for that.