QMC5883L · CIC-SEN0003

XPU Labs / AnalogLamb; микросхема QST · CIC QMC5883L Breakout · CIC-SEN0003

Трёхосевой магнитометр для электронного компаса и измерения магнитного поля.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает CIC QMC5883L Breakout · CIC-SEN0003

QMC5883L измеряет магнитное поле по трём осям. Здесь представлена готовая плата CIC-SEN0003 от XPU Labs / AnalogLamb с подписанными контактами и двумя разъёмами Qwiic. Она подходит для электронного компаса, оценки курса робота и наблюдения за изменениями магнитного поля. Курс рассчитывается программно и требует калибровки, а для работы при наклоне нужен отдельный акселерометр.

Особенности

  • QMC5883L использует адрес 0x0D и собственную карту регистров; у HMC5883L адрес 0x1E. Библиотеки для HMC5883L без поддержки QMC5883L не подходят.
  • На плате нет стабилизатора и преобразователей уровней; SDA/SCL подтянуты к VDD. С ESP32 используйте питание 3,3 В.
  • Калибруйте собранное устройство вращением по всем осям: компенсируйте постоянное смещение и искажения от магнитных материалов. После изменения компоновки повторите калибровку.
  • Держите датчик вдали от магнитов, стальных креплений, двигателей и силовых проводов. Калибровка не устраняет меняющиеся магнитные помехи.
  • Простой курс по X/Y корректен при горизонтальном положении. Для истинного севера учитывайте местное магнитное склонение; точность 1–2° в готовом устройстве не гарантирована.

Для каких проектов подойдёт

  • Настольный компас: отображение направления на экране после калибровки.
  • Мобильный робот: магнитный курс в дополнение к данным гироскопа и акселерометра.
  • Учебный регистратор: наблюдение за изменениями магнитного поля по трём осям.

Чем отличается

Два диапазона измерения и частота выдачи до 200 Гц позволяют выбирать настройки под задачу. Это магнитометр без акселерометра и гироскопа: сам по себе он не выдаёт готовую пространственную ориентацию.

Характеристики

Сенсор
QMC5883L
Оси
3 магнитные оси
Диапазоны
±2 / ±8 Гс
АЦП
16 бит
Интерфейс
I²C, до 400 кГц
Адрес I²C
0x0D
Частота данных
10/50/100/200 Гц
Питание платы
2,2–3,6 В
Размеры платы
28 × 18 × 5 мм
Питание модуля
Плата: 2,2–3,6 В. Для ESP32 питание и логика — 3,3 В; 5 В недопустимы.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VDD3V3ESP32 DevKitC: питание платы 3,3 В, стабилизатора на модуле нет. Используйте подписанный ряд контактов.
GNDGNDОбщая земля; оба подписанных GND соединены.
SDAGPIO21Данные I²C; на плате есть подтяжка к VDD.
SCLGPIO22Тактовая линия I²C; для ESP32-C3/C6/S3 выбирайте выводы отдельно.
RDYНе подключатьДля простого опроса не нужен; готовность данных можно проверять в регистре статуса.
Неподписанный рядНе подключатьJ2 на схеме не имеет электрических соединений. Он не заменяет подписанный ряд VDD/GND/SDA/SCL/RDY/GND.

Подходит для ESP32. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги подключить CIC-SEN0003 с QMC5883L. Сначала уточни контроллер, среду и задачу. Для ESP32 DevKitC используй VDD → 3V3, GND → GND, SDA → GPIO21, SCL → GPIO22; RDY оставь свободным. Проверь адрес 0x0D, затем подготовь минимальный пример с GyverMag и проверкой ошибок I²C. Объясни калибровку и единицы измерения. Для курса учти направление осей, магнитное склонение и наклон. Не используй драйвер HMC5883L или QMC5883P и не обещай точный курс рядом с двигателем или магнитом.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Платформа
ESP32 DevKitC / Arduino Core

GPIO21/22 относятся к этому примеру, а не ко всем моделям ESP32.

Адрес I²C
0x0D

Подтверждён datasheet, страницей платы и маркировкой на обороте. В схеме v1.0 опечатка: 0x13. Перемычки выбора адреса нет.

Основная библиотека
GyverMag · GyverLibs

Подключите Wire.h и QMC5883L.h именно из GyverMag; создайте QMC5883L mag(0x0D).

Инициализация
Wire.begin(21, 22, 100000)

Затем mag.begin(Wire); проверьте bool-результат обоих вызовов. По умолчанию: непрерывный режим, ±2 Гс, 50 Гц, OSR 512.

Чтение
mag.readGauss()

Результат — компоненты поля в гауссах; 1 Гс = 100 мкТл. Для курса сначала выполните калибровку и настройку осей.

Калибровка
mag.calibrate(callback)

GyverMag использует минимумы/максимумы без полной матрицы искажений. Результат хранится в mag.cal; для повторного запуска сохраните его отдельно.

Альтернатива Arduino
QMC5883LCompass · MPrograms

QMC5883LCompass compass; затем Wire.setPins(21, 22); compass.init(); compass.setMode(0x01, 0x04, 0x00, 0x00). Это 50 Гц, ±2 Гс, OSR 512. Перед getX/Y/Z() вызывайте compass.read(); значения сырые, не мкТл.

Альтернатива MicroPython
QMC5883L · robert-hh

Нужны qmc5883l.py и mag_base.py. Импорт: from machine import Pin, I2C; from qmc5883l import QMC5883L. Создайте i2c = I2C(0, sda=Pin(21), scl=Pin(22), freq=100000), затем mag = QMC5883L(i2c). mag.read_scaled() возвращает X/Y/Z в гауссах и температурное значение.

Подтяжки SDA/SCL
Установлены на плате

Подтянуты к VDD. Номиналы в источниках различаются: схема 2,2 кОм, описание и фото 4,7 кОм; дополнительные резисторы без проверки не добавляйте.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты