HispaLUG

El foro LUGnático => Technic & Mindstorms => Mensaje iniciado por: Foxterl en 03 de Marzo de 2008, 13:48:31 PM

Título: Control informático de los Motores del NXT
Publicado por: Foxterl en 03 de Marzo de 2008, 13:48:31 PM
Tengo una preguntilla, mas orientada a programación que a LEGO®:

Se trata que ahora estoy, con el tema de programación del MINSTORM, que al final me decidí por el compilador de Robot-C, y el tema es que en los ejemplos y programas que e estado viendo para hacerme un poco con los controles, parece que van orientados mas al RCX que al NXT, porque al utilizar los motores, lo único que tratan es la velocidad de los motores y el tiempo que están en marcha.

Sin embargo en los controles del NXT parece que también tratan el tema de los grados y las vueltas completas del rotor, mas como sensor, que como control motorizado.

Y mi pregunta va encaminada a ver si existe alguna instrucción en la que se le pueda decir al NXT que el motor A, B o C que gire "x" grados y a "y" velocidad durante "n" tiempo.

La verdad es que lo que mas me interesa es saber la instrucción para controlar los grados de giro de los motores, para no estar tan pendiente del tiempo que están en marcha.
Título: Re: Control informático de los Motores del NXT
Publicado por: g2bricks en 03 de Marzo de 2008, 16:52:57 PM
Exacto, NXT tiene servomotores. Es decir, controlan "cuanto" giran: los grados. Las vueltas completas, al final, es una escala de grados. vueltas = grados / 2*PI

Pero más que "la velocidad", el parámetro principal es la potencia (si no me equivoco) en los motores NXT. Y el parámetro de parada es el tiempo O  los grados de giro, como tú comentas.

Que conste que te pongo en  mayúsculas O (y no Y).

La velocidad que obtengas es una función de los 2 parámetros que te acabo de comentar. Además la velocidad no es la misma si lo que tiene que girar ofrece más o menos resistencia.

Por lo tanto, a mi entender no tiene "sentido" la función que pides. Aunque seguro alguien en el foro te explicará mejor (o me corregirá, igual estoy equivocado)  :guino:


Título: Re: Control informático de los Motores del NXT
Publicado por: Foxterl en 03 de Marzo de 2008, 17:42:13 PM
Creo que me e explicado mal:

Hasta ahora (o al menos en los manuales que me han llegado a mis manos, así lo explican) lo único que puedo darle como instrucciones a un motor enchufado a ladrillo Mindstorm, son: avanzar, retroceder y parar, durante un tiempo determinado (en milisegundos) y/o con una potencia o velocidad (esto es un poco ambiguo ya que si yo le doy la cantidad de 100 va a rotar mas rápido que si le doy 50 que rotara mas lento, por eso lo de la velocidad), determinada (en porcentaje), (supongo que esto será dado por la cantidad de voltaje suministrado al motor).

Pero no encuentro la instrucción que me de la posibilidad de decirle al motor que gire solo 45º (u otra cantidad), independientemente de la darle cantidad de potencia/velocidad o del tiempo que debe de estar girando.

O por ejemplo poderle decir "gira hasta que consigas dar 3 vueltas y media o 1260º " por ejemplo.

Me da a mi que los manuales que e podido conseguir eran mas para RCX ya que esta función no era soportada por los motores que llevaba.
Título: Re: Control informático de los Motores del NXT
Publicado por: g2bricks en 03 de Marzo de 2008, 17:57:52 PM
Hay algo que desconozco. 

Esta claro que a más potencia más velocidad.  Pero a la misma potencia, si haces girar una masa de 1kg girara más rápido que una de 2Kg. Es decir, depende del diseño del modelo en LEGO. ¿no?

¿Tienes la velocidad de giro como párametro de entrada en una de tus funciones?
Título: Re: Control informático de los Motores del NXT
Publicado por: Koldo en 03 de Marzo de 2008, 18:23:46 PM
Hola

Sí se puede hacer, no con un bloque de programación como con  NXT-G sino con instrucciones separadas. Voy a abrir una línea sobre ello en https://foro.lrobotikas.net (https://foro.lrobotikas.net) por si quieres pasarte por allí, escribiré algo sobre ello pero prefiero hacerlo allí por cuestiones de dónde localizarlo después.

Saludos

Koldo
Título: Re: Control informático de los Motores del NXT
Publicado por: Foxterl en 03 de Marzo de 2008, 18:26:58 PM
No es propiamente dicho el que le pueda dar como parámetro la cantidad de velocidad  a un motor, mas bien yo lo entiendo como un porcentaje, (siempre hablando en vacío).

Yo lo entiendo mejor como un porcentaje de las posibilidades del motor, ya que como valor máximo tiene el 100 y el menor 1, pues entiendo que el 100 es lo máximo a lo que puede ir y 1 es lo mínimo que puede ir sin estar parado.

Luego es algo mas de suposiciones o una regla de tres: si al 100% en motor me da 170 Rpm, entones al 75% me dará "x".

Claro que si esta regla fuera cierta, y segura al 100% se debería poder calcular cuanto tiempo y a que porcentaje de posibilidades necesito darle para poder completar en grados un determinado giro, pero como lo que me quiero ahorrarme, el hacer ese calculo y que los giros sean mas precisos, a parte de que si bien, los motores del NXT son servomotores y funcionan por grados de giro, en teoría debe de tener instrucciones para poder introducir o devolver esos parámetros, mi pregunta es esa... ¿cómo son esas instrucciones?
Título: Re: Control informático de los Motores del NXT
Publicado por: Foxterl en 03 de Marzo de 2008, 18:57:04 PM
Ups Koldo te me has adelantado.... jejeje

La verdad es que iba a poner la pregunta en los dos foros, aunque lo e puesto en este primero, porque este esta mas activo... ¡lo siento!.

Además, malicioso de mi, como savia que también programas con Robot-C..., pues eso, que en cierta manera, iba la pregunta un poco para ti....
Título: Re: Control informático de los Motores del NXT
Publicado por: Koldo en 03 de Marzo de 2008, 19:06:19 PM
a ver si te puedo contestar esta noche, ahora tengo mucho trabajo, mala semana.
Título: Re: Control informático de los Motores del NXT
Publicado por: Jafram en 04 de Marzo de 2008, 17:31:39 PM
Cita de: Foxterl en 03 de Marzo de 2008, 13:48:31 PM
La verdad es que lo que mas me interesa es saber la instrucción para controlar los grados de giro de los motores, para no estar tan pendiente del tiempo que están en marcha.

Una vez que ya tienes instalado el software RobotC en tu ordenador, se crean unos directorios, te vas a C:\Archivos de programa\Robotics Academy\ROBOTC for Mindstorms\RobotC Documentation\NXT y ahí tienes la documentación de todas las instrucciones.
Título: Re: Control informático de los Motores del NXT
Publicado por: Jafram en 04 de Marzo de 2008, 18:47:17 PM
Las principales para el uso de los motores son las siguientes:

motor[]
Establece la velocidad (-100 a +100) para un motor.
nMotorPIDSpeedCtrl[]
Activa o desactiva la regulación de velocidad de un motor. Establece un control preciso de la velocidad del motor utilizando las respuestas de los codificadores del motor.
nSyncedMotors
Especifica el par de los motores para sincronizar el movimiento de un motor esclavo con el motor principal. El motor esclavo seguirá a la velocidad y el movimiento del motor primario.
nSyncedTurnRatio
Especifica el movimiento para el motor esclavo de un par de motores sincronizados.
nMotorEncoder[]
Lectura / escritura en la posición actual de un codificador de motor.
nMotorEncoderTarget[]
Establece el objetivo de un codificador del motor.
nMotorRunState[]
Contiene el estado (inactivo, sumando o restando codificadores), de un motor. Esta variable proporciona un método conveniente de control cuando el motor ha alcanzado un codificador dado - el estado del motor cambiará a "inactivo" cuando se alcanza la posición y el motor se ha detenido.