Persiana
Este proyecto consiste en la construcción de un controlador automático de persianas o cortinas enrollables; este permite que suba o baje la persiana por medio de la cadena plástica que ya posee en sus extremos.
Supplies
Herramientas y máquinas:
· Cortadora láser PLS 4.75
· Impresora 3D Ultimaker 3
· Cautín
· Alicates
· Prensas
· Pistola de silicón
· Soplete
Aplicaciones y plataformas:
· IDE Arduino
Diseño De Componentes
Para llevar a cabo el controlador automático de persianas, se comenzó diseñando los distintos componentes de los cuales esta estaría compuesta. Se estableció que los elementos necesarios para que la persiana funcione adecuadamente eran una caja para sujetar el motor que se utilizaría para poder mover la persiana, una segunda caja más espaciosa en la cual se pueda almacenar todo el cableado que se utilizó, dos bases para los finales de carrera, los cuales limitarán el movimiento de la persiana, y finalmente un engranaje capaz de girar y encajar de manera adecuada en la cuerda de la persiana.
Cortar E Imprimir
La elaboración de cada componente y los materiales de los cuales se hizo uso para elaborarlos varían dependiendo su función. La persiana funciona gracias a un motor DC, pero para que este pueda mover la cuerda de la persiana, fue necesario diseñar un engranaje con medidas precisas obtenidas del motor y de la cuerda de la persiana, que posteriormente fue impreso en 3D con PLA. Para elaborar la caja que va a sostener el motor se creó un diseño con medidas precisas teniendo en cuenta los tornillos que utiliza el motor y debido al detalle y el diseño establecido, esta también fue impresa en 3D. Ya que se hizo uso de un Arduino para programar el movimiento de la persiana, y que esta funciona gracias a un switch y un botón, fue necesario elaborar una caja lo suficientemente grande para poder almacenar los componentes que no deben ser visibles para el usuario, como los cables y la protoboard; sin embargo, se tuvo en consideración los componentes que sí deben estar a la vista, como lo es el switch y el botón. Teniendo en cuenta los componentes que deben ser visibles, se editó el diseño de la caja obtenido de Makercase (https://es.makercase.com/#/) en la plataforma Inkscape. Aquí se agregaron cuadros para cortar a láser y dejar el debido espacio para los componentes que deben ser visibles. Para limitar el movimiento de la persiana, se hizo uso de finales de carrera, los cuales fueron incorporados a la persiana con ayuda de cajas de MDF cortadas a láser, las cuales permitieron elevar la altura de los finales de carrera para que la persiana pudiera hacer contacto con ellos de una manera más fácil.
Últimos Detalles
Luego de tener todos los distintos componentes de la persiana, todos fueron pintados de negro y posteriormente pegados y asegurados con silicón caliente. Y ya que todos los componentes estuvieran listos, se utilizó cinta de doble cara para poder pegar los componentes a la persiana.
Programación
//declarar variables
int s1 = 3;
int s2 = 6;
int valor, valor_antiguo, estado;
int boton = 9;
int fc1 = 10;
int fc2 = 12;
int estadofinalcarrera = 0;
int estadofinalcarreraa = 0;
void setup() { //como van a funcionar los pines
Serial.begin(9600);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(boton, INPUT);
pinMode(fc1, INPUT_PULLUP);
pinMode(fc2, INPUT_PULLUP);
}
void loop() { //habilitar señales
estadofinalcarrera = digitalRead(fc1);
estadofinalcarreraa = digitalRead(fc2);
valor = digitalRead(boton); //leer el boton y se guarda en la variable valor
if ((valor == HIGH) && (valor_antiguo == LOW)) { //que el boton este presionado
estado = 1 - estado; //estado vale 0 (está en low), entonces estado es igual a 1, estado cambia su valor de cero a uno
delay(20);
Serial.println("BOTONAZO");
Serial.println(estado);
}
valor_antiguo = valor; // valor_antiguo va a ser high y valor a ser low. valor_antiguo se vulve low
// cada vez que se presiona el boton hay un cambio
if (estado == 1) { //se mueve a la izquierda cuando se inicia
if (estadofinalcarrera == LOW) {
delay(300);
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
Serial.println("FINAL DE CARRERA 1 PRESIONADO");
} else {
digitalWrite(s1, HIGH);
digitalWrite(s2, LOW);
}
}
if (estado == 0) { // se mueve a la derecha cuando el boton se presiona
if (estadofinalcarreraa == LOW) {
delay(300);
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
Serial.println("FINAL DE CARRERA 2 PRESIONADO");
} else {
digitalWrite(s1, LOW);
digitalWrite(s2, HIGH);
}
}
}