domingo, 13 de enero de 2008

Controlando!!

Ueeee!!! Por fin controlamos velocidad, tiempo de ejecución de cada función...etc

El siguiente código hace que el cotxe se mueva durante 10 segundos recto, se pare durante 10 segundos y haga un giro hacia la derecha durante 10s, repitiendose el ciclo indefinidamente.

///////////////////////////////////////////////////////VARIABLES

//Nom pels diferents servos
int outpin0 = 0;
int outpin1 = 2;

//Diferents valors de tensió [0-255]
int val0 = 255;
int val1 = 0;

//Altres
int control =0;

/////////////////////////////////////////////FUNCIONS [de moviment]
void cotxet_run(int pin_esq, int pin_dreta, int atope)
{
analogWrite(pin_esq, atope);
analogWrite(pin_dreta, atope);
}
void cotxet_stop(int pin_esq, int pin_dreta, int parao)
{
analogWrite(pin_esq, parao);
analogWrite(pin_dreta, parao);
}
void cotxet_gir(int pin_esq, int pin_dreta, int atope, int parao)
{
analogWrite(pin_esq, atope);
analogWrite(pin_dreta, parao);
}

////////////////////////////////////////////////////////EJECUTANDO

void setup() {
Serial.begin(9600);
}

void loop() {

cotxet_run(outpin0, outpin2, val0);
delay(10000);//delays necessaris xq no executi totes les funcions alhora [q físicament es tradueix com la divisió del valor de tensió als pins 0 i 2]
cotxet_stop(outpin0, outpin2, val1);
delay(10000);
cotxet_gir(outpin0, outpin2, val0, val1);
delay(10000);
}

jueves, 10 de enero de 2008

módulo de movimiento

FUNCIONAN LOS 2 SERVOS!!!!!!!!!!!!!!!!

han pasado sucesos paranormales otra vez, pero hemos conseguido que funcionen, mañana por la tarde os mostraremos documentos fotográficos!!

Módulo sensor distancia

Finalmente nos decidimos por el módulo detector de objetos C-9607: www.cebekit.es
Características del sensor:
  • detecta objetos a 150mm mediante infrarrojos
  • según especificaciones:

- canal-1: positivo (V+) [PA]

- canal-2: negativo o masa (GND) [PA]

- canal-3: escribiendo un "0"(ON) --> se activa el detector

- canal-4: si existe objeto --> devuelve "0" [PD]

si no existe objeto --> devuelve "1" [PD]

Para controlarlo con la placa wiring:

pins digitales(PD)

pins analógicos (PA)

lunes, 7 de enero de 2008

acerca del diseño del proyecto (II)

Ya tenemos más claras las funciones del prototipo, así que podemos pensar el código modularmente.

  • El cochecito establece la conexión bluetooth con el movil (módulo bluetooth) y detecta la alarma con el software del móvil (todavía sin desarrollar).
  • Cuando se detecta el evento alarma se disparan los módulos de movimiento (en desarrollo en el apartado al otro lado del espejo) y de sonido, es decir, empieza a sonar la alarma del cochecito y empieza a moverse.
  • Si detecta un objecto, esto viene controlado por el sensor de distancia (código del módulo de sensor de distancia), cambiará el movimiento para evitar el obstáculo (giros, velocidades, paradas...).
  • Seguirá efectuando estos módulos hasta que se presione el pulsador (módulo pulsador) lo que hará que se paren los módulos de movimiento y sonido (paramos el cochecito y deja de sonar).

Toda esta descripción del código se puede ver de forma visual en la siguiente figura:

al otro lado del espejo (III)

En nuestro afán de conseguir controlar el cochecito, establecemos un código diferente para cada uno de los pins (PWM), así verificamos las diferentes posibilidades de aceleración, velocidad, etc.

Conclusiones: contra mayor sea "val" con la función, más deprisa y más tensión obtendremos. Con sentencias consecutivas podremos acelerar la función de velocidad constante y añadiremos finalmente una función de frenada.

CÓDIGO:

//Nom pels diferents pins de sortida
int outpin0 = 0;
int outpin1 = 1;
int outpin2 = 2;
int outpin3 = 3;
int outpin4 = 4;
int outpin5 = 5;
//Nom variables per diferents valors 0-255
int val0 = 0;
int val1 = 100;
int val5 = 128;
int val2 = 100;
int val3 = 100;
int val4 = 255;
void setup()
{
}
void loop()
{
//pin 0 //accelerando desde 0?//SENSE cap delay intenta accelerar durant X s //Amb delays de posteriors pins no chuta (delay100, si)
//pin 0 //(SENSE DELAY) sense parar 1 volta/20s GND(2,2V-2,7V) VCC(-2,2V -2,7V)
analogWrite(outpin0, val0); // sets the value of analog pin 0
val0 = (val0 + 10) % 255; // increment value and keep it in the 0-255 range.
//pin 1 //(AMB DELAY 1000)RESET->RUN 7-8s //RUN->STOP 15s 5accel+10velcte //STOP->RUN 10s
//pin1 //(AMB DELAY 100) //RESET-> RUN 7-8s //RUN ->STOP 1-1,5 s //STOP ->RUN 1s
//pin 1// (SENSE DELAY) //sense parar 1 volta/20s GND(2,2V-2,7V) VCC(-2,2V -2,7V)
analogWrite(outpin1, val1);
val1 = (val1 + 10) % 255;

//pin 3 //(DELAY 1000) RESET->RUN 7-8s //RUN->STOP 1s //STOP -> RUN 1s
//pin3 //(SENSE DELAY) //sense parar 1volta/17-18s GND (2,4V-2,5V) VCC(-2,7 - -2,8V) analogWrite(outpin3, val3);
val3 = (val3 + 100) % 255;

//DELAYs
//delay (100);
//delay(1000);
//delay(10000)

//pin 2 velocitat alta i constant RESULTAT: accelera, velocitat constant (10 s ->delay 10000)i despres para durant segons 10s (delay(10000)
//pin 2 //(SENSE DELAY) sense parar 1volta/8s GND (3,3V-3,4V) VCC (-1,6V- -1,7V)
for(int i=0;i<48;i=i+8) style="color: rgb(51, 255, 51);">// delay(5000);
val2 = (val2 + i) % 255;
analogWrite(outpin2, val2);
// sets the value of analog pin 2
//delay(1000);
}
val2= 100; //per tornar a posar el valor a 100, si no te un començament/acavament diferent
//delay (10000); //run durant 10s, stop durant 10s cada cicle més accelerat
//delay (100); //nomes soroll no es mou!!*/
}

viernes, 4 de enero de 2008

acerca del diseño del proyecto

Como en el post anterior explicamos la modificación respecto el uso de los servo motores, también la idea en sí del proyecto ha sufrido ciertas modificaciones

  • en lugar de integrar un despertador digital en el artilugio en movimiento, dispararemos la secuencia de movimientos y de sonido desde el movil. http://www.technocracia.com/2007/12/08/super-mini-receptor-bluetooth/ [o un usb parecido] Es decir, efectuaremos una conexión bluetooth entre el movil y la placa wiring. Así cuando suene la alarma en el telefono movil se enviará mediante bluetooth la orden a la placa. Vincularemos previo montaje el emisor (telefono móvil) y el receptor.

Respecto la modificación sobre bluetooth:

  • efectuaremos el software concreto para móvil con mobile processing. Este lenguaje tiene 2 librerías específicas (una para bluetooth y la otra para los sonidos) con las que podremos crear un software con las características que necesitamos.

al otro lado del espejo (II)

Hola de nuevo tras las "vacaciones" bien lo típico que si felices fiestas que si feliz año nuevo bla bla


Hicimos una incursión interesante antes de año nuevo (dias 27-28 de diciembre) en el control del servo mediante la placa wiring y ya semi-montado con una rueda.

Finalmente tomamos ciertas decisiones:





- descartamos el motor DC habitual para pasar a una configuración mediante 2 servomotores trucados para que efectue los 360º y directamente engancharlo a los radios de las diferentes ruedas.





- afirmamos que pasaron sucesos paranormales con la placa, el código y los servos.






Empezamos con el montaje del prototipo de movimiento, con unos pequeños soportes de plástico. En cada uno situamos un servo y tras agujerearlos situamos también las ruedas enganchadas por el momento con bluetag para empezar a observar el resultado del código respecto el movimiento de las ruedas (velocidad, aceleración, desaceleración).














CODIGO (aceleración / velocidad constante)




int outpin1 = 2;


int val = 100;


void setup() { }


void loop() {


val=100;


for(int i=0;i<48;i=i+8)>

val = (val + i) % 255;


analogWrite(outpin1, val);


}


delay (10000);


}
Intentando controlar la velocidad del motor nos dimos cuenta que lo podíamos hacer mediante el incremento dentro del módulo de 255 -que es el máximo que asume el pin de voltaje- y el uso de los delay's.
Ahora mismo estamos trucando el segundo servo, porque el anteriormente conocido como segundo servo murió en el proceso de trucaje.