POSICIONADOR AUTOMÁTICO DE VIALES Por GEORGI KIRILOV TSIROV Grado en INGENIERÍA DE COMPUTADORES Facultad de INFORMÁTICA Dirigido por JUAN CARLOS FABERO JIMÉNEZ FULL AUTOMATIC VIALS UNSCRAMBLER Madrid, 2021–2022 Posicionador Automático de Viales Memoria que se presenta para el Trabajo de Fin de Grado GEORGI KIRILOV TSIROV Dirigido por JUAN CARLOS FABERO JIMÉNEZ Departamento de Arquitectura de Computadores y Automática Facultad de Informática Universidad Complutense de Madrid Madrid, 2022 Índice general 1. Resumen I 2. Abstract 1 3. Introducción 2 3.1. Idea del Posicionador Automático de Viales . . . . . . . . . . . . . . . . 2 3.2. Objetivo del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.3. Especificaciones del prototipo . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4. Plan de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.5. Documentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4. Estructura General y Piezas Impresión 3d 11 4.1. Estructura General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2. Modificaciones y Mejoras . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5. Hardware 15 6. Software 20 6.1. Estructura del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2. Funciones principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7. Sistema de Agarre 25 7.1. Sistema de Referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.2. Modificaciones y Mejoras . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.3. Diseño Propio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8. Pruebas, Mejoras y Conclusiones 31 9. Programas y Librerías usados 34 9. Bibliografía y enlaces de referencia 37 ii Capítulo 1 Resumen El objetivo es construir un posicionador automático de viales. Para ello se necesita un sistema capaz de agarrar y mover los viales en los tres ejes de coordenadas (X, Y, Z). En este proyecto se creará un sistema de agarre que pueda ejecutar movimientos tridimensionales para desplazar los viales. El sistema debe tener unas características concretas para poder integrarlo en un mag- netómetro y, de esa forma, automatizar el proceso de medida. Debe ser fiable, de gran precisión y sensibilidad a la hora de coger los objetos. A su vez, la estructura debería quedarse lo más alejada posible de la parte central, ser independiente y contar con un control sencillo de movimientos. El sistema contará con autonomía de auto-calibración y métodos de seguridad en caso de fallo. Además tendrá un fácil acoplamiento tanto en la estructura física del aparato existente como en su programa de control. Palabras Clave Arduino, A4988, servomotor, sg90, paso a paso, nema17, OpenScad, impresión-3d, impresora-3d, PLA i Capítulo 2 Abstract The objective is to build an fully automatic vials unscrambler. For this, a system capable of grasping and moving the vials in the three coordinate axes (X, Y, Z) is needed. In this project, a gripping system will be created that can execute three-dimensional movements to move the vials. The system must have specific characteristics to be able to integrate it into a magneto- meter and, in this way, automate the measurement process. It must be reliable, highly accurate and sensitive when picking up objects. The structure should stay as far away from the central part as possible, be independent and have easy movement control. The system will have auto-calibration autonomy and safety methods in case of failure. It will also have an easy coupling both in the physical structure of the existing device and in its control program. Keywords Arduino, A4988, servomotor, sg90, stepper (step by step), nema17, OpenScad, 3d printing, 3d print, PLA 1 Capítulo 3 Introducción 3.1. Idea del Posicionador Automático de Viales La creación de un prototipo el cual sea autónomo para desplazar viales de vidrio de 3mm de diámetro, surge de la necesidad de automatizar una tarea monótona y repetitiva en la cual se necesita a una persona que introducir y extraer el vial. De esa manera el usuario se puede dedicar a realizar otras tareas mientras se ejecuta el proceso de medida. Esta se contempla con más posibilidad y ganas de realizar después de pasarnos varias horas y durante varios días probando y desarrollando los equipos en la empresa. Cada vez que nos tocaba probar, hacer el rodaje de los equipos y comprobar su funcionamiento, esta idea se fue haciendo cada vez más una necesidad. La idea cada vez se hacía más probable y posible de realizar e implementar gracias a las herramientas y dispositivos que tenemos a nuestra disposición en los últimos años, debido a la publicación de información, proyectos y software libre en los diferentes sitios de internet. Para realizar el proyecto cuento con experiencia en el desarrollo de prototipos con mi- crocontroladores, uso de motores, sensores, actuadores y placas de desarrollo (Arduino, Raspberry Pi, PICs, etc...). También tengo experiencia en el diseño, impresión y desa- rrollo de piezas y prototipos con la impresión 3d (por el método de deposición fundida o SLA), tanto en el ámbito académico como por el autodidacta. El proyecto se ha desarrollado tanto en el ámbito personal como en la empresa “NanoTech Solutions” ubicada en Villacastín (Segovia). Dicha empresa se dedica a la fabricación de instrumentos de medida orientados al magnetismo y a su vez cuenta en la actualidad con un catalogo de productos desarrollados y en evolución desde hace 3 años. Agradezco la ayuda que se me proporcionó de todo el equipo de la empresa, tanto en ideas 2 FULL AUTOMATIC VIALS UNSCRAMBLER UCM y sugerencias para la mejora del equipo, como en los recursos con los que contaban. 3.2. Objetivo del proyecto El objetivo de este proyecto es crear un sistema con un nivel de autonomía que pueda moverse en los tres ejes de coordenadas (X, Y, Z) y pueda posicionar de manera auto- mática los viales (Figura 3.1). Para cumplir con el nivel de autonomía propuesto una vez ha intervenido el ser humano para iniciarlo, este sea capaz de hacer acciones por sí mismo según las órdenes que le lleguen, pudiendo estar supervisado, pero sin interferir en el funcionamiento a no ser que sea estrictamente necesario por un fallo o error. Figura 3.1: Sistema de 3 ejes El sistema debe tener unas características concretas para poder acoplarse al instrumento de medida y de esta forma automatizar el proceso. Debe ser fiable, preciso y sensible a la hora del manejo de los objetos. La estructura debe quedarse lo más alejada posible de la parte central, que sea independiente y tener un control sencillo de movimientos. Para que el sistema sea fiable y seguro debe tener la autonomía de auto-calibración y métodos de seguridad en caso de fallo. En caso de deterioro o fallo en alguna de las piezas o componentes, nos interesa que sean fáciles de encontrar y reemplazar, con esto también conseguiremos disminuir costes en los recambios. Con la impresión 3d en plástico y la popularidad que tiene en los últimos años podemos conseguir unos materiales más económicos y piezas fácilmente reproducibles. Se ha pensado que una vez se pruebe y se vea que el funcionamiento con un solo vial es correcto, se realizará un soporte en el cual dejar varios viales y, de esta forma, el sistema gane más autonomía y pueda cambiar de vial teniendo varias opciones para escoger. 3 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Figura 3.2: Explicación posiciones sistema real Podemos ver los diferentes puntos en los que el sistema debe moverse y posicionarse principalmente que son (Figura 3.2): Posición de inicio: es el punto desde donde parte al poner en marcha el prototipo, cogiendo las coordenadas [0,0,0] Posición de reposo: es el punto donde se depositará el vial para cogerlo antes de medirlo y para dejarlo una vez terminadas las medidas. Posición de medida: es el punto donde se introducirá el vial para hacer la operación de medida. 3.3. Especificaciones del prototipo Lo principal que tenía que cumplir el prototipo era que los componentes y las piezas deberían ser de fácil acceso y con un coste lo más bajo posible. El hardware y el software debe ser libre para facilitar el uso de estos en cualquier entorno, ya sea particular o profesional. El sistema debe tener una precisión de unas décimas de milímetro en los movimientos lineales de los ejes (+-0,1 mm), ya que el agujero donde se introduce el vial es de 3.7mm de diámetro y el vial es de 3mm. La precisión del agarre o herramienta que se utilizará tanto para coger y soltar, como para subir y bajar el vial, debe ser lo más preciso posible. Tiene que tener una gran sensibilidad en el cierre y apertura de forma que no rompa los viales porque al ser de vidrio son muy frágiles (grosor de pared de 0,27mm). 4 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Al igual que los costes económicos, debemos tener en cuenta el consumo de potencia eléctrica de los motores y las demás partes del prototipo (estando relacionados de forma directamente proporcional).Al tener un mayor consumo, los motores y los drivers deben ser de mayor potencia, así como la fuente de alimentación, lo que implica un mayor coste de estos. El prototipo debe tener elementos de autoajuste o autocalibración de forma que una vez instalado al ponerse en marcha, se ajuste o parta de una posición inicial. Hacen falta mecanismos de seguridad en caso de haber alteración o fallo en alguno de los elementos y para que no se produzcan daños en el equipo o al usuario. También el control mediante el software debe ser lo más preciso y seguro posible, imple- mentando bien las diferentes funciones de control y comprobando las partes del hardware. Al igual que se debe implementar un sistema de paro de emergencia o algo similar en caso de fallo. Tendrá que disponer también de un sistema de comunicación por el cual se realizará una comunicación bidireccional, de forma que desde el programa, que controla el aparato de medición, se le manden las órdenes en el momento preciso para que este realice una o varias acciones. Este a su vez devolverá una respuesta cuando las haya realizado. Se ha pensado en una comunicación mediante puerto serie. 3.4. Plan de trabajo Este proyecto se empezó a pensar y a planificar en junio de 2021. El plan de trabajo se tra- taría en varias etapas: planificación e investigación, fabricación y montaje de piezas para la estructura, prueba de hardware y ensamblaje, desarrollo de software, documentación y pruebas y mejoras. Algunas de las etapas no se han podido empezar hasta que se hubieran terminado otras previas, mientras que otras se han podido implementar simultáneamente, ya que así lo requería el proyecto en alguno de los momentos. Como el proyecto se ha realizado de forma individual, se han levado a cabo diferentes reuniones con el tutor del proyecto para informar y consultar en algunas de las etapas de como evolucionaba el proyecto, y resolver dudas. a). Planificación e investigación En esta etapa del proyecto lo principal era planificar bien el tipo de estructura que se quería hacer. Pensar en los elementos que compondrían el sistema a desarrollar y cual sería la mejor opción para las diferentes partes de la estructura y el hardware, que habría que usar para el mejor funcionamiento y desarrollo de las funciones 5 FULL AUTOMATIC VIALS UNSCRAMBLER UCM (movimiento y agarre). Al igual que pensar en el sistema de agarre que era una de las grandes dudas por la complejidad de los objetos a coger. En esta etapa se tardó varios meses hasta que se encontró y decidió entre las dife- rentes opciones que se encontraron en internet, buscando las diferentes estructuras de impresoras 3d, CNC, cortadoras láser, etc... en las que su estructura y uniones fuese con piezas impresas en plástico con una impresora 3d, para escoger una que se adaptara a nuestras especificaciones. Lo principal podríamos decir que fue encon- trar una estructura que fuera sencilla, ligera y que los materiales que necesitamos sean fáciles de conseguir. Finalmente encontré un diseño de una “CNC printable 3D” (enlace) que parecía que encajaba bien con lo que buscaba, descargué el diseño y los archivos de las piezas que se deberían imprimir con la impresora 3D. Para la elección del hardware, actuadores (motores) y sensores se tenía planteado varias opciones, la principal era utilizar un microcontrolador (PIC16) con los drivers L298N o L293d. La otra opción posible era usar el mismo sistema que usan la mayoría de impresoras-3d, CNC, y otros sistemas con motores paso a paso. Sabiendo que mi impresora usaba un Arduino Mega 2560, una placa Ramps 1,4 y driver A4988. b). Fabricación y montaje de piezas para la estructura Para hacer la estructura, lo principal era imprimir las piezas de plástico del diseño escogido y comprar las varillas y tuercas necesarias para el posterior ensamblaje de toda la estructura. Para la impresión de las piezas de plástico habría que elegir el material en el que queremos fabricarlas según sus características técnicas y la complejidad a la hora de la impresión. La principal opción era el ABS que es un material con más dureza y soporta más fuerza, el inconveniente principal que tiene este material es que a la hora de imprimir con él es más complejo, según las condiciones de impresión es difícil que las piezas salgan bien y no se deformen. La otra opción era utilizar PLA, que es un material más sencillo, no da tantos problemas de impresión y las piezas tienen un mejor acabado. Además, es un material más respetuoso con el medio ambiente ya que se fabrica a partir de materiales derivados de plantas vegetales. Con esta información, y según mi criterio, empezaría a imprimir las piezas en ABS, comenzando por las más pequeñas y observando como sería el resultado final de las piezas y el proceso, sin descartar el poder cambiar e imprimirlas en PLA y facilitar el proceso de impresión sin notar mucha diferencia en la rigidez y dureza de las piezas. 6 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Para los otros materiales que necesitamos, lo primero que tenemos que saber son las medidas que necesitamos para el posterior acople con el magnetómetro y dónde se situaría este. Con lo cual nos hacía falta una estructura de 50x40 cm (largo X ancho), estas serían las medidas de la base sobre la que anclaría la estructura de varillas y piezas 3d. Las medidas mínimas de varillas serían acorde a esas medidas de base. Para el ejeZ en principio se mantendrían las del diseño original de la “CNC Printable”. El resto de tuercas y otros materiales se pueden sacar o bien de los vídeos que hay relacionados en el sitio de o de la página web del autor de este diseño web CNC Printable. La compra de estos materiales se puede hacer en diferentes ferreterías, tiendas especializadas o páginas web sin complicación, ya que al estar tan en auge y de moda las máquinas de control numérico e impresoras 3d. c). Prueba de hardware y ensamblaje Como tenemos varias opciones a escoger entre unos elementos de hardware y otros, lo principal sería probar cada una de las configuraciones posibles en el control: control: microcontrolador PIC16, placa de desarrollo de Arduino. potencia (drivers): L293d, L298N, A4988 y DRV8825 ( para estos dos últimos, es conveniente la placa de potencia RAMPS). La elección del driver vendrá determinada por la reductora y la corriente por bobinado. Para probar las diferentes configuraciones y ver qué hardware nos conviene usar, se tendría que empezar casi en paralelo con la siguiente etapa. Habría que desarrollar un software sencillo para las pruebas y el funcionamiento de las diferentes partes. d). Desarrollo del software El software se desarrollara principalmente en el lenguaje de #C, aunque hay peque- ñas diferencias en las nomenclaturas entre el que se usa para los PICs y las librerías que se usan para Arduino. En mi caso desde hace poco utilizó un compilador y entorno (CCS Compiler) para la programación de microcontroladores que tiene un asistente para la configuración y programación de programas sencillos. Fue un compañero el que me comentó la existencia de este y empecé a usarlo poco antes de ponerme con este proyecto. Por lo que decidí usarlo principalmente porque proporciona librerías y funciones que ayu- dan a simplificar el software resultante. Para la programación de los dispositivos se utiliza el entorno de MplabX que es el propio del fabricante de los microcontro- ladores (Microchip), al igual que para estos necesitamos un programador, el cual tenía a mi disposición (Pickit 4). 7 https://srferrete.net/montando-una-cnc-parte-1-el-diseno/ https://srferrete.net/montando-una-cnc-parte-1-el-diseno/ FULL AUTOMATIC VIALS UNSCRAMBLER UCM Para la programación de las placas de desarrollo de Arduino utilizaré su propio entorno de desarrollo y programación (Arduino Ide). Ya que este es sencillo, fácil de usar y proporciona una gran variedad de librerías. e). Pruebas y mejoras La idea que tenía para empezar las pruebas sería ya con un prototipo básico, valdría con tener la estructura básica y los motores paso a paso para los ejes X , Y , Z , al igual que los elementos mínimos de seguridad y autocalibración inicial al poner en marcha el prototipo. A su vez empezaríamos con un software básico y sencillo sin muchas funciones y complejidades. Una vez probado que al poner en marcha el prototipo con los elementos básicos estaba todo correcto, añadiríamos la parte de la pinza o herramienta de agarre para ver como funciona este sistema y las mejoras que habría que aplicar según avanzaran las pruebas. Probaríamos los diferentes sistemas que se tienen planteados para el agarre del vial de vidrio y su desplazamiento. Para las pruebas iniciales se usaría algún elemento que no fuese tan frágil y su diámetro fuera más grande para posteriormente ir ajustando los elementos a las características del vial de vidrio. En el software se hará simultáneamente y en paralelo la adaptación según los cam- bios en el hardware o prototipo. Se adaptará según las pruebas, elementos hardware y sistemas que se quieran probar. Muchas de las partes y dimensiones del prototipo no sabremos como funcionan y si es lo que buscamos hasta que no hagamos alguna prueba y su posterior mejora en los casos que lo requiera. En un principio tenemos que adaptar y fabricar piezas para simular partes del aparato de medida al que se acoplará y la situación de estas partes, intentando que sean lo más reales posible para ajustar el prototipo según su objetivo final. 3.5. Documentación El presente documento se va a dividir en diferentes secciones y sub-secciones de mayor importancia para el desarrollo, fabricación y puesta en marcha del proyecto. Las partes que me han parecido más importantes y que detallaré con más precisión son: Introducción En el capítulo que estamos y es el primero lo que hemos descrito es de donde pro- viene la idea de desarrollar un prototipo como este. Además de los objetivos que queremos conseguir y sus características. También describimos de forma sencilla las ideas de las partes y sistemas que deben componerlo. 8 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Estructura general y piezas impresión 3d • Estructura general • Modificaciones y mejoras En este capítulo y sub-apartados describiremos la estructura física, elementos me- cánicos y piezas de impresión 3d que forman la estructura básica, sobre la que añadiremos los elementos de hardware y demás sistemas para conseguir el funciona- miento y objetivos del prototipo final. Además de comentar el montaje, fabricación, mejoras y posterior re-diseño de algunas de las piezas. Hardware Este punto es uno de los más importantes del diseño y puede condicionar muchos puntos como el Software, el Sistema de Agarre u otros. Describiremos las diferentes combinaciones de elementos de hardware y control que podemos usar y teníamos planteados, a la vez que vamos comentando las diferentes pruebas y ajustes con cada uno de los elementos. También debemos tener en cuenta la información y los pasos previos antes de poner en marcha alguno de los elementos, así como la compatibilidad entre ellos. Software En este apartado lo que vamos a comentar y explicar son los programas sencillos que nos han hecho falta para las pruebas iniciales y para los diferentes elementos y sistemas. Este es uno de los apartados dentro del proyecto que más cambios puede sufrir según las necesidades, funciones y elementos que tengamos. También descri- biremos partes y funciones esenciales y generales que deben estar en el programa final. Sistema de agarre • Sistema de referencia • Modificaciones y mejoras • Diseño propio En este capítulo y en sus respectivos apartados comentaremos uno de los sistemas más delicados del prototipo, como es la herramienta de agarre para el desplaza- miento de los viales. Este es el sistema en el que más dudas y más pruebas había que realizar hasta lograr la precisión y la sensibilidad que necesitamos. Al partir 9 FULL AUTOMATIC VIALS UNSCRAMBLER UCM con varias ideas y sistemas que podíamos usar, se convirtió en la parte, en la que más cambios y mejoras se realizaron. Teníamos la ventaja de poder rediseñar y mejorar el sistema ya que prácticamente eran piezas realizadas en plástico con la impresora 3d. Por otro lado al ser en plástico teníamos un inconveniente que sería la precisión y margen de error de las piezas y el encaje entre ellas. Conclusiones, pruebas y mejoras En este punto lo que describiremos son las conclusiones e información que hemos obtenido al desarrollar este prototipo. Sobre todo comentar la experiencia de rea- lizar un prototipo utilizando la impresión 3d y como esto puede ayudarnos a en hacer realidad ideas e inventos que se nos ocurran. Ya sea por necesidad personal, profesional o cualquier otra motivación. Comentaremos algunos cambios que se pueden seguir realizando para mejorar nues- tro prototipo y su adaptación a otros entornos o tareas. Programas y librerías usados Aquí comentaremos las librerías, programas y entornos que hemos usado en los diferentes puntos o sistemas, el hardware, el software o el sistema de agarre, así como en el diseño e impresión de las piezas para la estructura. 10 Capítulo 4 Estructura General y Piezas Impresión 3d Figura 4.1: Estructura básica Aquí podemos ver una imagen (Figura 4.1) de la estructura ya montada y ensamblada y con algunos de los elementos extra que nos han echo falta. 4.1. Estructura General Para el montaje de la estructura básica que tendría el prototipo, lo principal era obtener los materiales y las piezas impresas con la impresora 3d. La mayoría de los materiales había que comprarlos en una tienda o ferretería, como se ha comentado anteriormente y no son muy difíciles de obtener. Por otro lado, teniendo la lista de materiales del enlace o página web del creador del diseño de referencia, se nos simplifica la tarea. Lo único que tenemos que saber, es la longitud de las varillas lisas de M8, las varillas de husillo y 11 FULL AUTOMATIC VIALS UNSCRAMBLER UCM la tabla (contrachapado de 5mm), que usaríamos de base para dar más estabilidad a la estructura. El siguiente paso importante para el montaje de esta estructura son las piezas de plástico impresas con la impresora 3d. Tenemos que tener cuidado y tener en cuenta que en la página web del diseño hay varias versiones de las piezas para diferente diámetro de varilla o rodamientos. Con la información que tenía y según mi criterio empecé a imprimir las piezas en ABS, empezando por las más pequeñas y viendo como sería el proceso y el resultado final de las piezas. Parecía que las piezas salían con buena calidad y sin defor- marse, pero en cuanto se empezó con las piezas más grandes el proceso de impresión y el acabado de estas fue a peor. Este fallo en la impresión podría venir dado por la compleji- dad y temperatura que necesita este material o por un fallo en uno de los dispositivos de la impresora (base caliente). Por tanto se cambió al PLA y de esta manera evitamos los problemas en el proceso de impresión, ya que el acabado correcto de las piezas influye en el funcionamiento y desplazamiento de las piezas móviles. En este proceso se tardó apro- ximadamente 2 meses hasta que se obtuvieron todas las piezas con el acabado correcto. Se tardó más de lo normal porque tuve algunos problemas con los materiales y luego algún fallo de la impresora por el deterioro ,uso y desgaste de algunas piezas de la impresora. Una vez se solucionaron los problemas, en 2 o 3 semanas las teníamos todas. Figura 4.2: Pieza eje Z Figura 4.3: Pieza eje X Figura 4.4: Pieza eje Y motor Figura 4.5: Pieza eje Y rodamiento 12 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Estas son algunas de las piezas más relevantes y más grandes en dimensión del diseño original sin modificación (Ver desde Figura 4.2 hasta Figura 4.5). Para el montaje de la estructura en la página de descarga de los archivos podemos en- contrar vídeos de como montar las piezas de plástico, con las demás piezas y tornillos de sujeción. A la hora del ensamblaje en algunas de las piezas tocó limar y lijar un poco para que encajasen y quedaran bien todos los elementos. Mi consejo es ir con paciencia y sin prisa, porque si encajan bien las piezas luego el desplazamiento de los rodamientos y varillas es mucho mejor. 4.2. Modificaciones y Mejoras Se tuvieron que hacer varias modificaciones y mejoras. Algunas para poder terminar de montar y ajustar bien la estructura y otras para las necesidades que tuvimos después de hacer varias pruebas. Figura 4.6: Tope varilla eje Z Figura 4.7: Final de carrera modificado Figura 4.8: Eje Z modificaciones En algunas de las piezas, como por ejemplo en la pieza que se ve del ejeZ (Figura 4.2), durante la impresión se descuadraron los agujeros en los que van las varillas lisas. Con lo cual el tornillo para sujetarlas ya no hacía bien presión y estas se movían. Por lo tanto tuvimos que diseñar otra pieza para poner como tope y de esta manera arreglar el defecto (Figura 4.6). Otras de las piezas se tuvieron que modificar o crear nuevas con unas medidas diferentes 13 FULL AUTOMATIC VIALS UNSCRAMBLER UCM para adaptarlas según las funciones y las necesidades del proyecto. Una de las que se tuvieron que modificar fue el carro del ejeZ (Figura 4.9), que es la pieza que se desplaza por las varillas y donde se sujeta la herramienta de agarre. El recorrido que tenga esta pieza nos define los límites de movimiento en altura (recorrido ejeZ). Según las dimensiones de la pieza, tenía una altura de 48mm y con esto teníamos un margen de movimiento en altura de 40mm. El nuevo diseño se hizo con una altura de 28.5mm para que entrase el rodamiento y de esta manera aumentamos el movimiento en altura hasta los 60mm. También diseñamos una pieza para sujetar el final de carrera en una posición concreta (Figura 4.7) para ganar unos milímetros más. Figura 4.9: Carros eje Z Podemos observar el aspecto final del eje Z montado y con las modificaciones aplicadas (Figura 4.8), sin la herramienta de agarre. 14 Capítulo 5 Hardware Para las pruebas con los componentes de hardware con los que teníamos pensado realizar el prototipo, la primera opción era la de usar un microcontrolador PIC16 y un driver de potencia. Como no sabíamos que motores usar (de qué corriente se necesita por bobinado), la idea principal que había era usar unos que tuvieran fuerza/par de forma que pudieran mover los elementos del prototipo. Unos que encajaban con estas característi- cas son los nema17 (Figura 5.1) de 1,7A por bobinado, 45 kg/m de fuerza y 200 pasos por vuelta, es decir 1.8º por paso. Estos mo- tores nos permiten una mejor precisión si se usa una reductora o haciendo un mejor con- trol activando y desactivando en un orden cada extremo de los bobinados. Se puede utilizar una reductora desde 1/2 hasta 1/16 o incluso algunos permiten hasta 1/32. Se- gún la reductora que usemos esto nos cam- bia el número de pasos por vuelta o un me- nor grado por paso (num Pasos = pasos por vuelta original / Reductora). Como no te- nía muchos conocimientos sobre la fuerza o par que tenían que tener los motores, pensé que era mejor unos que tengan más fuerza y tener un consumo algo más elevado, para no encontrarnos con el problema de que los motores no tuvieran suficiente fuerza para mover las estructuras. Figura 5.1: Motor nema 17 Una vez teniendo los motores elegidos y sabiendo su consumo en amperios, ya podemos elegir un driver que soporte esa corriente para poder alimentar al motor, ya que el micro- controlador proporciona una corriente baja en sus pines (alrededor de 0,025A o 25mA). Debido a lo anterior, necesitamos un elemento de potencia entre el microcontrolador y el 15 FULL AUTOMATIC VIALS UNSCRAMBLER UCM motor para que proporcione la corriente necesaria. Un driver que había usado y aguanta- ba bien esa potencia era el L298N, pero el inconveniente es que ocupa una gran superficie y además tenemos que poner más elementos adicionales para su correcto funcionamiento, su seguridad y para no dañar los motores (Figura 5.2). Realicé un prototipo de placa PCB (6x5,5 cm) con este driver, diodos, condensadores y conectores para facilitar las pruebas. Figura 5.2: Driver L298N Para probar esta combinación de control, potencia y motor, se realizó un programa sencillo con un bucle en #C. Lo que hacía era dar 200 pasos y hacer que el motor diera una vuelta completa. Esto funcionaba sin problemas, pero viendo el diseño y sabiendo que tenemos al menos 4 motores paso a paso, vimos que la placa de control y potencia quedaría con un tamaño grande y a tener en cuenta. Se usó un PIC16F886 montado en una placa de pruebas (protoboart) y luego realizando las conexiones entre placas y fuentes de alimentación. Desde el PIC necesitamos 4 salidas para controlar cada uno de los extremos de los 2 bobinados. Viendo que este driver es más complejo de manejar se comparó con el driver comentado en la introducción. Muchos de los sistemas de control numérico, o que usan motores paso a paso, usan el driver A4988 (Figura 5.3) o DRV8825 (Figura 5.4). Pero además como necesitábamos una corriente de 1,7A por bobina, deberíamos usar el DRV8825, que aguanta hasta 2A con un sistema de refrigeración. Lo importante que tenemos que tener en cuenta de estos drivers es que tienen un sistema de ajuste, el cual debemos ajustar a la corriente que necesita el motor por bobina para no dañarlas. Esta información la obtuve de páginas web y blogs que encontré, uno de los principales que usé para poner en marcha este elemento fue la siguiente blog. Para el ajuste de los drivers podemos decir que lo más difícil es sacar todos los datos y parámetros para la conversión de la corriente a la tensión de referencia que tenemos que ajustar en el driver. Hay veces 16 https://www.luisllamas.es/motores-paso-paso-arduino-driver-a4988-drv8825/ FULL AUTOMATIC VIALS UNSCRAMBLER UCM que según el fabricante o según el driver algunos parámetros y elementos pueden variar, como las resistencias de sensibilidad que tienen. El valor de esta resistencia fue uno de los parámetros que me costó encontrar. Esta información que hemos sacado del blog y cualquier otra información relacionada con las características del driver, viene detallada en el datasheet del componente. Figura 5.3: Driver A4988 Figura 5.4: Driver DRV8825 Figura 5.5: Placa con PIC y driver DRV8825 Una vez probado y visto el funcionamiento de los drivers a4988 y drv8825, me di cuenta que aunque estábamos probando con el PIC (Figura 5.5), sería mucho más sencillo y más fácil de remplazo y un ahorro de trabajo por mi parte al utilizar cosas más comerciales y especificas para esta parte. Podría utilizar la placa de potencia/escudo o shield RAMPS1.4 (Figura 5.6) u otras versiones más actuales y para la parte de control utilizar el Arduino Mega 2560 (Figura 5.6). De esta forma sabemos que ya todo el conjunto de control, potencia y motores está testado, probado y funciona. Las conexiones y ensamblaje entre 17 https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf FULL AUTOMATIC VIALS UNSCRAMBLER UCM los diferentes componentes del hardware encajan al milímetro (Figura 5.7) sin tener la necesidad de hacer cambios o adaptaciones. Figura 5.6: Arduino Mega 2560 y Ramps 1.5 Figura 5.7: Arduino Mega 2560 y Ramps 1.5 montados Para los elementos de control, seguridad y autocalibración al poner en marcha el pro- totipo se usan unos simples pulsadores, al igual que los drivers, ramps y arduino vie- nen preparados con su placa y su conector para conectarlos directamente a la RAMPS. Estos los podemos encontrar buscando “mó- dulo final de carrera” (Figura 5.8) o aña- diendo además impresora 3d o CNC en los buscadores de internet. Estos interruptores nos indican cuando el sistema ha llegado a la posición de inicio, que es la misma que las coordenadas [0,0,0], tanto cuando se po- ne en marcha el prototipo, como cuando se hace la autocalibración. Por otro lado los in- terruptores sirven como mecanismos de se- guridad que detienen los motores en caso de llegar a cualquiera de los extremos si no se han parado. Figura 5.8: Final de carrera Por último una vez teníamos todo montado se realizaron pruebas con la estructura. Al ver que todo se movía correctamente y funcionaba sin problemas juntando la estructura y los elementos de control, nos dimos cuenta que los motores no tenían que ser de esa potencia y consumo (1,7A por bobina), por lo tanto se quiso probar con un motor que disminuía mucho en consumo (a 0,33A), al igual que los que tiene la impresora 3d utili- zada para imprimir las piezas. Por lo tanto se cambiaron los motores, y probando no se notó ninguna diferencia significativa. Entonces decidimos quedarnos con los motores de 18 FULL AUTOMATIC VIALS UNSCRAMBLER UCM 0,33A , 2,3kg/cm y 200 pasos por vuelta. De esta forma el consumo es menor y los driver usados finalmente son los A4988, con un menor precio respecto al DRV8825. La fuente de alimentación que necesitamos tiene que ser mínimo de 4*0,33A + 0,5A del servo para la pinza y un consumo mínimo de los demás elementos. Por lo tanto necesita- mos una fuente de alimentación de 12V DC y 2A mínimo, pero siempre es recomendable dejar algo de margen (unos 0,5A o similar) porque los picos y los motores consumen más cuando proporcionan más fuerza. 19 Capítulo 6 Software La idea principal es que el programa o software que desarrollemos reciba unos comandos o instrucciones a través del puerto serie, y realice las acciones necesarias y una vez terminada esta, devuelva un comando por el puerto serie indicando si se ha realizado correctamente o si ha habido algún error. Como se comentó en la introducción, se usaron diferentes entornos de desarrollo y pro- gramación según la tecnología que se fue probando. Para el programa del microcontrolador PIC se utilizó el compilador CCS Compiles y su entorno, además se utilizó para alguna prueba sencilla el compilador de #C. Para la programación y depuración del componente físico se utilizó el programador Pickit 4 y el entorno de MplabX Ide (versión de 5.50). Si queremos hacer algún tipo de comunicación serie entre el PIC y el ordenador por el puerto serie, necesitamos un adaptador o interfaz de UART a USB. En mi caso use una placa de evolución que realizaba exactamente esta conversión y nos facilitaba la tarea de comunicaciones. Para el desarrollo y programación del software de la placa de Arduino se utilizó su propio entorno de desarrollo “Arduino IDE”. La programación de la placa se realiza por puerto serie (USB), ya que la propia placa lo facilita de este modo y no tenemos que tener ningún programador adicional como en el caso de los microcontroladores PIC. Este programa en un inicio era muy sencillo para realizar alguna prueba con un motor de paso a paso, para controlar un servo motor, o para realizar una comunicación por el puerto COM. El programa para el control de los motores, servomotor y los interruptores de final de carrera no es muy complejo. Se puede complicar y añadir todas aquellas funciones que necesitemos y nos hagan falta para cumplir nuestros objetivos. Una de las cosas en la que más dificultad encontrar fue la relación entre los pines de la placa de Arduino Mega 2560 y la RAMPS1.4, además de cuales son los pines que se corresponden con el control y manejo de los drivers. Parte de esta información la encontré 20 https://reprap.org/wiki/RAMPS_1.4#Pins FULL AUTOMATIC VIALS UNSCRAMBLER UCM en varias páginas después de estar investigando y buscando datasheet y manuales. Otra información encontré en vídeos y fotos para ver como controlar un servomotor conectado directamente con la RAMPS1.4 o 1.5 de forma que se pueda unificar todo. Hay varios ejemplos y códigos disponibles en las páginas y manuales de las cuales he cogido infor- mación, así como esquemas y partes de códigos. Pero al final el código se ha escrito de forma que sea útil para este proyecto y seguirá evolucionando según se necesite. Tendremos un esquema general en el cual diferenciaremos cada uno de los módulos y sistemas que forman parte del prototipo y de su control en el código (Figura 6.1). También podemos apreciar el intercambio de datos y el sentido/tipo de comunicación entre cada uno de ellos. 6.1. Estructura del Software Figura 6.1: Diagrama del software En el módulo de control, como su propio nombre indica, se encargará de gestionar y controlar cada uno de los módulos y así como la información que le llega o debe mandar a los otros. Este tendrá guardados una serie de variables y datos que hacen relación al estado y posición de la herramienta. También en un principio y por seguridad se guardan las dimensiones o coordenadas máximas a las que puede llegar en cada eje y se hace un control de seguridad por software. El módulo de comunicación se encarga de hacer la interfaz y comunicar el prototipo ya sea 21 https://www.youtube.com/watch?v=eliqlby-2Dw FULL AUTOMATIC VIALS UNSCRAMBLER UCM con el aparato al cual queremos incorporar este prototipo como, en el caso de las pruebas, para recibir órdenes externas y mandar la respuesta correspondiente. Este módulo no tiene mucha complicación gracias a las librerías y funciones que tenemos para Arduino. El tipo de dato o trama que se reciba y mande serán sencillas, tratándose de texto plano, ya se una cadena de números, de caracteres o simplemente un solo carácter. Uno de los más importantes en este caso para el funcionamiento principal encargado de mover y posicionar la herramienta del prototipo son los motores paso a paso. Pero este es sencillo y fácil de implementar gracias al hardware elegido (placa RAMPS y los driver A4988). Con estos elementos el código se simplifica mucho ya que el control del motor se traduce en tener un pin para habilitar/deshabilitar el driver (y al motor), uno para indicar el sentido de giro (horario/antihorario) y otro por el cual le mandaremos pulsos. El pulso que se le mande debe ser con un ciclo de trabajo de 50% y según sea la frecuencia o periodo del pulso el motor gira más rápido o más despacio. Con cada pulso que se mande se indica que el motor realiza un paso. El módulo de sensores por el momento está formado solo por los interruptores de final de carrera. Los interruptores nos indican al encender el prototipo que cuando se activen, este está en las coordenadas de inicio [0,0,0] y a partir de allí se empezará a desplazar y sabemos la posición concreta en la que esta la herramienta. Si tenemos un interruptor de estos en cada extremo de cada eje, esto nos proporciona un mecanismo de seguridad, de forma que en cuanto se active alguno de los dos, el motor de ese eje se debe parar para evitar daños, aunque no está descartado añadir algún sensor más en el futuro para mejorar la autocalibración y confirmación de esta. Para el control del servo motor hemos hecho uso de la librería “Servo.h” de Arduino de manera que el código y manejo de este es sencillo. El control de este motor se realiza mediante señal PWM y es de una frecuencia determinada y según el ciclo de trabajo se controla el ángulo. Con la librería no tenemos que encargarnos de la configuración y la traducción de órdenes al servo motor, así con indicar el pin en el cual se ha conectado y posteriormente vamos indicando en grados las diferentes posiciones en las que deseamos que se posicione el giro. En nuestro caso los grados se traducen a cuanto será la apertura del sistema de agarre. El funcionamiento general del programa será el siguiente: Inicio del sistema: El sistema estará programado para que ponga el sistema de aga- rre a una apertura concreta y realice un desplazamiento hasta las coordenadas [0,0,0] o se coloque en la posición de inicio, de manera que los motores de cada eje empiezan a moverse hasta que lleguen a activar el interruptor. Espera de orden o comando: el sistema hace una espera activa de órdenes o coman- 22 FULL AUTOMATIC VIALS UNSCRAMBLER UCM do por el puerto serie. Cuando recibe un comando: lee la información recibida y traduce esa orden o cade- na de caracteres a los movimientos o pasos que debe realizar en cada uno de los ejes y el sistema de agarre. Posteriormente ejecuta esos movimientos y acciones según el comando recibido y devolverá una respuesta por el puerto serie, en el caso de que se ha podido ejecutar la orden o en el caso de que se ha producido cualquier error. En caso de error: en este caso y según creo la mejor opción o acciones que debe realizar el sistema sería parar todo y no hacer nada en caso de fallo. Creo que esta sería la mejor opción, porque en caso de que tengamos algún fallo grave, como el de rotura del vial de vidrio o cualquier otro tipo de error, una parada total evitaría daños mayores al sistema o al usuario. 6.2. Funciones principales void setup(); Esta función es una de las principales, ya que es donde se inicializan las variables, se realiza la configuración de los sistemas, se realiza la asignación de pines, donde se inicializan todos los sistemas y se realizan los primeros movimientos programados del sistema al encenderse. void loop(); Esta función es la del bucle principal o donde está toda la lógica y la ejecución de las órdenes y funciones. void info(); Esta función se encarga de devolvernos la información de la posición de la herra- mienta en cm de cada eje y el ángulo del servomotor o podríamos decir la apertura de la pinza. Esta información la tenemos almacenada en variables globales. bool home(); Esta función se encarga de que el sistema busque o se coloque en la posición inicial que le tengamos puesta en nuestro caso es la [0,0,0], y esta se alcanza cuando activa cada uno de los interruptores de cada eje. bool moveSISTEMA(int pasos); De este tipo de función habría una por cada sistema que hay que mover ejes X, Y, Z por lo tanto serían idénticas y en cada uno lo que indicaremos es el número de pasos que se debe desplazar el motor. En este caso devolveremos un true en caso de que todo ha salido 23 FULL AUTOMATIC VIALS UNSCRAMBLER UCM bien y en por lo contrario devolveremos un false si se ha producido algún error. De la librería “Serial.h” y “Servo.h” alguna de las funciones usados son estas: void Serial.begin(baudRate); void Serial.setTimeout(time); size_t Serial.print(val); size_t Serial.println(val); size_t Serial.readBytesUntil(character, buffer, length); myservo.attach(pin); myservo.write(angle); 24 Capítulo 7 Sistema de Agarre Como se ha comentado en la introducción, esta parte del prototipo era la que más dudas y más pruebas necesitaría. También era la parte en la que más posibilidades teníamos de elegir un sistema u otro y las forma de este, pensando en cual sería la mejor opción y mejor funcionaria. Los sistemas que teníamos pensados eran: El de un sistema de pinza que al cerrarse cogiera el vial por presión. Otra que tendría la forma de unas pinzas en forma de “V” y mediante un mecanismo en la parte superior del vial que sobresaldría se podría subir agarrando esta especie de tapón o capuchón y así levantarlo. La otra podría ser combinar las dos opciones anteriores o algunos de los aspectos y de esta forma usar varias cosas para el manejo de los viales. Para este sistema se me ocurrió buscar como para la estructura general un diseño o algo desde lo que partir para usar como herramienta de agarre para los viales. Lo que tenía en mente era una pinza como de un brazo robot o algún proyecto que tuviera un sistema similar. Después de dar varias búsquedas entre diferentes páginas y sitios en internet como https://www.thingiverse.com, https://cults3d.com/es, etc... Al fina encontré varios y el que más me encajo y me pareció que podría valerme fue este: DIY Arduino Robot Arm 7.1. Sistema de Referencia Después de escoger el diseño (Figuras desde 7.1 hasta 7.6) como lo principal era imprimirlo y ver como quedaba una vez impreso, montado físicamente, ver como queda el cierre de la pinza y para hacernos una idea de la relación entre el tamaño del agarre y los viales. Una vez teniendo en físico la pinza y viendo como funciona el sistema que utiliza, nos podíamos 25 https://www.thingiverse.com https://cults3d.com/es https://www.thingiverse.com/thing:4865712 https://www.thingiverse.com/thing:4865712 FULL AUTOMATIC VIALS UNSCRAMBLER UCM hacer una idea de si estábamos bien encaminados con este tipo de sistema y si nos valdría para utilizarlo como referencia. En este caso como todo fue bien con la impresión, el montaje, y el sistema que utilizaba parecía fácil de modificar para adaptarlo a nuestras necesidades, nos pareció buena idea partir con este prototipo como referencia. Figura 7.1: Engranaje A Figura 7.2: Engranaje B Figura 7.3: Base pinza Figura 7.4: Barra sujeción Figura 7.5: Dedo A pinza Figura 7.6: Dedo B pinza Figura 7.7: Pinza referencia A Figura 7.8: Pinza referencia B Se probó el sistema de cierre y apertura de la pinza una vez montada (Figuras 7.7 y 7.8), también fue con el prototipo de agarre que se probó el funcionamiento y el software del servomotor. De esta forma se pudo comprobar qué tal funcionaba el sistema y si nos servía para nuestro proyecto. Vimos la precisión y sensibilidad que podría llegar a tener a la hora de la apertura y cierre de la pinza. Después de las pruebas observamos que esta pinza no nos valía, que el tamaño que tenía era más grande de lo que nos hacia falta y 26 FULL AUTOMATIC VIALS UNSCRAMBLER UCM que la forma de la pinza no nos valía porque no podía coger objetos tan pequeños como el vial de 3mm de diámetro. 7.2. Modificaciones y Mejoras Como el diseño anterior que teníamos de referencia no nos servía y además no podíamos modificar las piezas, por el tipo de los ficheros, sino que como mucho se podían escalar. Pero escalando las piezas algunas no nos valdrían, como la base donde va sujetado el servomotor y las otras no sabíamos si encajarían para poner los tornillos de sujeción. Entonces lo único que nos quedaba era intentar hacer nuestro propio diseño, partiendo como referencia de este, fijándonos en las medidas y forma de las piezas. Por otro lado como ya vimos que el diseño del agarre que tenía no nos valdría para objetos pequeños, teníamos que hacer un diseño de esa parte completamente nuevo y partiendo de cero. 7.3. Diseño Propio Para el diseño nuevo lo que hemos hecho es tomar como referencia el diseño principal que encontramos. Lo que se ha hecho es ir tomando las medidas con calibre de las piezas que teníamos impresas e ir diseñando nosotros con el programa de diseño 3d las mismas piezas, pero aplicando un factor de escala en las que se podía y las otras se han echo según tamaño del servomotor o lo que correspondía. Como el programa de diseño nos permite hacer estos diseños por módulos y las medidas introducirlas mediante variables, nos facilita mucho la tarea, en el sentido que una vez tengamos un diseño inicial propio (Figuras desde 7.9 hasta 7.14). Una vez tengamos el diseño propio en el programa de diseño, lo que podemos hacer es cambiando el valor de estas variables nos escala o modifica el diseño según las dimensiones que necesitemos. La parte más compleja de este diseño era el de diseñar las partes dentadas o las partes que se unen mediante engranajes para hacer el funcionamiento principal de la pinza (Figura 7.9). Para esta parte nos hemos apoyado en una librería que existe para hacer este tipo de diseños y que se puede utilizar para el programa de diseño que usábamos. Figura 7.9: Engranajes Figura 7.10: Dedo pinza 1 Figura 7.11: Dedo pinza 2 27 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Figura 7.12: Base servomo- tor Figura 7.13: Conjunto vista A Figura 7.14: Conjunto vista B Aquí podemos ver uno de los primeros diseños que sacamos y con el que empezamos a hacer pruebas ya más reales del sistema de agarre (Figuras desde 7.15 hasta 7.20). El primer prototipo se pensó para manejar objetos más grandes que los viales de unos 8 o 9mm de diámetro (por ejemplo como un lapicero). Figura 7.15: Diseño A Figura 7.16: Diseño B Figura 7.17: Diseño A Figura 7.18: Diseño B Figura 7.19: Diseño A Figura 7.20: Diseño B 28 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Después de diseñar, imprimir y montar varios diseños de pinzas fuimos mejorando y modificando las partes necesarias para intentar obtener un diseño funcional que sea con las características y las dimensiones para manejar un tornillo, clavo o vial de 3mm de diámetro. Algunas de las mejoras son más visuales: largo de la parte final del agarre de la pinza, altura y grosor de la parte trasera con la cual se sujetara el sistemas de la pinza al resto de la estructura, el grosor de esta parte de sujeción. Otras que no son tan visibles, como el ángulo que tiene la parte final de la pinza, tanto donde se sujeta con el tornillo, como la parte donde se empieza a abrir en el extremo. El diámetro de la parte de engranajes para poder evitar que el tornillo llegue a tocar en el micro-servo y de esta manera el cierre de la pinza es más estable. Se ha modificado el grosor de la pieza de engranajes secundaria la que no se engancha al servomotor, de manera que encajaran mejor los sistemas de engranajes. La forma redonda donde cierra la pinza se ha modificado el diámetro en el diseño final con un diámetro de 3mm o 3,2mm dando un margen, para corregir los posibles fallos en el proceso de impresión. Figura 7.21: Diseño para 3mm Se podría decir que este es el sistema final que tenemos en este momentos (Figura 7.21), que ya tiene unas dimensiones y partes con las que hemos realizado pruebas más reales y según los objetivos principales. Como la pinza es de plástico y para mejorar la fricción con el objeto de pruebas (tornillos) o con el propio vial de cristal hemos añadido una esponja para ello, y además de esto la esponja nos ayuda a mejorar la sensibilidad. Esta misma esponja lo que nos ayuda es a mantener el objeto en una linea más vertical, ya que el grosor de la parte del agarre no es mucho (Figura 7.22). Finalmente el sistema de agarre nos vale tanto para agarrar el vial mediante presión y levantarlo, también nos valdría para ponerle una funda o tapón en la parte alta y levantarlo sin presionar. Aunque podríamos decir que es una mezcla de las dos o tres 29 FULL AUTOMATIC VIALS UNSCRAMBLER UCM ideas que teníamos, aunque de momento pueden surgir otras ideas o cambiar detalles de la que tenemos actualmente. Figura 7.22: Diseño final montado y agarrando vial de vidrio 30 Capítulo 8 Pruebas, Mejoras y Conclusiones En el periodo de pruebas una vez montado todas las partes del prototipo (Figura 8.1) y teniendo un programa para el control de los diferentes sistemas y pudiendo mandarle órdenes para realizar acciones el funcionamiento se aproxima a los objetivos y funciones principales. Las funciones principales del sistema serán: que el usuario lo ponga en la pinza o que la propia pinza coja un vial del punto de reposo e introducirlo en el sistema de medición (punto de medida), y realizar varios movimientos repetitivos de sacar y depositar el vial en el punto de medida. Una vez terminado el proceso deberá volver a depositar este en el punto de reposo o esperar que el usuario lo retire. Hasta que no se pruebe el sistema ya integrado con el sistema de medición no tendremos bien definidos los procesos que deberá hacer el posicionador. Los principales comandos serán: ir a posición inicial, cerrar o abrir la pinza, introducir o sacar la muestra en el punto de medida, coger o dejar muestra en la posición de re- poso y se podrán formar secuencias más complejas combinando varias de estas acciones consecutivamente. Vimos que para realizar una simulación más realista todavía habría que simular el sistema o el punto donde introduciría los viales para medirlos (Figuras 8.2 y 8.3). Ya que en el sistema real esta parte es muy sensible, delicada y no se podían hacer las primeras pruebas con el sistema real de medición. Además realizamos un soporte para varios viales para complicarlo un poco más y de esta forma, comprobar y confirmar que el sistema es fiable al realizar varios movimientos entre unos puntos y otros seguidamente sin coger el origen. Para la introducción del vial en el punto de medida o en uno de los puntos de reserva había veces que se desviaba según la posición vertical en la que se había quedado el vial al cogerlo. No parece ser un problema grave, aunque habrá que solucionarlo e intentar 31 FULL AUTOMATIC VIALS UNSCRAMBLER UCM que el sistema sea lo más fiable posible en todos los aspectos. Según las pruebas realizadas hasta el momento el prototipo podría servirnos para empezar a adaptarlo y combinarlo con el aparato de medición para el que se ha pensado. Aunque en paralelo a este proceso de juntar ambos equipos se puede seguir probando y mejorando algunos aspectos del prototipo. Algunas de las mejoras ya se han comentado y se puede ir trabajando en ellas. Pero seguro que mientras se este probando y posteriormente usando el prototipo ya sea indi- vidualmente o en conjunto con el aparato de medición irán surgiendo y viéndose mejoras que podamos hacer. Algunas de las mejoras serán que el sistema pueda trabajar con varios viales y para ello debemos añadir un sitio de reposo para varios viales. Tener un sistema de comprobación o de confirmación de que el vial esta bien posicionado y asegurar que la posición de la pinza respecto al puntos de medir o al punto de reposo es correcto. Otro cambio que se ha visto una vez montado el prototipo podría ser disminuir su tamaño u optimizar los movimientos, esto se podría conseguir reduciendo el tamaño de las piezas del prototipo, intentar colocar los puntos en los que debe hacer alguna acción o reducir los movimientos que debe hacer y de esta forma eliminar alguno de los ejes. Al reducir el tamaño general o suprimir alguno de los ejes, las parte quedaran más cerca del punto de medida, por lo tanto se debería comprobar que la proximidad de los diferentes elementos no afecte al proceso de medida del aparato. Figura 8.1: Posicionador automático de viales 32 FULL AUTOMATIC VIALS UNSCRAMBLER UCM Figura 8.2: Magnetómetro Figura 8.3: Magnetómetro y posicionador integrados 33 Capítulo 9 Programas y Librerías usados En términos generales todos los programas y librerías que se han usado son programas libres o gratuitos. Al igual que todos los proyectos de referencia son libres y gratuitos (tienen licencia libre). Para la estructura general y el sistema de agarre (pinza) se han usado proyectos que tienen una licencia de Creative Commons Non-Comercial license. Para el diseño de las nuevas piezas y la creación de otras teniendo como referencia las ya existentes se ha usado el programa OpenSCAD que es gratuito y libre. En conjunto con el programa de diseño se han usado varias librerías como la “PolyGear”, para el diseño de las piezas de engranajes del sistema de agarre y otras librerías y funciones del propio programa. El programa cuenta con muchos manuales, ejemplos y documentación lo que nos facilita la utilización del mismo. Es un programa que la mayoría de diseño se hace por código, aunque también tiene otras funciones. Para el desarrollo y la prueba del software se han usado programas que son gratuitos o que son libres, estos están descritos y comentados en el punto 4 Software según el programa y para que parte del proceso. La mayoría de los programas para placas de desarrollo o microcontroladores nos las proporcionan los propios fabricantes, lo cual facilita mucho las cosas. Para el manejo del servo se ha usado la librería “Servo.h” como ya se comento en puntos anteriores (Capitulo 6: Software). Las piezas se han impreso con una impresora 3d del tipo ”por deposición de material fundido”, modelo: Prusa i3 con un material del tipo PLA, no es más que biopolímeros derivados del ácido láctico (la mayor parte proviene de plantas vegetales), por lo que es un material biodegradable en sitios de compostaje industrial (es algo más respetuoso que otros plásticos provenientes de combustibles fósiles). El diseño y software ”Marlin”de la impresora tiene licencia GPL. 34 Índice de figuras 3.1. Sistema de 3 ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2. Explicación posiciones sistema real . . . . . . . . . . . . . . . . . . . . . 4 4.1. Estructura básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2. Pieza eje Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3. Pieza eje X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.4. Pieza eje Y motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.5. Pieza eje Y rodamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.6. Tope varilla eje Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.7. Final de carrera modificado . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.8. Eje Z modificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.9. Carros eje Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.1. Motor nema 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2. Driver L298N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.3. Driver A4988 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.4. Driver DRV8825 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.5. Placa con PIC y driver DRV8825 . . . . . . . . . . . . . . . . . . . . . . 17 5.6. Arduino Mega 2560 y Ramps 1.5 . . . . . . . . . . . . . . . . . . . . . . 18 5.7. Arduino Mega 2560 y Ramps 1.5 montados . . . . . . . . . . . . . . . . . 18 5.8. Final de carrera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1. Diagrama del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.1. Engranaje A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.2. Engranaje B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.3. Base pinza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.4. Barra sujeción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.5. Dedo A pinza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.6. Dedo B pinza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.7. Pinza referencia A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.8. Pinza referencia B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 35 FULL AUTOMATIC VIALS UNSCRAMBLER UCM 7.9. Engranajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.10. Dedo pinza 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.11. Dedo pinza 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 7.12. Base servomotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.13. Conjunto vista A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.14. Conjunto vista B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.15. Diseño A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.16. Diseño B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.17. Diseño A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.18. Diseño B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.19. Diseño A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.20. Diseño B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7.21. Diseño para 3mm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.22. Diseño final montado y agarrando vial de vidrio . . . . . . . . . . . . . . 30 8.1. Posicionador automático de viales . . . . . . . . . . . . . . . . . . . . . . 32 8.2. Magnetómetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 8.3. Magnetómetro y posicionador integrados . . . . . . . . . . . . . . . . . . 33 36 Bibliografía [1] D. Ferrete, “Página diseño de referencia cnc 3d printable,” 2017. [2] L. Llamas, “Block información y ajuste drivers,” 2016. [3] F. Creator, “Página diseño de referencia pinza robótica,” 2021. [4] RepRap, “Página información placa ramps1.4,” 2022. [5] E. 3d Tech, “Video explicativo manejo servo con ramps1.4,” 2019. [6] Community, “Página openscad,” 2021. [7] D. Pellegrini, “Repositorio libreria polygear 3d,” 2019. 37 Georgi Kirilov Tsirov Septiembre 2022 Esta obra está bajo una licencia Creative Commons “Atribución-NoComercial 3.0 No portada”. https://creativecommons.org/licenses/by-nc/3.0/deed.es https://creativecommons.org/licenses/by-nc/3.0/deed.es https://creativecommons.org/licenses/by-nc/3.0/deed.es =Resumen =Abstract Introducción Idea del Posicionador Automático de Viales Objetivo del proyecto Especificaciones del prototipo Plan de trabajo Documentación Estructura General y Piezas Impresión 3d Estructura General Modificaciones y Mejoras Hardware Software Estructura del Software Funciones principales Sistema de Agarre Sistema de Referencia Modificaciones y Mejoras Diseño Propio Pruebas, Mejoras y Conclusiones Programas y Librerías usados Bibliografía y enlaces de referencia