-
2022-09-23 10:23:20
The ADIS16400/ADIS16405 are Triaxial Inertial sensors with magnetometers
feature
Three-axis digital gyroscope digital distance scale; ±5°/sec, ± 150 °/sec, ± 300 °/sec settings; tight quadrature calibration, <0.05'; three-axis digital accelerometer ±18 g; three-axis digital Magnetometer ±2.5 Gauss; autonomous operation and data collection; no external configuration commands required; 220 ms startup time; 4 ms sleep mode recovery time; factory calibrated for sensitivity, bias, and axial alignment; ADIS16400 calibration temperature: +25°C ; ADIS1645 calibrated temperature range: –40°C to +85°C; SPI compatible serial interface; embedded temperature sensor; programmable operation and control; automatic and manual offset correction control; Bartlett window FIR length, number of taps; Digital I/O: Data Ready, Alarm Indicator, General Purpose; Status Monitor Alarm; Sleep Mode for Power Management; DAC Output Voltage; Enable External Sample Clock Input up to 1.2 kHz; Single Command Self Test; 5.25 V; 2000 g shock survivability; operating temperature range: -40°C to +105°C.
application
Drones; Platform Control; Digital Compass; Navigation.
General Instructions
The ADIS16400/ADIS16405 ISISOR® products are complete inertial systems that include a three-axis gyroscope, a three-axis accelerometer, and a three-axis magnetometer. The ADIS16400/ADIS1645 combine industry-leading iMEMS® technology with signal conditioning to optimize dynamic performance. Factory calibration describes the sensitivity, bias, alignment and linear acceleration (gyroscope bias) of each sensor. Therefore, each sensor is dynamically compensated with its own correction formula that provides accurate sensor measurements over the temperature range of -40°C to +85°C. The magnetometer also features self-calibration to provide accurate bias performance over temperature.
The ADIS16400/ADIS16405 provide a simple, cost-effective method for integrating accurate, multi-axis inertial sensing into industrial systems, especially with the complexity and investment associated with discrete designs. All necessary motion tests and calibrations are part of the factory production process, greatly reducing system integration time. Tight orthogonal alignment simplifies the alignment of inertial frames in navigation systems. An improved Serial Peripheral Interface (SPI) and register structure provide faster data acquisition and configuration control. By using the pin-compatible and same software packages as the ADIS1635x and ADIS1636x families, upgrading to the ADIS16400/ADIS1645 requires only firmware changes to accommodate additional sensors and register map updates.
These compact modules are approximately 23mm x 23mm x 23mm and offer flexible connector interfaces that enable a choice of multiple mounting orientations.
Typical performance characteristics
theory of operation
Basic operation
The ADIS16400/ADIS16405 are autonomous sensor systems that start up when a valid supply voltage is applied and begin producing inertial measurement data at the factory default sampling rate of 819.2 SPS. After each sample period, the sensor data is loaded into the output registers and DIO1 pulses, providing a new data-ready control signal to the drive system-level interrupt service routine. In a typical system, the host processor uses the connections shown in Figure 9 to access the output data registers through the SPI interface. Table 6 provides a general functional description of each pin on the host processor. Table 7 describes the typical host processor settings typically found in the configuration registers and used to communicate with the ADIS16400/ADIS16405.
1. For burst mode, the SCLK rate is ≤1 MHz. For low power mode, the SCLK rate is ≤300 kHz.
User registers provide addressing for all input/output operations on the SPI interface. Each 16-bit register has two 7-bit addresses: one for the high-order byte and one for the low-order byte.
Table 8 lists the low byte address of each register, and Figure 10 shows the general-purpose bit assignments.
Read sensor data
Although the ADIS16400/ADIS16405 generate data independently, they operate as SPI slaves, using the 16-bit segment shown in Figure 11 to communicate with the system (master) processor. A single register read requires two such 16-bit sequences. The first 16-bit sequence provides the read command bits (R/W=0) and the destination register address (A6 to A0). The second sequence sends the register contents ( D15 to D0) on the DOUT line. For example, if DIN=0x0A00, on the next 16-bit sequence, the contents of XACCL_OUT are shifted on the DOUT line.
SPI operates in full-duplex mode, which means that the host processor can read output data from DOUT while using the same SCLK pulse to transmit the next destination address on DIN.
Device Configuration
The user register memory map (Table 8) identifies configuration registers with W (write only) or R/W (read/write). The configuration command also uses Figure 11. If the MSB is equal to 1, the last 8 bits in the DIN sequence (DC7 to DC0) are loaded into the memory address associated with the address bits (A5 to A0). For example, if DIN=0xA11F, 0x1F is loaded at address location 0x21 (XACCL_OFF, high byte) at the end of the data frame.
Most registers have a backup location in non-volatile flash memory. The main processor must manage the backup function. Set GLOB_CMD[3]=1 (DIN=0xBE04) to perform a manual flash update (backup) operation, copying the user registers to their respective flash locations. This operation takes 50 milliseconds and requires the supply voltage to be within the specified range to complete properly. The flash registers provide a running count of these events and are used to manage the long-term reliability of the flash memory.
Burst Mode Data Acquisition
Burst Mode data collection provides a more efficient method for collecting data from the ADIS16400/ADIS16405. During sequential data cycles (each cycle is separated by one SCLK cycle), all output registers time out at DOUT. This sequence starts when the DIN sequence is 0011110 0000 0000 (0x3E00). Next, the contents of each output register are output from DOUT, starting with SUPPLY_OUT and ending with AUX_ADC (see Figure 12). The addressing sequence shown in Table 8 determines the output order in burst mode.
output data register
Figure 6 gives the positive measurement orientation for each gyroscope, accelerometer, and magnetometer. Table 9 provides the configuration and scale factors for each output data register in the ADIS16400/ADIS16405. All inertial sensor outputs are in 14-bit two's complement format, i.e. 0x0000 equals 0 LSB, 0x0001 equals +1 LSB, and 0x3FFF equals -1 LSB. Here is an example of how to calculate sensor measurements from XGYRO_-OUT:
Therefore, the XGROUPYOUT output of 0x3B4A corresponds to a clockwise rotation of 60.3°/sec in the Z-axis (see Figure 6) when looking at the top of the package.
1. Assume the scale is set to ±300°/sec. This factor varies with range. The typical output of this register at 25°C is 0x0000.
Each output data register uses the bit assignment shown in Figure 13. The ND flag indicates that unread data resides in the output data register. This flag is cleared and returned to 0 during the output register read sequence. It returns to 1 after the next internal sample updates the register with new data. The EA flag indicates that an error flag in the DIAG_STAT register (see Table 23) is active (true). The remaining 14 bits are for data.
Auxiliary ADC
The AUXYADC register provides access to the auxiliary ADC input channels. The ADC is a 12-bit successive approximation converter with the equivalent input circuit shown in Figure 14. The maximum input is 3.3 volts. The ESD protection diode can handle 10mA without irreversible damage.
The switch's on-resistance (R1) is typically 100Ω. The typical value of sampling capacitor C2 is 16pf.
calibration
Manual Bias Calibration
The bias offset registers in Table 10, Table 11, and Table 12 (Hard Iron Correction for Magnetometers) provide manual adjustment of the output of each sensor. For example, if XGYRO_OFF is equal to 0x1FF6, the XGYRO_OUT offset is shifted by −10 LSB or −0.125°/sec. The DIN command of the upper byte is DIN=0x9B1F; the DIN of the lower byte is 0x9AF6.
Magnetometer Soft Iron Correction (Scale Factor)
The magnetometer's soft-iron correction factor provides the opportunity to change the scale factor for each individual axis.
Gyroscope automatic bias zero calibration
Set GLOB_CMD[0]=1 (DIN=0xBE01) to perform this function, which measures the gyro output and then loads the gyro offset register with the opposite value to provide fast offset calibration. Then, all sensor data is reset to 0, and the flash memory is automatically updated within 50 ms (see Table 14). Gyroscope Accuracy Auto-Zero Set GLOB_CMD[4]=1 (DIN=0xBE10) to perform this function, take the sensor offline for 30 seconds, collect a set of gyroscope data at the same time, and calculate a more accurate bias correction coefficient for each gyroscope. Once calculated, the correction coefficients are loaded into the three gyroscope offset registers, all sensor data are reset to 0, and the flash memory is automatically updated within 50 ms (see Table 14).
Restore factory calibration
Set GLOB_CMD[1]=1 (DIN=0xBE02) to perform this function, reset each user calibration register (see Table 10, Table 11 and Figure 12) to 0x0000, reset all sensor data to 0, and reset at 50 Flash memory is automatically updated within ms (see Table 14). Linear Acceleration Bias Compensation (Gyroscope) Set MSC_CTRL[7]=1 (DIN=0xB486) to enable correction of low frequency acceleration effects on gyroscope bias. Note that the DIN sequence also retains the factory default conditions for the data ready function (see Table 19).
Operational control
Global parameter configuration
The GLOB_CMD register provides trigger bits for several useful functions. Start each operation with the allocated bit set to 1, it returns bit 0 when finished. For example, setting GLOB_CMD[7]=1 (DIN=0xBE80) to perform a software reset will stop the sensor operation and run the device during device startup. This includes loading the control registers and their respective flash locations before generating new data. Reading the GLOB_CMD register (DIN=0x3E00) starts the burst mode read sequence.
Internal sample rate
The SMPL_PRD register provides discrete sample rate settings using the bit assignments in Table 15 and the following equation: t=t×(N+1), when SMPL_PRD[7:0]=0x0A, the sample rate=149 SPS.
The default sample rate setting of 819.2 SPS preserves sensor bandwidth and provides optimal performance. For systems that value slower sample rates, simply read the device at the slower rate and keep the internal sample rate at 819.2 SPS. Use a programmable filter (SENS_AVG) to reduce the bandwidth while reducing the read rate. The data preparation function (MSC_CTRL) can drive an interrupt routine that uses a counter to help ensure data consistency at lower update rates.
power management
Setting SMPL_PRD ≥ 0x0A also sets the sensor to low power mode. For systems requiring lower power consumption, the insystem feature helps users quantify the associated performance trade-offs. In addition to sensor performance, this mode also affects the SPI data rate (see Table 2). Set SLP_CNT[8]=1 (DIN=0xBB01) to initiate infinite sleep mode, which requires CS assertion (high to low), reset or power cycle to wake up. Use SLP_CNT[7:0] to put the device in sleep mode for a given time. For example, SLP_CNT[7:0]=0x64 (DIN=0xBA64) puts the device to sleep for 50 seconds.
digital filtering
A programmable low-pass filter provides additional noise reduction opportunities for the inertial sensor output. The filter consists of two cascaded averaging filters, providing a Bartlett window, FIR filter response (see Figure 15). For example, SENS_AVG[2:0]=100 (DIN=B804) sets each stage tap to 16. When used with the default sample rate of 819.2 SPS, this reduces the sensor bandwidth to about 16 Hz.
Dynamic Range
The gyroscope has three dynamic range settings. The lower dynamic range settings (±75°/sec and ±150°/sec) limit the minimum filter tap size to maintain resolution. For example, set SENS_AVG[10:8]=010 (DIN=0xB902) to a measurement range of ±150°/sec. Since this setting affects filter settings, if more filtering is required, program SENS_AVG[10:8] followed by SENS_AVG[2:0].
input/output function
General purpose I/O
DIO1, DIO2, DIO3, and DIO4 are configurable general-purpose I/O lines that serve multiple purposes based on the priority of the following control registers: MSC_CTRL, ALM_CTRL, and GPIO_CTRL. For example, setting GPIO_CTRL=0x080C (DIN=0xB308, then 0xB20C) sets DIO1 and DIO2 as inputs and DIO3 and DIO4 as outputs, with DIO3 set low and DIO4 high.
Input clock configuration
The input clock allows external control of the ADIS16400/ADIS16405. Set GPIO_CTRL[3]=0 (DIN=0x0B200) and SMPL_PRD[7:0]=0x00 (DIN=0xB600) to enable this feature.
Data Ready I/O Indicator
The factory default setting for DIO1 is the positive data ready indication signal. The MSC_CTRL[2:0] register provides configuration options for changing this value. For example, set MSC_CTRL[2:0]=100 (DIN=0xB404) to change the polarity of the data ready signal of an interrupt input that requires a negative logic input to activate. The resulting pulse widths were between 100 μs and 200 μs under all conditions.
Auxiliary Digitizer
When the 12-bit auxiliary DAC line has no sink current, it can drive its output to within 5 mV of the ground reference. As the output approaches 0V, the linearity starts to drop (~100LSB onset). As the sink current increases, the nonlinear range increases. The DAC latch command moves the value of the AUX_DAC register to the DAC input register, making both bytes valid at the same time.
diagnosis
self-test
The self-test function provides the opportunity to verify the mechanical integrity of each MEMS sensor. It applies an electrostatic force to each sensor element, resulting in a mechanical displacement that simulates the actual motion response. Table 1 lists the expected responses for each sensor, with pass/fail criteria provided. Set MSC_CTRL[10]=1 (DIN=0xB504) to run an internal self-test routine that runs all inertial sensors, measures each response, makes pass/fail decisions, and reports them to the error flag in the diagnostic register . MSC_CTRL[10] resets itself to 0 after completing the routine. MSC_CTRL[9:8] (DIN=0xB502 or 0xB501) provides manual control of the self-check function. Table 22 shows an example test flow for checking the X-axis gyroscope using this option. Zero motion provides more reliable results. The settings in Table 22 are flexible and provide optimization opportunities around speed and noise impact. For example, using fewer filter taps reduces delay time but increases the chance of noise effects.
memory test
Set MSC_CTRL[11]=1 (DIN=0xB508) to perform checksum verification on the flash location. The pass/fail result is loaded into the DIAG U STAT[6] register.
status
Error flags provide indicator functions for common system-level problems. All flags are cleared (set to 0) after each diagnostic register read cycle. If the error condition still exists, the error flag will return to 1 on the next sampling cycle. DIAG_STAT[1:0] can return to 0 without reading this register.
Alarm register
The alarm function provides monitoring of two independent conditions. The ALM_CTRL register provides control inputs for data source, data filtering (before comparison), static comparison, dynamic rate-of-change comparison, and output indicator configuration. The ALM_MAGx registers establish the trigger threshold and polarity configuration.
The ALM_SMPLx registers provide the number of samples used in dynamic rate configuration. The period is equal to the number in the ALM_SMPLx register multiplied by the sample period time established by the SMPL_PRD register.
Dimensions