Using Analog Devices MEMS Sensors and SPI I2C Converters with LabVIEW
Overview
Use National Instruments LabVIEW for rapid design prototyping, product evaluation and performance optimization with MEMS products from Analog Devices (ADI). LabVIEW's SPI I2C engine and dedicated drivers enable quick connection and communication with both ADI MEMS sensor product families: iMEMS Motion Signal Processing™ and iSensor™ intelligent sensor technologies. ADI's iSensor technology provides quick access to MEMS solutions that are accurate, programmable, and feature-rich. They are used in many industrial applications that include medical, instrumentation, and robotics systems. Combine iSensor products with LabVIEW for a user-friendly, development environment for inertial sensing design requirements. Leverage this powerful combination to help shorten design cycles and identify key performance insights early, when they have optimal strategic value.

MEMS and SPI I2C Sensors from ADI Overview
This application note describes how to communicate to Analog Devices sensors using National Instruments LabVIEW FPGA Module or the low cost plug-and-play USB-8451 for I2C and SPI control and communication.
The LabVIEW FPGA Module is a graphical development environment for easily configuring FPGAs on NI RIO hardware to implement functionality that usually requires custom hardware. Such functions include implementing digital communication protocols such as I2C and SPI.
The National Instruments USB-8451 is an interface for connecting to and communicating with I2C, SMBus, and SPI devices. With plug-and-play USB connectivity, the NI USB-8451 is a portable solution to communicate with consumer electronics and integrated circuits.
To see the available component and sensor drivers for Analog Devices components, such as MEMS Accelerometers, visit the NI IPNet.
IPNET Resources
ADIS16060 MEMS Yaw Rate Gyroscope Sensor Driver
ADIS16003 Dual-Axis Accelerometer Sensor Driver
ADIS16006 Dual-Axis Accelerometer Sensor Driver
ADIS16209 High Accuracy, Dual-Axis Digital Inclinometer Sensor Driver
ADIS16265 Programmable Low Powered Gyroscope Sensor Driver (also supports ADIS16250 and ADIS16255)
ADIS16350 High Precision Tri-Axis Inertial Sensor Driver (also supports ADIS16355)
| PART NUMBER | CATEGORGY | LabVIEW | ||
| Driver status | Starting Point | Notes | ||
| ADIS16003 | Low-g Accelerometer | Complete | ||
| ADIS16006 | Low-g Accelerometer | ADIS16003 | Change the sensitivity from 1.22mg/LSB to 3.91mg/LSB | |
| ADIS16060 | Gyroscope | Complete | ||
| ADIS16080 | Gyroscope | ADIS16003 | Change the Clock phase to get SPI working, then develop gyroscope output interface | |
| ADIS16100 | Gyroscope | ADIS16080 | Change the sensitivity from 0.098°/sec per LSB to 0.244°/sec per LSB | |
| ADIS16130 | Gyroscope | |||
| ADIS16201 | Low-g Accelerometer | ADIS16209 | Copy ADIS16209 and update the register definitions and user interface where appropriate | |
| ADIS16203 | Low-g Accelerometer | ADIS16209 | Copy ADIS16209 and update the register definitions and user interface where appropriate | |
| ADIS16204 | High-g Accelerometer | ADIS16209 | Copy ADIS16209 and update the register definitions and user interface where appropriate | |
| ADIS16209 | Low-g Accelerometer | Complete | ||
| ADIS16240 | Low-g Accelerometer | ADIS16209 | Copy ADIS16209 and update the register definitions and user interface where appropriate | |
| ADIS16250 | Gyroscope | ADIS16265 | Copy the ADIS16265 | |
| ADIS16251 | Gyroscope | ADIS16265 | Copy the ADIS16265 and update the sensitivity by dividing it by 4 | |
| ADIS16255 | Gyroscope | ADIS16265 | Copy the ADIS16265 | |
| ADIS16260 | Gyroscope | ADIS16265 | Copy the ADIS16265 | |
| ADIS16265 | Gyroscope | Complete | ||
| ADIS16300 | IMU | Copy ADIS16350 and update accelerometer sensitivity | ||
| ADIS16350 | IMU | Complete | ||
| ADIS16354 | IMU | ADIS16350 | Change accelerometer sensitivity | |
| ADIS16355 | IMU | ADIS16350 | Copy the ADIS16350 | |
| ADIS16360 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 3.33mg/LSB | |
| ADIS16362 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 0.333 mg/LSB | |
| ADIS16364 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 1mg/LSB | |
| ADIS16365 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 3.33mg/LSB | |
| ADIS16400 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 3.33mg/LSB, add magnetometer | |
| ADIS16405 | IMU | ADIS16350 | Change gyrocsope sensitivity to 0.05°/sec per LSB and Accel to 3.33mg/LSB, add magnetometer | |
Learn how to easily modify the above drivers for other MEMS sensors. For example, the ADIS16354 is programmed the same as the ADIS16355. See the developer zone document called How-to: Using SPI and FPGA to with LabVIEW and Embedded Sensors. Also, learn how to target other NI hardware with the same driver. See the developer zone document called How-to: Developing an Embedded Sensor Application.
Download many more drivers and source code IP at www.ni.com/ipnet
General SPI I2C Resources
You have a number of options from National Instruments for communicating using SPI and I2C. Click on the links below to learn more.
| Software Reference | NI Hardware | Description |
| NI FPGA IPNET | LabVIEW FPGA Hardware Targets |
IPNet has links to FPGA IP for the SPI and I2C protocols, and specific device driver IP for displays, sensors, and other SPI/I2C-enabled devices. This FPGA IP works for any RIO Devices including, R Series, CompactRIO, Single-Board RIO, and FlexRIO.
|
| Software for Hardware-timed Digital I/O Boards | Digital I/O Hardware Products |
Find LabVIEW code and a tutorial for using with hardware-timed DIO boards NI 655x series devices to communicate using the SPI/I2C protocol.
|
| NI USB 8451 |
Find LabVIEW code and a tutorial for using the 8451 to communicate with SPI/I2C devices.
|
Originally Authored By: Greg Crouch, National Instruments
Reader Comments | Submit a comment »
Legal
This example program (this "program") was developed by a National Instruments ("NI") Applications Engineer. Although technical support of this program may be made available by National Instruments, this program may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this program with each new revision of related products and drivers. THIS EXAMPLE PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).
