martes, 23 de junio de 2015

Minielevador Raspberry Pi

Este proyecto lo realizamos para la materia de Sistemas en Tiempo Real, en si el minielevador es algo sumamente sencillo que se puede desarrollar muy fácilmente, pero debido a la materia es un poco mas complejo, ya que hicimos manejo de Tareas, calendarizacion, y todo ese rollo de STR.
Ademas hicimos uso de la Raspberry Pi, que realmente tampoco es complicada de usar, pero para nuestro caso, resulto un poco tedioso debido a que tuvimos que compilar el kernel para aplicarle xenomai, lo cual la verdad fue molesto, debido a que seguimos varios tutoriales y ninguno funcionaba, pero aqui les dejo el link de un tutorial que funciono perfectamente

https://github.com/awesomebytes/xenorasp/wiki

El cual nos da la opción de compilar nuestro propio kernel con xenomai, o incluso nos brinda la imagen lista para solo grabarla en nuestra tarjeta SD.






Este vídeo lo grabe la primera vez que funciono el sistema, podemos observar que la cabina se mueve según el push button que presionemos, cada uno para cada piso, también podemos observar que una vez llegamos al piso indicado, el display 7 segmentos muestra el numero del piso. Ademas le pusimos un servomotor, simulando el abrir y cerrar de las puertas.





Este segundo vídeo lo grabamos minutos antes de entregar nuestro proyecto, y como toda la vida para un estudiante de ingeniería (sea la ingeniería que sea) algo tiene que fallar minutos antes de la entrega, en nuestro caso fue nuestro sensor de contacto para el piso 2, el cual quedo flojo su laminilla, y detectaba rara vez, a pesar de este fallo, podemos ver a nuestro sistema funcionando, e incluso ahora podemos ver el uso de nuestro sensor de peso, (el cual nosotros diseñamos) si esta activo, un LED se enciende para indicar que el peso esta excedido, ademas si mientras esta activo intentamos movernos a otro piso no podemos, tenemos que esperar hasta que se desactive para poder movernos a otro piso.

Pasando ahora mas a detalle de como lo diseñamos, nuestro elevador lo hicimos utilizando la riel de una impresora, que ya tenia un motor DC, el cual aprovechamos, ademas les pegamos "sensores de contacto" para identificar en que piso nos encontramos. Estos sensores, son switches los cuales podemos configurar de manera normalmente abierto o normalmente cerrado.



Para el manejo del motor DC utilizamos un puente H (SN754410), el circuito es realmente sencillo, y le pusimos diodos, por seguridad, lo cual les recomendamos ampliamente o podría quemarse su puente H al hacer los cambios el motor




Para indicar al usuario en que piso nos encontramos hicimos uso de un Display 7 segmentos, el cual manejamos con un decoder de BDC a 7 segmentos (74LS47)




Estos circuitos junto con, los circuitos para los botones de llamada de piso y los sensores de contacto los armamos en un par de protoboards






Manejamos un servomotor para simular el abrir y cerrar de la puerta del elevador, así como también diseñamos nuestro sensor de peso, el cual simplemente es un push button, junto con un par de resortes.


De manera mas detallada y explicada, les dejaremos un archivo PDF, en el cual describimos toda la electrónica, software, teoría del proyecto.

https://mega.co.nz/#!eIhCkJhZ!-vTS8x6g5Cqxb-tqrB67DunPQYhgRp3lTrdmSSTkezI

Nuestro código lo programamos en C, utilizando 3 librerías principalmente

wiringPi, esta librería nos permite manejar los pines de de propósito general GPIO de la raspberry de manera sencilla, con sintaxis prácticamente igual a la de arduino, les dejo el link de la pagina oficial para que vean como descargar, instalar e incluso referencias y ejemplos

http://wiringpi.com/

Servoblaster, esta librería nos permite manejar servomotores en la Raspberry Pi de manera bastante sencilla,  les dejo el link de la pagina oficial para que vean como descargar, instalar e incluso referencias y ejemplos

https://github.com/richardghirst/PiBits/tree/master/ServoBlaster

Xenomai, esta libreria nos permite manejar sistemas en tiempo real, es decir con ella podemos crear, manejar, calendarizar, bloquear, terminar tareas (Task), podemos manejar semaforos, ya sea para compartir recursos, o calendarizar las tareas.  les dejo el link de la pagina oficial para que vean como descargar, instalar e incluso referencias y ejemplos

http://xenomai.org/start-here/

pues por ultimo queda decirles que nuestro codigo esta descrito en el PDF del enlace de mas arriba, pero por cuestiones de comodida les dejo el enlace aqui para descargarlo, por que copiarlo luego de un pdf es un verdadero relajo

https://mega.co.nz/#!rUgFjQAY!ELflUz9ZE3XxSSF-DZNSR_1KCDLR6H9m04to3XFNOpA

espero les pueda servir, y si tienen alguna duda no duden en preguntar

0 comentarios:

Publicar un comentario