Post Go back to editing

My adis16507-1 returns false data

Category: Software
Product Number: adis16507-1
Software Version: Driver ADIS16475

Hello,

I want to use my IMU adis16507-1 to know the angular velocity of my embedded system.

Once I have set up the sensor I notice that I get false values.

By rotating my IMU at a constant controlled speed of about 1.7 rad/s on the Z axis, I read the value of the angular velocity of Z on /sys/bus/iio/devices/iio\:device0/in_anglvel_z_raw which I multiply by the value of the scale on /sys/bus/iio/devices/iio\:device0/in_anglvel_scale I get a velocity of about 1 rad/s.

I also notice that the received speed cannot exceed 1.7 rad/s despite an increase of the rotation. The sign of the direction of rotation works very well.

I also have at my disposal the IMU adis16470. I notice the same problem, the measured value is different from the real value. However it is different (For 1.7 rad/s real I get 0.63 rad/s measured).

I deduce that the problem could come from the configuration. So here is my adis16475-overlay.dts

/dts-v1/;
/plugin/;

#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>

/ {
        compatible = "brcm,bcm2835";

        fragment@0 {
                target = <&spi0>;
                __overlay__ {
                        status = "okay";
                };
        };

        fragment@1 {
                target = <&spidev0>;
                __overlay__ {
                        status = "disabled";
                };
        };

        fragment@2 {
                target = <&spidev1>;
                __overlay__ {
                        status = "disabled";
                };
        };

         fragment@3 {
                target = <&gpio>;
                __overlay__ {
                        adis16475_pins: adis16475_pins {
                                brcm,pins = <4 12>; // interrupt and reset
                                brcm,function = <0 1>; // in out
                        };
                };
        };
        fragment@4 {
                target = <&spi0>;
                __overlay__ {
                        /* needed to avoid dtc warning */
                        #address-cells = <1>;
                        #size-cells = <0>;
                        
                        adis16475: adis16475@0 {
                                compatible = "adi,adis16507-1";
                                reg = <0>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&adis16475_pins>;
                                spi-cpha;
                                spi-cpol;
                                reset-gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
                                spi-max-frequency = <2000000>;
                                interrupts = <4 IRQ_TYPE_EDGE_RISING>;
                                interrupt-parent = <&gpio>;
                        };
                };
        };

        __overrides__ {
                interrupt = <&adis16475_pins>,"brcm,pins:0",
                                <&adis16475>,"interrupts:0";
                reset = <&adis16475_pins>,"brcm,pins:4",
                                <&adis16475>,"reset-gpios:4";
        };
};

Is there an error in this file? Could the problem come from somewhere else?

Thanks in advance,

Dimitri



mistake file
[edited by: Dimigger at 7:32 AM (GMT -4) on 17 Oct 2022]