Motor#

Introducción#

Los motores y los grupos de motores controlan cómo se mueven las partes de un robot. Un Motor controla un Motor Inteligente IQ configurado, mientras que un MotorGroup controla múltiples Motores Inteligentes IQ configurados juntos para que se muevan en tándem. Los motores y los grupos de motores se pueden usar para levantar un brazo, girar una garra, girar una rueda o mover otra parte de una construcción. Dos motores pueden trabajar juntos como un tren motriz para mover y girar todo el robot.

Cada motor o grupo de motores está configurado en la ventana Dispositivos. Dependiendo de la construcción, los nombres del motor y del grupo motor pueden cambiar. Esta página utiliza motor_1 y motor_group_1 como nombres de ejemplo. Reemplácelos con sus propios nombres configurados según sea necesario.

Un motor VEX IQ (2ª generación) que muestra la dirección hacia adelante indicada por un signo más y una flecha que indica que está girando a la izquierda o en sentido contrario a las agujas del reloj. Un motor VEX IQ (2ª generación) que muestra la dirección inversa indicada por un signo menos y una flecha que indica que está girando a la derecha o en el sentido de las agujas del reloj.

De forma predeterminada, el FORWARD hace girar un motor en sentido antihorario y el REVERSE hace girar un motor en sentido horario. Si un motor está configurado para retroceder, esas direcciones se cambiarán.

Hay muchas maneras de codificar motores y grupos de motores. A continuación se muestra una lista de todos los métodos de Motor y MotorGroup:

Acciones — Parar y girar motores y grupos de motores.

  • spin — Hace girar un motor o grupo de motores hacia adelante o hacia atrás para siempre.

  • spin_for — Hace girar un motor o grupo de motores durante una distancia especificada.

  • spin_to_position — Hace girar un motor o grupo de motores a una posición específica.

  • stop — Detiene el giro de un motor o grupo de motores.

Mutadores: ajuste la configuración del motor y del grupo de motores.

  • set_velocity: le dice a un motor o grupo de motores qué tan rápido debe girar.

  • set_max_torque — Establece la fuerza con la que se permite que un motor o grupo de motores empuje mientras gira.

  • set_position — Cambia la posición actual del motor o grupo de motores a un nuevo valor.

  • set_stopping — Establece cómo un motor o grupo de motores dejará de moverse: frenando, deslizándose o sosteniéndose.

  • set_timeout — Establece cuánto tiempo un motor o grupo de motores intentará terminar un movimiento.

  • set_reversed — Cambia si la dirección de giro de un motor se invierte.

  • reset_position — Cambia la posición actual de un motor o grupo de motores a 0.

Getters: verifique el estado del motor y del grupo de motores.

  • position — Devuelve la posición actual del motor o grupo de motores.

  • velocity: devuelve la velocidad a la que gira el motor o el grupo de motores.

  • current: Devuelve la cantidad de corriente eléctrica que utiliza el motor o el grupo de motores.

  • is_done — Devuelve si el motor o grupo de motores ha terminado de moverse, como un valor booleano.

  • is_spinning — Devuelve si el motor o grupo de motores está girando, como un valor booleano.

  • direction — Devuelve la dirección en la que el motor o grupo de motores está girando.

  • power — Devuelve la cantidad de potencia que está utilizando el motor o grupo de motores.

  • torque — Devuelve la cantidad de torque que está utilizando el motor o grupo de motores.

  • efficiency: Devuelve la eficiencia con la que el motor o grupo de motores está utilizando la energía.

  • temperature — Devuelve la temperatura del motor o grupo de motores.

  • count — Devuelve el número de motores en un grupo de motores.

  • get_timeout — Devuelve la duración actual del tiempo de espera del motor o grupo de motores.

Constructores — Inicializar y configurar manualmente motores y grupos de motores.

Acciones#

spin#

El giro spin motores seguirá girando hasta que se le dé otra acción, como girar en una dirección diferente o detenerse.

Usage:
motor_1.spin(direction, velocity, units)

Parámetros

Descripción

direction

La dirección en la que gira el motor o el grupo de motores: FORWARD O HACIA REVERSE.

velocity

Opcional. La velocidad para girar de 0% a 100% cuando se usa PERCENT. Esto puede ser un integer o decimal (float).

units

Opcional. La unidad de velocidad:

  • PERCENT
  • RPM — Rotaciones por minuto
  • VelocityUnits.DPS — Grados por segundo

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

spin_for hace girar un motor o grupo de motores para una distancia específica. El giro es relativo a la posición actual del motor o grupo de motores. El proyecto esperará hasta que el motor o grupo de motores termine de girar antes de que se ejecute la siguiente línea de código.

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Parámetros

Descripción

direction

La dirección en la que gira el motor o el grupo de motores: FORWARD O HACIA REVERSE.

angle

La distancia que gira el motor o el grupo de motores. Esto puede ser un integer o decimal (float).

units

Opcional. La unidad de distancia: DEGREES (predeterminado) o TURNS.

velocity

Opcional. La velocidad para girar de 0% a 100% cuando se usa PERCENT. Esto puede ser un integer o decimal (float).

units_v

Opcional. La unidad de velocidad:

  • PERCENT
  • RPM (predeterminado) — Rotaciones por minuto

wait

Opcional.

  • wait=True (predeterminado) — Hace que el proyecto espere hasta que el motor o grupo de motores termine de girar antes de que se ejecute la siguiente línea de código.
  • wait=False — Hace que la siguiente línea de código se ejecute de inmediato.

# 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 hace girar un motor o grupo de motores a una posición específica.

La posición de un motor o grupo motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro equivale a 360 grados. Al comienzo de un proyecto, la posición del motor o grupo de motores se establece en 0 grados. La posición del motor o del grupo de motores también se puede configurar utilizando el método set_position.

Los valores de posición son absolutos. Esto significa que la dirección del giro depende de la posición actual del motor o del grupo de motores.

Por ejemplo, si el motor o grupo de motores arranca a 0 grados y gira a una posición de 720 grados, girará hacia adelante dos vueltas. Si luego gira a una posición de 360 grados, girará en reversa una vuelta, porque 360 es menos de 720.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Parámetros

Descripción

rotation

El valor de posición al que girará el motor o grupo de motores. Esto puede ser un integer o decimal (float).

units

La unidad de posición: DEGREES o TURNS.

velocity

Opcional. La velocidad para girar de 0% a 100% cuando se usa PERCENT. Esto puede ser un integer o decimal (float).

units_v

Opcional. La unidad de velocidad:

  • PERCENT
  • RPM — Rotaciones por minuto
  • VelocityUnits.DPS — Grados por segundo

wait

Opcional.

  • wait=True (predeterminado) — Hace que el proyecto espere hasta que el motor o grupo de motores termine de girar antes de que se ejecute la siguiente línea de código.
  • wait=False — Hace que la siguiente línea de código se ejecute de inmediato.

# 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 detiene el giro de un motor o grupo de motores.

Usage:
motor_1.stop(mode)

Parámetros

Descripción

mode

Opcional. Cómo se detendrá el motor o el grupo motor:

  • COAST — Se ralentiza hasta detenerse.
  • BRAKE (predeterminado) — Se detiene inmediatamente.
  • HOLD — Se detiene inmediatamente y mantiene la posición del motor.

# 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)

Mutadores#

set_velocity#

set_velocity le dice a un motor o grupo de motores qué tan rápido girar. Un porcentaje más alto hace que el motor o grupo motor gire más rápido y un porcentaje más bajo hace que el motor o grupo motor gire más lento.

Cada proyecto comienza con cada motor o grupo de motores girando a una velocidad del 50% por defecto.

Nota: Una velocidad más alta hace que el motor o el grupo de motores giren más rápido, pero puede ser menos preciso. Una velocidad más baja hace que el motor o el grupo de motores giren más lentamente, pero puede ser más preciso.

Usage:
motor_1.set_velocity(velocity, units)

Parámetros

Descripción

velocity

La velocidad para girar del 0% al 100% cuando se usa PERCENT. Esto puede ser un integer o decimal (float).

units

Opcional. La unidad de velocidad:

  • PERCENT
  • RPM — Rotaciones por minuto
  • VelocityUnits.DPS — Grados por segundo

# 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#

El par de torsión muestra la fuerza con la que un motor o grupo de motores puede empujar o tirar mientras gira.

set_max_torque establece el par máximo que un motor o grupo de motores puede usar.

Un porcentaje más alto permite que el motor o el grupo motor empuje con más fuerza, como cuando se levanta un objeto pesado. Un porcentaje más bajo limita la fuerza con la que el motor o el grupo motor puede empujar. Esto puede ayudar a proteger el robot si el motor o el grupo motor se atasca o llega al final de lo lejos que puede moverse.

Cada proyecto comienza con el par de cada motor o grupo de motores al 50% por defecto.

Usage:
motor_1.set_max_torque(value, units)

Parámetros

Descripción

value

El par máximo que puede usar el motor o el grupo de motores. Esto puede ser un integer o decimal (float).

units

La unidad de torque:

  • PERCENT
  • TorqueUnits.NM TorqueUnits.NM — Newton metros
  • TorqueUnits.INLB — Pulgadas libras

# 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#

La posición de un motor o grupo motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro es igual a 360 grados. set_position cambia la posición actual del motor o del grupo de motores a un nuevo valor.

Por ejemplo, si un motor o grupo de motores ha girado a 180 grados, establecer la posición en 0 grados restablecerá esa posición de 180 a 0 grados. Luego, el motor o grupo motor puede girar a posiciones basadas en ese nuevo valor.

Usage:
motor_1.set_position(position, units)

Parámetros

Descripción

position

El valor de posición a establecer para el motor o grupo de motores. Esto puede ser un integer o decimal (float).

units

La unidad de posición: DEGREES o TURNS.

# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)

set_stopping#

set_stopping establece cómo un motor o grupo de motores dejará de moverse: frenando, deslizándose o reteniendo.

Usage:
motor_1.set_stopping(mode)

Parámetros

Descripción

mode

Cómo se detendrá el motor o el grupo motor:

  • BRAKE — Se detiene inmediatamente.
  • COAST — Se detiene lentamente.
  • HOLD — Se detiene inmediatamente y mantiene la posición del motor.

# 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 establece cuánto tiempo un motor o grupo de motores intentará terminar un movimiento. Si el motor o grupo de motores no puede terminar en ese tiempo, dejará de intentarlo y pasará a la siguiente línea de código. Esto evita que el motor o grupo motor se atasque en un movimiento.

Usage:
motor_1.set_timeout(value, units)

Parámetros

Descripción

value

La cantidad de tiempo que el motor o grupo motor puede intentar terminar un movimiento. Esto puede ser un integer o decimal (float).

units

Opcional. La unidad de tiempo:

  • SECONDS
  • MSEC (predeterminado) — Milisegundos

# 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 cambia si la dirección de giro de un motor está invertida. Este método funciona igual que establecer el parámetro reverse en True al construir un Motor.

Nota: Este método solo funcionará con un motor y no con un grupo de motores.

Usage:
motor_1.set_reversed(value)

Parámetros

Descripción

value

Si la dirección del motor está invertida:

  • True : invierte la dirección del motor.
  • False : devuelve la dirección del motor a su valor predeterminado.

# 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 cambia la posición actual del motor o del grupo de motores a 0.

Usage:
motor_1.reset_position()

Parámetros

Descripción

Este método no tiene parámetros.

# 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)

Getters#

position#

La posición de un motor o grupo motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro equivale a 360 grados. La position devuelve la posición actual del motor o grupo de motores.

Al comienzo de un proyecto, la posición del motor o grupo de motores se establece en 0 grados. Si el motor o grupo de motores gira un giro hacia adelante, la posición será de 360 grados o 1 giro. Si el motor o grupo de motores gira en la otra dirección, la posición será negativa.

Usage:
motor_1.position(units)

Parámetros

Descripción

units

Opcional. La unidad para devolver el motor o la posición del grupo motor en: DEGREES (predeterminado) o TURNS.

# 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 devuelve qué tan rápido está girando el motor o el grupo de motores.

Un valor positivo significa que el motor o grupo de motores está girando hacia adelante. Un valor negativo significa que está girando al revés.

Usage:
motor_1.velocity(units)

Parámetros

Descripción

units

Opcional. La unidad de velocidad a devolver:

  • PERCENT
  • RPM (predeterminado) — Rotaciones por minuto
  • VelocityUnits.DPS — Grados por segundo

current#

la current devuelve la cantidad de corriente eléctrica que utiliza el motor o grupo de motores, medida en amperios de 0,0 a 1,2 A. La corriente es la cantidad de electricidad que fluye a través del motor o grupo de motores.

Un valor de corriente más alto significa que el motor o grupo de motores está utilizando más corriente eléctrica. Esto puede suceder cuando el motor o el grupo motor está levantando algo pesado, empujando contra un objeto o tratando de moverse cuando está atascado.

Esto se puede usar para verificar si el motor o el grupo motor tiene dificultades durante un movimiento. Si la corriente se mantiene alta, el motor puede calentarse o usar la energía de manera menos eficiente.

Usage:
motor_1.current(units)

Parámetros

Descripción

units

Opcional. La unidad actual a devolver:

  • CurrentUnits.AMP — Amperios

is_done#

is_done devuelve si el motor o grupo de motores ha terminado de moverse, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del motor.

  • True : el motor o grupo motor ha terminado de moverse.

  • False — El motor o grupo de motores todavía está en movimiento.

Este método funciona junto con los siguientes métodos de movimiento que tienen el parámetro wait: spin_for y spin_to_position.

Usage:
motor_1.is_done()

Parámetros

Descripción

Este método no tiene parámetros.

is_spinning#

is_spinning devuelve si el motor o grupo de motores está girando, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del motor.

  • True : el motor o grupo motor está girando.

  • False — El motor o grupo motor no está girando.

Este método funciona junto con los siguientes métodos de movimiento que tienen el parámetro wait: spin_for y spin_to_position.

Usage:
motor_1.is_spinning()

Parámetros

Descripción

Este método no tiene parámetros.

direction#

direction devuelve la dirección actual en la que está girando un motor o grupo de motores.

  • FORWARD

  • REVERSE

Usage:
motor_1.direction()

Parámetros

Descripción

Este método no tiene parámetros.

power#

la power devuelve la cantidad de potencia que el motor o grupo de motores está utilizando en vatios. La potencia muestra la rapidez con la que el motor o grupo de motores está utilizando la energía.

Un valor de potencia más alto significa que el motor o grupo de motores está utilizando la energía más rápido. Esto puede suceder cuando el motor o el grupo motor está levantando algo pesado, empujando contra un objeto o tratando de moverse cuando está atascado.

Esto se puede usar para comparar movimientos o verificar si el motor o el grupo motor tiene dificultades. Si la potencia se mantiene alta, el motor puede calentarse o usar la energía de manera menos eficiente.

Usage:
motor_1.power()

Parámetros

Descripción

Este método no tiene parámetros.

torque#

El par de torsión muestra la fuerza con la que un motor o grupo de motores se retuerce, empuja o tira mientras gira.

torque devuelve la cantidad de torque que está utilizando el motor o el grupo de motores.

Un valor de par más alto significa que el motor o grupo de motores está empujando o tirando con más fuerza. Esto puede suceder cuando el motor o el grupo motor está levantando algo pesado, empujando contra un objeto o tratando de moverse cuando está atascado.

Esto se puede usar para verificar si el motor o el grupo motor tiene dificultades o para comparar cuánto empuje necesitan los diferentes movimientos.

Para ajustar el par de un motor o grupo de motores, utilice set_max_torque.

Usage:
motor_1.torque(units)

Parámetros

Descripción

units

La unidad de par a devolver

  • TorqueUnits.NM TorqueUnits.NM (predeterminado) — Newton metros
  • TorqueUnits.INLB — Pulgadas libras

efficiency#

efficiency devuelve la eficiencia con la que el motor o grupo de motores está utilizando la potencia, como un porcentaje del 0% al 100%.

La eficiencia muestra qué parte de la potencia del motor o grupo de motores se está utilizando para el movimiento. Un valor de eficiencia más alto significa que se está utilizando más potencia del motor o del grupo de motores para moverse. Un valor de eficiencia más bajo puede ocurrir cuando el motor o el grupo motor está trabajando duro pero no se mueve mucho, como cuando está atascado o empujando contra un objeto.

Esto se puede usar para comparar movimientos o verificar si el motor o el grupo motor está desperdiciando energía en lugar de usarla para el movimiento.

Usage:
motor_1.efficiency()

Parámetros

Descripción

Este método no tiene parámetros.

temperature#

temperature devuelve la temperatura del motor o grupo de motores.

La temperatura del motor muestra qué tan caliente está el motor o el grupo de motores. Una temperatura más alta significa que el motor o el grupo motor se está calentando mientras funciona. El motor debe permanecer por debajo de 55 grados centígrados para seguir funcionando a pleno rendimiento.

Si el motor o grupo motor se calienta demasiado, bajará su corriente máxima para protegerse. A 70 grados centígrados, un motor dejará de funcionar hasta que se enfríe.

Esto se puede usar para verificar si el motor o el grupo motor se está calentando demasiado durante movimientos repetidos, carreras largas o cuando está empujando contra un objeto.

Usage:
motor_1.temperature(units)

Parámetros

Descripción

units

Opcional. La unidad de temperatura a devolver:

  • TemperatureUnits.CELSIUS (predeterminado)
  • TemperatureUnits.FAHRENHEIT

count#

count devuelve el número de motores en un grupo de motores.

Nota: Este método * * solo * * funcionará con un grupo de motores y no con un motor.

Usage:
motor_group_1.count()

Parámetros

Descripción

Este método no tiene parámetros.

get_timeout#

get_timeout devuelve el tiempo de espera actual del motor o del grupo de motores en milisegundos.

Nota: Este método solo funcionará con un motor y no con un grupo de motores.

Usage:
motor_1.get_timeout()

Parámetros

Descripción

Este método no tiene parámetros.

Constructores#

Los constructores se utilizan para crear manualmente objetos de Motor y MotorGroup fuera de la ventana Dispositivos.

Motor#

Motor crea un motor.

Usage:
motor_1 = Motor(smartport, gears, reverse)

Parámetro

Descripción

smartport

El puerto inteligente al que está conectado el motor, escrito como Ports.PORTx Ports.PORTx, donde x es el número de puerto.

gears

Opcional. Relación de transmisión del motor:

  • GearSetting.RATIO_1_1 (predeterminado) — Relación 1:1
  • GearSetting.RATIO_2_1 — Relación 2:1
  • GearSetting.RATIO_3_1 — Relación 3:1

reverse

Opcional. Establece si la dirección de giro del motor está invertida:

  • True — Invierte el motor.
  • False (predeterminado) — No invierte el motor.

# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)

Motor Group#

MotorGroup crea un grupo motor.

Usage:
motor_group_1 = MotorGroup(motors)

Parámetro

Descripción

motors

Los nombres de los objetos Motor creados previamente para colocarlos en el grupo de motores. Se pueden agregar hasta 12 objetos Motor al grupo.

# 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)