Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web

CIENCIA XXI

* Entrada

* Buscar

* Noticias

* Publicar

LOS TEMAS

* Biotecnología

* Robótica y LEGO

* Tablas y multimedia

* Informes de experiencias

* Electrónica práctica

* Laboratorios

* Software

MAIL

 


ROBOTS

Brazo mecánico - foto1 - foto2 - foto3

    Un brazo mecánico de 3 movimientos (abrir y cerrar, subir y bajar, girar izquierda y girar derecha). Usa dos motores de LEGO MINDSTORMS y un motor de una cámara de fotos, con los engranajes que vienen en la misma (es importante conservar estos engranajes ya que le dan fuerza para elevar el brazo).

    Vistas generales del brazo: foto1 - foto2 - foto3

    Podés mirar detalles de las partes que mueven la plataforma hacia la derecha y la izquierda, el sistema para elevar y bajar el brazo, y la parte de la "mano" para agarrar objetos con mucha fuerza (creo que esto es lo mejor de todo el robot).

    Se maneja desde la computadora, desde un programa hecho en Visual Basic. Para cada movimiento hay que escribir un código, parecido para todos. Por ejemplo, para el botón de "Abrir brazo":

                                        lego.SetRwd "2"
                                        lego.On 2
                                        lego.Off 2
                                        lego.SetFwd "2

    En mi caso los parámetros son los presentados ya que el motor encargado de abrir y cerrar la mano está conectado al puerto 2. Notar que las instrucciones On y Off están continuadas, esto es porque el movimiento producido con ese intervalo es suficiente.

    Para estar seguro de que la energía entregada a los motores es la justa, tuve que crear un botón de Inicialización del brazo:

lego.SetFwd "012"
lego.SetVar 14, 2, 3
lego.SetPower 0, 0, 14
lego.SetVar 15, 2, 8
lego.SetPower 1, 0, 15
lego.SetPower 2, 0, 15
lego.Off "012"

    Esta inicialización debe ejecutarse cada vez que se enciende el RCX. La primera línea hace que todos los motores vayan hacia adelante. La segunda setea el valor de la variable número 14 a 3, para que la tercera línea asigne una diferencia de potencial de 3V al puerto 0, que es donde yo tengo conectado el motor que le saqué a la cámara de fotos.

    El cuarto renglón hace que la variable 15 sea de 8, para dar un voltaje de 8V a los puertos 1 y 2 (en los renglones 5 y 6). La última línea asegura que antes de empezar los motores estén apagados. 

 

Cortocircuito - foto 1, foto 2, foto 3

    Este robotito me hace acordar a Cortocircuito, el de la película. Podés ver fotos acá: foto 1, foto 2, foto 3.

    Para moverse utiliza orugas, impulsadas por un solo motor a través del mecanismo descripto en la sección "Top Secret" de la constructopedia. Este mecanismo permite usar un solo motor para moverse derecho hacia adelante y girar al moverse hacia atrás (es realmente muy ingenioso).

    Así, quedan dos salidas disponibles, de las cuales yo usé una para conectar un láser (como el descripto aquí en "extras") y otra para armar un brazo que tira objetos, como si fuera una catapulta.

    Tiene además un sensor táctil que evita que el robot se caiga a precipicios y le avisa cuando hay una pared; y un sensor de luz.

    Al iniciarse el programa, el robot empieza a moverse hacia adelante. Si encuentra un borde (por ejemplo, de una mesa) o toca una pared se vuelve hacia atrás girando a su izquierda entre 50º y 80º, luego continúa su marcha hacia adelante.

    Cuando el sensor de luz da menos de 20%, enciende el láser, apuntando derecho. Si la cantidad de luz es normal (de 20% a 80%), no ocurre nada especial. Pero si se lo ilumina con una linterna u alguna fuente de luz fuerte, de manera de pasar el 80%, su brazo se activa y arroja una munición, que puede llegar hasta un metro adelante de donde salió, luego gira algo más de 90º y se va.

    A continuación, el programa en lenguaje NQC:

                      /*
                      Este es un intento de programa para manejar a Cortocircuito
                      */

                      task andar()                     // Activado por main al iniciar
                      {
                               Rev(OUT_B);
                               On(OUT_B);
                      }


                      sub peligroadelante()    // Activado por main cuando touch de adel toca algo
                      {                                  // por donde no puede pasar
                               Off(OUT_B);
                               Fwd(OUT_B);
                               On(OUT_B); Wait(300);
                               Off(OUT_B);
                               start andar;
                      }


                      sub tirar()                    // Activado para tirar algo
                      {
                               SetPower(OUT_C,OUT_FULL);
                               Fwd(OUT_C);
                               On(OUT_C); Wait(25);
                               Off(OUT_C);
                               Rev(OUT_C);
                               SetPower(OUT_C,OUT_HALF);
                               On(OUT_C); Wait(15);
                               Off(OUT_C);
                      }


                      task main()                          // Task principal
                      {
                               SetSensor(SENSOR_2,SENSOR_TOUCH); // Seteando sensores
                               SetSensor(SENSOR_1,SENSOR_LIGHT); 
                               start andar;

                               while (true) // Chekea sensores
                               {
                                        if (SENSOR_2 == 1)
                                        {
                                                 stop andar;
                                                 peligroadelante();
                                        }

                                        if (SENSOR_1 > 80)
                                        {
                                                 stop andar;
                                                 tirar();
                                                 peligroadelante();
                                                 stop andar;
                                                 peligroadelante();
                                        }

                                        if (SENSOR_1 < 20)
                                        {
                                                 SetPower(OUT_A,4);
                                                 Rev(OUT_A);
                                                 On(OUT_A);
                                        }
                                        else
                                        {
                                                 Off(OUT_A);
                                        }
                               }
                      }


MÓVILES

 

 

 


ADQUISICIÓN DE DATOS

 

 

 


EXTRAS

LASER - foto 1foto 2 - foto 3

    Esta es una manera genial de agregar LASER a tus robots. Es barata, factible, y puede usarse desde la PC con un programa en Visual Basic o directamente en el robot. Se necesita un llavero con luz LASER (sin las pilas), una bandita elástica y cinta, un puerto de salida libre en el RCX, un cable de LEGO (con un extremo intacto y el otro pelado), y un ladrillo LEGO capaz de soportar el llavero LASER. Miralo funcionando.

    Apretá el botón de encendido del LASER y pegale una cinta fuerte, dandole varias vueltas, sin que el botón se suelte. De esta manera, el LASER estará siempre en ON pero sólo se encenderá cuando el RCX le envíe una corriente eléctrica. Como con el tiempo la cinta se puede desprender, se mejora el sistema con una banda elástica que la aprieta fuertemente. 

    Conectá de alguna manera (no es muy difícil) cada cable al LASER (en general, un cable debe unirse a un resorte que suelen traer estos llaveros; el otro suele unirse a la carcaza metálica mediante un clip).

    Conectá la parte intacta del cable al RCX.

    Puede montarse todo sobre una ladrillo de dimensiones comparables a las del LASER, o directamente sobre el brazo de un robot.

    Para que te des una idea, te muestro 3 fotos del tema terminado: foto 1foto 2 - foto 3.

    Para utilizar el LASER desde la PC, en Visual Basic, programá lo siguiente:

lego.SetRwd "0"
lego.SetVar 15, 2, 3
lego.SetPower 0, 0, 15
lego.On 0

    Como ves, se lo usa como un motor común, solo que se utiliza un power = 3. La parte lego.setrwd "0" puede ser que deba ser al revés (o sea, lego.setfwd "0") pues depende de como se hayan hecho las conexiones).

 

LUZ - foto 1, foto 2

    Agregar luz a los robots es muy fácil. Se necesita una lámpara de 8V, un portalámparas adecuado y cable LEGO (con un extremo pelado y el otro intacto). Simplemente hay que conectar el cable a la lámpara, de allí al RCX, y tratarlo como si fuera un motor. Es exactamente lo mismo usar el LEGO en rwd que en fwd

    Mirá la lámpara apagada y la lámpara encendida.

 

MEDIDOR  DE TEMPERATURA - foto

    Para hacer un termómetro se necesita una resistencia dependiente de la temperatura o termistor (se compra en cualquier casa de electrónica, y sale menos de $2) y cable LEGO (con un extremo pelado y el otro intacto).

    Hay que unir cada extremo del cable a las patas del termistor, y conectar el extremo intacto de cable a un puerto del RCX. Mirá el modelo terminado.

    Para leer el valor del puerto (que justamente depende de la temperatura) se usa el siguiente código de Visual Basic:

lego.SetSensorType 0, 2 '
lego.SetSensorMode 0, 0, 0
If lego.PBAliveOrNot = True Then
    temp = lego.Poll(9, 0)

    En este ejemplo, el termistor está conectado al puerto 0. Por eso, el primer parámetro de los renglones 1 y 2 es "0". Luego, el programa de Visual Basic se fija si el RCX está en comunicación con el puerto infrarrojo y, si es así, obtiene el valor alojado en el puerto 0 en ese momento y lo aloja en la variable "temp". Es importante fijarse antes si el RCX está en contacto con el puerto infrarrojo para que no se produzca un error en caso de que no estén comunicados.

    Ahora tendremos un número en la variable "temp" de Visual Basic, pero este número no es la temperatura. Sin embargo, depende de esta, según una ecuación del tipo temperatura = constante1 log(temp) + constante2.

    Donde "temperatura" es el valor de la temperatura, "temp" es el valor leído, constante1 y constante2 son dos constantes empíricas, que se determinan de la siguiente forma:

    Cuando ya está el sistema armado, se pone el termistor al lado del bulbo de un termómetro. Todo esto (bulbo y resistor) se va llevando por diferentes lugares de temperaturas distintas (heladera, ambiente, cerca del fuego, etc.) y se van anotando los valores de temperaturas dados por el termómetro y el número registrado por el RCX conectado al resistor. Luego de obtener varios datos variados (es importante trabajar en un buen rango de temperaturas) se lleva los datos a Excel, Sigma Plot, o algún programa de este tipo, y se hace una regresión logarítmica, para obtener las constantes (usar la temperatura como "y" y el valor del RCX como "x"). Con mi resistencia, la ecuación adoptó la forma temperatura = -30.964 log(temp) + 145.31.

    Cuando la calibración está lista, se vuelve a Visual Basic y se escribe, a continuación de lo de antes, lo siguiente:

    e = 2.718281828
    temp = lego.Poll(9, 0)
    temperatura =  -30.964 * Log(temp) + 145.31
    luz = lego.Poll(9, 2)
end if

    Recordar que el end if viene de cerrar el bloque if abierto antes para chequear la comunicación entre puerto infrarrojo y RCX).

    Si no sabés como hacer la regresión, enviame los datos por e-mail y yo lo hago.


SÚPER

Agitador magnético - foto1 - foto2

    Un agitador megnético útil para experimentos donde se necesite agitación constante. Un sistema de engranajes le proporciona una buena velocidad a una rueda que tiene montado un potente imán. Arriba se pone una base (yo usé la tapa de una calculadora) sobre la que se apoya el recipiente con la solución a agitar. Cualquier hélice mecánica es buena; se la pone adentro de la solución. Yo usé un clip con una lámina de cobre enganchada. Ver estructura. Verlo andando.


 

LINKS

www.lego.com         La cuna de LEGO

www.legomindtorms.com        El sitio oficial de LEGOMINDSTORMS