Está en la página 1de 10

CURSO: INTRODUCCIÓN A LA

ROBÓTICA CON ARDUINO

AUTOMATIZACIÓN PUERTA DE GARAJE

Documento creado por


Fernando Martínez Moya página 1 de 10
http://fermoya.com
Tabla de contenido

1. DESCRIPCIÓN GENERAL DEL TRABAJO ................................................................................................ 3

2. DIAGRAMA DE BLOQUES ............................................................................................................................. 4

3. ESQUEMAS ......................................................................................................................................................... 6

4. CONEXIONADO ................................................................................................................................................. 7

5. PROGRAMA DE LA PLACA ARDUINO ..................................................................................................... 7

6. SOFTWARE UTILIZADO ................................................................................................................................ 9

7. VARIACIONES AL PROYECTO ..................................................................................................................10

Documento creado por


Fernando Martínez Moya página 2 de 10
http://fermoya.com
1. DESCRIPCIÓN GENERAL DEL TRABAJO

Como trabajo final del curso me he propuesto automatizar el funcionamiento de alguno de


los proyectos que mis alumnos y alumnas han elaborado durante las horas de Tecnología
destinadas en el Aula-Taller.

El nivel educativo al que dirijo el presente trabajo es 4º de ESO, ya que en dicho nivel es
donde aparece el bloque de CONTROL Y ROBÓTICA, con el que se pretende que el
alumnado trabaje los siguientes contenidos:

 Comprensión y experimentación con sistemas automáticos, sensores, actuadores y


aplicación de la realimentación en dispositivos de control. Diseño, simulación y
construcción de robots.
 Uso del ordenador como elemento de programación y control. Trabajo con
simuladores informáticos para verificar y comprobar el funcionamiento de los
sistemas diseñados.

El proyecto elegido es una puerta de garaje, por tener la maqueta ya construida y probada
con anterioridad, y se pretende que la misma funcione de acuerdo con las siguientes
condiciones:

 Dispondrá de un pulsador de apertura. Al ser accionado la puerta comenzará a abrir.


 Al llegar a un final de carrera (bumper) denominado FCA (puerta totalmente abierta)
la puerta debe detenerse sola.
 Transcurrido un tiempo (unos 30 segundos) la puerta comenzará a cerrar.
 Al llegar a un final de carrera (bumper) denominado FCC (puerta totalmente cerrada)
la puerta debe detenerse sola.
 Si durante el proceso de cierre se accionase el pulsador de apertura, debe detenerse
el proceso para comenzar a abrir la puerta de nuevo.

Documento creado por


Fernando Martínez Moya página 3 de 10
http://fermoya.com
NOTA: Durante la elaboración del presente trabajo no he tenido en mi poder la placa Arduino, por lo que no
me ha sido posible conectar eléctricamente la maqueta y comprobar físicamente su funcionamiento.

2. DIAGRAMA DE BLOQUES

Para realizar las primeras pruebas de programación, de acuerdo con las condiciones
anteriormente establecidas, he empleado el software libre MyOpenLab, en su versión
3.0.3.2, descargada desde la web http://es.myopenlab.de/.

Documento creado por


Fernando Martínez Moya página 4 de 10
http://fermoya.com
Este software, que suelo trabajar en clase con mis alumnos y alumnas, nos permite diseñar
y simular cualquier programa mediante la utilización de diagramas de flujo. De esta manera
se puede comprobar el correcto funcionamiento de un programa para ir adaptándolo a las
necesidades de funcionamiento establecidas.

En este caso, tras realizar varias pruebas de funcionamiento, el diagrama de flujo que
determina el correcto funcionamiento de la puerta del garaje, en base a las condiciones
establecidas, es el siguiente:

Una vez comprobado el funcionamiento del programa resulta más fácil traducirlo al
lenguaje de la placa Arduino.

Documento creado por


Fernando Martínez Moya página 5 de 10
http://fermoya.com
3. ESQUEMAS

El esquema eléctrico que determina el conexionado entre los diferentes elementos de la


puerta (motor, finales de carrera y pulsador) con la placa Arduino es el representado a
continuación.

El listado materiales necesarios para realizar el proyecto es el siguiente:

 1 Placa Arduino Duemilanove


 1 Motor de corriente continua con reductora incorporada
 3 Resistencias de 10 kΩ
 2 Finales de carrera (bumpers)
 1 Pulsador normalmente abierto (NA)
 1 Fuente de alimentación de 5 Voltios (o pila de petaca de 4,5 voltios)

Documento creado por


Fernando Martínez Moya página 6 de 10
http://fermoya.com
4. CONEXIONADO

En el esquema se puede observar que utilizamos las patillas digitales 3, 4, 5, 6 y 7 de la Placa


Arduino.

Los pines 3, 4 y 5, donde conectamos los finales de carrera o bumpers y el pulsador NA deben ser
configurados como de entrada, mientras que los pines 6 y 7 deben ser configurados como de salida.
En un principio no se propone la conexión de las entradas a través de un integrado L293D (báscula
de Schmitt) que estabilice las posibles perturbaciones en éstos elementos.

En el caso de las entradas 5 voltios supondrá que el elemento ha sido activado (“1” lógico), mientras
que 0 voltios supondrá que el elemento se encuentra en estado de reposo o desactivado (“0”
lógico).

Para las salidas se pueden dar las siguientes opciones:

Pin 6 Pin 7 Estado Motor DC


1 HIGH (5 V) HIGH (5 V) PARADO
2 LOW (0 V) LOW (0 V) PARADO
3 HIGH (5 V) LOW (0 V) GIRO A DERECHAS (APERTURA)
4 LOW (0 V) HIGH (5 V) GIRO A IZQUIERDAS (CIERRE)

Queda claro que en los casos 1 y 2 no estaremos dando al motor diferencia de potencial alguna al
bobinado rotórico, por lo que estará parado. Los casos 3 y 4 son complementarios, por lo que uno
hace girar el motor en un sentido (apertura de la puerta) y el otro en sentido contrario (cierre de la
puerta).

5. PROGRAMA DE LA PLACA ARDUINO

El programa de la placa Arduino que cumple los requisitos establecidos para el funcionamiento de
la puerta automática es el siguiente:

Documento creado por


Fernando Martínez Moya página 7 de 10
http://fermoya.com
// Proyecto: AUTOMATIZACION PUERTA GARAJE
// Nivel: ESO4
// Autor: Fernando Martinez Moya
// Fecha: Enero 2011
/*
El pulsador abre la puerta. Al llegar al FCA se para, temporiza y cierra a
continuacion.
Si durante el proceso de cierre se pulsa PA, para el motor para volver a abrir.
Cuando esta cerrando se para al llegar a FCC.
*/

// Declaracion de constantes y variables


const int FCAPin = 3; // Final de carrera de apertura (entrada digital)
const int PAPin = 4; // Pulsador de apertura (entrada digital)
const int FCCPin = 5; // Final de carrera de cierre (entrada digital)
int MAPin = 6; // Giro motor para apertura (salida digital)
int MCPin = 7; // Giro motor para cierre (salida digital)
int tiempo = 1; // Tiempo que est abierta la puerta
int pa = LOW; // Variable que almacena el valor del pulsador
int fca; // Variable que almacena el valor del bumper de apertura
int fcc; // Variable que almacena el valor del bumper de cierre

// Declaracion de funciones
void para(){
digitalWrite(MAPin, LOW); // Ponemos los pines 6 y 7 en valor bajo
digitalWrite(MCPin, LOW); // Vale poniendolos en valor alto
}

void abre(){
digitalWrite(MAPin, HIGH); // Motor abre la puerta
digitalWrite(MCPin, LOW);
}

void cierra(){
digitalWrite(MAPin, LOW); // Motor cierra la puerta
digitalWrite(MCPin, HIGH);
}

// Configuracion e inicializacion
void setup() {
int i;
for(i=3;i < 6;i++) {
pinMode(i, INPUT); // Pines 3,4,5 configurados como entradas
}
for(i=6;i < 8;i++) {
pinMode(i, OUTPUT); // Pines 6,7 configurados como salidas
}
}

// Programa de control de la puerta


void loop() {
para(); // Comenzamos parando el motor
pa = LOW; // Inicializamos la variable pa
while (pa == LOW){ // Leemos el pulsador mediante un bucle
pa = digitalRead(PAPin);
}
pa = LOW; // Reiniciamos la variable
fca = digitalRead(FCAPin);// Leemos el bumper de apertura
while (fca == LOW){ // Abrimos la puerta y leemos el estado de fca
abre();

Documento creado por


Fernando Martínez Moya página 8 de 10
http://fermoya.com
fca = digitalRead(FCAPin);
}
para();
delay(tiempo * 1000); // Temporizamos el valor de tiempo en segundos
fca = LOW; // Reiniciamos la variable
fcc = digitalRead(FCCPin); // Leemos el estado del bumper de cierre
while (fcc == LOW){
cierra();
fcc = digitalRead(FCCPin);
pa = digitalRead(PAPin);
if (pa == HIGH){
para();
break;
}
}
}

Este programa ha sido comprobado con la ayuda de un simulador para Arduino,


concretamente el software libre Virtual Breadboard.

El video de la simulación puede encontrarse en:

 http://www.youtube.com/watch?v=3WF91hwJsDM

6. SOFTWARE UTILIZADO

El software que se ha utilizado para elaborar el presente proyecto ha sido el relacionado a


continuación.

 Software de programación Arduino Alpha, versión 022 (inglés)


 MyOpenLab, versión 3.0.3.2 (simulador de programación mediante diagramas de
flujo)

Documento creado por


Fernando Martínez Moya página 9 de 10
http://fermoya.com
 Fritzing, versión 0.4.3 (para el diseño del circuito eléctrico con Arduino)
 Virtual Breadboard, versión 4.2.5.0 (para la simulación del programa de control)
 Google Sketchup, versión 7 (para el diseño de la puerta y generación de las imágenes
que ilustran la forma de la misma)

7. VARIACIONES AL PROYECTO

Sobre el presente proyecto pueden realizarse algunas ampliaciones y/o modificaciones,


como son:

 Eliminar, del proceso de cierre, la acción del pulsador de apertura, para hacerlo más
sencillo.
 Incluir una lámpara verde para indicar que la puerta está abriendo y otra roja para
indicar cuando está cerrando.
 Incluir detectores de paso de vehículos para que la puerta no cierre hasta que el
vehículo no haya pasado en su totalidad.
 Incluir un contador de vehículos dentro del garaje (para realizar un parking público).

Fernando Martínez Moya

Documento creado por


Fernando Martínez Moya página 10 de 10
http://fermoya.com

También podría gustarte