31 julio 2010

Ascensor

Son varios los trabajos que he desarrollado este curso pasado para mis alumnos, pero en algunos se vuelve a repetir el esquema eléctrico de otros proyectos presentados en este blog. Así que como más novedoso, presento el ascensor de tres paradas, un ejemplo típico de control programado.

MECÁNICA

El proyecto es muy amplio y comienza con el diseño de la maqueta que se va a automatizar. La principal especificación a la que responde su diseño es que quepa en una caja de folios que es la que utilizamos para guardar los trabajos en el aula. Estas son algunas fotos y los planos de la maqueta.









































En los planos no aparece una pieza que fue necesario diseñar a posteriori para que los finales de carrera funcionaran bien y que se puede ver en esta foto.








Para que el reductor de velocidad no quedara desproporcionado se diseñó uno de tamaño reducido, que se puede ver en el siguiente enlace:

CONTROL

Y una vez resuelta la parte mecánica, con la colocación y chequeo de los detectores de posición -finales de carrera- incluida, pasamos a la fase de control. He de señalar que la parte de control por ser más novedosa, parece más importante, pero si la mecánica no está bien resuelta el proyecto será un fracaso, y sólo una mecánica bien ajustada permitirá la aplicación de la fase de control y la belleza del conjunto.

En un primer momento, el control lo resolví con un autómata programable, dispositivo muy práctico para el control de pequeños automatismos y de gran aplicación práctica. Pero después, por problemas de disponibilidad de autómatas programables, empecé a trabajar el control por ordenador. Para ello el programa que he empleado ha sido LOGO. Este programa lo llevo trabajando muchos años con alumnos y me ha dado buenos resultados como introducción a la programación. Existen varios trabajos y controladoras desarrolladas para para automatizar proyectos con LOGO, pero he seguido uno que no necesita de la controladora, apoyándome en los siguientes enlaces:


De acuerdo con estos enlaces utilizo el programa MSWLogo en su versión 6.3c, con la que se controla el puerto paralelo. Para poder controlar el puerto paralelo es necesario, además, instalar algunos archivos si estamos trabajando con Windows XP. Los archivos necesarios y las instrucciones para instalarlos, las podemos encontrar en ambos enlaces.

Para aplicar el uso directo del puerto paralelo sin uso de controladora, había un pequeño problema y es que el puerto paralelo solo tiene cinco entradas, y el ascensor de tres paradas tiene seis entradas - tres finales de carrera y tres pulsadores.- El problema queda resuelto con el siguiente circuito:
En este esquema, los 'L i' son los pulsadores de las plantas, y los 'F i' los finales de carrera. Los pines son del puerto paralelo. Las resistencias son de 100 ohmios.

La 'interface' que nos va a permitir controlar la maqueta con el puerto paralelo se basa en un detector de ENTRADAS, al que corresponde el circuito anterior, y unas SALIDAS que activan dos relés, uno que arranca o para el motor y otro que controla el sentido de giro de éste. El circuito para las salidas es el siguiente:

El programa en LOGO permite la comunicación con el puerto paralelo con las primitivas 'leepuerto 889' y 'escribepuerto 888'. En primer lugar, conectamos los conductores numerados 'PIN i' de los esquemas eléctricos, con los pines correspondientes del puerto paralelo


La numeración de este dibujo corresponde a un conector de puerto paralelo hembra. No hay que olvidar conectar uno de los pines de masa del puerto -del 18 al 25- con la masa de nuestros circuitos, en nuestro caso el polo negativo de la pila de 4,5 voltios.

Para el programa en LOGO, empezamos por las salidas que son más sencillas. Las salidas son el puerto de datos, PORT 888 en la figura. En nuestro montaje, utilizamos la dos y la tres y según la sentencia de LOGO que utilicemos obtenemos el resultado:

escribepuerto 888 0, en binario 00, los dos pines están en tensión baja. El ascensor está detenido.
escribepuerto 888 1, en binario 01, el pin 3 está en baja y el pin 2 en alta. El ascensor baja.
escribepuerto 888 2, en binario 10, el pin 3 está en alta y el pin 2 en baja. Esta combinación no se usa.
escribepuerto 888 3, en binario 11, los dos pines están en tensión alta. El ascensor sube.

Y seguimos con las entradas. Las entradas son el puerto de estado, PORT 889 en la figura. Estas entradas están por defecto en tensión alta, excepto E7 y nosotros las cambiamos a tensión baja cuando tocamos los pulsadores, también cambian cuando el ascensor toca los finales de carrera. Sobre E0, E1, E2 no podemos operar y por lo tanto están siempre en alta. De acuerdo con nuestro esquema de conexiones, según donde se encuentre el ascensor, y el pulsador de llamada que toquemos, tendremos las siguientes lecturas del puerto 889:

Ascensor Tocamos pulsador Valor del puerto
en planta(F) de planta(L) binario decimal

0 1 0000 1111 15
0 2 0010 1111 47
1 0 0001 0111 23
1 2 0010 0111 39
2 1 0100 0111 71
2 0 0101 0111 87

Y a partir de estas premisas ya podemos escribir el programa.

PROGRAMA EN LOGO

para ascensor
si (leepuerto 889) = 87 [baja hasta_0]
si (leepuerto 889) = 71 [baja hasta_1]
si (leepuerto 889) = 39 [sube hasta_2]
si (leepuerto 889) = 23 [baja hasta_0]
si (leepuerto 889) = 15 [sube hasta_1]
si (leepuerto 889) = 47 [sube hasta_2]
ascensor
fin

para baja
escribepuerto 888 1
fin

para sube
escribepuerto 888 3
fin

para quieto
escribepuerto 888 0
fin

para hasta_0
si (leepuerto 889)= 63 [quieto alto]
hasta_0
fin

para hasta_1
si (leepuerto 889)= 55 [quieto alto]
hasta_1
fin

para hasta_2
si (leepuerto 889)= 119 [quieto alto]
hasta_2
fin

Los valores de 'leepuerto 889' en los procedimietos 'hasta_i' corresponden a los valores en binario del puerto 889, cuando el ascensor está detenido en cada planta y toca el final de carrera correspondiente.

CONCLUSIÓN

Este trabajo puede resultar un poco complejo, y usar el puerto paralelo un poco obsoleto, pero una vez que nos hemos iniciado en el control por ordenador, nos resultará cada vez más fácil y a raíz de los resultados nos podremos aventurar a utilizar otros lenguajes de programación y otros puertos más actuales como el puerto USB.



1 comentario:

DrakerDG dijo...

Primero que nada, mis felicitaciones por tan bonito trabajo. Son trabajos que yo catalogo en buen sentido como "destapa mentes".

Me llamó la atención del problema que comentas en relación a las 5 entradas del puerto paralelo, y recordé un programa en Visual Basic, que realicé junto con mi sobrino, en el cual se utilizamos una rutina para configurar el puerto paralelo en modo ECP (Extended Capability Port).

Fragmento del código:

Option Explicit
Public Const LPT1x = &H378 'Parallel port address
'*** Declare Types ***

Public Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte


Public Function OutPortECP(ByVal Num As Byte) As Byte
'Output Data in LPT + 402h
PortOut LPT1x + &H402, Num
OutPortECP = Num

End Function


En la rutina se accesa al puerto del paralelo (378h) mas el registro 402h, con el código 1Fh, se programa el puerto en ECP.

Con esta rutina y el circuito que se aprecia en la siguiente imagen, logramos crear un control para un juego (en nuestro caso) de 8 botones sin interfas, y con posibilidad de extenderlo a 12 botones. Utilizando la entrada de la pata 15 para detectar si el control está físicamente conectado.

http://files.myopera.com/DrakerDG/albums/9489052/LPT1-Ctrl-Push-Btn_P%C3%A1gina_1.png


Este es un vídeo de las pruebas en protoboard:

http://www.youtube.com/watch?v=P4oQmyUhS-c


Este es un video del software funcionando:

http://www.youtube.com/watch?v=TwvPVpoxg-k


Desde este link puedes bajar un archivo con el código fuente:

http://files.myopera.com/DrakerDG/ZIP/PP_CTRL8.zip

Lo pongo a tu disposición para que lo utilices libremente, con fines educativos. Si así lo deseas.