Este modelo didáctico de ascensor de tres niveles utiliza un servo modificado como motor y un PICAXE 08M2+ como microcontrolador. Las piezas en 3D se pueden encontrar en Thingiverse.
martes, 21 de abril de 2026
domingo, 21 de febrero de 2016
Robot seguidor de linea con PICAXE 08M2
Esta semana en el taller hemos montado este pequeño robot seguidor de linea. El peso del robot completo con la pila es de 121 gramos. La pila de 9 voltios pesa 47 gramos y el conjunto del robot sin la pila 74 gramos.
lunes, 21 de abril de 2014
Tractor de cadenas controlado mediante mando a distancia
Este proyecto de tractor de cadenas lo han puesto en marcha mis alumnos de segundo de ESO. La cadena está hecha con piezas de madera de contrachapado que se articulan con puntas de 3 mm de diámetro. Dispone de cuatro motores (Servos de rotación continua), dos por cada cadena. Los motores se controlan mediante un microcontrolador PICAXE 08M y un mando a distancia.
sábado, 22 de febrero de 2014
Barrera de parking controlada con PICAXE 08
Con una placa de robot seguidor de linea hemos montado esta barrera de parking.

Esta pensada para realizar prácticas de programación en Basic de PICAXE.

Dispone de un sensor de infrarrojos conectado en el pin 2, en lugar de uno de los sensores CNY70
.

También dispone de un pulsador conectado al pin 1. Cuando se pulsa el pulsador el valor de input1 es cero.

Sobre el pedestal se encuentra el sensor de infrarrojos y los dos leds conectados a las salidas 2 y 4.

Aquí se puede ver la situación del pulsador.

A continuación se indica como han de estar conectados sobre la placa el pulsador y el sensor de infrarrojos.
martes, 26 de marzo de 2013
Magatzem automatitzat I
Aquest és el projecte realitzat dins d'un curs per a professors de tecnologia impartit a la UPC a l'hivern del 2013. El curs "Projectes de control PICAXE amb les plaques IMAGINA i PLC" ens va permetre apropar-nos a la placa de control Imagina i als entorns de programació associats a ella.

La proposta consisteix en un magatzem automatitzat. Una cinta transportadora desplaça uns paquets que porten a una de les seves cares un rudimentari codi de barres. Al desplaçar-se el codi passa por davant d'uns sensors de infrarojos CNY70, disposats a la placa de control Imagina, que llegeixen els valors d'aquest codi de barres. Al arribar al final del recorregut de la cinta, un final de cursa l'atura, de forma que el paquet quedi situat davant del mecanisme que ho ha de recollir.

A continuació es desplacen cap a endavant les dues pues de la forquilla que agafa per sota el paquet, l'aixeca lleugerament i retrocedeix per portar-lo fins la casella corresponent de la prestatgeria del magatzem. Aquesta prestatgeria és una quadricula de 3 x 3 caselles. D'aquesta manera les quatre línies del codi de barres s'utilitzen per a codificar els nou productes que podríem arribar a col·locar al nostre magatzem. Les dues primeres línies informarien de la posició que el producte ocupa en horitzontal i les dues darreres línies la posició que ocupa en vertical.

De moment només està construït el lector de codi de barres.

El codi s'havia dissenyat amb cinc barres, de les que la primera era una barra de control. Al disseny definitiu s'ha prescindit d'aquesta barra de control del inici del codi.

La construcció real és la següent. L'element principal és la cinta transportadora, fabricada amb cinta de tela negra cosida. Aquesta cinta es mou entre dos rodets, dels que un d'ells és el motor i l'altre el tensor. La cinta descansa sobre una superfície de fusta contraplacada per que el pes dels paquets no la deformi. Aquesta superfície s'aguanta sobre l'estructura mitjançant cargols encaixats a ranures que permeten ajustar la seva posició. La placa Imagina també es subjecta mitjançant cargols de forma que es pugui ajustar la seva altura i profunditat. Per impedir que la llum ambient generi errors als sensors que llegeixen el codi de barres se ha construït un túnel que cobreix la zona dels sensors, de forma que els paquets es desplacin pel seu interior. Per evitar errors a la lectura també ajuda reduir la velocitat de desplaçament de la cinta transportadora, de forma que el codi passi més lentament davant dels sensors CNY70.

Aquest rodets estan construïts amb dos tubs de PVC de 30 mm de diàmetre i 70 mm de llarg. Mitjançant reblons s'han unit a l'eix de dos motors de disc dur. No és aquesta una solució fàcil, doncs al foradar per ficar els reblons s'afecta d'alguna manera l'interior del motor i aquest deixa de girar tan suaument. A més al no ser el diàmetre interior del tub igual al diàmetre exterior de l'eix del motor, gira una mica excèntric. És por això que convindria redissenyar aquesta part del projecte. La distància entre els dos eixos dels rodets és de 420 mm.

El rodet motor està unit a l'eix d'un servo de gir continu, mitjançant una goma elàstica que passa per quatre forats a la creu de sortida del servo i per altres quatre a l'extrem del tub. D'aquesta manera s'aconsegueix un acoblament elàstic que permet desalineacions entre l'eix del rodet i el del motor i una arrencada millor del mecanisme en càrrega.

El rodet tensor està unit a una forquilla que gira sobre el seu suport, de forma que el propi pes d'aquest braç i del rodet tensa automàticament la cinta. El suport de la forquilla disposa d'un cargol sobre el que pot girar per alinear els eixos dels dos rodets, de forma que la cinta no tingui tendència a desplaçar-se cap als costats. A més, aquest suport que encaixa a la base de l'estructura, disposa d'un topall regulable que permet adaptar-se a la longitud de la cinta de tela i mantenir-la ben tensa i en horitzontal.

A continuació es pot veure un dels paquets. S'han construït amb llistó quadrat, de forma que té unes dimensions de 42 x 42 x 60 mm. Està separat un centímetre de la superfície de suport, per permetre la entrada de la forquilla a les operacions de càrrega i descàrrega. El codi està dividit en una meitat superior i una meitat inferior. A la meitat superior es troben les línies de referencia i a la inferior les que aporten les dades. Cadascuna d'aquestes meitats es llegida per un dels dos sensors CNY70 de la placa Imagina. Per que el sensor detecti negre, la línia negra, construïda amb cinta aïllant negra sobre paper blanc, ha de tenir una superfície d'un centímetre quadrat, més o menys. Esta és l'amplada que han de tenir les línies negres. La impressió de tinta negra sobre paper blanc no proporciona bons negres, por la qual cosa no s'ha fet servir.
Almacén automatizado I
Este es el proyecto realizado en el marco de un curso para profesores de tecnología impartido en la UPC en el invierno de 2013. El curso "Projectes de control PICAXE amb les plaques IMAGINA i PLC" nos permitió acercarnos a la placa de control Imagina y a los entornos de programación asociados a ella.

La propuesta consiste en un almacén automatizado. Una cinta transportadora desplaza unos paquetes que llevan en una de sus caras un rudimentario código de barras. Al desplazarse el código pasa por delante de unos sensores de infrarrojos CNY70, dispuestos en la placa de control Imagina, que leen los valores de este código de barras. Al llegar al final del recorrido de la cinta, un final de carrera la para, de forma que el paquete quede situado delante del mecanismo que lo ha de recoger.

A continuación se adelantan las dos púas de la horquilla que coge por debajo el paquete, lo levanta ligeramente y retrocede para llevarlo hasta la casilla correspondiente de la estantería del almacén. Esta estantería es un casillero de 3 x 3 casillas. De esta forma las cuatro lineas del código de barras se utilizan para codificar los nueve productos que podríamos llegar a colocar en nuestro almacén. Las dos primeras lineas informarían de la posición que el producto ocupa en horizontal y las dos últimas lineas la posición que ocupa en vertical.

De momento solamente está construido el lector de código de barras.

El código se había diseñado con cinco barras, de las que la primera era una barra de control. En el diseño definitivo se ha prescindido de esta barra de control del inicio del código.

La construcción real es la siguiente. El elemento principal es la cinta transportadora, fabricada con cinta de tela negra cosida. Esta cinta se mueve entre dos rodillos, de los que uno de ellos es el motor y el otro el tensor. La cinta descansa sobre una superficie de madera contrachapada para que el peso de los paquetes no la venza. Esta superficie se sujeta sobre la estructura mediante tornillos encajados en ranuras que permiten ajustar su posición. La placa Imagina también se sujeta mediante tornillos de forma que se pueda ajustar su altura y profundidad. Para impedir que la luz ambiente genere errores en los sensores que leen el código de barras se ha construido un túnel que cubre la zona de los sensores, de forma que los paquetes se desplacen por su interior. Para evitar errores en la lectura también ayuda reducir la velocidad de desplazamiento de la cinta transportadora, de forma que el código pase más lentamente delante de los sensores CNY70.

Estos rodillos están construidos con dos tubos de PVC de 30 mm de diámetro y 70 mm de largo. Mediante remaches se han unido al eje de dos motores de disco duro. No es esta una solución fácil, pues al agujerear para remachar se afecta de algún modo el interior del motor y deja de girar tan suavemente. Además al no ser el diámetro interior del tubo igual al diámetro exterior del eje del motor, gira un poco excéntrico. Es por esto que convendría rediseñar esta parte del proyecto. La distancia entre los ejes de los rodillos es de 420 mm.

El rodillo motor está unido al eje de un servo de giro continuo, mediante una goma elástica que pasa por cuatro agujeros en la cruz de salida del servo y en el extremo del tubo. De esta forma se consigue un acoplamiento elástico que permite desalineaciones entre el eje del rodillo y el del motor y un arranque mejor del mecanismo en carga.

El rodillo tensor está unido a una horquilla que gira sobre su soporte, de forma que el propio peso de este brazo y del rodillo tensa automáticamente la cinta. El soporte de la horquilla dispone de un tornillo sobre el que puede girar para alinear los ejes de los dos rodillos, de forma que la cinta no tenga tendencia a desplazarse hacia los lados. Además, este soporte que encaja en la base de la estructura, dispone de un tope regulable que permite adaptarse a la longitud de la cinta de tela y mantenerla bien tensada en horizontal.

A continuación se puede ver uno de los paquetes. Se han construido con listón cuadrado, de forma que tiene unas dimensiones de 42 x 42 x 60 mm. Está separado un centímetro del suelo, para permitir la entrada de la horquilla en las operaciones de carga y descarga. El código esta dividido en una mitad superior y una mitad inferior. En la mitad superior se encuentran las lineas de referencia y en la inferior las que aportan los datos. Cada una de estas mitades es leída por uno de los dos sensores CNY70 de la placa Imagina. Para que el sensor detecte negro, la linea negra, construida con cinta aislante negra sobre papel blanco, ha de tener una superficie de un centímetro cuadrado, más o menos. Esta es la anchura que han de tener las lineas negras. La impresión de tinta negra sobre papel blanco no proporciona buenos negros, por lo que no se ha utilizado.
lunes, 25 de marzo de 2013
Magatzem automatitzat II
El projecte de magatzem automatitzat utilitza una placa de control Imagina basada en un PICAXE 20M2. Per editar el programa de control es pot fer servir el BASIC des del Programing Editor de PICAXE, amb Scratch (S4A) o amb LabVIEW. Aquí es mostra la programació amb Scratch.

El programa del magatzem inclou el procés de lectura del codi de barres i la col·locació del paquet a la casella corresponent de la prestatgeria de 3 x 3 caselles. Tot s'inicia quan premem el "Sensor Digital 2" (Polsador S2). A partir d'aquí comença l'animació del paquet, arrossegat per la cinta transportadora a la pantalla de l'ordinador, i la placa "Imagina" es prepara per que els seus dos sensors de infrarojos CNY70 (Analog3 i Analog5) llegeixin el codi de barres. Una vegada llegit el codi de barres el programa li assigna valor a les variables "x" i "y", i amb aquests valors col·loca el paquet a la casella corresponent.
Les diferents imatges utilitzades en el programa d'Scratch són les següents:
L'escenari inclou la prestatgeria, la base i les guies del carro que es mou en horitzontal, a més dels dos trossos de cinta de la cinta transportadora.

La placa "Imagina" està representada pel següent dibuix, i també es manté fixa.

Les dues rodes que giren per simular el moviment de la cinta transportadora tenen aquest aspecte:

El carro horitzontal porta acoblada la columna sobre la que es desplaça, en vertical, la pinça que recull i deixa els paquets al seu lloc.

La pinça es desplaça en vertical sobre la columna fixada al carro horitzontal.

Aquest és el paquet:

Passarem ara a descriure el programa, començant pel corresponent a la placa "Imagina".

Al iniciar el programa (Bandera verda) es posiciona el dibuix corresponent a la placa "Imagina", s'aturen els dos motors, es posen a zero totes les variables i s'inicia un bucle a l'espera de que es premi el polsador S2. Una vegada premut S2 s'inicien els subprogrames "S2" i "linea1".

Amb el subprograma "linea1" comença la lectura del codi de barres. Dins d'un bucle "por siempre" s'espera abans de res a que els dos sensors "Analog3" i "Analog5" detectin un espai en blanc de l'inici del codi de barres i després a que un dels dos sensors detectin negre. "Analog3" representa la referència de posició i "Analog5" el valor del codi. Si els dos detecten negre (Valor 1), s'assigna el valor 2 a la variable "x", si no és així se li assigna el valor 0. Una vegada llegida la primera línia s'inicia el subprograma "linea2" i s'atura el subprograma "linea1".

El subprograma "linea2" llegeix la segona línia del codi de barres, que correspon al segon dígit binari que assigna valor a la variable "x", que indica la coordenada necessària per situar el paquet a la casella corresponent de la prestatgeria. La manera de procedir es similar a la del subprograma "linea1", llevat que el valor que afegeix a la variable "x", en cas que es detecti línia negra es 1. Al finalitzar la lectura de la línia s'inicia el subprograma "linea3" i s'atura el subprograma "linea2".

El subprograma "linea3" llegeix la tercera línia del codi de barres, que correspon al primer dígit binari de la variable "y". Si el sensor "Analog5" detecta negre se li assignarà un valor 2 a la variable "y" i si no és així un 0. Una vegada llegida la tercera línia s'inicia el subprograma "linea4" i s'atura el subprograma "linea3".

El subprograma "linea4" llegeix la quarta línia del codi de barres que correspon al segon dígit binari de la variable "y" i li afegeix un 1 si el sensor detecta negre. Després de llegir la línia li assigna el valor 1 a la variable "s" per deixar constància de que ja s'ha llegit el codi de barres i es pot procedir a col·locar el paquet al seu lloc. A continuació s'atura el subprograma "linea4".
Les dues rodes de la cinta transportadora tenen aspectes i programes similars, llevat del que té relació amb les coordenades de la posició que ocupen. A continuació es mostra el programa de la "Rueda1".

Al iniciar-se el programa, amb la bandera verda, es situa el dibuix a les coordenades corresponents. El subprograma "S2" fa girar la roda fins que el valor de la variable "t" es 1. El valor 1 d'aquesta variable informa de que el paquet ha arribat al final de la cinta transportadora.
A continuació es pot veure el programa de la "Rueda2".

A continuació es mostra el programa corresponent al carro.

Al iniciar-se el programa, amb la bandera verda, es posiciona el dibuix a les seves coordenades d'inici, corresponents al lloc al que s'ha de recollir el paquet, a la cinta transportadora. El subprograma "S2" també posiciona el dibuix a les seves coordenades d'inici. El subprograma "colocar" porta el carro horitzontal fins la casella inferior dreta, que la considerarem com l'inici del sistema de coordenades. El subprograma "coordenadas" desplaça el carro cap a l'esquerra tants espais, a la prestatgeria, com correspongui al valor de la variable "x" menys 1.
A continuació es mostra el programa de la "pinza".

El programa de la "pinza" es similar al del "carro", llevat de que en aquest el subprograma "coordenadas" també desplaça el dibuix cap a dalt tantes caselles com sigui el valor de la variable "y" menys 1.
A continuació s'inicia el programa corresponent al "paquete".

Al iniciar el programa, amb la bandera verda, s'amaga el dibuix del paquet. Al iniciar el subprograma "S2" es mostra el paquet a les coordenades d'inici, a la dreta de la cinta transportadora, se li fa avançar fins al final de la cinta, es fixa el valor de la variable "t" a 1 per informar de que el paquet ha arribat al final de la cinta i s'inicia el subprograma "colocar".

El subprograma "colocar" desplaça el paquet fins la casella inferior dreta de la prestatgeria, seguint el moviment del "carro" i la "pinza". A continuació es comprova que el valor de la variable "s", que indica que el codi de barres ja s'ha llegit, i la variable "t", que indica que el paquet ha arribat al final de la cinta transportadora, valen 1, i si es així inicia el subprograma "coordenadas" i atura el subprograma "colocar".

El subprograma "coordenadas" del "paquete" es similar al subprograma "coordenadas" de la "pinza" i desplaça el dibuix del "paquete" fins la seva casella a la prestatgeria.
A continuació es pot veure un vídeo amb tot el procés de lectura del codi de barres i la col·locació del paquet a la seva casella corresponent. S'ha utilitzat un paquet amb un codi negre-blanc-negre-blanc, corresponent als dígits binaris 1010, que corresponen a valors 2 per les dues variables "x" i "y".
domingo, 24 de marzo de 2013
Almacén automatizado II
El proyecto de almacén automatizado utiliza una placa de control Imagina basada en un PICAXE 20M2. Para editar el programa de control se puede hacer en BASIC desde el Programing Editor de PICAXE, con Scratch (S4A) o con LabVIEW. Aquí se muestra la programación con Scratch.

El programa del almacén incluye el proceso de lectura del código de barras y la colocación del paquete en la casilla correspondiente de la estantería de 3 x 3 casillas. Todo se inicia cuando presionamos el "Sensor Digital 2" (Pulsador S2). A partir de aquí comienza la animación del paquete, arrastrado por la cinta transportadora en la pantalla del ordenador, y la placa "Imagina" se prepara para que sus dos sensores de infrarrojos CNY70 (Analog3 y Analog5) lean el código de barras. Una vez leido el código de barras el programa le asigna valor a las variables "x" e "y" y con estos valores coloca el paquete en la casilla correspondiente.
Las diferentes imágenes utilizadas en el programa de Scratch son las siguientes:
El escenario incluye el casillero de la estantería, la base y las guías del carro que se mueve en horizontal, ademas de los dos trozos de cinta de la cinta transportadora.

La placa "Imagina" está representada por el siguiente dibujo, y también se mantiene fija.

Las dos ruedas que giran para simular el movimiento de la cinta transportadora tienen este aspecto:

El carro horizontal lleva acoplada la columna sobre la que se desplaza, en vertical, la pinza que recoge y deja los paquetes en su lugar.

La pinza se desplaza en vertical sobre la columna unida al carro horizontal.

Este es el paquete:

Pasaremos ahora a describir el programa, comenzando por el correspondiente a la placa "Imagina".

Al iniciar el programa (Bandera verde) se posiciona el dibujo correspondiente a la placa "Imagina", se paran los dos motores, se ponen a cero todas las variables y se inicia un bucle a la espera de que se pulse el pulsador S2. Una vez pulsado S2 se inician los subprogramas "S2" y "linea1".

Con el subprograma "linea1" comienza la lectura del código de barras. Dentro de un bucle "por siempre" se espera primero a que los dos sensores "Analog3" y "Analog5" detecten un espacio en blanco del inicio del código de barras y después a que uno de los dos sensores detecten negro. "Analog3" representa la referencia de posición y "Analog5" el valor del código. Si los dos detectan negro (Valor 1), se asigna el valor 2 a la variable "x", sino se le asigna el valor 0. Una vez leida la primera linea se inicia el subprograma "linea2" y se para el subprograma "linea1".

El subprograma "linea2" lee la segunda linea del código de barras, que corresponde al segundo dígito binario que asigna valor a la variable "x", que indica la coordenada necesaria para situar el paquete en la casilla correspondiente de la estantería. El modo de proceder es similar al del subprograma "linea1", salvo que el valor que añade a la variable "x", en caso que se detecte linea negra es 1. Al finalizar la lectura de la linea se inicia el subprograma "linea3" y se para el subprograma "linea2".

El subprograma "linea3" lee la tercera linea del código de barras, que corresponde al primer dígito binario de la variable "y". Si el sensor "Analog5" detecta negro se le asignará un valor 2 a la variable "y" y sino un 0. Una vez leida la tercera linea se inicia el subprograma "linea4" y se detiene el subprograma "linea3".

El subprograma "linea4" lee la cuarta linea del código de barras que corresponde al segundo dígito binario de la variable "y" y le suma un 1 si el sensor detecta negro. Después de leer la linea le asigna el valor 1 a la variable "s" para dejar constancia de que ya se ha leído el código de barras y se puede proceder a colocar el paquete en su sitio. A continuación se detiene el subprograma "linea4".
Las dos ruedas de la cinta transportadora tienen aspectos y programas similares, salvo por lo que respecta a las coordenadas de la posición que ocupan. A continuación se muestra el programa de la "Rueda1".

Al iniciarse el programa, con la bandera verde, se sitúa el dibujo en las coordenadas correspondientes. El subprograma "S2" hace girar la rueda hasta que el valor de la variable "t" es 1. El valor 1 de esta variable informa de que el paquete ha llegado al final de la cinta transportadora.
A continuación se puede ver el programa de la "Rueda2".

A continuación se muestra el programa correspondiente al carro.

Al iniciarse el programa, con la bandera verde, se posiciona el dibujo en sus coordenadas de inicio, correspondientes al lugar en que debe recoger el paquete, en la cinta transportadora. El subprograma "S2" también posiciona el dibujo en sus coordenadas de inicio. El subprograma "colocar" lleva el carro horizontal hasta la casilla inferior derecha, que la tomaremos como inicio de coordenadas. El subprograma "coordenadas" desplaza el carro hacia la izquierda tantos espacios, en el casillero de la estantería, como corresponda al valor de la variable "x" menos uno.
A continuación se muestra el programa de la "pinza".

El programa de la "pinza" es similar al del "carro", salvo que en este el subprograma "coordenadas" también desplaza el dibujo hacia arriba tantas casillas como sea el valor de la variable "y" menos uno.
A continuación se inicia el programa correspondiente al "paquete".

Al iniciar el programa, con la bandera verde, se esconde el dibujo del paquete. Al iniciar el subprograma "S2" se muestra el paquete en las coordenadas de inicio, a la derecha de la cinta transportadora, se le hace avanzar hasta el final de la cinta, se fija el valor de la variable "t" a 1 para informar de que el paquete ha llegado al final de la cinta y se inicia el subprograma "colocar".

El subprograma "colocar" desplaza el paquete hasta la casilla inferior derecha de la estantería, siguiendo el movimiento del "carro" y la "pinza". A continuación comprueba que el valor de la variable "s", que indica que el código de barras ya se ha leído, y la variable "t", que indica que el paquete ha llegado al final de la cinta transportadora, valen uno, y si es así inicia el subprograma "coordenadas" y detiene el subprograma "colocar".

El subprograma "coordenadas" del "paquete" es similar al subprograma "coordenadas" de la "pinza" y desplaza el dibujo del "paquete" hasta su casilla en la estantería.
A continuación se puede ver un vídeo con todo el proceso de lectura del código de barras y la colocación del paquete en su casilla correspondiente. Se ha utilizado un paquete con un código negro-blanco-negro-blanco, correspondiente a los dígitos binarios 1010, que corresponden a valores 2 para las dos variables "x" e "y".


