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
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
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
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
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
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
Se debe montar el servo control del timon sujeto al pilar del motor, para eso fijar con amarras de cable al pilar principal