ZX-CMPS3 Модуль электронного компаса

 
ZX-CMPS3 Модуль электронного компаса

ZX-CMPS3 Модуль электронного компаса

CMPS-03 – Модуль компаса


Более ранние версии можно определить по наличию в центре печатной платы керамического
резонатора с частотой 8МГц в серебристом корпусе. В новых версиях он отсутствует.

Плата модуля CMPS-03

Дополнительная плата коммутации с кнопкой калибровки и подтягивающими резисторами шины I2C


Версия 14 реализована в марте 2007 года


Обзор


Данный модуль компаса разработан специально для применения в роботах в качестве указателя для
целей навигации. Задача модуля — передача кода, соответствующего углу поворота корпуса робота
относительно направления на север. В компасе применены микросхемы датчиков магнитного поля
KMZ51 компании Philips (NXP), обладающие достаточной чувствительностью для определения
магнитного поля Земли..
Выходные сигналы двух этих датчиков, установленных перпендикулярно друг к другу используются
для расчета направления горизонтальной составляющей магнитного поля Земли. Прибор имеет
большое количество примеров его совместного применения с рядом популярных микроконтроллеров.


Подключение модуля компаса

CMPS-03 подключение

 

 

Выводы модуля


Вывод 1. +5 В. Модуль компаса питается постоянным напряжением 5 В и потребляет ток 25 мА
(номинал).
Имеется два варианта получения значения угла ориентации компаса.
На выводе 4 присутствует ШИМ сигнал, а на выводах 2 и 3 — сигналы интерфейса I2C.
 

Выводы 2 и 3 являются сигналами интерфейса I2C, обеспечивая прямое считывание значения угла
ориентации компаса. Если Вы не используете этот интерфейс для измерений, то эти выводы должны
быть подключены к плюсу источника питания (+5 В) через подтягивающие резисторы. Сопротивление,
резисторов должно быть близким к 47 кОм, его точность не очень критична
 

Вывод 4 Сигнал ШИМ — это сигнал, модулированный по ширине импульса, в котором длительность
высокого уровня сигнала пропорциональна текущему значению угла ориентации компаса.
Длительность (ширина) импульса находится в пределах от 1 мс (0 градусов) до 36,99 мс (359,9
градусов) или иначе говоря равна 100 мкс/градус + 1 мс смещение нуля. Пауза между соседними
импульсами (низкий уровень сигнала) 65 мс, то есть полная длительность одного такта сигнала лежит
в диапазоне от 66 мс до 102 мс. Импульсы формируются 16-ти разрядным таймером
микроконтроллера, обеспечивающим разрешение 1 мкс, однако не рекомендуется рассчитывать на
измерение таким способом с точностью лучше, чем 0,1 градус (10 мкс). При использовании для
измерения выхода ШИМ убедитесь в том что выводы интерфейса I2C SDA и SCL подключены к
плюсу источника питания +5 В через подтягивающие резисторы, так как эти выводы не имеют
встроенных резисторов на плате

Вывод 5 используется для индикации текущего процесса калибровки (активный уровень — низкий).
При желании к этому выводу можно подключить индикаторный светодиод , другой вывод которого
подключается к плюсу источника питания +5 В через резистор сопротивлением 390 Ом.
 

Вывод 6 предоставляет одну из двух возможностей калибровки компаса. Другой способ — запись
числа 255 (0xFF) в командный регистр. Полная инструкция по калибровке имеется ниже в этом
описании. Вывод калибровки имеет встроенный подтягивающий резистор, поэтому не требуется
применять каких-либо дополнительных действий после завершения процесса калибровки.
 

Выводы 7 и 8 в настоящее время не используются. Они имеют встроенные подтягивающие
резисторы и не требуют установки дополнительных компонентов.
 

Вывод 9 Общий вывод источника питания (0 В).


Интерфейс I2C


Протокол обмена данными по интерфейсу I2C такой же, как например протокол обмена с
популярными микросхемами памяти EEPROM, например 24C04

 

 

Вначале посылается стартовый бит. За ним следует адрес модуля (0XC0) с низким уровнем бита
read/write. Далее следует адрес регистра, который Вы хотите опросить. За ним следует повторный
стартовый бит и снова адрес модуля с высоким уровнем бита read/write (0XCI).
Далее Вы считываете один или два байта 8-ми или 16-ти разрядного регистра в виде постоянно
повторяющейся последовательности.
Данные 16-ти разрядного регистра передаются старшим битом вперед . Компас имеет массив из 16-ти
однобайтных регистров. Некоторые из них объединены в пары для организации 16-ти битового
хранения данных.

 

Регистр

 

 

 

Функция

0

 

 

 

Номер версии программного обеспечения (Версия 14 или выше)

1

 

 

 

Направление компаса как byte (в пределах 0-255 на полный оборот)

2,3

 

 

 

Направление компаса как Word (0-3599 в пределах 0-359,9 градусов)

4,5

 

 

 

Внутренний тест — Датчик1 — полученный дифференциальный сигнал как 16-

битовое значение со знаком (word)

6,7

 

 

 

Внутренний тест — Датчик2 — полученный дифференциальный сигнал как 16-

битовое значение со знаком (word)

8,9

 

 

 

Внутренний тест — Датчик1 необработанное измеренное значение — 16-битное

число со знаком (word)

10,11

 

 

 

Внутренний тест — Датчик1 необработанное измеренное значение — 16-битное

число со знаком (word)

12

 

 

 

Код разблокировки1 — коды требуются для изменения адреса I2C или для

восстановления заводской калибровки

13

 

 

 

Код разблокировки2

14

 

 

 

Код разблокировки3

15

 

 

 

Регистр команд (см. описание в тексте)

Регистр 0 содержит номер версии прошивки модуля компаса (версия 14 на момент написания этого
документа).
Регистр 1 содержит значение угла ориентации, преобразованное в число от 0 до 255. Это может
быть удобнее, чем значения 0-360 для некоторых приложений, так как использует только один байт
для отображения этого угла (тогда как 0-360 потребуют двух байт). Этого вполне достаточно если не
требуется высокая точность.
Регистры 2 и 3 (Старший байт первый) содержат 16-ти разрядное беззнаковое число integer в
диапазоне 0-3599. Оно соответствует значениям угла 0-359,9 радусов.
Ркгистры с 4 по 11 — регистры встроенного теста.
Регистры 8,9 и 10,11 содержат «сырые» данные измерений датчиков. Это сигналы, поступающие
напрямую от датчиков представляют собой исходную точку для всех внутренних расчетов для
определения угла ориентации компаса.
Регистры 12,13 и 14 предназначены для записи кодов разблокировки для изменения адреса I2C и
восстановления заводских параметров калибровки.
Регистр 15 — командный регистр

 

Диаграма работы интерфейса I2C модуля компаса CMPS-03


Интерфейс I2C не имеет встроенных на плате подтягивающих резисторов, поэтому требуется наличие
в схеме этих резисторов в любом месте, обычно они устанавливаются на master устройстве. Они
должны быть подключены на обеих линиях — SDA и SCL, но только в одном месте шины (не на
каждом модуле).
В случае обмена на частотах до 400 кГц рекомендуется использовать резистор сопротивлением 1,8
кОм, при частотах до 1 МГц сопротивление должно бить 1,2 кОм или даже 1 кОм.
Модуль компаса разработан для работы со стандартной частотой шины синхронизации (SCL) равной
100 кГц, однако эта частота может быть увеличена до 1 МГц с помощью следующих действий:
На скоростях выше 160 кГц центральный процессор не может ответить достаточно быстро, чтобы
прочитать данные I2C. Поэтому маленькая задержка в 50 мкс должна быть вставлена с любой
стороны последовательности передачи адреса регистра. Нигде больше в процессе обмена никаких
задержек не потребуется. Разработчиками модуль тестировался на скоростях обмена при частоте
SCL 1,3 МГц. Модуль компаса может работать только как Slave устройство на шине I2C и не может
быть Master.


Регистр команд


Регистр 15 является регистром команд. Всего команд немного — 0xC0-CE для изменения адреса I2C
и 0xF2 для восстановления данных заводской калибровки, что требует перечисленных ниже кодов
разблокирвки. Также команда 255 (0xFF) для запуска процедуры самокалибровки, для которой кодов
разблокировки не требуется.


Изменение адреса I2C с заводской установки по умолчанию 0xC0


Начиная с версии 14 теперь стало возможным изменение адреса I2C модуля компаса на один из
восьми возможных: . 0xC0, 0xC2. 0xC4. 0xC6,0xC8. 0xCA. 0xCC или 0xCE.
Это делается путем записи в регистры 12, 13 и 14 кодов разблокировки и нового адреса в регистр
команд 15. Помните при этом, что коды разблокировки для изменения адреса I2C отличаются от кодов
разблокировки для восстановления заводских установок калибровки.

Регистр 12 Регистр 13 Регистр 14 Регистр 15
0xA0 0xAA 0xA5 0xC2

В приведенном примере адрес изменится на 0xC2 и новый адрес станет активным немедленно. Не
забудьте нанести метку на компас CMPS03 с новым адресом.
Вы можете выполнить это за одну транзакцию интерфейса I2C, установив адрес регистра 12 и
записав четыре байта. Внутренний указатель регистра будет при этом инкрементироваться
автоматически.


Восстановление заводской калибровки


Начиная с версии 14 стало возможным восстановление заводских калибровочных установок. Для
этого нужно записать коды разблокировки в регистры 12, 13 и 14 и команды restore (0xF2) в
командный регистр 15. обратите внимание на то, что коды разблокировки для этого отличны от кодов
разблокировки дляизменения адреса I2C.

Регистр 12 Регистр 13 Регистр 14 Регистр 15
00x55 0x5A 0xA5 0xF2

 

Ориентация модуля компаса CMPS-03

Перед началом калибровки Вы должны точно знать направления на Север, Юг, запад и Восток.
Помните, что это магнитные полюса. А не географические.
Возьмите обычный магнитный компас и определите эти направления. В течение всего процесса
калибровки компас должен быть расположен горизонтально, не наклоняйте его.
Удалите все магнитные и металлические предметы подальше от компаса во время его калибровки, в
том числе и Ваши наручные часы..

Метод I2C


Для калибровки с использованием шины I2C Вы должны записать код 255 (0xff) в регистр 15 по
одному разу для каждой стороны света — Север, Восток, Юг и Запад.
Значение 255 автоматически стирается из регистра после окончания калибровки по каждому
направлению.
Последовательность установки сторон света может быть любой, но все четыре стороны должны быть
откалиброваны.
Например:

 

  1. Установите корпус компаса горизонтально, поверните его на север. Запишите число 255 врегистр 15. На выводе калибровки (вывод 5) установится низкий уровень сигнала.
  2. Установите корпус компаса горизонтально, поверните его на Восток, запишите код 255 в регистр 15.
  3. Установите корпус компаса горизонтально, поверните его на Юг, запишите код 255 в регистр15.
  4. Установите корпус компаса горизонтально, поверните его на Запад, запишите код 255 врегистр 15. На выводе калибровки (вывод 5) установится высокий уровень сигнала.

Вот и все.

Метод использования Выхода калибровки


Для запуска калибровки используется Вывод 6. Вывод 6 имеет встроенный подтягивающий резистор и
не требует дополнительных мер после завершения процесса калибровки.
Для запуска калибровки Вы должны подать низкий уровень на Вывод 6, после чего на него надо
подать высокий уровень — и так для всех четырех сторон света — Севера, Востока, Юга и Запада.
Для этого подойдет простая кнопка, подключенная к Выводу 6 и 0 В источника питания.
Последовательность выбора сторон света для калибровки может быть любой, но необходимо
откалибровать все четыре стороны.

Например:

 

  1. Установите корпус компаса горизонтально, повернув его на Север. Быстро нажмите и отпустите кнопку калибровки. На Выводе 5 появится низкий уровень.
  2. Установите корпус компаса горизонтально, повернув его на Восток. Быстро нажмите и отпустите кнопку калибровки.
  3. Установите корпус компаса горизонтально, повернув его на Юг Быстро нажмите и отпустите
  4. кнопку калибровки.
  5. Установите корпус компаса горизонтально, повернув его на Запад. Быстро нажмите и отпустите кнопку калибровки. На Выводе 5 появится высокий уровень.


Вот и все


Очень важно то, чтобы калибровка была выполнена для всех четырех сторон света (выполнены все
четыре шага описанного выше алгоритма).
Когда Вы запускаете Шаг 1 калибровки, на Выводе 5 появляется сигнал низкого уровня, который вновь
меняется на высокий уровень после окончания 4-го Шага калибровки. Для того. Чтобы видеть что
идет процесс калибровки Вы можете подключить светодиод в выводу 5 к плюсу источника питания
через резистор сопротивлением 390 Ом.
Перед запуском уровень должен быть высоким (светодиод не горит) .


Установочная схема модуля компаса CMPS03

Установочная схема модуля компаса CMPS-03

 

PDF версия руководства пользователя (Рус).