Introduction: Sail Boat: Limpiapiscina

Introducción:

SailBoat es un aparato de limpieza de piscinas autoconstruido con materiales sencillos y baratos

Materiales necesarios:

-6 botellas de 500 CC como balsas de flotación
-1 tabla de 40 x 30 (o a gusto), será la base para montar todos los componentes
-8 amarras de cable según el tamaño de la botella
-1 bisagra, actuará como articulador de timón
-1 placa metalica de 4x8 que actuará como timón
-1 liston de madera , que actua como alma de fijación central
-1 placa metalica que actua como pilar de sujección de la helice
-1 helice y motor electrico para propulsion
-1 bateria para el motor de la helice
-1 control y receptor futaba
-1 arduino
-1 sensor de temperatura
-1 sensor de distancia
-1 sensor de luminosidad
-1 caja plastica con tapa para contener las componentes electronicas

Step 1: Montado De Base

Usando un taladro perforar 16 orificios  en la placa base para montar las amarras de sujeción de las botellas, los orificios deben ser 2 columnas de 4 orificios por cada lado.

Luego montar el liston de madera como eje central y a  este fijar el pilar  para el montado del motor y el pilar para la bisagra del timón.

Para montar el liston y los pilares se recomienda pegar las componentes y luego utilizar tornillos o pernos para sujetar con mayor firmeza las piezas.

Mayor detaller revisar imagen.

Step 2: Montado De Motor Y Timon

Sobre el pilar principal se debe realizar 2 perforaciones y sujetar el motor con la helice mediante un par de tuercas y pernos que permitan fijar firmemente el dispositivo.

En el pilar del timon se debe montar la bisagra y sobre esta el timón.

Step 3: Programar Arduino

Para controlar el motor, el timon y el sensor de distancia se deben instalar los dispositivos en la placa arduino y usar el programa adjunto para controlar los dispositivos

#include <Servo.h>

Servo sonar;  // create servo object to control a servo
Servo timon;  // objeto control timon
Servo motor;
int configPin = 13;

void setup()
{
  sonar.attach(9);
  timon.attach(8);
  motor.attach(11);

  Serial.begin(9600);
  pinMode(configPin,OUTPUT);


   // inicializo motor
   int VelMin=60;
   int VelMax=100;
   for (int i=60; i<100;i++)
  {
    motor.write(i);
    delay(100);
   }

   //incializo timon
   int TimMin=0;
   int TimMax=90;
   for (int i=TimMin; i<TimMax;i++)
  {
    timon.write(i); 
    delay(10);
   }


   //inicializo sonar
   int SonarMin=0;
   int SonarMax=90;
   for (int i=SonarMin; i<SonarMax;i++)
  {
    sonar.write(i);
    delay(10);
   }  

}

////////////////
// Funciones //
//////////////

int Detecto_Objeto(int pos)

  //pongo servo en 0,90,180
  sonar.write(pos);
  delay(250);

  // mido la distancia
  digitalWrite(configPin,HIGH);    //raise the reset pin high
  delay(250);                      //start of calibration ring
  float sensorvalue = analogRead(5); //get analog sensor value from pin 5
  float cmvalue = (1.25*sensorvalue+3.75);
  //Serial.print("Distancia=");      //print inch text
  //Serial.println(cmvalue);        //print inch value
  delay(15);                      //optional delay 1 second
  digitalWrite(configPin,LOW);      //turn off Calibration ring and sensor
  /*Serial.print("Pos / Distancia =");
  Serial.print(pos);
  Serial.print("/");
  Serial.print(cmvalue);
  Serial.print("\n");*/
  return cmvalue;
}


// Funciones de movimiento

void Aceleracion(int vel)
{
int i=0;
Serial.print("Aceleracion ");
Serial.print(vel);
Serial.print("\n");
for (i=60; i<vel;i++)
  {
    motor.write(i);
    delay(100);
    //Serial.print("pos/vel ");
    //Serial.print(i);
    //Serial.print("/");
    //Serial.print(vel);
    //Serial.print("\n");
   }
   //delay(1000);
}

void VehiculoCTL(int pos)
{
  int Adelante=90;
  int Derecha=0;
  int Izquierda=180;
  int Vel;

  timon.write(pos);
  Aceleracion(70);
  //delay(150);
  Serial.print("pos/vel ");
  Serial.print(pos);
  Serial.print("/");
  Serial.print(Vel);
  Serial.print("\n");
  //delay(100);
}



/////////////////////////
// Programa Principal //
///////////////////////


void loop()
{

  //Detecto objeto

int pos=0;
int DistChoque=30;
int Adelante=90;
int Derecha=0;
int Izquierda=180;


if (Detecto_Objeto(Adelante) > DistChoque)
      VehiculoCTL(Adelante);
  else
    if (Detecto_Objeto(Derecha) > DistChoque)
      VehiculoCTL(Izquierda);
    else
      if (Detecto_Objeto(Izquierda) > DistChoque)
          VehiculoCTL(Derecha);

}

Step 4: Montar Componentes En La Caja Estanca

Sobre la viga principal se deben poner los componentes del arduino en una caja estanca ziploc, por seguridad la caja debe ser anclada a la viga, una vez puesta, dentro se ponen los componentes electronicos fijandolos con huincha aisladora a la posicion que le corresponde. una vez listo se debe cerrar y montar sobre la tapa el sensor de distancia asegurandolo para evitar que caiga al agua

Step 5: Montar Servo Control Del Timon

Se debe montar el servo control del timon sujeto al pilar del motor, para eso fijar con amarras de cable al pilar principal