lunes, 1 de octubre de 2007

9833-1 Transformador de 9V LEGO

Como muchos sabéis, con el Kit de educación de lego mindstorm NXT viene una batería recargable, pero no viene el cargador, teniendo que comprarlo aparte.


Según las especificaciones de lego el cargador da 9V AC, aunque mirando en la misma batería que Lego proporciona nos indica que la entrada debe ser entre 9 y 12 Voltios AC.

Pues bien, si por casa tenemos un adaptador universal que nos de algún voltaje entre 9 y 12 en principio nos vale. Yo encontré uno por casa con voltajes seleccionables entre 1,5V, 3V, 4,5V, 6V, 7,5V, 9V, 12V. Como la batería a recargar es de 7,4V, en principio con 9V debería ser suficiente, pero como la misma batería tiene serigrafiado entre 9 y 12 preferí ponerlo a 12V. La batería nos pide también que sea corriente alterna, pero está claro que para cargar una batería necesitamos corriente continua DC, entonces está claro que lo primero que hace la batería es internamente cambiar la corriente a DC. Por lo tanto no es problema ninguno enchufarle directamente un transformador que nos de corriente continua, lo único que pasará es que se usarán más unos diodos internos que otros de los que tenga en el puente del rectificador.

Para comprobarlo conecte el cargador y puse la batería descargada a cargar. Tras aproximadamente el tiempo indicado por Lego se apagó el indicador led y pude dar por cargada la batería. La conecté al ladrillo NXT y funcionaba perfectamente detectándola como completamente cargada.

Así que ya sabéis, en principio cualquier cargador con esos voltios debería valer, si es AC mejor que DC, pero os aseguro que con DC me ha funcionado perfectamente.

Otra cosa a mirar es el amperaje que soporta vuestro cargador, el mío en concreto indicaba 500mA y la cargó perfectamente, pero si es superior mejor. Con uno inferior podríais tener problema de sobrecarga por lo que no recomiendo hacerlo.

Gracias a esto podemos ahorrarnos los 12 euros extras que Lego nos obliga a pagar aparte del pack.

miércoles, 19 de septiembre de 2007

Nuevo Firmware para el NXT versión 1.05

Desde el día 14 de Septiembre tenemos disponible una nueva versión del firmware del NXT, la 1.05.

Las mejoras son las siguientes:

- Multiple datafile control within user programs
- Communication with 3rd party external devices
- Bluetooth communication within user programs

Tendré que probar a ver si me soluciona mis problemas de incompatibilidad entre el bluetooth del NXT y de mi dell.

domingo, 9 de septiembre de 2007

Código NXC de robot siguelineas II

El robot que veíamos en el primer ejemplo sólo podía girar en un sentido, ya que según la programación realizada, cuando pierde la línea tuerce siempre hacia el mismo sitio para buscarla, siendo incapaz de torcer hacie el otro lado. Veamos ahora un ejemplo, que aunque a una velocidad inferior al primer robot, es capaz de girar para cualquier lado. El funcionamiento es el siguiente, giramos una de las ruedas (torcemos hacia un lado) mientras no veamos la línea, en cuanto la veamos giramos la rueda contraria (torcemos hacia el otro lado).

Aquí el código:

#include "NXCDefs.h"
#define MARGEN 50
//programa para seguir una línea con un solo sensor de luz
//Va bien para curvas en ambos sentidos, pero lento

int d;

task main()
{
ClearScreen();
SetSensorLight(IN_3);


Float(OUT_B);
OnFwd(OUT_C,30);

while (true)
{
NumOut (1,1,1,Sensor(IN_3));

if (Sensor(IN_3) > MARGEN)
{
NumOut (1,1,1,Sensor(IN_3));
Float(OUT_C);
OnFwd(OUT_B,30)
until(Sensor(IN_3) <= MARGEN) NumOut (1,20,1,Sensor(IN_3)); Float(OUT_B); OnFwd(OUT_C,30);
}
}
}

Y el video:

miércoles, 5 de septiembre de 2007

Código NXC de robot siguelineas I

Por si a alguien le puede ayudar en sus inicios de programación, voy a poner los códigos fuentes de mis robots siguelineas programados en NXC.

Empezaremos por el más simple, en el que el robot tiene una deriva conocida hacia un lado y en cuanto superamos el margen de luz marcado sabemos que nos hemos salido de la línea y giramos en el sentido contrario parando un motor en modo float (sin bloquearlo).

#include "NXCDefs.h"
#define MARGEN 50
//programa para seguir una línea con un solo sensor de luz
//el robot genera caída hacia la derecha, y en cuanto se sale de la línea
//gira a la izquierda para recueperarla. Con esto sólo puede girar en un sentido.
int d;

task main()
{
ClearScreen();
SetSensorLight(IN_3);


OnFwd(OUT_B,40);
OnFwd(OUT_C,50);

while (true)
{
NumOut (1,1,1,Sensor(IN_3));

if (Sensor(IN_3) > MARGEN)
{
NumOut (1,1,1,Sensor(IN_3));
Float(OUT_C);
until(Sensor(IN_3) <= MARGEN) NumOut (1,20,1,Sensor(IN_3));
OnFwd(OUT_B,40);
OnFwd(OUT_C,50);
}
}
}

El video con el resultado:

miércoles, 29 de agosto de 2007

Mi Material NXT

Por si alguien está interesado en comprar el Mindstorm, voy a indicar que es lo que compre yo:

Ref: 09797 Conjunto básico LEGO MINDSTORMS Educación NXT (260€)
Ref: 09648 Conjunto de recursos MINDSTORMS NXT (56€)
Ref: 09844 Sensor de luz para MINDSTORMS NXT (15€)

El motivo de preferir la versión de educación a la comercial (232€) es por la batería recargable, que comprandola separada vale 49€. Cierto es que viene alguna pieza menos en la versión educacional, pero esto lo compensé con el conjunto de recursos que pensaba comprar de todas las maneras. Tampoco viene el software de Lego, pero yo aún no lo he necesitado, ya que me apaño perfectamente con el Bricx. En cambio, además de la batería vienen unos cables para poder conectar sensores y motores de la versión antigua RCX, así como un sensor de contacto extra. Aquí os pongo un enlace de una muy buena comparativa entre ambas versiones.

Con el Lego NXT ya viene un sensor de luz, pero se me hacía poco de cara a hacer robots siguelineas, y preferí gastarme los 15€ de más para poder tener 2.

Ahora ando tras comprarme un sensor que integra un giroscopio de Hitechnic, que detecta rotaciones y devuelve el valor en grados/segundo.

domingo, 26 de agosto de 2007

Dispensador de papel higiénico con Lego Mindstorm

Si es que no queda nada por inventar...

NXT siguiendo lineas

Ya tenemos los primeros resultados del mindstorm NXT. He construido un robot muy simple que jugando con la programación consigue seguir una línea negra sobre fondo blanco.

En la primera aproximación partimos de que el robot se encuentra sobre la línea negra y le ponemos a andar, pero generando cierta deriva a la derecha para que intente salirse de la línea siempre por la derecha, y tan pronto detecte que se ha salido, corrige bruscamente a la izquierda. Con esto ya tenemos un robot sigue-líneas pero que solo es capaz de girar en una dirección.



En una segunda aproximación y para que pueda girar en ambas direcciones, le hacemos andar mas despacito con las siguientes premisas, si ve blanco gira a la izquierda, si ve negro a la derecha. Con esto conseguimos girar en ambos sentidos, pero a una velocidad bastante lenta.



En la tercera aproximación volvemos al primer algoritmo con deriva, pero en caso de que al girar para corregir la deriva no encuentre la línea, supone que se ha confundido y gira hacia el otro sentido. No es ninguna maravilla, pero va más rápido que el segundo.



¿A alguien se le ocurre un algoritmo mejor con un sólo sensor de luz?

Usando dos sensores de luz, ya se puede tener una mejor referencia de donde está el robot y se consiguen mejores resultados. En este programa controlo si la línea negra está a la izquierda o derecha del centro del robot según se ve por uno u otro sensor. El robot puede ir bastante más rápido sin perder el control.