Модуль — Мотор-редуктор с управляющим контроллером, I2C-flash.
Техническое описание: Данная страница содержит подробное техническое описание модуля — Мотор-редуктор с управляющим контроллером, I2C-flash и раскрывает работу с модулем через его регистры.
Ознакомиться с пользовательским описанием модуля и примерами работы с библиотекой iarduino_I2C_Motor можно на странице Wiki — Мотор-редуктор с управляющим контроллером, I2C-flash.
- Назначение:
- Описание:
- Выводы модуля:
- Характеристики:
- Установка адреса:
- Регистр 0x0A «MAX_RPM_DEV» — максимальный % отклонения скорости:
- Регистр 0x10 «FLG» — содержит статусные флаги:
- Регистр 0x11 «MAGNET» — содержит количество полюсов кольцевого магнита:
- Регистры 0x12-0x14 «REDUCER» — содержат передаточное отношение редуктора:
- Регистры 0x15-0x16 «SET_PWM» — задают скорость через коэффициент ШИМ:
- Регистры 0x17-0x18 «SET_RPM» — задают скорость через обороты в минуту:
- Регистры 0x19-0x1A «GET_RPM» — содержат количество оборотов в минуту:
- Регистры 0x1B-0x1D «GET_REV» — содержат количество совершённых оборотов:
- Регистры 0x1E-0x20 «STOP_REV» — содержат количество оборотов до остановки:
- Регистры 0x21-0x23 «STOP_TMR» — содержат время до остановки вала:
- Регистр 0x24 «STOP» — содержит биты остановки вала:
- Регистр 0x25 «BITS_2» — содержит биты инверсии направления вращения:
- Регистр 0x26 «VOLTAGE» — содержит номинальное напряжение электродвигателя:
Назначение:
Модуль — Мотор-редуктор с управляющим контроллером, I2C-flash — является устройством состоящим из коллекторного двигателя с редуктором и платы управления, подключаемой к шине I2С.
К одной шине I2C можно подключить более 100 модулей. Адрес модуля на шине I2C (по умолчанию 0x09) назначается программно и хранится в его энергонезависимой памяти.
Описание:
Модуль построен на базе двигателя GM12-N20, редуктора, микроконтроллера STM32F030F4 и драйвера DRV8833, снабжен многополюсным магнитным валом, датчиками Холла, и собственным стабилизатором напряжения. Модуль способен поддерживать заданную скорость и направление вращения вала, сверяясь с показаниями датчиков Холла. Модуль самостоятельно обрабатывает полученные данные сохраняя их в своих регистрах. Доступ к регистрам модуля осуществляется по шине I2C.
С помощью регистров модуля можно выполнять следующие действия:
- Изменить адрес данного модуля на шине I2C. При изменении адреса, можно указать, что новый адрес должен сохраниться в flash память модуля, а значит адрес сохранится и после отключения питания.
- Включить / отключить внутреннюю подтяжку линий шины I2C (по умолчанию включена). Состояние подтяжки линий шины I2C автоматически сохраняется в flash память модуля, а значит состояние линий сохранится после отключения и включения питания.
- Узнать версию прошивки модуля.
- Указать передаточное отношение редуктора мотора, от 0.01 до 167’772.15.
- Указать количество полюсов (одной полярности) магнитного вала, от 1 до 255.
- Указать наличие инверсии редуктора и тип подключения мотора.
- Задать направление вращения вала при положительной скорости, по/против ч.с.
- Задать скорость вращения вала указав коэффициент заполнения ШИМ, от 0 до ±4095.
При отрицательных значениях, вал будет вращаться в противоположном направлении. - Задать скорость вращения вала указав количество оборотов в минуту, от 0 до ±32’767.
При отрицательных значениях, вал будет вращаться в противоположном направлении.
Скорость будет поддерживаться модулем на основании показаний с датчиков Холла. - Узнать каким образом задана скорость вращения вала (указанием ШИМ или количеством оборотов в минуту).
- Задать максимально допустимый % (от 0 до 100) отклонения реальной скорости от заданной.
Указанное значение сохранится в flash память модуля.
На плате модуля есть красный светодиод, который сигнализирует о том, что заданная скорость вращения вала отличается от реальной больше чем на указанный процент. - Узнать отличается ли заданная скорость вращения вала от реальной больше допустимого %.
- Узнать текущую скорость вращения вала, от 0 до ±32’767 об.мин. (RPM).
Скорость вращения вала определяется по показаниям с датчиков Холла, даже если мотор отключён, а вал вращается по средством внешних сил. - Узнать количество совершённых полных оборотов вала, от 0.00 до 167’772.15, значение является беззнаковым, оно учитывает обороты, как в прямом, так и в обратном направлении. Регистр обнуляется при переполнении.
Количество оборотов вала определяется по показаниям с датчиков Холла, даже если мотор отключён, а вал вращается по средством внешних сил. - Остановить двигатель и/или указать тип его остановки. Двигатель может быть остановлен двумя способами: отключением мотора (свободный ход) или торможением (стопор).
Заданный тип применяется ко всем последующим остановкам двигателя. - Остановить двигатель через заданное количество полных оборотов вала, от 0 до 167’772.15, значение является беззнаковым, оно учитывает обороты, как в прямом, так и в обратном направлении. Значение регистра уменьшается по мере вращения вала, при достижении 0 мотор останавливается.
- Остановить двигатель через заданное количество миллисекунд, от 0 до 16’777’215. Значение регистра уменьшается с каждой миллисекундой, при достижении 0 мотор останавливается.
- Узнать остановлен ли мотор.
- Узнать есть ли у остановленного вала возможность свободного хода, или он застопорен.
- Узнать о наличии ошибки драйвера (перегрузка по току, перегрев, низкое напряжение).
Выводы модуля:
Модуль содержит 2 разъема расположенные по бокам платы.
С одной стороны платы расположен разъем I2C состоящий из 4 выводов, для подключения модуля к шине I2C:
- SCL — вход/выход линии тактирования шины I2C.
- SDA — вход/выход линии данных шины I2C.
- 5V — вход питания логической части драйвера +5 В (номинально), или 3,3 В.
- GND — общий вывод питания.
С другой стороны расположен разъём VМОТ состоящий из 2 выводов, для подключения питания мотора.
- +VМОТ — вход питания мотора от +2,7 до +12 В постоянного тока.
- -VМОТ — общий вывод питания мотора, внутрисхемно соединён с выводом GND шины I2C.
Характеристики:
- Напряжение питания логики: 5 В (номинально), или 3,3 В.
- Диапазон напряжений мотора поддерживаемый драйвером: 2,7 В . 12 В.
- Максимальный ток мотора поддерживаемый драйвером: до 3 А (пиковый ток до 4 А).
- Драйвер оснащён защитой от перегрева и перегрузки по току.
- Интерфейс: I2C.
- Скорость шины I2C: 100 кбит/с.
- Адрес на шине I2C: устанавливается программно (по умолчанию 0x09).
- Уровень логической 1 на линиях шины I2C: Vcc.
- Рабочая температура: от -20 до +70 °С.
- Габариты: 45 х 40 мм.
- Вес: 32 г.
Установка адреса:
Модуль — Мотор-редуктор с управляющим контроллером, I2C-flash относится к серии «Flash» модулей. Все модули данной серии позволяют назначать себе адрес для шины I2C, как временно (новый адрес действует пока есть питание), так и постоянно (новый адрес сохраняется в энергонезависимую память и действует даже после отключения питания). По умолчанию все модули серии «Flash» поставляются с адресом 0x09.
Читайте также: Сверлить отверстие в валу
Регистр 0x0A «MAX_RPM_DEV» — максимальный % отклонения скорости:
Регистр только для записи.
Значение регистра сохраняется после отключения питания.
- MAX_RPM_DEV8 — Число от 0 до 100 задаёт максимально допустимый процент отклонения реальной скорости от заданной, при котором устанавливается флаг ошибки скорости.
Значение регистра не влияет на скорость, а определяет границу установки флага ошибки.
Значение по умолчанию 0x0A = 10%.
Если записать значение больше 100% (больше 0x64) то в регистре появится 0x64 = 100%. - Если скорость вращения вала отличается от заданной регистрами 0x17-0x18 «SET_RPM» более чем на указанный процент, то в регистре 0x10 «FLG» устанавливается флаг ошибки скорости «FLG_RPM_ERR», а на плате модуля включается красный светодиод.
- Снижение отличия заданной и реальной скорости ниже указанного процента, приводит к сбросу флага «FLG_RPM_ERR» и отключению красного светодиода на плате модуля.
Регистр 0x10 «FLG» — содержит статусные флаги:
Регистр только для чтения.
- FLG_RPM_EN — Флаг указывает на то, что скорость вращения вала задана количеством оборотов в минуту 0x17-0x18 «SET_RPM». Если флаг сброшен, значит скорость вращения вала задана коэффициентом заполнения ШИМ 0x15-0x16 «SET_PWM».
- FLG_RPM_ERR — Флаг указывает на ошибку скорости. Флаг устанавливается если скорость вращения вала задана количеством оборотов в минуту 0x17-0x18 «SET_RPM» и эта скорость отличается от реальной скорости вращения вала более чем на 0x0A «MAX_RPM_DEV» %.
- FLG_DRV_ERR — Флаг указывает на ошибку драйвера. Флаг устанавливается при перегрузке по току мотора, перегреве драйвера или низком уровне напряжения питания мотора.
- FLG_STOP — Флаг информирует об остановке вала. Флаг устанавливается при установке бита «BIT_STOP» регистра 0x24 «STOP», при задании нулевой скорости, или при установке коэффициента заполнения ШИМ равного нулю.
- FLG_NEUTRAL — Флаг информирует о наличии свободного хода у остановленного вала.
Флаг устанавливается при установке бита «BIT_NEUTRAL» регистра 0x24 «STOP».
Если флаг установлен значит при остановке мотора, вал можно вращать.
Если флаг сброшен, значит при остановке осуществляется торможение (вал застопорен).
Регистр 0x11 «MAGNET» — содержит количество полюсов кольцевого магнита:
Регистр для чтения и записи.
- MAGNET7 — Количество полюсов магнитного вала (одной полярности), значение от 1 до 255. Данное значение можно изменить при смене магнитного вала модуля, который оказывает влияние на показания датчиков Холла.
- Запись нулевого значения означает отсутствие кольцевого магнита на роторе мотора или отсутствие датчиков Холла. При этом перестанут работать следующие регистры:
- 0x17-0x18 «SET_RPM» — указание скорости через обороты в минуту.
- 0x19-0x1A «GET_RPM» — получение скорости через обороты в минуту.
- 0x1B-0x1D «GET_REV» — получение количества совершённых полных оборотов вала.
- 0x1E-0x20 «STOP_REV» — количество оборотов вала оставшихся до остановки мотора.
Регистры 0x12-0x14 «REDUCER» — содержат передаточное отношение редуктора:
Регистры для чтения и записи.
- REDUCER23 — Передаточное отношение редуктора в сотых долях, от 1 (что соответствует отношению 1:0.01) до 16’777’215 (что соответствует отношению 1:167’772.15). Передаточное отношение записанное в регистры «REDUCER23», «REDUCER15», «REDUCER7» применяется после записи старшего байта «REDUCER23». Данное значение можно изменить при смене редуктора мотора, на редуктор с другим передаточным отношением.
Если записать значение 0x000000 то в регистрах появится 0x000064 (=100), что соответствует передаточному отношению 1:1.00 (редуктор отсутствует).
Если записать значение от 0x000001 до 0x000064, значит редуктор повышающий.
Регистры 0x15-0x16 «SET_PWM» — задают скорость через коэффициент ШИМ:
Регистры для чтения и записи.
- SET_PWM15 — Коэффициент заполнения ШИМ от 0 до ±4095. Коэффициент определяет скорость вращения вала, где 0 — остановка, а ±4095 максимальная скорость.
При отрицательных значениях, вал будет вращаться в противоположном направлении.
Коэффициент заполнения ШИМ записанный в регистры «SET_PWM15», «SET_PWM7» применяется после записи старшего байта «SET_PWM15». - Запись любого значения приводит к обнулению регистров задания скорости количеством оборотов в минуту 0x17-0x18 «SET_RPM» и сбросу флагов «FLG_RPM_EN», «FLG_RPM_ERR» регистра 0x10 «FLG».
Если записать значение выходящее за пределы диапазона ±4095 то в регистрах появится значение 4095 с сохранением записанного знака. - Если записать значение 0, то будет установлен бит «BIT_STOP» регистра 0x24 «STOP», что приведёт к остановке вала и установке флага «FLG_STOP» регистра 0x10 «FLG».
Регистры 0x17-0x18 «SET_RPM» — задают скорость через обороты в минуту:
Регистры для чтения и записи.
- SET_RPM15 — Скорость вращения вала заданная количеством оборотов в минуту, от 0 до ±32’767 об.мин. (RPM). При отрицательных значениях, вал будет вращаться в противоположном направлении.
Скорость записанная в регистры «SET_RPM15», «SET_RPM7» применяется после записи старшего байта «SET_RPM15». - Запись не нулевого значения приводит к установке флага «FLG_RPM_EN» регистра 0x10 «FLG», указывающего что скорость задана количеством оборотов в минуту.
- Заданная скорость поддерживается модулем на основании показаний с датчиков Холла.
Если заданная скорость вращения вала отличается от реальной скорости вращения вала более чем на 0x0A «MAX_RPM_DEV» процентов, то в регистре 0x10 «FLG» устанавливается флаг ошибки скорости «FLG_RPM_ERR», а на плате модуля включается красный светодиод.
В противном случае флаг «FLG_RPM_ERR» регистра 0x10 «FLG» сбрасывается, а красный светодиод на плате модуля отключается. - Если записать значение 0, то будет сброшен флаг «FLG_RPM_EN» регистра 0x10 «FLG» и установлен бит «BIT_STOP» регистра 0x24 «STOP», что приведёт к остановке вала и установке флага «FLG_STOP» регистра 0x10 «FLG».
Регистры 0x19-0x1A «GET_RPM» — содержат количество оборотов в минуту:
Регистры только для чтения.
- GET_RPM15 — Реальное количество оборотов вала в минуту, от 0 до ±32’767 об.мин. (RPM).
Скорость вращения вала определяется по показаниям с датчиков Холла, даже если мотор отключён, а вал вращается по средством внешних сил. Отрицательные значения означают что вал вращается в противоположном направлении.
Читайте также: Сборка вторичного вала кпп ямз 236 схема
Регистры 0x1B-0x1D «GET_REV» — содержат количество совершённых оборотов:
Регистры только для чтения.
- GET_REV23 — Количество совершённых оборотов вала в сотых долях полного оборота, от 0 (0.00 оборотов) до 16’777’215 (167’772,15 полных оборотов).
Значение является беззнаковым, оно учитывает обороты, как в прямом, так и в обратном направлении (складывая их без учёта направления).
Количество оборотов вала определяется по показаниям с датчиков Холла, даже если мотор отключён, а вал вращается по средством внешних сил. - Обнулить количество совершённых оборотов (0x1B-0x1D «GET_REV») можно записав любое значение в регистры 0x1E-0x1F «STOP_REV».
Регистры 0x1E-0x20 «STOP_REV» — содержат количество оборотов до остановки:
Регистры для чтения и записи.
- STOP_REV23 — Количество полных оборотов до остановки вала. Значение хранится в сотых долях полного оборота, от 0 (0.00 оборотов) до 16’777’215 (167’772,15 полных оборотов).
Значение является беззнаковым, оно учитывает обороты, как в прямом, так и в обратном направлении.
Количество полных оборотов записанное в регистры «STOP_REV23», «STOP_REV15», «STOP_REV7» применяется после записи старшего байта «STOP_REV23». - Запись не нулевого значения включает отсчёт оборотов до остановки вала. При вращении вала, модуль уменьшает значение регистров (0x1E-0x20 «STOP_REV») на совершённое количество оборотов, а при достижении 0 устанавливает бит «BIT_STOP» регистра 0x24 «STOP», что приводит к остановке вала и установке флага «FLG_STOP» регистра 0x10 «FLG».
- Запись нулевого значения отключает отсчёт оборотов без установки бита «BIT_STOP» регистра 0x24 «STOP», что не приводит к остановке вала.
- Запись любого значения (в том числе и нулевого) приводит к обнулению регистров количества совершённых оборотов 0x1B-0x1D «GET_REV».
- Количество оборотов вала определяется по показаниям с датчиков Холла, даже если мотор отключён, а вал вращается по средством внешних сил.
- Записать новое значение в регистры (или переписать их) можно в любое время, как при вращающемся, так и при остановленном вале. Если модуль управляет колёсами, то зная их радиус, можно определить количество полных оборотов требуемое для движения на заданное расстояние.
Если записать количество оборотов, при остановленном вале, а потом запустить вал (указав скорость), вы будите точно знать путь пройденный с момента запуска вала до его остановки.
Если записать количество оборотов при вращающемся вале, вы будите точно задать путь пройденный с момента записи количества оборотов до остановки вала.
Регистры 0x21-0x23 «STOP_TMR» — содержат время до остановки вала:
Регистры для чтения и записи.
- STOP_TMR23 — Количество миллисекунд до остановки вала, от 0 до 16’777’215 (16’777,215 сек).
Время записанное в регистры «STOP_TMR23», «STOP_TMR15», «STOP_TMR7» применяется после записи старшего байта «STOP_TMR23». - Запись не нулевого значения включает отсчёт времени до остановки вала (даже если вал не вращается). Модуль уменьшает значение регистров (0x21-0x23 «STOP_TMR») на количество пройденных миллисекунд, а при достижении 0 устанавливает бит «BIT_STOP» регистра 0x24 «STOP», что приводит к остановке вала и установке флага «FLG_STOP» регистра 0x10 «FLG».
- Запись нулевого значения отключает отсчёт времени без установки бита «BIT_STOP» регистра 0x24 «STOP», что не приводит к остановке вала.
- Записать новое значение в регистры (или переписать их) можно в любое время, как при вращающемся, так и при остановленном вале. Если модуль управляет колёсами, то задав скорость оборотами в секунду, можно определить время требуемое для движения на заданное расстояние.
Регистр 0x24 «STOP» — содержит биты остановки вала:
Регистр только для записи.
- BIT_STOP — бит остановки вала. Сброс бита в 0 не приводит ни к каким действиям. Установка бита приводит к остановке вала, сбросу регистров задания скорости 0x15-0x16 «SET_PWM» и 0x17-0x18 «SET_RPM», сбросу флагов «FLG_RPM_EN» и «FLG_RPM_ERR» регистра 0x10 «FLG» и установке флага «FLG_STOP».
- BIT_NEUTRAL — бит определяет поведение вала при остановке. Изменение бита «BIT_NEUTRAL» приводит к аналогичному изменению флага «FLG_NEUTRAL» регистра 0x10 «FLG».
Если флаг установлен значит при остановке мотора, вал можно вращать.
Если флаг сброшен, значит при остановке осуществляется торможение (вал застопорен). - Торможение (стопор) вала осуществляется путём замыкания обмоток двигателя, что приводит к сопротивлению поворота вала внешними силами.
Регистр 0x25 «BITS_2» — содержит биты инверсии направления вращения:
Регистр для чтения и записи.
- BIT_DIR_CKW — Бит вращения вала модуля по часовой стрелке, при положительной скорости. Данный бит позволяет установить два модуля по бокам устройства, например, по левому и правому борту машины. Для левого модуля бит сбрасывается, а для правого устанавливается. При указании положительной скорости для обоих модулей, колёса установленные на их валы будут вращаться в направлении по ходу машины. А при указании отрицательной скорости, оба колеса будут вращаться в обратном направлении. При этом не важно как указывалась скорость, при помощи ШИМ или указанием количества оборотов в минуту.
По умолчанию бит установлен в 1. - BIT_INV_RDR — Бит инверсии редуктора. Бит указывает на то, что вал редуктора вращается в сторону противоположную вращению ротора мотора.
Значение по умолчанию зависит от используемого в модуле редуктора. - BIT_INV_PIN — Бит инверсии подключения проводов мотора. Бит указывает на то, что ротор мотора вращается против часовой стрелки.
Значение по умолчанию зависит от типа подключения мотора в модуле.
Регистр 0x26 «VOLTAGE» — содержит номинальное напряжение электродвигателя:
Регистр для чтения и записи.
- VOLTAGE7 — Номинальное напряжение электродвигателя. Значение хранится в десятых долях Вольт, от 0 (0.0 В) до 255 (25,5 В).
Значение является беззнаковым, оно носит исключительно информационный характер.

