jueves, 29 de septiembre de 2011

Laboratorio de fisica MRU, NXC Prog. de robots


Autor: Rodrigo Andres Soto Parra.
Competencias:Modela y aplica procedimientos de ciencias de la ingeniería.

Descripcion De la actividad.


· Determinar la relación velocidad-potencia de programación de su robot (MRU).
· Utilizando una velocidad constante conocida, determinar distancias desconocidas.
· Calcular el tiempo y la distancia de encuentro de 2 robots que se mueven en la misma dirección,
pero en sentidos opuestos.



1) Función Velocidad/Potencia de programación.
A través de la toma de datos de velocidad para una determinada potencia de programación, calcular
una función que me entregue la velocidad de su robot en función de la potencia.
Se debe realizar el gráfico de velocidad del robot en función de la potencia de programación, y según
la tendencia del gráfico encontrar una función que represente los datos graficados.



2)Tiempo de encuentro y posición.
Utilizando un segundo robot, se debe hacer un problema de encuentro.
Se requiere:
- Cálculo de las velocidades con las que se moverán los robots.
- Teóricamente calcular el tiempo y la posición de encuentro.
- Demostrar a través de montaje en laboratorio, que se cumple lo que entrega la teoría.




Codigo de programa de aceleracion

//Aceleración cada 2 segundos.
long tiempo,t0,t1;     //Entero sin signo para guardar la info del timer.
int luz,i,j,pm;                  //Entero definido para guardar la info del sensor de Luz.
task main()
{
    PlayTone(5000,30);      //Emitir un sonido al inicio de la ejecución del programa.
    Wait(2000);             //Pausa de 2 segundos.
    i = 1;
    j = 1;
    SetSensorLight(IN_3);   //Definir y encender el sensor de luz, Puerto 3.
    pm = 10;

    while(j<7)
        {
        // ----------------------------------------------------------------------------------------------
        OnFwdReg(OUT_AC,pm,OUT_REGMODE_SPEED);   //Iniciar los motores con control de sincronización de velocidad.
        t0 = CurrentTick();                      //Tiempo inicial del timer antes de entrar al ciclo.
        NumOut(60,j*10,pm);

        while((t1-t0)<2000)
            {
            OnFwdReg(OUT_AC,pm,OUT_REGMODE_SPEED);   //Iniciar los motores con control de sincronización de velocidad.
            luz = Sensor(IN_3);                      //Luz recibe info del sensor de luz.
            t1 = CurrentTick();                      //Tiempo que determinará la salida del ciclo.
            if(luz < 33)
                {
                tiempo = CurrentTick();
                NumOut(10,j*10,tiempo);
                j = j+1;
                if(j==7)
                    {
                    break;
                    }
                if(pm < 40)
                    {
                    Wait(400);              //Tiempo de espera para que tome 1 dato por marca.
                    }
                else
                    {
                    Wait(50);
                    }
                }
            t1 = CurrentTick();
            if((t1-t0)>1999)
                {
                i = i+1;
                pm = 10*(i);
                }
            }
        }
    Float(OUT_AC);
    Wait(60000);
    Wait(50000);
}

Codigo de Velocidad

long tiempo, tiempo_ini,tiempo1;         //Entero largo para guardar la info del timer.
int luz,i,j;                             //Entero definido para guardar la info del sensor de Luz.
task main()
{
    PlayTone(5000,30);      //Emitir un sonido al inicio de la ejecución del programa.
    Wait(2000);             //Pausa de 2 segundos.
    OnFwdReg(OUT_BC,40,OUT_REGMODE_SPEED);   //Iniciar los motores con control de velocidad.
    Wait(10);
    Float(OUT_BC);
    Wait(60000);
}