Motores SDK#

El SDK ofrece varios métodos de control y comunicación con los motores, así como un par de métodos ocultos a los que se puede acceder fácilmente.

Explicación general#

Controlador del motor#

Todos los puertos de motor se controlan con lo que se llama un controlador de motor de puente H, un circuito que se puede utilizar para variar la tensión de salida, así como la señalización (negativa o positiva) de la tensión. Un voltaje negativo a través de un motor DC invierte un motor, mientras que uno positivo hará que el motor vaya hacia delante. La potencia del Motor SDK (de -1 a 1), representa un multiplicador del voltaje de entrada que se emite a través del puerto del motor. Los diferentes voltajes son creados vía PWM, donde el puerto es encendido y apagado rápidamente para crear un voltaje promedio más bajo.

Además, se puede configurar el comportamiento de potencia cero del motor, es decir, el comportamiento del motor cuando no se aplica potencia. En modo FLOAT, el controlador del motor simplemente se apaga, proporcionando una resistencia adicional mínima. En modo BRAKE, los dos cables del motor se cortocircuitan internamente. Debido a la propiedad inherente de que todos los motores de DC con escobillas generan electricidad cuando el eje gira, el cortocircuito de los cables provoca una potencia inversa que detiene el motor rápidamente y es resistente a las fuerzas externas.

Nota

El controlador del motor utiliza la tensión de entrada, lo que significa que en una batería de 13 voltios, ajustar la potencia a 1 creará una tensión de salida de 13 voltios. Del mismo modo, en una batería de 11 voltios, una potencia de 1 creará una tensión de salida de 11 voltios.

Codificador del motor#

Importante

No existe una terminología estandarizada real al tratar con codificadores de cuadratura. Aquí, usamos los términos «conteo» y «tick» para representar una sola acción ascendente o descendente en la onda de cuadratura. También puedes ver en algunas hojas de datos «pulsos», lo cual puede indicar desde 1 «conteo» hasta 4 «conteos». ¡Ten cuidado al leer hojas de datos!

Los FTC® codificadores utilizan el formato de cuadratura de dos hilos para transmitir información relativa del codificador. En cuadratura, hay dos cables de señal, A y B. Al moverse, tanto A como B generan ondas cuadradas que están separadas por 90 grados, es decir, una onda cuadrada comienza a la mitad de la otra onda cuadrada y termina a la mitad de la otra onda cuadrada. Al viajar en una dirección, la onda cuadrada del cable A precede a la onda cuadrada del cable B, y en la otra dirección, la onda cuadrada del cable B precede a la onda cuadrada del cable A. Las dos ondas se combinan en XOR para producir la onda de salida, donde cada acción de subida y bajada es un «tick», y cuanto más rápido sea la onda, más rápido se mueve el codificador.

El concentrador REV cuenta los pulsos y calcula la velocidad utilizando un «buffer de anillo» de 5 valores, al cual se le agrega un nuevo valor cada 10 ms. Estos 5 valores se utilizan para calcular la velocidad actual.

Advertencia

Se recomienda que los codificadores de cuadratura se conecten a puertos decodificados de hardware especial para permitir que se lean correctamente. El expansion hub contiene hardware especial para leer codificadores de cuadratura, pero debido a que solo hay dos de esos controladores, dos de los pines están conectados en «software» en su lugar (los puertos se decodifican en software en lugar de en hardware). Esto significa efectivamente que los puertos 0 y 3, los dos puertos conectados a los puertos de cuadratura especiales, siempre se leerán con precisión. Los puertos 1 y 2 están conectados a los puertos «software» menos precisos, lo que significa que con codificadores de alta CPR (codificadores que producen más de 4000 cuentas por revolución, como el codificador REV Through Bore o el codificador Talon SRX), pueden «perder pasos» y desviarse.

Un ejemplo de una onda de cuadratura, con el canal A, canal B. La onda se divide en cuatro secciones, donde cada sección constituye un tick.

Un ejemplo de una onda de cuadratura, con el canal A adelantando al canal B. Cada cuenta es un «count» o «tick».#

Métodos Ocultos#

DcMotorEx#

Todos los motores de DC de REV hub son instancias de «DcMotorEx», que expone algunos métodos adicionales al usuario, como el control de velocidad y la medición de la corriente consumida.

Nota

No hay ninguna desventaja en usar DcMotorEx, para convertir un DcMotor a un DcMotorEx, el usuario simplemente necesita convertir el DcMotor devuelto por «hardwareMap» a un DcMotorEx.

Consejos#

  • Mientras las lecturas actuales no se lean masivamente, las alertas actuales (isMotorOverCurrent()) se leen masivamente.

  • Los coeficientes PID/PIDF utilizan unidades internas para la salida, un short de dos bytes de -32767 a 32767, en lugar del -1 a 1 del usuario.

  • El método predeterminado getVelocity() devuelve la velocidad del codificador en ticks por segundo.

  • El RunMode STOP_AND_RESET_ENCODERS en realidad no es un modo de ejecución. En cambio, simplemente establece la potencia en cero y envía un LynxResetMotorEncoderCommand. Este comando se puede emitir manualmente si se desea restablecer fácilmente un codificador de motor sin cambiar el modo de ejecución.