Мотор#
Введение#
Двигатели и группы двигателей управляют движением частей робота. Двигатель Motor управляет одним настроенным интеллектуальным двигателем IQ, а группа двигателей MotorGroup управляет несколькими настроенными интеллектуальными двигателями IQ одновременно, чтобы они двигались синхронно. Двигатели и группы двигателей могут использоваться для подъема руки, вращения клешни, вращения колеса или перемещения другой части конструкции. Два двигателя могут работать вместе как привод для перемещения и поворота всего робота.
Каждый двигатель или группа двигателей настраиваются в окне «Устройства». В зависимости от сборки, имена двигателей и групп двигателей могут меняться. На этой странице в качестве примеров используются имена motor_1 и motor_group_1 При необходимости замените их своими собственными настроенными именами.
По умолчанию, FORWARD вращает двигатель против часовой стрелки, а REVERSE вращает двигатель по часовой стрелке. Если двигатель настроен на реверс, направления вращения будут поменяны местами.
Существует множество способов программирования двигателей и групп двигателей. Ниже приведён список всех методов для работы с двигателями и группами двигателей:
Действия — Остановка и вращение двигателей и групп двигателей.
spin— Вращает двигатель или группу двигателей вперед или назад бесконечно.spin_for— Раскручивает двигатель или группу двигателей на заданное расстояние.spin_to_position— Раскручивает двигатель или группу двигателей до определенного положения.stop— Останавливает вращение двигателя или группы двигателей.
Мутаторы — Настройка параметров двигателя и группы двигателей.
set_velocity— Указывает двигателю или группе двигателей, с какой скоростью вращаться.set_max_torque— Задает, с какой силой двигатель или группа двигателей могут толкать во время вращения.set_position— Изменяет текущее положение двигателя или группы двигателей на новое значение.set_stopping— Задает способ остановки двигателя или группы двигателей: торможение, движение накатом или удержание.set_timeout— Устанавливает, сколько времени двигатель или группа двигателей будут пытаться завершить движение.set_reversed— Изменяет направление вращения двигателя.reset_position— Изменяет текущее положение двигателя или группы двигателей на 0.
Геттеры — Проверка состояния двигателя и группы двигателей.
position— Возвращает текущее положение двигателя или группы двигателей.velocity— Возвращает скорость вращения двигателя или группы двигателей.current— Возвращает значение электрического тока, потребляемого двигателем или группой двигателей.is_done— Возвращает значение логического значения, указывающее, завершил ли двигатель или группа двигателей движение.is_spinning— Возвращает значение логического типа, указывающее, вращается ли двигатель или группа двигателей.direction— Возвращает направление вращения двигателя или группы двигателей.power— Возвращает значение мощности, потребляемой двигателем или группой двигателей.torque— Возвращает значение крутящего момента, используемого двигателем или группой двигателей.efficiency— Возвращает, насколько эффективно двигатель или группа двигателей используют мощность.temperature— Возвращает температуру двигателя или группы двигателей.count— Возвращает количество двигателей в группе двигателей.get_timeout— Возвращает текущую продолжительность тайм-аута двигателя или группы двигателей.
Конструкторы — Вручную инициализируют и настраивают двигатели и группы двигателей.
Motor— Создает двигатель.MotorGroup— Создает группу двигателей.
Действия#
spin#
spin вращает двигатель или группу двигателей вперед или назад бесконечно. Двигатель или группа двигателей будут продолжать вращаться до тех пор, пока им не будет дано другое действие, например, вращение в другом направлении или остановка.
Usage:
motor_1.spin(direction, velocity, units)
Параметры |
Описание |
|---|---|
|
Направление вращения двигателя или группы двигателей: |
|
Необязательно. Скорость вращения от 0% до 100% при использовании |
|
Необязательно. Единица измерения скорости:
|
# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
Параметр spin_for spin_for вращает двигатель или группу двигателей на определенное расстояние. Вращение происходит относительно текущего положения двигателя или группы двигателей. Проект будет ждать, пока двигатель или группа двигателей не закончат вращение, прежде чем будет выполнена следующая строка кода.
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
Параметры |
Описание |
|---|---|
|
Направление вращения двигателя или группы двигателей: |
|
Расстояние, на которое вращается двигатель или группа двигателей. Это может быть целое число |
|
Дополнительно. Единица измерения расстояния: |
|
Необязательно. Скорость вращения от 0% до 100% при использовании |
|
Необязательно. Единица измерения скорости:
|
|
Необязательно.
|
# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)
spin_to_position#
spin_to_position вращает двигатель или группу двигателей в определенное положение.
Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. В начале проекта положение двигателя или группы двигателей устанавливается на 0 градусов. Положение двигателя или группы двигателей также можно установить с помощью метода set_position.
Значения положения являются абсолютными. Это означает, что направление вращения зависит от текущего положения двигателя или группы двигателей.
Например, если двигатель или группа двигателей начинают движение с 0 градусов и вращаются до положения 720 градусов, они совершат два оборота вперед. Если же они затем вращаются до положения 360 градусов, они совершат один оборот в обратном направлении, поскольку 360 меньше 720.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
Параметры |
Описание |
|---|---|
|
Значение положения, до которого будет вращаться двигатель или группа двигателей. Это может быть целое число |
|
Единица измерения положения: |
|
Необязательно. Скорость вращения от 0% до 100% при использовании |
|
Необязательно. Единица измерения скорости:
|
|
Необязательно.
|
# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)
# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)
stop#
stop останавливает вращение двигателя или группы двигателей.
Usage:
motor_1.stop(mode)
Параметры |
Описание |
|---|---|
|
Необязательно. Способ остановки двигателя или группы двигателей:
|
# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)
Мутаторы#
set_velocity#
Параметр set_velocity указывает двигателю или группе двигателей, с какой скоростью вращаться. Более высокое значение в процентах заставляет двигатель или группу двигателей вращаться быстрее, а более низкое — медленнее.
Каждый проект начинается с того, что каждый двигатель или группа двигателей по умолчанию вращаются со скоростью 50% от обычной.
Примечание: Более высокая скорость вращения приводит к более быстрому вращению двигателя или группы двигателей, но может снизить точность. Более низкая скорость вращения приводит к более медленному вращению двигателя или группы двигателей, но может повысить точность.
Usage:
motor_1.set_velocity(velocity, units)
Параметры |
Описание |
|---|---|
|
Скорость вращения от 0% до 100% при использовании |
|
Необязательно. Единица измерения скорости:
|
# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)
set_max_torque#
Крутящий момент показывает, насколько сильно двигатель или группа двигателей могут толкать или тянуть во время вращения.
set_max_torque устанавливает максимальный крутящий момент, который может использовать двигатель или группа двигателей.
Более высокий процент позволяет двигателю или группе двигателей прилагать больше усилий, например, при подъеме тяжелого предмета. Более низкий процент ограничивает силу, с которой двигатель или группа двигателей могут двигаться. Это может помочь защитить робота, если двигатель или группа двигателей застрянут или достигнут предела своего хода.
В начале каждого проекта крутящий момент каждого двигателя или группы двигателей по умолчанию составляет 50%.
Usage:
motor_1.set_max_torque(value, units)
Параметры |
Описание |
|---|---|
|
Максимальный крутящий момент, который может использовать двигатель или группа двигателей. Это может быть целое число |
|
Единица измерения крутящего момента:
|
# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)
set_position#
Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. set_position изменяет текущее положение двигателя или группы двигателей на новое значение.
Например, если двигатель или группа двигателей повернулись на 180 градусов, установка положения на 0 градусов сбросит это положение со 180 до 0 градусов. Затем двигатель или группа двигателей смогут вращаться в положениях, соответствующих этому новому значению.
Usage:
motor_1.set_position(position, units)
Параметры |
Описание |
|---|---|
|
Значение положения, которое нужно установить для двигателя или группы двигателей. Это может быть целое число |
|
Единица измерения положения: |
# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)
set_stopping#
set_stopping задает способ остановки двигателя или группы двигателей: торможение, движение накатом или удержание.
Usage:
motor_1.set_stopping(mode)
Параметры |
Описание |
|---|---|
|
Как двигатель или группа двигателей остановятся:
|
# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()
set_timeout#
Параметр set_timeout задает время, в течение которого двигатель или группа двигателей будут пытаться завершить движение. Если двигатель или группа двигателей не смогут завершить движение за это время, они прекратят попытки и перейдут к следующей строке кода. Это предотвращает застревание двигателя или группы двигателей на определенном этапе движения.
Usage:
motor_1.set_timeout(value, units)
Параметры |
Описание |
|---|---|
|
Время, в течение которого двигатель или группа двигателей могут попытаться завершить движение. Это может быть положительное число |
|
Необязательно. Единица времени:
|
# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)
# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)
set_reversed#
Параметр set_reversed изменяет направление вращения двигателя. Этот метод работает аналогично установке параметра reverse в значение True при создании Motor.
Примечание: Этот метод будет работать только с отдельным двигателем, а не с группой двигателей.
Usage:
motor_1.set_reversed(value)
Параметры |
Описание |
|---|---|
|
Изменение направления вращения двигателя:
|
# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)
reset_position#
reset_position изменяет текущее положение двигателя или группы двигателей на 0.
Usage:
motor_1.reset_position()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()
# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)
Геттеры#
position#
Положение двигателя или группы двигателей — это угол их вращения, измеряемый в DEGREES или TURNSОдин оборот равен 360 градусам. position возвращает текущее положение двигателя или группы двигателей.
В начале проекта положение двигателя или группы двигателей устанавливается на 0 градусов. Если двигатель или группа двигателей вращается на один оборот вперед, положение будет равно 360 градусам или 1 обороту. Если двигатель или группа двигателей вращается в другом направлении, положение будет отрицательным.
Usage:
motor_1.position(units)
Параметры |
Описание |
|---|---|
|
Дополнительно. Устройство для возврата двигателя или группы двигателей в исходное положение: |
# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())
velocity#
Значение velocity (скорость вращения) возвращает значение скорости вращения двигателя или группы двигателей.
Положительное значение означает, что двигатель или группа двигателей вращаются в прямом направлении. Отрицательное значение означает, что они вращаются в обратном направлении.
Usage:
motor_1.velocity(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения скорости для возврата:
|
current#
current возвращает величину электрического тока, потребляемого двигателем или группой двигателей, измеряемую в амперах от 0,0 до 1,2 А. Ток — это количество электричества, протекающего через двигатель или группу двигателей.
Более высокое значение тока означает, что двигатель или группа двигателей потребляют больше электроэнергии. Это может произойти, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают какой-либо объект или пытаются сдвинуться с места, когда они застряли.
Это можно использовать для проверки того, испытывает ли двигатель или группа двигателей трудности во время движения. Если ток остается высоким, двигатель может нагреваться или потреблять энергию менее эффективно.
Usage:
motor_1.current(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Текущая единица измерения для возврата:
|
is_done#
is_done возвращает значение логического типа (Boolean), указывающее, завершилось ли движение двигателя или группы двигателей. Это можно использовать для управления временем выполнения других действий в зависимости от движения двигателя.
True— Двигатель или группа двигателей завершили движение.False— Двигатель или группа двигателей все еще находятся в движении.
Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.
Usage:
motor_1.is_done()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
is_spinning#
is_spinning возвращает значение логического типа (Boolean), указывающее, вращается ли двигатель или группа двигателей. Это можно использовать для управления синхронизацией других действий в зависимости от движения двигателя.
True— Двигатель или группа двигателей вращаются.False— Двигатель или группа двигателей не вращаются.
Этот метод работает совместно со следующими методами Motion, имеющими параметр wait : spin_for и spin_to_position.
Usage:
motor_1.is_spinning()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
direction#
Параметр direction возвращает текущее направление вращения двигателя или группы двигателей.
FORWARDREVERSE
Usage:
motor_1.direction()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
power#
power (мощность) возвращает значение мощности двигателя или группы двигателей в ваттах. Мощность показывает, как быстро двигатель или группа двигателей потребляет энергию.
Более высокое значение мощности означает, что двигатель или группа двигателей потребляют энергию быстрее. Это может происходить, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают объект или пытаются сдвинуться с места, когда они застряли.
Это можно использовать для сравнения движений или проверки того, испытывает ли двигатель или группа двигателей трудности. Если мощность остается высокой, двигатель может нагреваться или потреблять энергию менее эффективно.
Usage:
motor_1.power()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
torque#
Крутящий момент показывает, насколько сильно двигатель или группа двигателей скручиваются, толкают или тянут во время вращения.
Значение torque (мощность) возвращает величину крутящего момента, используемого двигателем или группой двигателей.
Более высокое значение крутящего момента означает, что двигатель или группа двигателей прилагают больше усилий для толкания или тяги. Это может происходить, когда двигатель или группа двигателей поднимают что-то тяжелое, толкают какой-либо объект или пытаются сдвинуться с места, когда они застряли.
Это можно использовать для проверки того, испытывает ли двигатель или группа двигателей трудности, или для сравнения того, какое усилие требуется для выполнения различных движений.
Чтобы задать крутящий момент двигателя или группы двигателей, используйте set_max_torque.
Usage:
motor_1.torque(units)
Параметры |
Описание |
|---|---|
|
Единица измерения крутящего момента для возврата:
|
efficiency#
Показатель эффективности efficiency отражает, насколько эффективно двигатель или группа двигателей используют мощность, в процентах от 0% до 100%.
КПД показывает, какая часть мощности двигателя или группы двигателей используется для движения. Более высокое значение КПД означает, что большая часть мощности двигателя или группы двигателей используется для движения. Более низкое значение КПД может наблюдаться, когда двигатель или группа двигателей работают с большой нагрузкой, но мало двигаются, например, когда они застряли или толкают какой-либо объект.
Это можно использовать для сравнения движений или проверки того, не расходует ли двигатель или группа двигателей энергию впустую, вместо того чтобы использовать ее для движения.
Usage:
motor_1.efficiency()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
temperature#
temperature возвращает температуру двигателя или группы двигателей.
Температура двигателя показывает, насколько нагрет двигатель или группа двигателей. Более высокая температура означает, что двигатель или группа двигателей нагреваются во время работы. Для обеспечения полной производительности температура двигателя должна оставаться ниже 55 градусов Цельсия.
Если двигатель или группа двигателей перегреваются, они снижают максимальный ток для самозащиты. При температуре 70 градусов Цельсия двигатель перестает работать, пока не остынет.
Это можно использовать для проверки того, не перегревается ли двигатель или группа двигателей во время многократных движений, длительных поездок или при воздействии на какой-либо объект.
Usage:
motor_1.temperature(units)
Параметры |
Описание |
|---|---|
|
Необязательно. Единица измерения температуры для возврата:
|
count#
Функция count возвращает количество двигателей в группе двигателей.
Примечание: Этот метод будет работать только с группой двигателей, а не с отдельным двигателем.
Usage:
motor_group_1.count()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
get_timeout#
get_timeout возвращает текущее время ожидания двигателя или группы двигателей в миллисекундах.
Примечание: Этот метод будет работать только с отдельным двигателем, а не с группой двигателей.
Usage:
motor_1.get_timeout()
Параметры |
Описание |
|---|---|
Этот метод не имеет параметров. |
Строители#
Конструкторы используются для ручного создания объектов Motor и MotorGroup вне окна «Устройства».
Motor#
Двигатель Motor создает двигатель.
Usage:
motor_1 = Motor(smartport, gears, reverse)
Параметр |
Описание |
|---|---|
|
Интеллектуальный порт, к которому подключен двигатель, обозначается как |
|
Необязательно. Передаточное число двигателя:
|
|
Необязательный параметр. Определяет, будет ли направление вращения двигателя изменено на противоположное:
|
# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)
Motor Group#
MotorGroup создает группу двигателей.
Usage:
motor_group_1 = MotorGroup(motors)
Параметр |
Описание |
|---|---|
|
Названия ранее созданных объектов |
# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)
# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)