Nosso sensor de atitude IMU (Unidade de Medição Inercial) de alta precisão é construído com um processador de 32 bits de alto desempenho a 72MHz que possibilita cálculo de atitude em tempo real e compensação dinâmica. Com frequências de atualização de dados de até 100Hz, ele combina resposta rápida com saída estável. Suporta os modos de comunicação I2C e serial, é compatível com microcontroladores e controladores principais Linux e se integra perfeitamente aos sistemas ROS.
Este módulo é ideal para cenários de aplicação de alto desempenho, incluindo:
- Controle de movimento de robôs
- Estabilização de atitude de UAVs
- Navegação e posicionamento inteligentes
- Sistemas de rastreamento de movimento
- Automação industrial
Principais recursos
Opções de múltiplas versões
| Recurso | 6 eixos | 9 eixos | 10 eixos |
|---|---|---|---|
| Processador de 32 bits de alto desempenho | ✅ | ✅ | ✅ |
| Giroscópio triaxial | ✅ | ✅ | ✅ |
| Acelerômetro triaxial | ✅ | ✅ | ✅ |
| Magnetômetro de três eixos | ❌ | ✅ | ✅ |
| Barômetro | ❌ | ❌ | ✅ |
| Algoritmo de fusão de dados de atitude AHRS | ❌ | ✅ | ✅ |
| Algoritmo de filtragem Mahony | ✅ | ✅ | ✅ |
| Descrição do cenário de aplicação | Projetado para requisitos sensíveis a custos, atende a padrões de aplicação de alta resposta dinâmica. | Com base no hardware de 6 eixos, integra o magnetômetro e o algoritmo AHRS, melhorando significativamente a estabilidade dos dados e a precisão de medição. | Adiciona barômetro à base de 9 eixos, fornece dados precisos de altitude; adequado para aplicações que exigem sensoriamento de atitude e posição em 3D de alta precisão. |
Especificações técnicas
| Parâmetro | Valor |
|---|---|
| Taxa de transmissão da porta serial | 115200bps |
| Frequência de saída | Padrão 25Hz, suporta faixa ajustável de 10Hz a 100Hz |
| Taxa de clock I2C | 100KHz |
| Conteúdo de saída | Aceleração de 3 eixos, velocidade angular de 3 eixos, ângulos de Euler de 3 eixos, quatérnio, temperatura (magnetômetro para 9/10 eixos, barômetro/altitude para 10 eixos) |
| Tempo de inicialização | 5000ms |
| Temperatura de operação | -40°C ~ +85°C |
| Temperatura de armazenamento | -40°C ~ +100°C |
| Resistência a impacto | 20kg (placa nua) |
| Dispositivos compatíveis | Controladores principais Linux (PC, Raspberry Pi, linha Jetson, linha RDK, etc.) e microcontroladores (STM32, MSPM0, ESP32, Pico, Arduino, etc.) |
| Tensão de operação | 5V ou 3.3V |
| Corrente de operação | 11mA |
| Dimensões do produto | 27.4mm × 22.6mm × 12mm |
| Peso do produto | 3.8g |
| Suporte a ROS | ROS1 / ROS2 |
Parâmetros de desempenho dos sensores
| Sensor | Faixa | Resolução | Ruído RMS (largura de banda de 100Hz) | Deriva de temperatura | Largura de banda |
|---|---|---|---|---|---|
| Acelerômetro | ±16g | 0.0005g/LSB | 1.0mg RMS | ±0.15mg/°C | 12.5~1600Hz |
| Giroscópio | ±2000°/s | 0.061°/s/LSB | 0.07°/s RMS | 0.015°/s/°C | 12.5~1600Hz |
| Magnetômetro | ±8Gauss | 0.244mGauss/LSB | - | - | - |
| Barômetro (10 eixos) | 300~2000hPa | - | 1Pa RMS | - | - |
Desempenho dos dados de navegação
| Medição | Valor típico |
|---|---|
| Faixa do ângulo de arfagem/rolagem (posicionamento horizontal) | X: ±180°, Y: ±90° |
| Precisão de arfagem/rolagem | 0.0055° |
| Faixa do ângulo de proa/guinada (posicionamento horizontal) | Z: ±180° |
| Precisão de proa/guinada | 0.0055° |
Descrição das funções dos pinos
| Pino | Função |
|---|---|
| SDA | Linha de dados serial I2C |
| SCL | Linha de clock serial I2C |
| GND | Terra |
| 3V3 | Entrada de alimentação 3.3V |
| RX | Recepção da porta serial |
| TX | Transmissão da porta serial |
| 5V | Entrada de alimentação 5V |
Guia de início rápido
1. Conexão de hardware
O módulo suporta as interfaces de comunicação I2C e serial. Consulte a tabela de descrição dos pinos acima para realizar as conexões.
Atenção: certifique-se de que a tensão de alimentação esteja correta (3.3V ou 5V) e evite conexões invertidas, que podem causar danos permanentes ao módulo.
2. Instalação de software
Primeiro, instale as bibliotecas Python necessárias:
pip install pyserial
pip install smbus2
Instale a biblioteca do IMU:
# Clone and enter the library directory
git clone https://github.com/Juxi-Technology/ICM42670P-High-Precision-IMU-Module.git
cd ../IMU_ROS2/IMU_Library
# Install the library
pip install -e .
3. Configuração de mapeamento de porta (somente Linux)
Para evitar mudanças no número da porta após a reconexão do dispositivo, configure um mapeamento de porta persistente:
# Create and edit the udev rules file
sudo gedit /etc/udev/rules.d/99-serial-imu.rules
# If gedit command is not found, install it first
sudo apt install gedit
# Add the following mapping content
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="imu-serial"
# Save and exit the editor, then run these commands to activate the rules
sudo udevadm trigger
sudo service udev reload
sudo service udev restart
# Verify the configuration
ll /dev/imu-serial
# Expected output example:
lrwxrwxrwx 1 root root 7 Jan 22 10:00 /dev/imu-serial -> ttyUSB0
Exemplos básicos de uso
Exemplo de comunicação serial
import serial
import json
# Configure serial port
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
try:
while True:
line = ser.readline().decode('utf-8').strip()
if line:
# Parse IMU data
data = json.loads(line)
print(f"Acceleration: X={data['acc_x']:.2f}g, Y={data['acc_y']:.2f}g, Z={data['acc_z']:.2f}g")
print(f"Gyroscope: X={data['gyro_x']:.2f}°/s, Y={data['gyro_y']:.2f}°/s, Z={data['gyro_z']:.2f}°/s")
print(f"Euler Angles: Roll={data['roll']:.2f}°, Pitch={data['pitch']:.2f}°, Yaw={data['yaw']:.2f}°")
print("-" * 50)
except KeyboardInterrupt:
ser.close()
print("Serial connection closed")
Exemplo de comunicação I2C
import smbus2
import time
# I2C configuration
I2C_BUS = 1
IMU_ADDR = 0x68
bus = smbus2.SMBus(I2C_BUS)
def read_imu_data():
# Read 14 bytes of data from IMU
data = bus.read_i2c_block_data(IMU_ADDR, 0x3B, 14)
# Convert raw data to meaningful values
acc_x = (data[0] << 8 | data[1]) / 16384.0
acc_y = (data[2] << 8 | data[3]) / 16384.0
acc_z = (data[4] << 8 | data[5]) / 16384.0
gyro_x = (data[8] << 8 | data[9]) / 131.0
gyro_y = (data[10] << 8 | data[11]) / 131.0
gyro_z = (data[12] << 8 | data[13]) / 131.0
return acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z
try:
while True:
acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z = read_imu_data()
print(f"Acc: X={acc_x:.2f}g, Y={acc_y:.2f}g, Z={acc_z:.2f}g")
print(f"Gyro: X={gyro_x:.2f}°/s, Y={gyro_y:.2f}°/s, Z={gyro_z:.2f}°/s")
time.sleep(0.1)
except KeyboardInterrupt:
bus.close()
print("I2C connection closed")
Executando exemplos oficiais da biblioteca
# Serial communication example
python3 IMU_Serial_Library.py --port /dev/ttyUSB0 --rate 50
# I2C communication example
python3 IMU_I2C_Library.py --port 1 --debug
Recursos e suporte
Para obter documentação mais detalhada, códigos de exemplo e suporte técnico, visite nossos recursos oficiais:
- JuxiTechnology GitHub - Bibliotecas de código aberto, códigos de exemplo e arquivos de design de hardware
- Lark Wiki - Documentação completa do produto, guias do usuário e perguntas frequentes
Nossos módulos IMU são projetados e fabricados pela Juxi Technology, oferecendo soluções confiáveis de medição inercial de alto desempenho para aplicações de robótica e IoT.

