Sail Boat: Limpiapiscina
![El Prototipo.png](/proxy/?url=https://content.instructables.com/FR4/RAL2/H6DWQAEY/FR4RAL2H6DWQAEY.png&filename=El Prototipo.png)
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
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
Montado De Base
![IMG_0159.JPG](/proxy/?url=https://content.instructables.com/FCN/ZBOE/H673A60V/FCNZBOEH673A60V.jpg&filename=IMG_0159.JPG)
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.
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.
Montado De Motor Y Timon
![IMG_0158.JPG](/proxy/?url=https://content.instructables.com/F3H/27S9/H673A61M/F3H27S9H673A61M.jpg&filename=IMG_0158.JPG)
![IMG_0157.JPG](/proxy/?url=https://content.instructables.com/FQI/HCL6/H6I6WEC5/FQIHCL6H6I6WEC5.jpg&filename=IMG_0157.JPG)
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.
En el pilar del timon se debe montar la bisagra y sobre esta el timón.
Programar Arduino
![arduino2.jpg](/proxy/?url=https://content.instructables.com/FAP/OJ5O/H6DWVPXE/FAPOJ5OH6DWVPXE.jpg&filename=arduino2.jpg)
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);
}
#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);
}
Montar Componentes En La Caja Estanca
![la foto.JPG](/proxy/?url=https://content.instructables.com/F0U/8LDL/H6734XNX/F0U8LDLH6734XNX.jpg&filename=la foto.JPG)
![la foto2.JPG](/proxy/?url=https://content.instructables.com/FQ2/XRBL/H6DWVQ09/FQ2XRBLH6DWVQ09.jpg&filename=la foto2.JPG)
![la foto4.JPG](/proxy/?url=https://content.instructables.com/FRS/PPSY/H6DWVQ0D/FRSPPSYH6DWVQ0D.jpg&filename=la foto4.JPG)
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
Montar Servo Control Del Timon
![la foto3.JPG](/proxy/?url=https://content.instructables.com/FWQ/SM34/H6730TWU/FWQSM34H6730TWU.jpg&filename=la foto3.JPG)
Se debe montar el servo control del timon sujeto al pilar del motor, para eso fijar con amarras de cable al pilar principal