viernes, 2 de diciembre de 2011

Primer tropiezo


Las primeras pruebas de movimiento autónomo topan con el primer problema serio: cuando el robot detecta un obstáculo, se detiene y da marcha atrás pero desde ese momento se queda sin potencia. El efecto es como si perdiera toda la energía. De hecho la batería se queda como inútil y sólo funciona con la corriente suministrada por el portátil a través del USB.

En el video se observa cómo el robot arranca a velocidad normal pero, tras detectar el obstáculo, intenta ir marcha atrás y se pierde toda la potencia.

Después de muchas pruebas parece ser que es un comportamiento anómalo del Arduino Motor Shield de DFRobot que sólo ocurre cuando se conmuta la marcha atrás a plena potencia.
Consigo solucionarlo acelerando poco a poco, es decir, llegando a la velocidad máxima de forma progresiva. El efecto es inapreciable pero al menos consigo esquivar el problema.  
/* 
  Intrucciones de retroceso del robot
 (acelera por partes para evitar bloqueo imprevisto del MotorShield) 
*/
void retrocede() {
  Serial.print("Retrocede...");
  analogWrite(Izquierdo, 0); // Paro de los motores
  analogWrite(Derecho, 0); 
  digitalWrite(M1, LOW); // Orden de marcha atrás
  digitalWrite(M2, LOW); 
  analogWrite(Izquierdo, 90); // Velocidad baja
  analogWrite(Derecho, 90);        
  delay(100); // Espera una decima de segundo
  analogWrite(Izquierdo, 175); // Velocidad media
  analogWrite(Derecho, 175);        
  delay(100); // Espera una decima de segundo
  analogWrite(Izquierdo, 255); // Velocidad máxima
  analogWrite(Derecho, 255); 
  Serial.println("OK");
}

jueves, 1 de diciembre de 2011

Montando el puzzle

Después de probar los componentes de forma individual y juguetear con Arduino en la protoboard, para las pruebas del montaje diseño el siguiente circuito:

  El circuito incorpora 3 pulsadores para interactuar con el robot y dos pares de leds, rojos y verdes, para que el robot nos pueda indicar lo que vaya detectando con sus dos sensores de ultrsonidos.


  El dibujo lo he realizado con Fritzing (herramienta de diseño de código abierto)





El ensamblado de los componentes queda del siguiente modo: