Sunteți pe pagina 1din 5

Automatizacion: Control de una puerta de garaje con Arduino (DIY) (Antes de nada, los credits: Mi grupo ramos Hctor,

Aitor y yo misma =^_^=) El pasado jueves estuvimos en clase de Automatizacin jugando con Arduino. Qu es Arduino? Arduino es,copypasteando de la wikipedia, una plataforma de hardware de fuente abierta basada en una sencilla placa con entradas y salidas (E/S), analgicas y digitales, y en un entorno de desarrollo que implementa el lenguaje Processing/Wiring. Est basado en el procesador Atmega8, un chip sencillo y de bajo coste que permite el desarrollo de mltiples diseos. Hay ms info y mltiples ejemplos en su web. Tengo que decir que es la primera vez que trabajaba con algo as, y que me ha encantado la experiencia. Por que? Porque, para empezar, es tremendamente sencillo de utilizar: Slo hay que escribir el cdigo en C un poco modificado, enchufar la placa al pc por usb, volcarle el programa, montar el circuito y ale, a correr. Pega: necesitas una placa, pero rondan los 30 euros (visto lo visto, no es tanto); aproximadamente la mitad si montas los componentes por separado (aunque te sale una placa ms grande) Concretamente, el modelo que hemos utilizado en clase ha sido una Arduino Diecimila, que aqu podeis ver en mi manita:

(haciendo clic en la imagen podeis acceder a ella en flickr, le he puesto unas cuantas notas explicando ms o menos qu es cada cosa) Al principio, el profesor nos sugiri que pensramos nosotros un posible uso de la placa para escribir el cdigo (sin circuito). Y me cost mucho, muchsimo pensar algo xD Pero cuando empezamos a utilizarla "fisicamente"... miles de ideas vinieron a mi ^^ Y eso da gustito :) (Aqu es cuando inserto un "gracias al seor mapache", por pasarme enlaces interesante con ejemplos, como este o este) En esta prctica, la idea era disear e implementar un sistema de control para una puerta de garaje. En nuestro sistema, tenemos un botn para abrir la puerta, otro para cerrarla y adems un detector de presencia, que para no montar ms lio de cables, sustituimos/simulamos con un tercer botn. Adems, en la puerta hay conectados dos finales de carrera, para indicar si la puerta est cerrada o abierta completamente. Se usan, adems, dos rels para abrir y cerrar, y unas cuntas resistencias para no quemar nada (y mira que nos gusta xD) Bueno, y por supuesto, la puerta del garaje, el motor, el pion-cremallera.... tambin eran bastante necesarios jaja.

O sea: Una placa de pruebas de laboratorio. Una fuente de alimentacin a 7,5 V. para alimentar el motor de la puerta de garaje. Dos rels de placa de circuito impreso de 5V. Una placa Arduino. Un cable USB para conectar y alimentar la placa Arduino a travs del PC. Tres pulsadores. Cinco resistencias de 2K2 ohmios. Cables de conexin. Multmetro.

Este es el esquema de conexin de las entradas:

Y este es el esquema de conexin de las salidas:

Y aqu, podeis verlo todo montadito (slalvo la puerta con su motor y finales de carrera):

Y para acabar, este es el cdigo. Tengo que decir que tard exactamente 10 minutos en disearlo y escribirlo, ms otros 5 de "solucin de minibugs" xD Y adems, se autoexplica a s mismo:
//Entradas int PulsadorVerde = 3; int PulsadorRojo = 4; int PulsadorPresencia = 5; int FinCarrera_Abierto = 6; int FinCarrera_Cerrado = 7; //Salidas int Rele_Abrir = 12; int Rele_Cerrar = 13; void setup (void) { pinMode(PulsadorVerde, INPUT); pinMode(PulsadorRojo, INPUT); pinMode(PulsadorPresencia, INPUT); pinMode(FinCarrera_Abierto, INPUT); pinMode(FinCarrera_Cerrado, INPUT); pinMode(Rele_Abrir, OUTPUT); pinMode(Rele_Cerrar, OUTPUT); } void loop (void) { if (digitalRead (PulsadorRojo) == HIGH) { while ((digitalRead(PulsadorPresencia) == LOW) && (digitalRead(FinCarrera_Cerrado) == HIGH)&& (digitalRead (PulsadorVerde) == LOW)){ // Al pulsar el rojo, mientras no hay presencia, no se pulse el verde y no se ha cerrado digitalWrite (Rele_Abrir, LOW); delay (500); digitalWrite (Rele_Cerrar, HIGH); } }

delay (100); if (digitalRead (PulsadorVerde) == HIGH){ while ((digitalRead(FinCarrera_Abierto) == HIGH) && (digitalRead (PulsadorRojo) == LOW)){ //Al pulsar el verde,mientras no se pulse el rojo y no se haya abierto digitalWrite (Rele_Cerrar , LOW); delay (500); digitalWrite (Rele_Abrir, HIGH); } } //Estado de reposo , no hay nada pulsado, o hay presencia digitalWrite (Rele_Abrir, LOW); //hay presencia, se corta la energa al motor digitalWrite (Rele_Cerrar, LOW); delay (100); }

Sencillo, verdad? :) El cdigo se escribe en un software especial para esto, que se puede descargar desde la propia pgina de arduino y corre sobre Windows, Mac y Linux. Este software te informa de si tu cdigo es o no correcto, te permite pasarlo a la placa, enviarle rdenes y seguro que hace ms cosas. Para pasar

el cdigo a la placa, simplemente se instalan los drivers que van con el software, se conecta la placa por usb al pc, se elige el puerto correcto (en mi caso, el COM4) y le dices "alah, vulcalo" . Y a correr! Cosa graciosa: el programa "inicial - por defecto" que lleva la placa es simplemente apagar y encender el LED que lleva incorporado. Pero lo hace a una velocidad bastante graciosa y suena como cuando se cocinan palomitas xD

S-ar putea să vă placă și