Multi-IMU Precision Motion Sensor Board
2025-11-13
Overview
For Advanced Robotics at the University of Washington, I was tasked to create a small CAN-enabled IMU board to measure the motion of the our robot. We wanted to use to up to 4 IMUs to improve measurement precision.
Simulation
To understand how multiple IMUs would the resulting measurement, I ran a simulation on python with 8 IMUs, each with a different amount of noise based on the Farrenkompf noise model. This will most accurately simulate what real IMUs data may look like.

The first image shows all the different IMUs and their respective signal (in this case it is a sine wave) and second image shows the average value of all 8 IMUs compared against a regular sine wave.
System Architecture
- Sensor Array: 8× LSM6DSVTR IMUs positioned maximally distributed across the board
- Data Fusion: Averaging algorithm across all IMUs using high sampling rates (sine wave simulation with noise model)
- Communication: CAN bus interface (PA11/PA12) via MCP2562T-E/MF transceiver
- Thermal Management: Individual shunt resistors (RNCF0805DTE2K50) beneath each sensor, relay-controlled (VO1400AEFTR) for temperature stabilization
Hardware Design
MCU: STM32F042F4P6 (TSSOP20)
- High-speed SPI multiplexing with 3:8 decoder (MC74HC138ADR2G)
- Software NSS chip selection (PA1-PA4) for sequential IMU polling
- Optimized for minimal switching latency across all sensors
Power System:
- Input: 24V → 5V buck converter (AP63201QWU-7, 1A)
- 5V → 3.3V LDO (MIC5504-3.3YM5-TR, ≤300mA) for MCU
- 5V → 1.8V LDO (MIC5365-1.8YC5-TR, ~8mA) for IMU array
- 24V direct feed for heating elements
Physical Specs:
- Form factor: 40mm × 40mm (Board Type C compliant)
- Mounting: M3 holes at 23mm × 33mm spacing
- Operating range: -40°C to 85°C
Technical Challenges
- SPI Bottleneck: Sequential chip selection means only one IMU active at a time—compensated with high polling frequency
- Thermal Distribution: Localized heating via shunt resistors prevents gradient issues
- RTS Noise: Deferred for future iteration—current averaging approach sufficient for initial implementation